From f5d5acb7190ab51fdef85ab776107d0483f09b96 Mon Sep 17 00:00:00 2001 From: mariadforgeflow Date: Thu, 21 Oct 2021 09:55:29 +0200 Subject: [PATCH] [FIX] mrp_production_grouped_by product: MO duplicate lines --- .../models/__init__.py | 1 + .../models/stock_move.py | 29 +++++++++++++++++++ .../test_mrp_production_grouped_by_product.py | 3 ++ 3 files changed, 33 insertions(+) create mode 100644 mrp_production_grouped_by_product/models/stock_move.py diff --git a/mrp_production_grouped_by_product/models/__init__.py b/mrp_production_grouped_by_product/models/__init__.py index 7624a2753..497bed0f3 100644 --- a/mrp_production_grouped_by_product/models/__init__.py +++ b/mrp_production_grouped_by_product/models/__init__.py @@ -1,3 +1,4 @@ from . import mrp_production from . import stock_rule from . import stock_picking_type +from . import stock_move diff --git a/mrp_production_grouped_by_product/models/stock_move.py b/mrp_production_grouped_by_product/models/stock_move.py new file mode 100644 index 000000000..6cc66ad4c --- /dev/null +++ b/mrp_production_grouped_by_product/models/stock_move.py @@ -0,0 +1,29 @@ +# Copyright 2018 Tecnativa - David Vidal +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class StockMove(models.Model): + _inherit = "stock.move" + + @api.model_create_multi + def create(self, vals_list): + new_vals_list = [] + for val in vals_list: + if ( + self.env.context.get("group_mo_by_product", False) + and "raw_material_production_id" in val + ): + mo = self.env["mrp.production"].browse( + val["raw_material_production_id"] + ) + # MO already has raw materials + if mo.move_raw_ids: + continue + else: + new_vals_list.append(val) + else: + new_vals_list.append(val) + return super(StockMove, self).create(new_vals_list) diff --git a/mrp_production_grouped_by_product/tests/test_mrp_production_grouped_by_product.py b/mrp_production_grouped_by_product/tests/test_mrp_production_grouped_by_product.py index 124fa9445..d7f52f370 100644 --- a/mrp_production_grouped_by_product/tests/test_mrp_production_grouped_by_product.py +++ b/mrp_production_grouped_by_product/tests/test_mrp_production_grouped_by_product.py @@ -89,6 +89,9 @@ class TestProductionGroupedByProduct(common.SavepointCase): mo = self.MrpProduction.search([("product_id", "=", self.product1.id)]) self.assertEqual(len(mo), 1) self.assertEqual(mo.product_qty, 12) + mto_prod = mo.move_raw_ids.search([("product_id", "=", self.product2.id)]) + self.assertEqual(len(mto_prod), 1) + self.assertEqual(mto_prod[0].product_qty, 12) # Run again the scheduler to see if quantities are altered self.ProcurementGroup.with_context(test_group_mo=True).run_scheduler() mo = self.MrpProduction.search([("product_id", "=", self.product1.id)])