From 629995ad9ce9901fdeb9dbad8c7095782ed3f3fd Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Fri, 10 Jan 2025 17:25:19 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=8C=E6=88=90<=E5=B7=A5=E5=8D=95?= =?UTF-8?q?>=E9=80=9A=E7=94=A8=E8=B0=83=E6=95=B4=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9B2=E3=80=81=E5=AE=8C=E6=88=90=E5=90=8E=E7=BD=AE=E4=B8=89=E5=85=83?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=92=8C=E8=B4=A8=E6=A3=80=E5=8D=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=88=A4=E6=96=AD=E5=8F=8A=E7=BB=93=E6=9E=9C=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E4=BC=98=E5=8C=96=EF=BC=9B3=E3=80=81=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E6=96=B0=E5=A2=9E=E3=80=90=E9=80=81=E6=A3=80=E3=80=91?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=8C=89=E9=92=AE=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/__init__.py | 3 +- .../models/mrp_routing_workcenter.py | 2 +- sf_manufacturing/models/mrp_workorder.py | 62 +++++++++++++++++++ sf_manufacturing/models/quality_check.py | 7 +++ .../views/mrp_routing_workcenter_view.xml | 2 +- sf_manufacturing/views/mrp_workorder_view.xml | 6 +- sf_quality/models/quality.py | 2 +- 7 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 sf_manufacturing/models/quality_check.py diff --git a/sf_manufacturing/models/__init__.py b/sf_manufacturing/models/__init__.py index c4d8ad94..e6845317 100644 --- a/sf_manufacturing/models/__init__.py +++ b/sf_manufacturing/models/__init__.py @@ -15,4 +15,5 @@ from . import sf_technology_design from . import sf_production_common from . import sale_order from . import quick_easy_order -from . import purchase_order \ No newline at end of file +from . import purchase_order +from . import quality_check \ No newline at end of file diff --git a/sf_manufacturing/models/mrp_routing_workcenter.py b/sf_manufacturing/models/mrp_routing_workcenter.py index a2a884c9..666be375 100644 --- a/sf_manufacturing/models/mrp_routing_workcenter.py +++ b/sf_manufacturing/models/mrp_routing_workcenter.py @@ -26,7 +26,7 @@ class ResMrpRoutingWorkcenter(models.Model): surface_technics_id = fields.Many2one('sf.production.process', string="表面工艺") reserved_duration = fields.Float('预留时长', default=30, tracking=True) is_outsource = fields.Boolean('外协', default=False) - individuation_page = fields.Many2many('sf.work.individuation.page', string='个性化记录') + individuation_page_ids = fields.Many2many('sf.work.individuation.page', string='个性化记录') def get_no(self): international_standards = self.search( diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index e2beea1e..63e049cd 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1344,6 +1344,21 @@ class ResMrpWorkOrder(models.Model): record.production_id.button_mark_done1() # record.production_id.state = 'done' + # ============工单完成,修改对应[质检单]的值===================== + if record.check_ids: + if record.test_results == '合格': + record.check_ids.write({'test_results': None}) + for check_id in record.check_ids: + check_id.do_pass() + elif record.test_results in ('返工', '报废'): + record.check_ids.write({ + 'test_results': record.test_results, + 'reason': record.reason, + 'detailed_reason': record.detailed_reason}) + for check_id in record.check_ids: + check_id.do_fail() + # ====================================================== + # 解绑托盘 def unbind_tray(self): for item in self: @@ -1466,6 +1481,53 @@ class ResMrpWorkOrder(models.Model): move_subcontract_workorder_ids = fields.One2many('stock.move', 'subcontract_workorder_id', string='组件') + # ==============================配置化页签--个性化记录=================================== + routing_workcenter_id = fields.Many2one('mrp.routing.workcenter', compute='_compute_routing_workcenter_id', + 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) + + @api.depends('name') + def _compute_routing_workcenter_id(self): + for mw in self: + routing_workcenter_id = self.env['mrp.routing.workcenter'].sudo().search( + [('name', '=', mw.name), ('routing_type', '=', mw.routing_type)]) + if routing_workcenter_id: + mw.routing_workcenter_id = routing_workcenter_id.id + + @api.depends('routing_workcenter_id.individuation_page_ids') + def _compute_individuation_page_ids(self): + for mw in self: + if mw.routing_workcenter_id: + mw.individuation_page_ids = mw.routing_workcenter_id.individuation_page_ids.ids + # 初始化页签配置 + mw.individuation_page_PTD = False + # 根据工单对应的【作业_个性化记录】配置页签 + if any(item.code == 'PTD' for item in mw.routing_workcenter_id.individuation_page_ids): + mw.individuation_page_PTD = True + # ============================================================================================= + + is_inspect = fields.Boolean('需送检', compute='_compute_is_inspect', store=True, default=False) + + @api.depends('check_ids.is_inspect') + def _compute_is_inspect(self): + for item in self: + if item.check_ids: + is_inspect = False + for check_id in item.check_ids: + if check_id.is_inspect: + is_inspect = True + break + item.is_inspect = is_inspect + + def do_inspect(self): + """送检""" + # 修改工单状态 + self.write({'state': 'to be detected'}) + # 若关联的【质量检查_需送检】=true,则质量检查单的状态从“等待”更新为“待处理” + self.check_ids.filtered(lambda ch: ch.is_inspect is True).write({'quality_state': 'none'}) + class CNCprocessing(models.Model): _name = 'sf.cnc.processing' diff --git a/sf_manufacturing/models/quality_check.py b/sf_manufacturing/models/quality_check.py new file mode 100644 index 00000000..291e598e --- /dev/null +++ b/sf_manufacturing/models/quality_check.py @@ -0,0 +1,7 @@ +from odoo import fields, models, api + + +class QualityCheck(models.Model): + _inherit = "quality.check" + + is_inspect = fields.Boolean('需送检') diff --git a/sf_manufacturing/views/mrp_routing_workcenter_view.xml b/sf_manufacturing/views/mrp_routing_workcenter_view.xml index b6646dfa..67bc0c97 100644 --- a/sf_manufacturing/views/mrp_routing_workcenter_view.xml +++ b/sf_manufacturing/views/mrp_routing_workcenter_view.xml @@ -18,7 +18,7 @@ - + diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index d5cba300..18164796 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -158,6 +158,7 @@ + @@ -185,6 +186,8 @@