diff --git a/sale.py b/sale.py index 603678c1f1..cfd15e2393 100644 --- a/sale.py +++ b/sale.py @@ -31,7 +31,6 @@ class Sale: __name__ = 'sale.sale' carrier = fields.Many2One('carrier', 'Carrier', domain=[('carrier_product.salable', '=', True)], - on_change=['carrier', 'party', 'currency', 'sale_date'], states={ 'readonly': Eval('state') != 'draft', }, @@ -43,18 +42,6 @@ class Sale: 'readonly': Eval('state') != 'draft', }, depends=['state']) - @classmethod - def __setup__(cls): - super(Sale, cls).__setup__() - - for fname in ('carrier', 'party', 'currency', 'sale_date', - 'shipment_cost_method', 'lines'): - if fname not in cls.lines.on_change: - cls.lines.on_change.append(fname) - for fname in cls.lines.on_change: - if fname not in cls.carrier.on_change: - cls.carrier.on_change.append(fname) - @staticmethod def default_carrier(): Config = Pool().get('sale.configuration') @@ -70,9 +57,12 @@ class Sale: def _get_carrier_context(self): return {} + @fields.depends(methods=['lines']) def on_change_carrier(self): return self.on_change_lines() + @fields.depends('carrier', 'party', 'currency', 'sale_date', + 'shipment_cost_method', 'lines') def on_change_lines(self): pool = Pool() Product = pool.get('product.product') diff --git a/stock.py b/stock.py index ba6582b0c6..6d83c88ce2 100644 --- a/stock.py +++ b/stock.py @@ -13,7 +13,7 @@ class ShipmentOut: __name__ = 'stock.shipment.out' carrier = fields.Many2One('carrier', 'Carrier', states={ 'readonly': Eval('state') != 'draft', - }, on_change=['carrier'], + }, depends=['state']) cost_currency = fields.Many2One('currency.currency', 'Cost Currency', states={ @@ -23,7 +23,7 @@ class ShipmentOut: 'packed']), }, depends=['carrier', 'state']) cost_currency_digits = fields.Function(fields.Integer( - 'Cost Currency Digits', on_change_with=['currency']), + 'Cost Currency Digits'), 'on_change_with_cost_currency_digits') cost = fields.Numeric('Cost', digits=(16, Eval('cost_currency_digits', 2)), states={ @@ -41,15 +41,8 @@ class ShipmentOut: 'missing_account_revenue': ('Missing "Account Revenue" on ' 'product "%s".'), }) - if not cls.inventory_moves.on_change: - cls.inventory_moves.on_change = [] - for fname in ('carrier', 'customer', 'inventory_moves'): - if fname not in cls.inventory_moves.on_change: - cls.inventory_moves.on_change.append(fname) - for fname in cls.inventory_moves.on_change: - if fname not in cls.carrier.on_change: - cls.carrier.on_change.append(fname) + @fields.depends('currency') def on_change_with_cost_currency_digits(self, name=None): if self.cost_currency: return self.cost_currency.digits @@ -61,9 +54,11 @@ class ShipmentOut: def get_carrier_context(self): return self._get_carrier_context() + @fields.depends(methods=['inventory_moves']) def on_change_carrier(self): return self.on_change_inventory_moves() + @fields.depends('carrier', 'customer', 'inventory_moves') def on_change_inventory_moves(self): Currency = Pool().get('currency.currency')