From fc733bab12ac467d51f3e28250b13d46e69b0cf6 Mon Sep 17 00:00:00 2001 From: "r.perez" Date: Mon, 11 Nov 2024 18:25:00 -0500 Subject: [PATCH] [IMP] sale_mrp_bom: disable edition for bom_id field in sale order line if product's manufacture routes aren't properly settle --- sale_mrp_bom/models/sale_order_line.py | 15 +++++++++++++++ sale_mrp_bom/views/sale_order.xml | 4 ++++ sale_mrp_bom/views/sale_order_line.xml | 7 ++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/sale_mrp_bom/models/sale_order_line.py b/sale_mrp_bom/models/sale_order_line.py index 8a227d181c91..eb0f85b0a5ed 100644 --- a/sale_mrp_bom/models/sale_order_line.py +++ b/sale_mrp_bom/models/sale_order_line.py @@ -16,6 +16,8 @@ class SaleOrderLine(models.Model): "('product_id', '=', False)]", ) + can_set_bom_id = fields.Boolean(store=True, compute="_compute_can_set_bom_id") + @api.constrains("bom_id", "product_id") def _check_match_product_variant_ids(self): for line in self: @@ -32,3 +34,16 @@ def _check_match_product_variant_ids(self): "Please select BoM that has matched product with the line `{}`" ).format(line_product.name) ) + + @api.depends("product_id.route_ids", "is_mto") + def _compute_can_set_bom_id(self): + manufacture_route = self.env.ref( + "mrp.route_warehouse0_manufacture", raise_if_not_found=False + ) + for line in self: + can_set_bom_id = False + if line.product_id and manufacture_route: + can_set_bom_id = ( + manufacture_route in line.product_id.route_ids and line.is_mto + ) + line.can_set_bom_id = can_set_bom_id diff --git a/sale_mrp_bom/views/sale_order.xml b/sale_mrp_bom/views/sale_order.xml index f75a6ecd18f9..ddc9e7548ab5 100644 --- a/sale_mrp_bom/views/sale_order.xml +++ b/sale_mrp_bom/views/sale_order.xml @@ -9,10 +9,12 @@ expr="//field[@name='order_line']//tree//field[@name='name']" position="after" > + + diff --git a/sale_mrp_bom/views/sale_order_line.xml b/sale_mrp_bom/views/sale_order_line.xml index fabfd97ac0d0..56cc4535c267 100644 --- a/sale_mrp_bom/views/sale_order_line.xml +++ b/sale_mrp_bom/views/sale_order_line.xml @@ -6,7 +6,12 @@ - + +