From 0cc22fcd250ca14a428fdd333f8be13476fe88d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Oct 2026 18:03:10 +0200 Subject: [PATCH] Use default value when copying "updated" fields of stock move Since 6c611c520744, the readonly of field is enforced so the copied value of boolean field must be the default value for readonly fields. Closes #15148 --- modules/production/stock.py | 12 ++++++++++++ modules/stock/move.py | 2 ++ modules/stock_conversion/stock.py | 12 ++++++++++++ 3 files changed, 26 insertions(+) diff --git a/modules/production/stock.py b/modules/production/stock.py index 5700f1bfe8..5d45926ae5 100644 --- a/modules/production/stock.py +++ b/modules/production/stock.py @@ -157,6 +157,10 @@ class Move(metaclass=PoolMeta): ('production_output' + nested, operator, operand, *extra), ] + @classmethod + def default_production_cost_price_updated(cls): + return False + def set_effective_date(self): if not self.effective_date and self.production_input: self.effective_date = self.production_input.effective_start_date @@ -175,6 +179,14 @@ class Move(metaclass=PoolMeta): def _rec_name_origin(self): return super()._rec_name_origin() or self.production + @classmethod + def copy(cls, moves, default=None): + default = default.copy() if default is not None else {} + default.setdefault( + 'production_cost_price_updated', + cls.default_production_cost_price_updated()) + return super().copy(moves, default=default) + class ProductQuantitiesByWarehouseMove(metaclass=PoolMeta): __name__ = 'stock.product_quantities_warehouse.move' diff --git a/modules/stock/move.py b/modules/stock/move.py index b5e3ea7473..f38ffd6708 100644 --- a/modules/stock/move.py +++ b/modules/stock/move.py @@ -1035,6 +1035,8 @@ class Move(Workflow, ModelSQL, ModelView): default.setdefault('internal_quantity', 0) default.setdefault('cost_price') default.setdefault('outcome_moves', None) + default.setdefault( + 'unit_price_updated', cls.default_unit_price_updated()) return super().copy(moves, default=default) def compute_fields(self, field_names=None): diff --git a/modules/stock_conversion/stock.py b/modules/stock_conversion/stock.py index 9f3ca560e1..71510ff0bd 100644 --- a/modules/stock_conversion/stock.py +++ b/modules/stock_conversion/stock.py @@ -601,6 +601,10 @@ class Move(metaclass=PoolMeta): super().__setup__() cls._allow_modify_closed_period.add('conversion_cost_price_updated') + @classmethod + def default_conversion_cost_price_updated(cls): + return False + @classmethod def _get_origin(cls): return [*super()._get_origin(), 'stock.conversion'] @@ -616,3 +620,11 @@ class Move(metaclass=PoolMeta): if m.state == 'done' and isinstance(m.origin, Conversion)], {'conversion_cost_price_updated': True}) + + @classmethod + def copy(cls, moves, default=None): + default = default.copy() if default is not None else {} + default.setdefault( + 'conversion_cost_price_updated', + cls.default_conversion_cost_price_updated()) + return super().copy(moves, default=default)