From e990f246157bd3f3fcba4b3fcb7d3171e8b74f0f Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Fri, 27 Dec 2024 16:21:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A4=E5=BC=A0=E5=A4=96=E5=8D=8F=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 72 +++++++++++------------ sf_manufacturing/models/stock.py | 5 +- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index ed117589..b4367212 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -807,45 +807,45 @@ class MrpProduction(models.Model): workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'cancel'}) consecutive_workorders = [] sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence) - for i, workorder in enumerate(sorted_workorders): - # 检查当前工作订单和下一个工作订单是否连续,并且供应商相同 - if i == 0: - consecutive_workorders.append(workorder) - elif workorder.sequence == sorted_workorders[ - i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id: - consecutive_workorders.append(workorder) - else: - # 处理连续组,如果它不为空 - if consecutive_workorders: - proc_workorders.append(consecutive_workorders) - # 创建外协出入库单和采购订单 - # self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production, sorted_workorders) - # self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, - # product_id_to_production_names) - if i < len(sorted_workorders) - 1: - # 重置连续组,并添加当前工作订单 - consecutive_workorders = [workorder] - else: - # 判断最后一笔: - if workorder.sequence == sorted_workorders[ - i - 1].sequence and workorder.supplier_id.id == sorted_workorders[ - i - 1].supplier_id.id: - consecutive_workorders = [workorder] - else: - proc_workorders.append([workorder]) - # 立即创建外协出入库单和采购订单 - # self.env['stock.picking'].create_outcontract_picking(workorder, production) - # self.env['purchase.order'].get_purchase_order(workorder, production, - # product_id_to_production_names) - consecutive_workorders = [] - - # 处理最后一个组,即使它可能只有一个工作订单 - if consecutive_workorders: - proc_workorders.append(consecutive_workorders) + # for i, workorder in enumerate(sorted_workorders): + # # 检查当前工作订单和下一个工作订单是否连续,并且供应商相同 + # if i == 0: + # consecutive_workorders.append(workorder) + # elif workorder.sequence == sorted_workorders[ + # i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id: + # consecutive_workorders.append(workorder) + # else: + # # 处理连续组,如果它不为空 + # if consecutive_workorders: + # proc_workorders.append(consecutive_workorders) + # # 创建外协出入库单和采购订单 + # # self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production, sorted_workorders) + # # self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, + # # product_id_to_production_names) + # if i < len(sorted_workorders) - 1: + # # 重置连续组,并添加当前工作订单 + # consecutive_workorders = [workorder] + # else: + # # 判断最后一笔: + # if workorder.sequence == sorted_workorders[ + # i - 1].sequence and workorder.supplier_id.id == sorted_workorders[ + # i - 1].supplier_id.id: + # consecutive_workorders = [workorder] + # else: + # proc_workorders.append([workorder]) + # # 立即创建外协出入库单和采购订单 + # # self.env['stock.picking'].create_outcontract_picking(workorder, production) + # # self.env['purchase.order'].get_purchase_order(workorder, production, + # # product_id_to_production_names) + # consecutive_workorders = [] + # + # # 处理最后一个组,即使它可能只有一个工作订单 + # if consecutive_workorders: + # proc_workorders.append(consecutive_workorders) # self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) # self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, # product_id_to_production_names) - for workorders in reversed(proc_workorders): + for workorders in reversed(sorted_workorders): self.env['stock.picking'].create_outcontract_picking(workorders, production, sorted_workorders) self.env['purchase.order'].get_purchase_order(workorders, production, product_id_to_production_names) diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 8c202e6f..4aba2693 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -677,9 +677,8 @@ class StockPicking(models.Model): move_dest_id = item.move_raw_ids[0].id else: # 从sorted_workorders中找到上一工单的move - if sorted_workorders.index(workorder) > 0: - move_dest_id = \ - sorted_workorders[sorted_workorders.index(workorder) - 1].move_subcontract_workorder_ids[1].id + if len(sorted_workorders) > 1: + move_dest_id = sorted_workorders[sorted_workorders.index(workorder)+1].move_subcontract_workorder_ids[1].id new_picking = True outcontract_picking_type_in = self.env.ref( 'sf_manufacturing.outcontract_picking_in').id,