diff --git a/mrp_multi_level/views/mrp_planned_order_views.xml b/mrp_multi_level/views/mrp_planned_order_views.xml index 62e265b11..9366231d8 100644 --- a/mrp_multi_level/views/mrp_planned_order_views.xml +++ b/mrp_multi_level/views/mrp_planned_order_views.xml @@ -75,6 +75,7 @@ mrp.planned.order + diff --git a/mrp_multi_level/wizards/mrp_multi_level.py b/mrp_multi_level/wizards/mrp_multi_level.py index 3ec0123ce..20f31f0f9 100644 --- a/mrp_multi_level/wizards/mrp_multi_level.py +++ b/mrp_multi_level/wizards/mrp_multi_level.py @@ -356,18 +356,20 @@ class MultiLevelMrp(models.TransientModel): in_moves = move_obj.search(in_domain) out_domain = product_mrp_area._out_stock_moves_domain() out_moves = move_obj.search(out_domain) + move_vals = [] if in_moves: for move in in_moves: move_data = self._prepare_mrp_move_data_from_stock_move( product_mrp_area, move, direction="in" ) - mrp_move_obj.create(move_data) + move_vals.append(move_data) if out_moves: for move in out_moves: move_data = self._prepare_mrp_move_data_from_stock_move( product_mrp_area, move, direction="out" ) - mrp_move_obj.create(move_data) + move_vals.append(move_data) + mrp_move_obj.create(move_vals) return True @api.model @@ -415,11 +417,14 @@ class MultiLevelMrp(models.TransientModel): ] ) + mrp_move_vals = [] for line in po_lines: mrp_move_data = self._prepare_mrp_move_data_from_purchase_order( line, product_mrp_area ) - self.env["mrp.move"].create(mrp_move_data) + mrp_move_vals.append(mrp_move_data) + if mrp_move_vals: + self.env["mrp.move"].create(mrp_move_vals) @api.model def _get_product_mrp_area_from_product_and_area(self, product, mrp_area): @@ -694,6 +699,7 @@ class MultiLevelMrp(models.TransientModel): location=product_mrp_area.mrp_area_id.location_id.id )._product_available()[product_mrp_area.product_id.id]["qty_available"] running_availability = on_hand_qty + mrp_inventory_vals = [] for mdt in sorted(mrp_dates): mrp_inventory_data, running_availability = self._prepare_mrp_inventory_data( product_mrp_area, @@ -704,14 +710,17 @@ class MultiLevelMrp(models.TransientModel): supply_qty_by_date, planned_qty_by_date, ) - inv_id = self.env["mrp.inventory"].create(mrp_inventory_data) + mrp_inventory_vals.append(mrp_inventory_data) + if mrp_inventory_vals: + mrp_invs = self.env["mrp.inventory"].create(mrp_inventory_vals) + planned_orders = planned_order_obj.search( + [("product_mrp_area_id", "=", product_mrp_area.id)] + ) # attach planned orders to inventory - planned_order_obj.search( - [ - ("due_date", "=", mdt), - ("product_mrp_area_id", "=", product_mrp_area.id), - ] - ).write({"mrp_inventory_id": inv_id.id}) + for po in planned_orders: + invs = mrp_invs.filtered(lambda i: i.date == po.due_date) + if invs: + po.mrp_inventory_id = invs[0] @api.model def _mrp_final_process(self, mrp_areas):