38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import _, fields, models, api
|
||
|
from odoo.exceptions import UserError
|
||
|
|
||
|
|
||
|
class DeliveryCarrierMondialRelay(models.Model):
|
||
|
_inherit = 'delivery.carrier'
|
||
|
|
||
|
is_mondialrelay = fields.Boolean(compute='_compute_is_mondialrelay', search='_search_is_mondialrelay')
|
||
|
mondialrelay_brand = fields.Char(string='Brand Code', default='BDTEST ')
|
||
|
mondialrelay_packagetype = fields.Char(default="24R", groups="base.group_system") # Advanced
|
||
|
|
||
|
@api.depends('product_id.default_code')
|
||
|
def _compute_is_mondialrelay(self):
|
||
|
for c in self:
|
||
|
c.is_mondialrelay = c.product_id.default_code == "MR"
|
||
|
|
||
|
def _search_is_mondialrelay(self, operator, value):
|
||
|
if operator not in ('=', '!=') or not isinstance(value, bool):
|
||
|
raise UserError(_("Operation not supported"))
|
||
|
if not value:
|
||
|
operator = '!=' if operator == '=' else '='
|
||
|
return [('product_id.default_code', operator, 'MR')]
|
||
|
|
||
|
def fixed_get_tracking_link(self, picking):
|
||
|
return self.base_on_rule_get_tracking_link(picking)
|
||
|
|
||
|
def base_on_rule_get_tracking_link(self, picking):
|
||
|
if self.is_mondialrelay:
|
||
|
return 'https://www.mondialrelay.com/public/permanent/tracking.aspx?ens=%(brand)s&exp=%(track)s&language=%(lang)s' % {
|
||
|
'brand': picking.carrier_id.mondialrelay_brand,
|
||
|
'track': picking.carrier_tracking_ref,
|
||
|
'lang': (picking.partner_id.lang or 'fr').split('_')[0],
|
||
|
}
|
||
|
return super().base_on_rule_get_tracking_link(picking)
|