From 020ec886dd51a980e3bd9622581e7ae7f7712922 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Fri, 26 Jul 2024 18:23:30 +0200 Subject: [PATCH] [IMP] mrp_multi_level: add hooks to improve extensibility --- mrp_multi_level/models/product_mrp_area.py | 4 ++++ mrp_multi_level/wizards/mrp_multi_level.py | 17 ++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/mrp_multi_level/models/product_mrp_area.py b/mrp_multi_level/models/product_mrp_area.py index abb33dc79..90b99b2f5 100644 --- a/mrp_multi_level/models/product_mrp_area.py +++ b/mrp_multi_level/models/product_mrp_area.py @@ -293,3 +293,7 @@ class ProductMRPArea(models.Model): def _get_locations(self): self.ensure_one() return self.mrp_area_id._get_locations() + + def _should_create_planned_order(self): + self.ensure_one() + return not self.supply_method == "phantom" diff --git a/mrp_multi_level/wizards/mrp_multi_level.py b/mrp_multi_level/wizards/mrp_multi_level.py index 1482a604d..0b1a6d212 100644 --- a/mrp_multi_level/wizards/mrp_multi_level.py +++ b/mrp_multi_level/wizards/mrp_multi_level.py @@ -275,7 +275,7 @@ class MultiLevelMrp(models.TransientModel): ) # Do not create planned order for products that are Kits planned_order = False - if not product_mrp_area_id.supply_method == "phantom": + if product_mrp_area_id._should_create_planned_order(): planned_order = self.env["mrp.planned.order"].create(order_data) qty_ordered = qty_ordered + qty @@ -870,6 +870,14 @@ class MultiLevelMrp(models.TransientModel): if invs: po.mrp_inventory_id = invs[0] + def should_build_time_phased_inventory(self, product_mrp_area): + return not ( + self._exclude_from_mrp( + product_mrp_area.product_id, product_mrp_area.mrp_area_id + ) + or product_mrp_area.supply_method == "phantom" + ) + @api.model def _mrp_final_process(self, mrp_areas): logger.info("Start MRP final process") @@ -880,12 +888,7 @@ class MultiLevelMrp(models.TransientModel): for product_mrp_area in product_mrp_area_ids: # Build the time-phased inventory - if ( - self._exclude_from_mrp( - product_mrp_area.product_id, product_mrp_area.mrp_area_id - ) - or product_mrp_area.supply_method == "phantom" - ): + if not self.should_build_time_phased_inventory(product_mrp_area): continue self._init_mrp_inventory(product_mrp_area) logger.info("End MRP final process")