From 87fdc7bf74ad36f687cadb7367a326c2d99fcac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Wed, 4 Jun 2025 17:35:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=8E=82=E6=A3=80=E9=AA=8C=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=8F=91=E5=B8=83=E6=8C=89=E9=92=AE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_quality/models/quality.py | 54 ++++++++++++++++++++++++- sf_quality/views/quality_check_view.xml | 2 +- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/sf_quality/models/quality.py b/sf_quality/models/quality.py index 88a5fccb..8052e007 100644 --- a/sf_quality/models/quality.py +++ b/sf_quality/models/quality.py @@ -224,7 +224,7 @@ class QualityCheck(models.Model): """预览出厂检验报告""" self.ensure_one() picking_qty = sum(self.picking_id.move_ids.mapped('product_uom_qty')) - if float_compare(float(self.total_qty), picking_qty, self.picking_id.product_id.uom_id.rounding) != 0: + if not self._check_total_qty(picking_qty) and self.quality_state in ['waiting', 'none']: return { 'type': 'ir.actions.client', 'tag': 'jikimo_confirm_dialog', @@ -248,3 +248,55 @@ class QualityCheck(models.Model): 'active_ids': [self.id] } return action + + def _check_total_qty(self, compare_qty): + """ + 检查质量检查单的总数量是否匹配 + """ + self.ensure_one() + return float_compare(float(self.total_qty), compare_qty, self.picking_id.product_id.uom_id.rounding) == 0 + + + def preview_do_publish(self): + self.ensure_one() + self._check_part_number() + self._check_measure_line() + self._check_check_qty_and_total_qty() + + picking_qty = sum(self.picking_id.move_ids.mapped('product_uom_qty')) + if not self._check_total_qty(picking_qty): + return { + 'type': 'ir.actions.client', + 'tag': 'jikimo_confirm_dialog', + 'params': { + 'active_id': self.id, + 'message': f"拣货调拨单号{self.picking_id.name}需求数量为{picking_qty},当前质量检查单产品数量为{self.total_qty},数量不一致,是否确认继续?", + 'next_model': self._name, + 'next_method': 'preview_do_publish_confirm', + 'context': self.env.context + } + } + else: + return self.do_publish() + + + def preview_do_publish_confirm(self): + self.ensure_one() + return { + 'name': '发布确认', + 'type': 'ir.actions.act_window', + 'res_model': 'quality.check.publish.wizard', + 'view_mode': 'form', + 'views': [[False, 'form']], + 'target': 'new', + 'context': { + 'default_check_id': self.id, + 'default_product_name': self.product_id.name, + 'default_total_qty': self.total_qty, + 'default_check_qty': self.check_qty, + 'default_measure_count': self.column_nums, + 'default_item_count': len(self.measure_line_ids), + 'default_old_report_name': self.old_report_name, + 'default_publish_status': self.publish_status, + } + } \ No newline at end of file diff --git a/sf_quality/views/quality_check_view.xml b/sf_quality/views/quality_check_view.xml index 9ceacbca..3637a4c9 100644 --- a/sf_quality/views/quality_check_view.xml +++ b/sf_quality/views/quality_check_view.xml @@ -82,7 +82,7 @@ -