From e27506fb07a044f7414456a59541fea5d0fddd46 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 9 Jan 2025 17:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=8E=E5=A7=94=E5=A4=96=E5=8A=A0=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 2d5bec30..89b2678c 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -433,6 +433,7 @@ class MrpProduction(models.Model): def technology_confirm(self): process_parameters = [] account_moves = [] + purchase_orders = [] parameters_not = [] # 获取原有的工单对应的工序 origin_designs = self.workorder_ids.technology_design_id @@ -444,8 +445,10 @@ class MrpProduction(models.Model): purchase = workorder._get_surface_technics_purchase_ids() account = self.env['account.move'].search([('id', 'in', purchase.invoice_ids.ids)]) if account.state not in ['cancel', False]: - if purchase.name not in account_moves: - account_moves.append(purchase.name) + if account.name not in account_moves: + account_moves.append(account.name) + if purchase.state not in ['cancel','draft', False]: + purchase_orders.append(purchase.name) special_design = self.technology_design_ids.filtered( lambda a: a.routing_tag == 'special' and a.is_auto is False) for special in special_design: @@ -459,7 +462,9 @@ class MrpProduction(models.Model): process_parameters.append(special.process_parameters_id.display_name) if account_moves: - raise UserError(_("请联系工厂生产经理对采购订单为%s生成的账单进行取消", ", ".join(account_moves))) + raise UserError(_("请联系工厂生产经理对该(%s)账单进行取消", ", ".join(account_moves))) + if purchase_orders: + raise UserError(_("请联系工厂生产经理对该(%s)采购订单进行取消", ", ".join(purchase_orders))) if parameters_not: raise UserError(_("【工艺设计】-【工序】为%s未选择参数,请选择", ", ".join(parameters_not))) if process_parameters: @@ -799,7 +804,7 @@ class MrpProduction(models.Model): if process_parameter_workorder: # 将这些特殊表面工艺工单的采购单与调拨单置为失效 for workorder in process_parameter_workorder: - workorder._get_surface_technics_purchase_ids().write({'state': 'cancel'}) + # 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) @@ -1480,7 +1485,10 @@ class MrpProduction(models.Model): """ 重载创建制造订单的方法,单个制造订单,同一成品只创建一个采购组,用于后续单据的创建 """ - group_id = self.env["procurement.group"].create({'name':vals_list[0].get('origin')}).id + group_id = False + first_origin = next((obj['origin'] for obj in vals_list if 'origin' in obj), None) + if first_origin: + group_id = self.env["procurement.group"].create({'name':first_origin}).id for vals in vals_list: if not vals.get('name', False) or vals['name'] == _('New'): picking_type_id = vals.get('picking_type_id') @@ -1488,7 +1496,7 @@ class MrpProduction(models.Model): picking_type_id = self._get_default_picking_type_id(vals.get('company_id', self.env.company.id)) vals['picking_type_id'] = picking_type_id vals['name'] = self.env['stock.picking.type'].browse(picking_type_id).sequence_id.next_by_id() - if not vals.get('procurement_group_id'): + if not vals.get('procurement_group_id') and group_id: vals['procurement_group_id'] = group_id return super(MrpProduction, self).create(vals_list)