diff --git a/sf_quality/__manifest__.py b/sf_quality/__manifest__.py index 9c2c3138..e44a6f68 100644 --- a/sf_quality/__manifest__.py +++ b/sf_quality/__manifest__.py @@ -19,7 +19,8 @@ 'views/view.xml', 'views/quality_cnc_test_view.xml', 'views/mrp_workorder.xml', - 'views/quality_check_view.xml' + 'views/quality_check_view.xml', + 'wizard/check_picking_wizard_view.xml', ], 'assets': { diff --git a/sf_quality/models/__init__.py b/sf_quality/models/__init__.py index 4fcdb16f..17ad5fab 100644 --- a/sf_quality/models/__init__.py +++ b/sf_quality/models/__init__.py @@ -5,4 +5,4 @@ from . import custom_quality from . import quality from . import quality_cnc_test from . import mrp_workorder -# from . import stock +from . import stock diff --git a/sf_quality/models/stock.py b/sf_quality/models/stock.py index c2eefa68..c9788a51 100644 --- a/sf_quality/models/stock.py +++ b/sf_quality/models/stock.py @@ -9,13 +9,31 @@ class StockPicking(models.Model): 调拨单若关联了质量检查单,验证调拨单时,应校验是否有不合格品,若存在,应弹窗提示: “警告:存在不合格产品XXXX n 件、YYYYY m件,继续调拨请点“确认”,否则请取消?” """ - if self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail'): + context = self.env.context + if not context.get('again_validate') and self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail'): + # 回滚事务,为二次确认/取消做准备 + self.env.cr.rollback() + quality_check_ids = self.quality_check_ids.filtered(lambda qc: qc.quality_state == 'fail') + product_list = list(set([quality_check_id.product_id for quality_check_id in quality_check_ids])) + fail_check_text = '' + for product_id in product_list: + check_ids = quality_check_ids.filtered(lambda qc: qc.product_id == product_id) + number = sum(check_ids.mapped('qty_line')) + if number != 0: + fail_check_text = (f'{fail_check_text}、{product_id.name} {number}件' + if fail_check_text != '' else f'{product_id.name} {number}件') + else: + fail_check_text = (f'{fail_check_text}、{product_id.name}' + if fail_check_text != '' else f'{product_id.name}') return { 'type': 'ir.actions.act_window', - 'res_model': 'sf.functional.tool.assembly.order', - 'name': ' ', + 'res_model': 'picking.validate.check.wizard', + 'name': '质检不合格提示', 'view_mode': 'form', 'target': 'new', - 'context': {'': True} + 'context': { + 'default_picking_id': self.id, + 'default_fail_check_text': f'警告:存在不合格产品{fail_check_text},继续调拨请点“确认”,否则请取消?', + 'again_validate': True} } return super(StockPicking, self).button_validate() diff --git a/sf_quality/security/ir.model.access.csv b/sf_quality/security/ir.model.access.csv index 907c115b..fa1ec3fa 100644 --- a/sf_quality/security/ir.model.access.csv +++ b/sf_quality/security/ir.model.access.csv @@ -73,6 +73,6 @@ access_quality_cnc_test_group_quality_director,quality_cnc_test_group_quality_di access_quality_cnc_test_group_sf_equipment_user,quality_cnc_test_group_sf_equipment_user,model_quality_cnc_test,sf_base.group_sf_equipment_user,1,1,0,0 - +access_picking_validate_check_wizard,access.picking_validate_check_wizard,model_picking_validate_check_wizard,quality.group_quality_user,1,1,1,0 diff --git a/sf_quality/wizard/__init__.py b/sf_quality/wizard/__init__.py index e69de29b..2c90d07b 100644 --- a/sf_quality/wizard/__init__.py +++ b/sf_quality/wizard/__init__.py @@ -0,0 +1 @@ +from . import check_picking_wizard diff --git a/sf_quality/wizard/check_picking_wizard.py b/sf_quality/wizard/check_picking_wizard.py new file mode 100644 index 00000000..1cb25756 --- /dev/null +++ b/sf_quality/wizard/check_picking_wizard.py @@ -0,0 +1,17 @@ +from odoo import api, models,fields + + +class PickingValidateCheckWizard(models.TransientModel): + _name = 'picking.validate.check.wizard' + _description = '调拨质检不合格二次验证' + + picking_id = fields.Many2one('stock.picking', '调拨单') + fail_check_text = fields.Text('提示信息') + + def confirm_picking_validate_check(self): + self.picking_id.button_validate() + return {'type': 'ir.actions.act_window_close'} + + def cancel_picking_validate_check(self): + # 这里是取消后的逻辑 + return {'type': 'ir.actions.act_window_close'} diff --git a/sf_quality/wizard/check_picking_wizard_view.xml b/sf_quality/wizard/check_picking_wizard_view.xml new file mode 100644 index 00000000..702b2578 --- /dev/null +++ b/sf_quality/wizard/check_picking_wizard_view.xml @@ -0,0 +1,15 @@ + + + picking.validate.check.wizard + picking.validate.check.wizard + +
+ + + +
+
+
\ No newline at end of file