From 1541326dfc9d8c86853793e14e9989f2fefc103e Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 10 Mar 2025 14:56:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=92=E7=A8=8B=E5=8D=95?= =?UTF-8?q?=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/wizard/sale_order_cancel.py | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/sf_manufacturing/wizard/sale_order_cancel.py b/sf_manufacturing/wizard/sale_order_cancel.py index 516f8804..c14f7620 100644 --- a/sf_manufacturing/wizard/sale_order_cancel.py +++ b/sf_manufacturing/wizard/sale_order_cancel.py @@ -94,6 +94,12 @@ class SFSaleOrderCancelWizard(models.TransientModel): if mo_quality_checks: mo_quality_checks.write({'quality_state': 'cancel'}) + # 取消制造订单的排程单 + mo_plan_orders = self.env['sf.production.plan'].search([ + ('origin', '=', order.name)]) + if mo_plan_orders: + mo_plan_orders.write({'state': 'cancel'}) + # 取消制造订单的子制造订单 child_mo_ids = self.env['mrp.production'].search([ ('origin', '=', mo.name) @@ -182,6 +188,12 @@ class SFSaleOrderCancelLine(models.TransientModel): 'progress': '加工中', 'assigned': '就绪' } + plan_map_dict = { + 'draft': '待排程', + 'done': '已排程', + 'processing': '加工中', + 'finished': '已完成', + 'cancel': '已取消'} module_name_dict = { 'purchase': '采购', @@ -288,6 +300,31 @@ class SFSaleOrderCancelLine(models.TransientModel): } lines.append(self.create(vals)) + # 检查所有的排程单 + sf_plan_orders = self.env['sf.production.plan'].search([ + ('origin', '=', order.name)]) + if sf_plan_orders: + p1 = 0 + for plan_order in sf_plan_orders: + if not plan_order.product_id.default_code: + continue + p1 += 1 + vals = { + 'wizard_id': wizard_id, + 'sequence': sequence, + 'category': '排程', + 'doc_name': '排程单', + 'operation_type': '', + 'doc_number': plan_order.name, + 'line_number': p1, + 'product_name': f'[{plan_order.product_id.default_code}] {plan_order.product_id.name}', + 'quantity': 1, + 'doc_state': plan_map_dict.get(plan_order.state, plan_order.state), + 'cancel_reason': '已有异动' if plan_order.state not in ['draft', 'cancel'] else '' + } + lines.append(self.create(vals)) + sequence += 1 + # 检查组件的制造单 # component_mos = self.env['mrp.production'].search([ # ('origin', '=', mo.name)])