enqueueAssets(); } } else { if (isset($_GET['post']) && isset($_GET['action']) && $_GET['action'] === 'edit') { $this->enqueueAssets(); } } if (wp_script_is('a2wl-wc-order-edit-script', 'enqueued')) { $data = [ 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce_action' => wp_create_nonce(self::AJAX_NONCE_ACTION), ]; wp_localize_script('a2wl-wc-order-edit-script', 'a2wl_order_edit_script', $data); } if (!wp_script_is('a2wl-admin-script', 'enqueued')) { wp_enqueue_script('a2wl-admin-script', A2WL()->plugin_url() . '/assets/js/admin_script.js', array('jquery'), A2WL()->version ); } AbstractAdminPage::localizeAdminScript(); } public function ajax_reset_order_data(): void { check_admin_referer(self::AJAX_NONCE_ACTION, self::NONCE); if (!PageGuardHelper::canAccessPage(Pages::IMPORT_LIST)) { $result = ResultBuilder::buildError($this->getErrorTextNoPermissions()); echo wp_json_encode($result); wp_die(); } $result = ResultBuilder::buildOk(); try { $order_id = (int) $_POST['id']; $order = wc_get_order($order_id); if ($order) { $order_items = $order->get_items(); foreach ($order_items as $item_id => $item) { $item->delete_meta_data(Constants::order_item_external_order_meta()); $item->delete_meta_data(Constants::order_item_tracking_data_meta()); $item->save(); } $order->add_order_note(esc_html__('The order external ID(s) and tracking numbers have been reset.', 'ali2woo'), false, true); } else { $result = ResultBuilder::buildError('did not find the order id: №' . $order_id); } restore_error_handler(); } catch (Throwable $e) { a2wl_print_throwable($e); $result = ResultBuilder::buildError($e->getMessage()); } echo wp_json_encode($result); wp_die(); } public function woocommerce_admin_order_data_after_order_details($WC_Order): void { ?>

get_items(); ?>

$item): ?> get_external_order_id(); $ali_order_link = $a2wl_order_item->get_ali_order_item_link(); $order_item_tracking_codes = $a2wl_order_item->get_formated_tracking_codes(); //$carrier_link = $a2wl_order_item->get_formated_carrier_link(); $carrier_name = $a2wl_order_item->get_carrier_name(); ?> : shorten_display_value($item->get_name()); ?>
:
:
:

get_id(), Constants::old_order_external_order_id()); $order_tracking_codes = get_post_meta($WC_Order->get_id(), Constants::old_order_tracking_code()); ?>

:
$order_external_id): ?> ,
:
$tracking_code): ?> ,
$item): ?>

: shorten_display_value($item->get_name()); ?>

get_external_order_id(); $order_item_tracking_codes = $a2wl_order_item->get_formated_tracking_codes(true); ?> 'a2wl_external_order_id_' . $item_id, 'name' => 'a2wl_external_order_id_' . $item_id, 'label' => esc_html__('AliExpress Order ID', 'ali2woo'), 'value' => $external_order_id, 'wrapper_class' => 'form-field-wide', )); ?> 'a2wl_tracking_code_' . $item_id, 'name' => 'a2wl_tracking_code_' . $item_id, 'label' => esc_html__('Tracking numbers', 'ali2woo'), /* Here it can be an array of Tracking numbers, because sometimes AliExpress replace old tracking code with new one for some orders */ 'value' => $order_item_tracking_codes, 'wrapper_class' => 'form-field-wide', )); ?>
get_items(); foreach ($order_items as $item_id => $item) { $a2wl_order_item = new WooCommerceOrderItem($item); if (isset($_POST['a2wl_external_order_id_' . $item_id]) && !empty($_POST['a2wl_external_order_id_' . $item_id])) { $external_order_id = intval($_POST['a2wl_external_order_id_' . $item_id]); $a2wl_order_item->update_external_order($external_order_id); } if (isset($_POST['a2wl_tracking_code_' . $item_id]) && !empty($_POST['a2wl_tracking_code_' . $item_id])) { $tracking_codes = explode(',', $_POST['a2wl_tracking_code_' . $item_id]); $tracking_codes = array_map('trim', $tracking_codes); $a2wl_order_item->update_tracking_codes($tracking_codes); } if ($a2wl_order_item->save()) { $order->add_order_note(esc_html__('The order external ID(s) and/or tracking numbers have been added to the order manually.', 'ali2woo'), false, true); } } } public function woocommerce_order_item_display_meta_key($display_key, $meta, $item) { //todo: maybe remove this code? THese metas are not displayed on th order edit page if ($meta->key === Shipping::get_order_item_shipping_meta_key()) { $display_key = esc_html__('Shipping Info', 'ali2woo'); } if ($meta->key == Constants::order_item_external_order_meta()) { $display_key = esc_html__('AliExpress Order ID', 'ali2woo'); } if ($meta->key == Constants::order_item_tracking_data_meta()) { $display_key = esc_html__('Tracking numbers', 'ali2woo'); } return $display_key; } public function woocommerce_order_item_display_meta_value($display_value, $meta, $item) { if ($meta->key === Shipping::get_order_item_shipping_meta_key()) { $value = $meta->value; if ($value) { $order_id = $item->get_order_id(); $display_value = Shipping::get_formated_shipping_info_meta($order_id, $value); } } if ($meta->key == Constants::order_item_tracking_data_meta()) { $display_value = $this->get_formated_order_item_tracking_data_meta($value); } return $display_value; } public function woocommerce_email_order_items_args($args) { if ($args['sent_to_admin']) { return $args; } //a little hack, save in global that we are in the email template $_POST['a2wl_email_template_check'] = true; return $args; } private function get_formated_order_item_tracking_data_meta($value) { $tracking_codes = ""; if ($value && isset($value['tracking_codes'])) { $tracking_codes = implode(",", $value['tracking_codes']); } return $tracking_codes; } private function shorten_display_value($string) { if (strlen($string) >= 40) { return substr($string, 0, 30) . " ... " . substr($string, -10); } else { return $string; } } private function enqueueAssets(): void { wp_enqueue_script('a2wl-wc-order-edit-script', A2WL()->plugin_url() . '/assets/js/wc_order_edit.js', [], A2WL()->version); wp_enqueue_style('a2wl-wc-order-edit-style', A2WL()->plugin_url() . '/assets/css/wc_order_edit.css', [], A2WL()->version); } }