From f42b845ee34a522170660c11a1b118538708ae0f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Mar 2026 15:03:41 +0000 Subject: [PATCH 1/3] Initial plan From e522d233ff25271727fc4948abc467cd60d4f159 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Mar 2026 15:13:33 +0000 Subject: [PATCH 2/3] Add tracking URL support for Lengow shipment actions Agent-Logs-Url: https://github.com/lengow/plugin-magento2/sessions/0e533717-edaf-4ce1-b8b7-67eed1d963a7 Co-authored-by: michaelmaslengow <147600733+michaelmaslengow@users.noreply.github.com> --- Block/Adminhtml/Order/Tracking.php | 16 ++++++++++ Block/Adminhtml/Order/Tracking/View.php | 16 ++++++++++ Helper/Toolbox.php | 2 +- Model/Import/Action.php | 1 + Model/Import/Marketplace.php | 21 +++++++++++++ Plugin/ReturnTrackingNumber.php | 6 ++++ etc/db_schema.xml | 1 + etc/db_schema_whitelist.json | 3 +- view/adminhtml/templates/order/tracking.phtml | 30 ++++++++++++++----- .../templates/order/tracking/view.phtml | 17 +++++++++++ 10 files changed, 104 insertions(+), 9 deletions(-) diff --git a/Block/Adminhtml/Order/Tracking.php b/Block/Adminhtml/Order/Tracking.php index 4839916..68314b8 100644 --- a/Block/Adminhtml/Order/Tracking.php +++ b/Block/Adminhtml/Order/Tracking.php @@ -56,6 +56,22 @@ public function __construct( parent::__construct($context, $shippingConfig, $registry, $data); } + /** + * check if we can display the field + */ + public function canDisplayTrackingUrl(): bool + { + try { + return $this->getLengowOrder() + ->getMarketPlace() + ->hasTrackingUrl(); + + } catch (\Exception $e) { + + return false; + } + } + /** * check if we can display the field */ diff --git a/Block/Adminhtml/Order/Tracking/View.php b/Block/Adminhtml/Order/Tracking/View.php index 9ff6375..42cad09 100644 --- a/Block/Adminhtml/Order/Tracking/View.php +++ b/Block/Adminhtml/Order/Tracking/View.php @@ -67,6 +67,22 @@ public function __construct( ); } + /** + * check if we can display the field + */ + public function canDisplayTrackingUrl(): bool + { + try { + return $this->getLengowOrder() + ->getMarketPlace() + ->hasTrackingUrl(); + + } catch (\Exception $e) { + + return false; + } + } + /** * check if we can display the field */ diff --git a/Helper/Toolbox.php b/Helper/Toolbox.php index dda11ad..1735279 100644 --- a/Helper/Toolbox.php +++ b/Helper/Toolbox.php @@ -907,7 +907,7 @@ private function getAllOrderData(array $data, ?MagentoOrderInterface $order = nu : null, self::TRACKING_MERCHANT_CARRIER => $lastTrack ? $lastTrack->getTitle() : null, self::TRACKING_MERCHANT_TRACKING_NUMBER => $lastTrack ? $lastTrack->getNumber() : null, - self::TRACKING_MERCHANT_TRACKING_URL => null, + self::TRACKING_MERCHANT_TRACKING_URL => $lastTrack ? $lastTrack->getTrackingUrl() : null, ], self::ORDER_IS_REIMPORTED => (bool) $data[LengowOrder::FIELD_IS_REIMPORTED], self::ORDER_IS_IN_ERROR => (bool) $data[LengowOrder::FIELD_IS_IN_ERROR], diff --git a/Model/Import/Action.php b/Model/Import/Action.php index 660cae2..4ba784e 100644 --- a/Model/Import/Action.php +++ b/Model/Import/Action.php @@ -80,6 +80,7 @@ class Action extends AbstractModel public const ARG_CUSTOM_CARRIER = 'custom_carrier'; public const ARG_SHIPPING_METHOD = 'shipping_method'; public const ARG_TRACKING_NUMBER = 'tracking_number'; + public const ARG_TRACKING_URL = 'tracking_url'; public const ARG_RETURN_TRACKING_NUMBER = 'return_tracking_number'; public const ARG_RETURN_CARRIER = 'return_carrier'; public const ARG_SHIPPING_PRICE = 'shipping_price'; diff --git a/Model/Import/Marketplace.php b/Model/Import/Marketplace.php index c96f9e4..11f322b 100644 --- a/Model/Import/Marketplace.php +++ b/Model/Import/Marketplace.php @@ -248,6 +248,20 @@ public function getAction(string $action): array return []; } + /** + * Check if has the field + */ + public function hasTrackingUrl() : bool + { + $action = $this->getAction(LengowAction::TYPE_SHIP); + if (empty($action)) { + return false; + } + $arguments = $this->getMarketplaceArguments(LengowAction::TYPE_SHIP); + + return in_array(LengowAction::ARG_TRACKING_URL, $arguments); + } + /** * Check if has the field */ @@ -451,6 +465,13 @@ private function getAllParams( } $params[$arg] = isset($lastTrack) ? $lastTrack->getNumber() : ''; break; + case LengowAction::ARG_TRACKING_URL: + $tracks = $shipment ? $shipment->getAllTracks() : null; + if (!empty($tracks)) { + $lastTrack = end($tracks); + } + $params[$arg] = isset($lastTrack) ? (string) $lastTrack->getTrackingUrl() : ''; + break; case LengowAction::ARG_RETURN_TRACKING_NUMBER: $tracks = $shipment ? $shipment->getAllTracks() : null; if (!empty($tracks)) { diff --git a/Plugin/ReturnTrackingNumber.php b/Plugin/ReturnTrackingNumber.php index db87330..7bcfc5f 100644 --- a/Plugin/ReturnTrackingNumber.php +++ b/Plugin/ReturnTrackingNumber.php @@ -49,10 +49,12 @@ public function beforeAddTrack(Shipment $subject, Track $track): array $shippingMethod = $lastTraskPosted['shipping_method_mktp'] ?? ''; $returnNumber = $lastTraskPosted['return_number'] ?? ''; $returnCarrierCode = $lastTraskPosted['return_carrier_code'] ?? ''; + $trackingUrl = $lastTraskPosted['tracking_url'] ?? ''; } else { $shippingMethod = $this->request->getPost('shipping_method_mktp') ?? ''; $returnNumber = $this->request->getPost('return_number') ?? ''; $returnCarrierCode = $this->request->getPost('return_carrier_code') ?? ''; + $trackingUrl = $this->request->getPost('tracking_url') ?? ''; } if ($shippingMethod) { @@ -67,6 +69,10 @@ public function beforeAddTrack(Shipment $subject, Track $track): array $track->setReturnCarrierCode($returnCarrierCode); } + if ($trackingUrl) { + $track->setTrackingUrl($trackingUrl); + } + return [$track]; } } diff --git a/etc/db_schema.xml b/etc/db_schema.xml index a65380e..426262e 100644 --- a/etc/db_schema.xml +++ b/etc/db_schema.xml @@ -122,5 +122,6 @@ + diff --git a/etc/db_schema_whitelist.json b/etc/db_schema_whitelist.json index 45eb522..78e6a19 100644 --- a/etc/db_schema_whitelist.json +++ b/etc/db_schema_whitelist.json @@ -115,7 +115,8 @@ "column": { "shipping_method_mktp": true, "return_track_number": true, - "return_carrier_code": true + "return_carrier_code": true, + "tracking_url": true } } } diff --git a/view/adminhtml/templates/order/tracking.phtml b/view/adminhtml/templates/order/tracking.phtml index 76eda39..d511643 100644 --- a/view/adminhtml/templates/order/tracking.phtml +++ b/view/adminhtml/templates/order/tracking.phtml @@ -30,6 +30,9 @@ require(['prototype'], function(){ $('trackingT' + this.index).disabled = false; $('trackingN' + this.index).disabled = false; $('shipping-method' + this.index).disabled = false; + canDisplayTrackingUrl()): ?> + $('trackingU' + this.index).disabled = false; + this.bindCurrierOnchange(); }, @@ -116,6 +119,16 @@ script; value="" disabled="disabled" /> + canDisplayTrackingUrl()): ?> + + + + canDisplayReturnCarrier()): ?> escapeHtml(__('Title')) ?> escapeHtml(__('Shipping')) ?> escapeHtml(__('Number')) ?> + canDisplayTrackingUrl()): ?> + escapeHtml(__('Tracking URL')) ?> + canDisplayReturnCarrier()): ?> escapeHtml(__('Return Carrier')) ?> @@ -168,13 +184,13 @@ script; - canDisplayReturnNumber() && $block->canDisplayReturnCarrier()): ?> - getChildHtml('add_button') ?> - canDisplayReturnNumber()): ?> - getChildHtml('add_button') ?> - - getChildHtml('add_button') ?> - + canDisplayTrackingUrl()) $colspan++; + if ($block->canDisplayReturnCarrier()) $colspan++; + if ($block->canDisplayReturnNumber()) $colspan++; + ?> + getChildHtml('add_button') ?> diff --git a/view/adminhtml/templates/order/tracking/view.phtml b/view/adminhtml/templates/order/tracking/view.phtml index 2210125..93752d0 100644 --- a/view/adminhtml/templates/order/tracking/view.phtml +++ b/view/adminhtml/templates/order/tracking/view.phtml @@ -23,6 +23,9 @@ $shippingHelper = $block->getData('shippingHelper'); escapeHtml(__('Title')) ?> escapeHtml(__('Shipping')) ?> escapeHtml(__('Number')) ?> + canDisplayTrackingUrl()): ?> + escapeHtml(__('Tracking URL')) ?> + canDisplayReturnCarrier()): ?> escapeHtml(__('Return Carrier')) ?> @@ -70,6 +73,15 @@ $shippingHelper = $block->getData('shippingHelper'); name="number" value="" /> + canDisplayTrackingUrl()): ?> + + + + canDisplayReturnCarrier()): ?> getData('shippingHelper');
+ canDisplayTrackingUrl()): ?> + + escapeHtml($_track->getTrackingUrl()) ?> + + canDisplayReturnCarrier()): ?> escapeHtml($_track->getReturnCarrierCode()) ?> From d15dc965114b014c017a53281ffcd3eec2c398c0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Mar 2026 15:20:02 +0000 Subject: [PATCH 3/3] Simplify tracking URL support: constant + commented placeholder in getAllParams() Agent-Logs-Url: https://github.com/lengow/plugin-magento2/sessions/dd412ee7-0f21-4cfd-bc0a-68f7160ffd81 Co-authored-by: michaelmaslengow <147600733+michaelmaslengow@users.noreply.github.com> --- Block/Adminhtml/Order/Tracking.php | 16 ---------- Block/Adminhtml/Order/Tracking/View.php | 16 ---------- Helper/Toolbox.php | 2 +- Model/Import/Marketplace.php | 23 +++----------- Plugin/ReturnTrackingNumber.php | 6 ---- etc/db_schema.xml | 1 - etc/db_schema_whitelist.json | 3 +- view/adminhtml/templates/order/tracking.phtml | 30 +++++-------------- .../templates/order/tracking/view.phtml | 17 ----------- 9 files changed, 13 insertions(+), 101 deletions(-) diff --git a/Block/Adminhtml/Order/Tracking.php b/Block/Adminhtml/Order/Tracking.php index 68314b8..4839916 100644 --- a/Block/Adminhtml/Order/Tracking.php +++ b/Block/Adminhtml/Order/Tracking.php @@ -56,22 +56,6 @@ public function __construct( parent::__construct($context, $shippingConfig, $registry, $data); } - /** - * check if we can display the field - */ - public function canDisplayTrackingUrl(): bool - { - try { - return $this->getLengowOrder() - ->getMarketPlace() - ->hasTrackingUrl(); - - } catch (\Exception $e) { - - return false; - } - } - /** * check if we can display the field */ diff --git a/Block/Adminhtml/Order/Tracking/View.php b/Block/Adminhtml/Order/Tracking/View.php index 42cad09..9ff6375 100644 --- a/Block/Adminhtml/Order/Tracking/View.php +++ b/Block/Adminhtml/Order/Tracking/View.php @@ -67,22 +67,6 @@ public function __construct( ); } - /** - * check if we can display the field - */ - public function canDisplayTrackingUrl(): bool - { - try { - return $this->getLengowOrder() - ->getMarketPlace() - ->hasTrackingUrl(); - - } catch (\Exception $e) { - - return false; - } - } - /** * check if we can display the field */ diff --git a/Helper/Toolbox.php b/Helper/Toolbox.php index 1735279..dda11ad 100644 --- a/Helper/Toolbox.php +++ b/Helper/Toolbox.php @@ -907,7 +907,7 @@ private function getAllOrderData(array $data, ?MagentoOrderInterface $order = nu : null, self::TRACKING_MERCHANT_CARRIER => $lastTrack ? $lastTrack->getTitle() : null, self::TRACKING_MERCHANT_TRACKING_NUMBER => $lastTrack ? $lastTrack->getNumber() : null, - self::TRACKING_MERCHANT_TRACKING_URL => $lastTrack ? $lastTrack->getTrackingUrl() : null, + self::TRACKING_MERCHANT_TRACKING_URL => null, ], self::ORDER_IS_REIMPORTED => (bool) $data[LengowOrder::FIELD_IS_REIMPORTED], self::ORDER_IS_IN_ERROR => (bool) $data[LengowOrder::FIELD_IS_IN_ERROR], diff --git a/Model/Import/Marketplace.php b/Model/Import/Marketplace.php index 11f322b..a81aa6b 100644 --- a/Model/Import/Marketplace.php +++ b/Model/Import/Marketplace.php @@ -248,20 +248,6 @@ public function getAction(string $action): array return []; } - /** - * Check if has the field - */ - public function hasTrackingUrl() : bool - { - $action = $this->getAction(LengowAction::TYPE_SHIP); - if (empty($action)) { - return false; - } - $arguments = $this->getMarketplaceArguments(LengowAction::TYPE_SHIP); - - return in_array(LengowAction::ARG_TRACKING_URL, $arguments); - } - /** * Check if has the field */ @@ -466,11 +452,10 @@ private function getAllParams( $params[$arg] = isset($lastTrack) ? $lastTrack->getNumber() : ''; break; case LengowAction::ARG_TRACKING_URL: - $tracks = $shipment ? $shipment->getAllTracks() : null; - if (!empty($tracks)) { - $lastTrack = end($tracks); - } - $params[$arg] = isset($lastTrack) ? (string) $lastTrack->getTrackingUrl() : ''; + // Set the tracking URL value to send to the marketplace. + // Adapt this line to retrieve the URL from your preferred source, + // e.g. a custom order attribute: $order->getData('tracking_url') ?: '' + $params[$arg] = ''; break; case LengowAction::ARG_RETURN_TRACKING_NUMBER: $tracks = $shipment ? $shipment->getAllTracks() : null; diff --git a/Plugin/ReturnTrackingNumber.php b/Plugin/ReturnTrackingNumber.php index 7bcfc5f..db87330 100644 --- a/Plugin/ReturnTrackingNumber.php +++ b/Plugin/ReturnTrackingNumber.php @@ -49,12 +49,10 @@ public function beforeAddTrack(Shipment $subject, Track $track): array $shippingMethod = $lastTraskPosted['shipping_method_mktp'] ?? ''; $returnNumber = $lastTraskPosted['return_number'] ?? ''; $returnCarrierCode = $lastTraskPosted['return_carrier_code'] ?? ''; - $trackingUrl = $lastTraskPosted['tracking_url'] ?? ''; } else { $shippingMethod = $this->request->getPost('shipping_method_mktp') ?? ''; $returnNumber = $this->request->getPost('return_number') ?? ''; $returnCarrierCode = $this->request->getPost('return_carrier_code') ?? ''; - $trackingUrl = $this->request->getPost('tracking_url') ?? ''; } if ($shippingMethod) { @@ -69,10 +67,6 @@ public function beforeAddTrack(Shipment $subject, Track $track): array $track->setReturnCarrierCode($returnCarrierCode); } - if ($trackingUrl) { - $track->setTrackingUrl($trackingUrl); - } - return [$track]; } } diff --git a/etc/db_schema.xml b/etc/db_schema.xml index 426262e..a65380e 100644 --- a/etc/db_schema.xml +++ b/etc/db_schema.xml @@ -122,6 +122,5 @@ - diff --git a/etc/db_schema_whitelist.json b/etc/db_schema_whitelist.json index 78e6a19..45eb522 100644 --- a/etc/db_schema_whitelist.json +++ b/etc/db_schema_whitelist.json @@ -115,8 +115,7 @@ "column": { "shipping_method_mktp": true, "return_track_number": true, - "return_carrier_code": true, - "tracking_url": true + "return_carrier_code": true } } } diff --git a/view/adminhtml/templates/order/tracking.phtml b/view/adminhtml/templates/order/tracking.phtml index d511643..76eda39 100644 --- a/view/adminhtml/templates/order/tracking.phtml +++ b/view/adminhtml/templates/order/tracking.phtml @@ -30,9 +30,6 @@ require(['prototype'], function(){ $('trackingT' + this.index).disabled = false; $('trackingN' + this.index).disabled = false; $('shipping-method' + this.index).disabled = false; - canDisplayTrackingUrl()): ?> - $('trackingU' + this.index).disabled = false; - this.bindCurrierOnchange(); }, @@ -119,16 +116,6 @@ script; value="" disabled="disabled" /> - canDisplayTrackingUrl()): ?> - - - - canDisplayReturnCarrier()): ?> escapeHtml(__('Title')) ?> escapeHtml(__('Shipping')) ?> escapeHtml(__('Number')) ?> - canDisplayTrackingUrl()): ?> - escapeHtml(__('Tracking URL')) ?> - canDisplayReturnCarrier()): ?> escapeHtml(__('Return Carrier')) ?> @@ -184,13 +168,13 @@ script; - canDisplayTrackingUrl()) $colspan++; - if ($block->canDisplayReturnCarrier()) $colspan++; - if ($block->canDisplayReturnNumber()) $colspan++; - ?> - getChildHtml('add_button') ?> + canDisplayReturnNumber() && $block->canDisplayReturnCarrier()): ?> + getChildHtml('add_button') ?> + canDisplayReturnNumber()): ?> + getChildHtml('add_button') ?> + + getChildHtml('add_button') ?> + diff --git a/view/adminhtml/templates/order/tracking/view.phtml b/view/adminhtml/templates/order/tracking/view.phtml index 93752d0..2210125 100644 --- a/view/adminhtml/templates/order/tracking/view.phtml +++ b/view/adminhtml/templates/order/tracking/view.phtml @@ -23,9 +23,6 @@ $shippingHelper = $block->getData('shippingHelper'); escapeHtml(__('Title')) ?> escapeHtml(__('Shipping')) ?> escapeHtml(__('Number')) ?> - canDisplayTrackingUrl()): ?> - escapeHtml(__('Tracking URL')) ?> - canDisplayReturnCarrier()): ?> escapeHtml(__('Return Carrier')) ?> @@ -73,15 +70,6 @@ $shippingHelper = $block->getData('shippingHelper'); name="number" value="" /> - canDisplayTrackingUrl()): ?> - - - - canDisplayReturnCarrier()): ?> getData('shippingHelper');
- canDisplayTrackingUrl()): ?> - - escapeHtml($_track->getTrackingUrl()) ?> - - canDisplayReturnCarrier()): ?> escapeHtml($_track->getReturnCarrierCode()) ?>