From 270ee0f8cb09b83eeada68565fe23d77ae9fbbca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 20 Aug 2023 12:50:27 +0200 Subject: [PATCH] Remove Weight UoM Digits on carrier price list --- modules/carrier_weight/carrier.py | 24 ++++++++----------- .../tests/scenario_carrier_weight.rst | 4 +--- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/modules/carrier_weight/carrier.py b/modules/carrier_weight/carrier.py index 29cf7f3928..9ed0bec303 100644 --- a/modules/carrier_weight/carrier.py +++ b/modules/carrier_weight/carrier.py @@ -20,8 +20,6 @@ class Carrier(metaclass=PoolMeta): 'readonly': Bool(Eval('weight_price_list', [])), }, help="The Unit of Measure of weight criteria for the price list.") - weight_uom_digits = fields.Function(fields.Integer("Weight UoM Digits"), - 'on_change_with_weight_uom_digits') weight_currency = fields.Many2One('currency.currency', 'Currency', states={ 'invisible': Eval('carrier_cost_method') != 'weight', @@ -46,16 +44,6 @@ class Carrier(metaclass=PoolMeta): if selection not in cls.carrier_cost_method.selection: cls.carrier_cost_method.selection.append(selection) - @staticmethod - def default_weight_uom_digits(): - return 2 - - @fields.depends('weight_uom') - def on_change_with_weight_uom_digits(self, name=None): - if self.weight_uom: - return self.weight_uom.digits - return 2 - def compute_weight_price(self, weight): "Compute price based on weight" for line in reversed(self.weight_price_list): @@ -94,8 +82,8 @@ class WeightPriceList(ModelSQL, ModelView): carrier = fields.Many2One( 'carrier', "Carrier", required=True, help="The carrier that the price list belongs to.") - weight = fields.Float('Weight', - digits=(16, Eval('_parent_carrier', {}).get('weight_uom_digits', 2)), + weight = fields.Float( + "Weight", digits='weight_uom', domain=[ ('weight', '>=', 0), ], @@ -108,6 +96,10 @@ class WeightPriceList(ModelSQL, ModelView): currency = fields.Function(fields.Many2One( 'currency.currency', "Currency"), 'on_change_with_currency') + weight_uom = fields.Function(fields.Many2One( + 'product.uom', "Weight UoM", + help="The Unit of Measure of the weight."), + 'on_change_with_weight_uom') @classmethod def __setup__(cls): @@ -117,3 +109,7 @@ class WeightPriceList(ModelSQL, ModelView): @fields.depends('carrier', '_parent_carrier.weight_currency') def on_change_with_currency(self, name=None): return self.carrier.weight_currency if self.carrier else None + + @fields.depends('carrier', '_parent_carrier.weight_uom') + def on_change_with_weight_uom(self, name=None): + return self.carrier.weight_uom if self.carrier else None diff --git a/modules/carrier_weight/tests/scenario_carrier_weight.rst b/modules/carrier_weight/tests/scenario_carrier_weight.rst index 5c68e75e86..c1929afbcb 100644 --- a/modules/carrier_weight/tests/scenario_carrier_weight.rst +++ b/modules/carrier_weight/tests/scenario_carrier_weight.rst @@ -95,7 +95,6 @@ Create product:: Create carrier:: >>> Carrier = Model.get('carrier') - >>> WeightPriceList = Model.get('carrier.weight_price_list') >>> kilogram, = ProductUom.find([('name', '=', 'Kilogram')]) >>> carrier = Carrier() >>> party = Party(name='Carrier') @@ -110,8 +109,7 @@ Create carrier:: ... (1, Decimal(40)), ... (5, Decimal(180)), ... ): - ... line = WeightPriceList(weight=weight, price=price) - ... carrier.weight_price_list.append(line) + ... line = carrier.weight_price_list.new(weight=weight, price=price) >>> carrier.save() Receive a single product line::