diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py index 908b7587c51..2928a4d9c00 100644 --- a/addons/delivery/models/stock_picking.py +++ b/addons/delivery/models/stock_picking.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import json + from odoo import models, fields, api, _ from odoo.exceptions import UserError @@ -181,12 +183,26 @@ class StockPicking(models.Model): if not self.carrier_tracking_url: raise UserError(_("Your delivery method has no redirect on courier provider's website to track this order.")) - client_action = {'type': 'ir.actions.act_url', - 'name': "Shipment Tracking Page", - 'target': 'new', - 'url': self.carrier_tracking_url, - } - return client_action + carrier_trackers = [] + try: + carrier_trackers = json.loads(self.carrier_tracking_url) + except ValueError: + carrier_trackers = self.carrier_tracking_url + + if len(carrier_trackers) > 1: + msg = "Tracking links for shipment:
" + for tracker in carrier_trackers: + msg += '' + tracker[0] + '
' + self.message_post(body=msg) + return self.env.ref('delivery.act_delivery_trackers_url').read()[0] + else: + client_action = { + 'type': 'ir.actions.act_url', + 'name': "Shipment Tracking Page", + 'target': 'new', + 'url': self.carrier_tracking_url, + } + return client_action @api.one def cancel_shipment(self): diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml index f0c867bce0f..02af51b57b1 100644 --- a/addons/delivery/views/delivery_view.xml +++ b/addons/delivery/views/delivery_view.xml @@ -298,4 +298,30 @@ + + delivery.carrier.warning.url.form + stock.picking + +
+ +
+

You have multiple URL, they should be available in the chatter.

+
+
+ +
+
+
+ + + Display tracking links + ir.actions.act_window + stock.picking + form + + form + new +