From 8d9aee497a48dbb761246da0ffbaf41454d2cc36 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 17 Feb 2025 16:11:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8F=96=E6=B6=88=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/wizard/sale_order_cancel.py | 27 ++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/sf_manufacturing/wizard/sale_order_cancel.py b/sf_manufacturing/wizard/sale_order_cancel.py index f50ff306..98caf001 100644 --- a/sf_manufacturing/wizard/sale_order_cancel.py +++ b/sf_manufacturing/wizard/sale_order_cancel.py @@ -34,17 +34,17 @@ class SFSaleOrderCancelWizard(models.TransientModel): def action_confirm_cancel(self): self.ensure_one() - + # 取消销售订单关联的采购单 purchase_orders = self.env['purchase.order'].search([ ('origin', '=', self.order_id.name) ]) if purchase_orders: purchase_orders.write({'state': 'cancel'}) - + # 取消销售订单 result = self.order_id.action_cancel() - + # 取消关联的制造订单及其采购单 manufacturing_orders = self.env['mrp.production'].search([ ('origin', '=', self.order_id.name) @@ -56,13 +56,20 @@ class SFSaleOrderCancelWizard(models.TransientModel): ]) if mo_purchase_orders: mo_purchase_orders.write({'state': 'cancel'}) - + + # 取消制造订单的质检单 + mo_quality_checks = self.env['quality.check'].search([ + ('production_id', '=', mo.id) + ]) + if mo_quality_checks: + mo_quality_checks.write({'state': 'cancel'}) + # 取消制造订单 mo.action_cancel() # 取消制造订单关联的编程单 mo._change_programming_state() - + # 取消组件的制造单关联的采购单 for comp_mo in self.env['mrp.production'].search([ ('origin', '=', mo.name) @@ -72,9 +79,10 @@ class SFSaleOrderCancelWizard(models.TransientModel): ]) if comp_purchase_orders: comp_purchase_orders.button_cancel() - + return result + class SFSaleOrderCancelLine(models.TransientModel): _name = 'sf.sale.order.cancel.line' _description = '销售订单取消行' @@ -103,7 +111,9 @@ class SFSaleOrderCancelLine(models.TransientModel): 'pending': '等待其他工单', 'none': '待处理', 'draft': '报价', - 'cancel': '已取消' + 'cancel': '已取消', + 'pass': '通过的', + 'fail': '失败的' } # 检查销售订单 @@ -237,7 +247,8 @@ class SFSaleOrderCancelLine(models.TransientModel): 'product_name': mo.product_id.name, 'quantity': workorder.qty_production, 'doc_state': map_dict.get(workorder.state, workorder.state), - 'cancel_reason': '已有异动' if workorder.state not in ['draft', 'cancel', 'pending', 'waiting'] else '' + 'cancel_reason': '已有异动' if workorder.state not in ['draft', 'cancel', 'pending', + 'waiting'] else '' } lines.append(self.create(vals)) sequence += 1