Accept Merge Request #1654: (feature/part_number -> develop)

Merge Request: 两张外协工单报错问题

Created By: @廖丹龙
Reviewed By: @胡尧
Approved By: @胡尧 
Accepted By: @廖丹龙
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1654
This commit is contained in:
廖丹龙
2024-12-27 17:08:40 +08:00
committed by Coding
2 changed files with 38 additions and 39 deletions

View File

@@ -803,45 +803,45 @@ class MrpProduction(models.Model):
workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'cancel'}) workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'cancel'})
consecutive_workorders = [] consecutive_workorders = []
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence) sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence)
for i, workorder in enumerate(sorted_workorders): # for i, workorder in enumerate(sorted_workorders):
# 检查当前工作订单和下一个工作订单是否连续,并且供应商相同 # # 检查当前工作订单和下一个工作订单是否连续,并且供应商相同
if i == 0: # if i == 0:
consecutive_workorders.append(workorder) # consecutive_workorders.append(workorder)
elif workorder.sequence == sorted_workorders[ # elif workorder.sequence == sorted_workorders[
i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id: # i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id:
consecutive_workorders.append(workorder) # consecutive_workorders.append(workorder)
else: # else:
# 处理连续组,如果它不为空 # # 处理连续组,如果它不为空
if consecutive_workorders: # if consecutive_workorders:
proc_workorders.append(consecutive_workorders) # proc_workorders.append(consecutive_workorders)
# 创建外协出入库单和采购订单 # # 创建外协出入库单和采购订单
# self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production, sorted_workorders) # # self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production, sorted_workorders)
# self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, # # self.env['purchase.order'].get_purchase_order(consecutive_workorders, production,
# product_id_to_production_names) # # product_id_to_production_names)
if i < len(sorted_workorders) - 1: # if i < len(sorted_workorders) - 1:
# 重置连续组,并添加当前工作订单 # # 重置连续组,并添加当前工作订单
consecutive_workorders = [workorder] # consecutive_workorders = [workorder]
else: # else:
# 判断最后一笔: # # 判断最后一笔:
if workorder.sequence == sorted_workorders[ # if workorder.sequence == sorted_workorders[
i - 1].sequence and workorder.supplier_id.id == sorted_workorders[ # i - 1].sequence and workorder.supplier_id.id == sorted_workorders[
i - 1].supplier_id.id: # i - 1].supplier_id.id:
consecutive_workorders = [workorder] # consecutive_workorders = [workorder]
else: # else:
proc_workorders.append([workorder]) # proc_workorders.append([workorder])
# 立即创建外协出入库单和采购订单 # # 立即创建外协出入库单和采购订单
# self.env['stock.picking'].create_outcontract_picking(workorder, production) # # self.env['stock.picking'].create_outcontract_picking(workorder, production)
# self.env['purchase.order'].get_purchase_order(workorder, production, # # self.env['purchase.order'].get_purchase_order(workorder, production,
# product_id_to_production_names) # # product_id_to_production_names)
consecutive_workorders = [] # consecutive_workorders = []
#
# 处理最后一个组,即使它可能只有一个工作订单 # # 处理最后一个组,即使它可能只有一个工作订单
if consecutive_workorders: # if consecutive_workorders:
proc_workorders.append(consecutive_workorders) # proc_workorders.append(consecutive_workorders)
# self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) # self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production)
# self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, # self.env['purchase.order'].get_purchase_order(consecutive_workorders, production,
# product_id_to_production_names) # 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['stock.picking'].create_outcontract_picking(workorders, production, sorted_workorders)
self.env['purchase.order'].get_purchase_order(workorders, production, product_id_to_production_names) self.env['purchase.order'].get_purchase_order(workorders, production, product_id_to_production_names)

View File

@@ -677,9 +677,8 @@ class StockPicking(models.Model):
move_dest_id = item.move_raw_ids[0].id move_dest_id = item.move_raw_ids[0].id
else: else:
# 从sorted_workorders中找到上一工单的move # 从sorted_workorders中找到上一工单的move
if sorted_workorders.index(workorder) > 0: if len(sorted_workorders) > 1:
move_dest_id = \ move_dest_id = sorted_workorders[sorted_workorders.index(workorder)+1].move_subcontract_workorder_ids[1].id
sorted_workorders[sorted_workorders.index(workorder) - 1].move_subcontract_workorder_ids[1].id
new_picking = True new_picking = True
outcontract_picking_type_in = self.env.ref( outcontract_picking_type_in = self.env.ref(
'sf_manufacturing.outcontract_picking_in').id, 'sf_manufacturing.outcontract_picking_in').id,