changeset c86889cf1cc5 in modules/stock_package_shipping_dpd:default
details:
https://hg.tryton.org/modules/stock_package_shipping_dpd?cmd=changeset;node=c86889cf1cc5
description:
Add tracking URL
issue10136
review341531002
diffstat:
__init__.py | 1 +
stock.py | 38 ++++++++++++++++++++++++++++++++++++++
tests/scenario_shipping_dpd.rst | 4 ++++
3 files changed, 43 insertions(+), 0 deletions(-)
diffs (70 lines):
diff -r 8806c086675f -r c86889cf1cc5 __init__.py
--- a/__init__.py Sun Mar 07 10:04:08 2021 +0100
+++ b/__init__.py Sat Mar 13 23:16:32 2021 +0100
@@ -11,6 +11,7 @@
Pool.register(
carrier.CredentialDPD,
carrier.Carrier,
+ stock.Package,
stock.ShipmentOut,
stock.ShipmentInReturn,
module='stock_package_shipping_dpd', type_='model')
diff -r 8806c086675f -r c86889cf1cc5 stock.py
--- a/stock.py Sun Mar 07 10:04:08 2021 +0100
+++ b/stock.py Sat Mar 13 23:16:32 2021 +0100
@@ -22,6 +22,44 @@
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 -r 8806c086675f -r c86889cf1cc5 tests/scenario_shipping_dpd.rst
--- a/tests/scenario_shipping_dpd.rst Sun Mar 07 10:04:08 2021 +0100
+++ b/tests/scenario_shipping_dpd.rst Sat Mar 13 23:16:32 2021 +0100
@@ -222,3 +222,7 @@
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