From b3f58f5b2f7c2e795b0ebdc298bbe8b5a3c78f8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 13 Mar 2021 23:16:32 +0100 Subject: [PATCH] Add tracking URL issue10136 review341531002 --- __init__.py | 1 + stock.py | 38 +++++++++++++++++++++++++++++++++ tests/scenario_shipping_dpd.rst | 4 ++++ 3 files changed, 43 insertions(+) diff --git a/__init__.py b/__init__.py index 1f22fa7869..10b6995568 100644 --- a/__init__.py +++ b/__init__.py @@ -11,6 +11,7 @@ def register(): Pool.register( carrier.CredentialDPD, carrier.Carrier, + stock.Package, stock.ShipmentOut, stock.ShipmentInReturn, module='stock_package_shipping_dpd', type_='model') diff --git a/stock.py b/stock.py index 8d728511b1..b00b6db222 100644 --- a/stock.py +++ b/stock.py @@ -22,6 +22,44 @@ from trytond.modules.stock_package_shipping.exceptions import ( from .configuration import get_client, SHIPMENT_SERVICE from .exceptions import DPDError +TRACKING_URL = 'https://tracking.dpd.de/status/%(code)s/parcel/%(reference)s' + + +class Package(metaclass=PoolMeta): + __name__ = 'stock.package' + + def get_shipping_tracking_url(self, name): + pool = Pool() + ShipmentOut = pool.get('stock.shipment.out') + ShipmentInReturn = pool.get('stock.shipment.in.return') + url = super().get_shipping_tracking_url(name) + if (self.shipping_reference + and self.shipment + and self.shipment.id >= 0 + and self.shipment.carrier + and self.shipment.carrier.shipping_service == 'dpd'): + party = address = None + if isinstance(self.shipment, ShipmentOut): + party = self.shipment.customer + address = self.shipment.delivery_address + elif isinstance(self.shipment, ShipmentInReturn): + party = self.shipment.supplier + address = self.shipment.delivery_address + if party and party.lang: + lang_code = party.lang.code + else: + lang_code = Transaction().language + if address and address.country: + code = '_'.join( + (lang_code.split('_')[0], address.country.code)) + else: + code = lang_code + url = TRACKING_URL % { + 'code': code, + 'reference': self.shipping_reference, + } + return url + class ShippingDPDMixin: diff --git a/tests/scenario_shipping_dpd.rst b/tests/scenario_shipping_dpd.rst index 79df91076f..5bb613d2ed 100644 --- a/tests/scenario_shipping_dpd.rst +++ b/tests/scenario_shipping_dpd.rst @@ -222,3 +222,7 @@ Create the packs and ship the shipment:: True >>> pack.shipping_reference is not None True + >>> pack.shipping_tracking_url.startswith('https://tracking.dpd.de/status/') + True + >>> pack.shipping_tracking_url.endswith(pack.shipping_reference) + True