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 @@
-
+