diff --git a/plm_compare_bom/__manifest__.py b/plm_compare_bom/__manifest__.py index 61435495..4da9fb15 100644 --- a/plm_compare_bom/__manifest__.py +++ b/plm_compare_bom/__manifest__.py @@ -20,7 +20,7 @@ ############################################################################## { "name": "PLM Compare Bom", - "version": "16.0.1", + "version": "16.0.2", "author": "OmniaSolutions", "website": "https://odooplm.omniasolutions.website", "category": "Manufacturing/Product Lifecycle Management (PLM)", diff --git a/plm_compare_bom/models/compare_bom.py b/plm_compare_bom/models/compare_bom.py index 6f4fbb02..586c5137 100755 --- a/plm_compare_bom/models/compare_bom.py +++ b/plm_compare_bom/models/compare_bom.py @@ -204,20 +204,46 @@ def update_bom(self): mrp_bom_line = self.env['mrp.bom.line'] for plm_compare_bom_id in self: for plm_missing_id in plm_compare_bom_id.anotinb.filtered(lambda x: x.reason == 'new'): - mrp_bom_line.create({ - 'bom_id': self.bom_id1.id, - 'product_qty': plm_missing_id.itemqty, - 'product_id': plm_missing_id.part_id.id, - 'type': self.bom_id1.type, - 'itemnum': len(self.bom_id1.bom_line_ids) + 1}) + existing_line = mrp_bom_line.search([ + ('bom_id', '=', self.bom_id1.id), + ('product_id', '=', plm_missing_id.part_id.id), + ('itemnum', '=', plm_missing_id.itemnum) + ], limit=1) + + if existing_line: + if self.compute_type == "num_qty": + existing_line.product_qty = plm_missing_id.itemqty + else: + existing_line.product_qty += plm_missing_id.itemqty + else: + mrp_bom_line.create({ + 'bom_id': self.bom_id1.id, + 'product_qty': plm_missing_id.itemqty, + 'product_id': plm_missing_id.part_id.id, + 'type': self.bom_id1.type, + 'itemnum': plm_missing_id.itemnum + }) plm_missing_id.reason = 'added' for plm_adding_id in plm_compare_bom_id.bnotina.filtered(lambda x: x.reason == 'new'): - mrp_bom_line.create({ - 'bom_id': self.bom_id2.id, - 'product_qty': plm_adding_id.itemqty, - 'product_id': plm_adding_id.part_id.id, - 'type': self.bom_id2.type, - 'itemnum': len(self.bom_id2.bom_line_ids) + 1}) + existing_line = mrp_bom_line.search([ + ('bom_id', '=', self.bom_id2.id), + ('product_id', '=', plm_adding_id.part_id.id), + ('itemnum', '=', plm_adding_id.itemnum) + ], limit=1) + + if existing_line: + if self.compute_type == "num_qty": + existing_line.product_qty = plm_adding_id.itemqty + else: + existing_line.product_qty += plm_adding_id.itemqty + else: + mrp_bom_line.create({ + 'bom_id': self.bom_id2.id, + 'product_qty': plm_adding_id.itemqty, + 'product_id': plm_adding_id.part_id.id, + 'type': self.bom_id2.type, + 'itemnum': plm_adding_id.itemnum + }) plm_adding_id.reason = 'added' for mrp_bom_line_id in plm_compare_bom_id.bom_line_id_to_delete: mrp_bom_line_id.unlink()