From ed17444f217d91dd84339c8ab0e843ea807f2676 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Thu, 27 Feb 2025 13:54:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=A4=84=E7=90=86=E8=B4=A8?= =?UTF-8?q?=E6=A3=80=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/wizard/sale_order_cancel.py | 117 +++++++++++-------- 1 file changed, 70 insertions(+), 47 deletions(-) diff --git a/sf_manufacturing/wizard/sale_order_cancel.py b/sf_manufacturing/wizard/sale_order_cancel.py index 32b6321d..0ac3adb2 100644 --- a/sf_manufacturing/wizard/sale_order_cancel.py +++ b/sf_manufacturing/wizard/sale_order_cancel.py @@ -209,28 +209,51 @@ class SFSaleOrderCancelLine(models.TransientModel): lines.append(self.create(vals)) sequence += 1 - # 成品质检单 - fin_quality_checks = self.env['quality.check'].search([ - ('picking_id', '=', picking.id) - ]) - if fin_quality_checks: - b1 = 0 - for fin_qc in fin_quality_checks: - b1 += 1 - vals = { - 'wizard_id': wizard_id, - 'sequence': sequence, - 'category': '制造', - 'doc_name': '质检单', - 'operation_type': '', - 'doc_number': fin_qc.name, - 'line_number': b1, - 'product_name': f'[{fin_qc.product_id.default_code}] {fin_qc.product_id.name}', - 'quantity': 1, - 'doc_state': map_dict.get(fin_qc.quality_state, fin_qc.quality_state), - 'cancel_reason': '已有异动' if fin_qc.quality_state not in ['none', 'cancel', 'waiting'] else '' - } - lines.append(self.create(vals)) + # # 成品质检单 + # fin_quality_checks = self.env['quality.check'].search([ + # ('picking_id', '=', picking.id) + # ]) + # if fin_quality_checks: + # b1 = 0 + # for fin_qc in fin_quality_checks: + # b1 += 1 + # vals = { + # 'wizard_id': wizard_id, + # 'sequence': sequence, + # 'category': '制造', + # 'doc_name': '质检单', + # 'operation_type': '', + # 'doc_number': fin_qc.name, + # 'line_number': b1, + # 'product_name': f'[{fin_qc.product_id.default_code}] {fin_qc.product_id.name}', + # 'quantity': 1, + # 'doc_state': map_dict.get(fin_qc.quality_state, fin_qc.quality_state), + # 'cancel_reason': '已有异动' if fin_qc.quality_state not in ['none', 'cancel', 'waiting'] else '' + # } + # lines.append(self.create(vals)) + + # 检查所有的质检单 + quality_checks = self.env['quality.check'].search([ + ('product_id.name', 'like', f'%{order.name}%')]) + if quality_checks: + b1 = 0 + for quality_check in quality_checks: + b1 += 1 + vals = { + 'wizard_id': wizard_id, + 'sequence': sequence, + 'category': '质量', + 'doc_name': '质检单', + 'operation_type': '', + 'doc_number': quality_check.name, + 'line_number': 1, + 'product_name': f'[{quality_check.product_id.default_code}] {quality_check.product_id.name}', + 'quantity': quality_check.qty_line, + 'doc_state': map_dict.get(quality_check.quality_state, quality_check.quality_state), + 'cancel_reason': '已有异动' if quality_check.quality_state not in ['none', 'cancel', 'waiting'] else '' + } + lines.append(self.create(vals)) + # 检查销售订单直接关联的采购单 purchase_orders = self.env['purchase.order'].search([ @@ -270,12 +293,12 @@ class SFSaleOrderCancelLine(models.TransientModel): vals = { 'wizard_id': wizard_id, 'sequence': sequence, - 'category': '客供料收货', + 'category': '库存', 'doc_name': '库存移动', 'doc_number': pkd.name, 'line_number': x3, 'operation_type': pkd.picking_type_id.name, - 'product_name': move.product_id.name if move.product_id else '', + 'product_name': f'[{move.product_id.default_code}] {move.product_id.name}', 'quantity': move.product_uom_qty, 'doc_state': map_dict.get(pkd.state, pkd.state), 'cancel_reason': '已有异动' if pkd.state not in ['waiting', 'cancel', 'confirmed'] else '' @@ -542,29 +565,29 @@ class SFSaleOrderCancelLine(models.TransientModel): } lines.append(self.create(vals)) - # 检查制造订单的质检单 - quality_checks = self.env['quality.check'].search([ - ('production_id', '=', mo.id) - ]) - if quality_checks: - i = 0 - for check in quality_checks: - i += 1 - vals = { - 'wizard_id': wizard_id, - 'sequence': sequence, - 'category': '制造', - 'doc_name': '质检单', - 'operation_type': '', - 'doc_number': check.name, - 'line_number': i, - 'product_name': f'[{check.product_id.default_code}] {check.product_id.name}', - 'quantity': 1, - 'doc_state': map_dict.get(check.quality_state, check.quality_state), - 'cancel_reason': '已有异动' if check.quality_state not in ['none', 'cancel', 'waiting'] else '' - } - lines.append(self.create(vals)) - sequence += 1 + # # 检查制造订单的质检单 + # quality_checks = self.env['quality.check'].search([ + # ('production_id', '=', mo.id) + # ]) + # if quality_checks: + # i = 0 + # for check in quality_checks: + # i += 1 + # vals = { + # 'wizard_id': wizard_id, + # 'sequence': sequence, + # 'category': '制造', + # 'doc_name': '质检单', + # 'operation_type': '', + # 'doc_number': check.name, + # 'line_number': i, + # 'product_name': f'[{check.product_id.default_code}] {check.product_id.name}', + # 'quantity': 1, + # 'doc_state': map_dict.get(check.quality_state, check.quality_state), + # 'cancel_reason': '已有异动' if check.quality_state not in ['none', 'cancel', 'waiting'] else '' + # } + # lines.append(self.create(vals)) + # sequence += 1 # 检查制造订单的编程单 cloud_programming = mo._cron_get_programming_state()