diff --git a/mrp_production_auto_validate/models/mrp_production.py b/mrp_production_auto_validate/models/mrp_production.py index 6252b9b17..51c0c843a 100644 --- a/mrp_production_auto_validate/models/mrp_production.py +++ b/mrp_production_auto_validate/models/mrp_production.py @@ -13,7 +13,9 @@ class MrpProduction(models.Model): auto_validate = fields.Boolean( string="Auto Validate", - default=False, + compute="_compute_auto_validate", + store=True, + states={"draft": [("readonly", False)]}, ) @api.constrains("bom_id", "auto_validate", "product_qty") @@ -39,11 +41,16 @@ class MrpProduction(models.Model): ).format(qty=mo.bom_id.product_qty) ) - @api.onchange("bom_id") - def _onchange_bom_id(self): - res = super()._onchange_bom_id() - self.auto_validate = self.bom_id.mo_auto_validation - return res + @api.depends("bom_id.mo_auto_validation", "state") + def _compute_auto_validate(self): + for prod in self: + if prod.state != "draft": + # Avoid recomputing the value once the MO is confirmed. + # e.g. if the value changes on the BOM but the MO was already confirmed, + # or if the user forces another value while the MO is in draft, + # we don't want to change the value after confirmation. + continue + prod.auto_validate = prod.bom_id.mo_auto_validation def _auto_validate_after_picking(self): self.ensure_one()