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