From dc550d1be5d03bffb657cea3c09a2bd4f084562c Mon Sep 17 00:00:00 2001
From: yuxianghui <3437689193@qq.com>
Date: Mon, 10 Mar 2025 15:24:24 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=20=E8=B0=83=E6=8B=A8?=
=?UTF-8?q?=E5=8D=95=E5=8F=96=E6=B6=88=E5=90=8E=EF=BC=8C=E5=85=B3=E8=81=94?=
=?UTF-8?q?=E5=8F=96=E6=B6=88=E8=B4=A8=E9=87=8F=E6=A3=80=E6=9F=A5=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
quality_control/models/stock_picking.py | 23 ++++++++++++++++++-
quality_control/security/ir.model.access.csv | 1 +
.../wizard/quality_check_wizard.py | 15 ++++++++++++
.../wizard/quality_check_wizard_views.xml | 17 ++++++++++++++
4 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/quality_control/models/stock_picking.py b/quality_control/models/stock_picking.py
index f6d2b07c..0f92edde 100644
--- a/quality_control/models/stock_picking.py
+++ b/quality_control/models/stock_picking.py
@@ -81,8 +81,29 @@ class StockPicking(models.Model):
return quality_pickings
def action_cancel(self):
+ """
+ 调拨单取消后,关联取消质量检查单
+ """
+ context = self.env.context
+ if not context.get('cancel_check_picking') and self.sudo().mapped('check_ids').filtered(
+ lambda x: x.quality_state in ['pass', 'fail']):
+ self.env.cr.rollback()
+ return {
+ 'type': 'ir.actions.act_window',
+ 'res_model': 'picking.check.cancel.wizard',
+ 'name': '取消质检单',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_picking_id': self.id,
+ 'cancel_check_picking': True}
+ }
+ elif self.check_ids.filtered(lambda x: x.quality_state != 'cancel'):
+ self.sudo().mapped('check_ids').filtered(lambda x: x.quality_state != 'cancel').write({
+ 'quality_state': 'cancel'
+ })
res = super(StockPicking, self).action_cancel()
- self.sudo().mapped('check_ids').filtered(lambda x: x.quality_state == 'none').unlink()
+ # self.sudo().mapped('check_ids').filtered(lambda x: x.quality_state == 'none').unlink()
return res
def action_open_quality_check_picking(self):
diff --git a/quality_control/security/ir.model.access.csv b/quality_control/security/ir.model.access.csv
index d700da50..9c0c5529 100644
--- a/quality_control/security/ir.model.access.csv
+++ b/quality_control/security/ir.model.access.csv
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_quality_check_wizard,access.quality_check_wizard,model_quality_check_wizard,quality.group_quality_user,1,1,1,0
+access_picking_check_cancel_wizard,access.picking_check_cancel_wizard,model_picking_check_cancel_wizard,quality.group_quality_user,1,1,1,0
diff --git a/quality_control/wizard/quality_check_wizard.py b/quality_control/wizard/quality_check_wizard.py
index 300faf1d..1317236d 100644
--- a/quality_control/wizard/quality_check_wizard.py
+++ b/quality_control/wizard/quality_check_wizard.py
@@ -112,3 +112,18 @@ class QualityCheckWizard(models.TransientModel):
default_current_check_id=self.current_check_id.id,
)
return action
+
+
+class PickingCheckCancelWizard(models.TransientModel):
+ _name = 'picking.check.cancel.wizard'
+ _description = 'picking check cancel wizard'
+
+ picking_id = fields.Many2one('stock.picking', 'stock picking')
+
+ def confirm_picking_check(self):
+ self.picking_id.action_cancel()
+ return {'type': 'ir.actions.act_window_close'}
+
+ def cancel_picking_check(self):
+ # 这里是取消后的逻辑
+ return {'type': 'ir.actions.act_window_close'}
diff --git a/quality_control/wizard/quality_check_wizard_views.xml b/quality_control/wizard/quality_check_wizard_views.xml
index 1b87847e..b8b9db2b 100644
--- a/quality_control/wizard/quality_check_wizard_views.xml
+++ b/quality_control/wizard/quality_check_wizard_views.xml
@@ -118,4 +118,21 @@
{}
new
+
+
+
+
+ picking.check.cancel.wizard
+ picking.check.cancel.wizard
+
+
+
+