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