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()): ?>
= $escaper->escapeHtml(__('Title')) ?>
| = $escaper->escapeHtml(__('Shipping')) ?> |
= $escaper->escapeHtml(__('Number')) ?> |
+ canDisplayTrackingUrl()): ?>
+ = $escaper->escapeHtml(__('Tracking URL')) ?> |
+
canDisplayReturnCarrier()): ?>
= $escaper->escapeHtml(__('Return Carrier')) ?> |
@@ -168,13 +184,13 @@ script;
- canDisplayReturnNumber() && $block->canDisplayReturnCarrier()): ?>
- | = $block->getChildHtml('add_button') ?> |
- canDisplayReturnNumber()): ?>
- = $block->getChildHtml('add_button') ?> |
-
- = $block->getChildHtml('add_button') ?> |
-
+ canDisplayTrackingUrl()) $colspan++;
+ if ($block->canDisplayReturnCarrier()) $colspan++;
+ if ($block->canDisplayReturnNumber()) $colspan++;
+ ?>
+ = $block->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');
= $escaper->escapeHtml(__('Title')) ?> |
= $escaper->escapeHtml(__('Shipping')) ?> |
= $escaper->escapeHtml(__('Number')) ?> |
+ canDisplayTrackingUrl()): ?>
+ = $escaper->escapeHtml(__('Tracking URL')) ?> |
+
canDisplayReturnCarrier()): ?>
= $escaper->escapeHtml(__('Return Carrier')) ?> |
@@ -70,6 +73,15 @@ $shippingHelper = $block->getData('shippingHelper');
name="number"
value="" />
+ canDisplayTrackingUrl()): ?>
+
+
+ |
+
canDisplayReturnCarrier()): ?>
getData('shippingHelper');
|
+ canDisplayTrackingUrl()): ?>
+
+ = $escaper->escapeHtml($_track->getTrackingUrl()) ?>
+ |
+
canDisplayReturnCarrier()): ?>
= $escaper->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()): ?>
= $escaper->escapeHtml(__('Title')) ?>
| = $escaper->escapeHtml(__('Shipping')) ?> |
= $escaper->escapeHtml(__('Number')) ?> |
- canDisplayTrackingUrl()): ?>
- = $escaper->escapeHtml(__('Tracking URL')) ?> |
-
canDisplayReturnCarrier()): ?>
= $escaper->escapeHtml(__('Return Carrier')) ?> |
@@ -184,13 +168,13 @@ script;
- canDisplayTrackingUrl()) $colspan++;
- if ($block->canDisplayReturnCarrier()) $colspan++;
- if ($block->canDisplayReturnNumber()) $colspan++;
- ?>
- | = $block->getChildHtml('add_button') ?> |
+ canDisplayReturnNumber() && $block->canDisplayReturnCarrier()): ?>
+ = $block->getChildHtml('add_button') ?> |
+ canDisplayReturnNumber()): ?>
+ = $block->getChildHtml('add_button') ?> |
+
+ = $block->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');
= $escaper->escapeHtml(__('Title')) ?> |
= $escaper->escapeHtml(__('Shipping')) ?> |
= $escaper->escapeHtml(__('Number')) ?> |
- canDisplayTrackingUrl()): ?>
- = $escaper->escapeHtml(__('Tracking URL')) ?> |
-
canDisplayReturnCarrier()): ?>
= $escaper->escapeHtml(__('Return Carrier')) ?> |
@@ -73,15 +70,6 @@ $shippingHelper = $block->getData('shippingHelper');
name="number"
value="" />
- canDisplayTrackingUrl()): ?>
-
-
- |
-
canDisplayReturnCarrier()): ?>
getData('shippingHelper');
|
- canDisplayTrackingUrl()): ?>
-
- = $escaper->escapeHtml($_track->getTrackingUrl()) ?>
- |
-
canDisplayReturnCarrier()): ?>
= $escaper->escapeHtml($_track->getReturnCarrierCode()) ?>
|