diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index b9b3dbbb..057530d0 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -783,7 +783,7 @@ class MrpProduction(models.Model): workorder.duration_expected = workorder._get_duration_expected() # 外协出入库单处理 - def get_subcontract_pick_purchase(self, special_design_workorder): + def get_subcontract_pick_purchase(self): production_all = self.sorted(lambda x: x.id) product_id_to_production_names = {} grouped_product_ids = {k: list(g) for k, g in @@ -792,57 +792,17 @@ class MrpProduction(models.Model): product_id_to_production_names[product_id] = [p.name for p in pd] sorted_workorders = None for production in production_all: - # proc_workorders = [] - # process_parameter_workorder = self.env['mrp.workorder'].search( - # [('surface_technics_parameters_id', '!=', False), ('production_id', '=', production.id), - # ('is_subcontract', '=', True), ('state', '!=', 'cancel')], order='sequence asc') - # need_delete_workorder = process_parameter_workorder - special_design_workorder - # for workorder in need_delete_workorder: - # workorder._get_surface_technics_purchase_ids().write({'active': False}) - # workorder.move_subcontract_workorder_ids.write({'state': 'cancel'}) - # workorder.move_subcontract_workorder_ids.picking_id.write({'active': False}) - - if special_design_workorder: - consecutive_workorders = [] - sorted_workorders = sorted(special_design_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) - # 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) + proc_workorders = [] + process_parameter_workorder = self.env['mrp.workorder'].search( + [('surface_technics_parameters_id', '!=', False), ('production_id', '=', production.id), + ('is_subcontract', '=', True), ('state', '!=', 'cancel')], order='sequence asc') + if process_parameter_workorder: + # 将这些特殊表面工艺工单的采购单与调拨单置为失效 + for workorder in process_parameter_workorder: + workorder._get_surface_technics_purchase_ids().write({'state': 'cancel'}) + workorder.move_subcontract_workorder_ids.write({'state': 'cancel'}) + workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'cancel'}) + sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence) if not sorted_workorders: return for workorders in reversed(sorted_workorders): diff --git a/sf_manufacturing/wizard/production_technology_wizard.py b/sf_manufacturing/wizard/production_technology_wizard.py index 65e87774..1feee749 100644 --- a/sf_manufacturing/wizard/production_technology_wizard.py +++ b/sf_manufacturing/wizard/production_technology_wizard.py @@ -113,9 +113,7 @@ class ProductionTechnologyWizard(models.TransientModel): workorder.blocked_by_workorder_ids = blocked_by_workorder_ids[0] productions._create_workorder(False) if self.production_id.product_id.categ_id.type == '成品': - special_design_workorder = self.env['mrp.workorder'].search( - [('technology_design_id', 'in', special_design.ids), ('production_id', '=', special.production_id.id), ('state', '!=', 'cancel')]) - productions.get_subcontract_pick_purchase(special_design_workorder) + productions.get_subcontract_pick_purchase() productions.is_adjust = False for item in productions: workorder = item.workorder_ids.filtered(lambda wo: wo.state not in ('cancel')).sorted(