From add528f0f3d85d775a4f5b794589ba0ba925c089 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Thu, 16 Jan 2025 14:51:04 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=B4=A8=E6=A3=80=E5=8D=95=E6=9C=89?= =?UTF-8?q?=E5=85=B3=E5=90=8E=E7=BD=AE=E4=B8=89=E5=85=83=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E6=AE=B5=E5=92=8C=E9=A1=B5=E7=AD=BE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E5=8D=95=E6=B2=A1=E6=9C=89=E5=90=8E=E7=BD=AE?= =?UTF-8?q?=E4=B8=89=E5=85=83=E6=A3=80=E6=B5=8B=E6=97=B6=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E7=9A=84=E6=9D=A1=E4=BB=B6=EF=BC=9B2=E3=80=81=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=B7=BB=E5=8A=A0=E8=B4=A8=E6=A3=80=E5=8D=95=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 2 +- sf_manufacturing/views/mrp_workorder_view.xml | 4 +-- sf_quality/__manifest__.py | 1 + sf_quality/models/__init__.py | 1 + sf_quality/models/mrp_workorder.py | 25 +++++++++++++++++++ sf_quality/models/quality.py | 7 +++--- sf_quality/views/mrp_workorder.xml | 22 ++++++++++++++++ sf_quality/views/quality_check_view.xml | 23 +++++++++-------- 8 files changed, 68 insertions(+), 17 deletions(-) create mode 100644 sf_quality/models/mrp_workorder.py create mode 100644 sf_quality/views/mrp_workorder.xml diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 97a3bcdf..1980ae1a 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1503,7 +1503,7 @@ class ResMrpWorkOrder(models.Model): store=True) individuation_page_ids = fields.Many2many('sf.work.individuation.page', string='个性化记录', store=True, compute='_compute_individuation_page_ids') - individuation_page_PTD = fields.Boolean('个性化记录(后置三元检测PTD)', default=False) + individuation_page_PTD = fields.Boolean('个性化记录(是否显示后置三元检测[PTD]页签)', default=False) @api.depends('name') def _compute_routing_workcenter_id(self): diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 18a9bba3..44cc0b39 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -538,9 +538,9 @@ + attrs='{"required":[("test_results","!=","合格")],"invisible":[("test_results","=","合格")],"readonly":[("state","in",("done", "rework"))]}'/> + attrs='{"required":[("test_results","!=","合格")],"invisible":[("test_results","=","合格")],"readonly":[("state","in",("done", "rework"))]}'/> diff --git a/sf_quality/__manifest__.py b/sf_quality/__manifest__.py index 94d005ec..9c2c3138 100644 --- a/sf_quality/__manifest__.py +++ b/sf_quality/__manifest__.py @@ -18,6 +18,7 @@ 'security/ir.model.access.csv', 'views/view.xml', 'views/quality_cnc_test_view.xml', + 'views/mrp_workorder.xml', 'views/quality_check_view.xml' ], diff --git a/sf_quality/models/__init__.py b/sf_quality/models/__init__.py index 248f7fb2..60081c7b 100644 --- a/sf_quality/models/__init__.py +++ b/sf_quality/models/__init__.py @@ -4,3 +4,4 @@ from . import custom_quality from . import quality from . import quality_cnc_test +from . import mrp_workorder diff --git a/sf_quality/models/mrp_workorder.py b/sf_quality/models/mrp_workorder.py new file mode 100644 index 00000000..7263d328 --- /dev/null +++ b/sf_quality/models/mrp_workorder.py @@ -0,0 +1,25 @@ +from odoo import api, fields, models + + +class ResMrpWorkOrder(models.Model): + _inherit = 'mrp.workorder' + + check_ids_state = fields.Selection([('none', '待处理'), ('pass', '通过的'), ('fail', '失败的')], store=True, + compute='_compute_check_ids_state') + + @api.depends('check_ids.quality_state') + def _compute_check_ids_state(self): + for mw in self: + if mw.check_ids: + if all(check_id.quality_state == 'pass' for check_id in mw.check_ids): + mw.check_ids_state = 'pass' + elif any(check_id.quality_state == 'fail' for check_id in mw.check_ids): + mw.check_ids_state = 'fail' + else: + mw.check_ids_state = 'none' + + def action_open_quality_check_work_sf(self): + action = self.env["ir.actions.actions"]._for_xml_id("quality_control.quality_check_action_picking") + action['context'] = self.env.context.copy() + action['domain'] = [('workorder_id', '=', self.id)] + return action diff --git a/sf_quality/models/quality.py b/sf_quality/models/quality.py index b76adaa8..55b831cc 100644 --- a/sf_quality/models/quality.py +++ b/sf_quality/models/quality.py @@ -17,6 +17,7 @@ class QualityCheck(models.Model): ('fail', '失败的')], string='状态', tracking=True, store=True, default='none', copy=False, compute='_compute_quality_state') + individuation_page_PTD = fields.Boolean('个性化记录(是否显示后置三元检测[PTD]页签)', related='workorder_id.individuation_page_PTD') work_state = fields.Selection(related='workorder_id.state', string='工单状态') processing_panel = fields.Char(related='workorder_id.processing_panel', string='加工面') @@ -26,7 +27,7 @@ class QualityCheck(models.Model): model_file = fields.Binary(related='workorder_id.glb_file', string='加工模型') detection_report = fields.Binary(related='workorder_id.detection_report', readonly=True, string='检测报告') - test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], string="检测结果", + test_results = fields.Selection([("合格", "合格"), ("返工", "返工")], string="检测结果", default='合格') reason = fields.Selection( [("programming", "编程"), ("cutter", "刀具"), ("clamping", "装夹"), ("operate computer", "操机"), @@ -61,7 +62,7 @@ class QualityCheck(models.Model): def do_pass(self): self.ensure_one() super().do_pass() - if self.workorder_id: + if self.workorder_id and self.individuation_page_PTD is True: # 1)将页签“判定结果”的检测结果值同步到【工单_后置三元检测_检测结果】 if self.test_results in ['返工', '报废']: raise ValidationError('请重新选择【判定结果】-【检测结果】') @@ -73,7 +74,7 @@ class QualityCheck(models.Model): def do_fail(self): self.ensure_one() super().do_fail() - if self.workorder_id: + if self.workorder_id and self.individuation_page_PTD is True: # 1)将页签“判定结果”的检测结果值同步到【工单_后置三元检测_检测结果】 if not self.test_results: raise ValidationError('请填写【判定结果】里的信息') diff --git a/sf_quality/views/mrp_workorder.xml b/sf_quality/views/mrp_workorder.xml new file mode 100644 index 00000000..7c22a465 --- /dev/null +++ b/sf_quality/views/mrp_workorder.xml @@ -0,0 +1,22 @@ + + + + mrp.workorder.view.form.inherit.quality + mrp.workorder + + + + + + 质量检查 + + + 质量检查 + + + 质量检查 + + + + + diff --git a/sf_quality/views/quality_check_view.xml b/sf_quality/views/quality_check_view.xml index ec5b9fa8..19f272f4 100644 --- a/sf_quality/views/quality_check_view.xml +++ b/sf_quality/views/quality_check_view.xml @@ -8,22 +8,23 @@ - - + + + + attrs="{'invisible': ['|', '|',('model_file', '=', False), ('production_id', '=', False), ('individuation_page_PTD', '=', False)]}"/> - + - + attrs="{'invisible': ['|',('production_id', '=', False), ('individuation_page_PTD', '=', False)]}"/> + - + - + @@ -34,14 +35,14 @@ - + - + + attrs="{'invisible': ['|','|', ('quality_state', 'not in', ['pass', 'fail']), ('production_id', '=', False),('individuation_page_PTD', '=', False)]}">