From d3b61f320f23568baac91375718168f1d6fff8a5 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Tue, 26 Nov 2024 18:01:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81=E8=BF=94=E5=B7=A5=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 15 ++++++++------- sf_manufacturing/wizard/rework_wizard.py | 9 ++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 58cbe7fa..794e5fe2 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1137,13 +1137,13 @@ class MrpProduction(models.Model): if self.programming_state in ['已编程']: cloud_programming = self._cron_get_programming_state() result_ids = self.detection_result_ids.filtered(lambda dr: dr.handle_result == '待处理') - work_ids = [] + work_id_list = [] if result_ids: - for result_id in result_ids: - work_ids.append(self.workorder_ids.filtered( - lambda wk: (wk.name == result_id.routing_type - and wk.processing_panel == result_id.processing_panel - and wk.state == 'done')).id) + work_id_list = [self.workorder_ids.filtered( + lambda wk: (wk.name == result_id.routing_type and wk.processing_panel == result_id.processing_panel + and wk.state == 'done')).id + for result_id in result_ids] + return { 'name': _('返工'), 'type': 'ir.actions.act_window', @@ -1152,7 +1152,8 @@ class MrpProduction(models.Model): 'target': 'new', 'context': { 'default_production_id': self.id, - 'default_workorder_ids': work_ids, + 'default_workorder_ids': self.workorder_ids.filtered(lambda wk: wk.state == 'done').ids, + 'default_hidden_workorder_ids': ','.join(map(str, work_id_list)) if work_id_list != [] else '', 'default_reprogramming_num': cloud_programming['reprogramming_num'], 'default_programming_state': cloud_programming['programming_state'], 'default_is_reprogramming': True if cloud_programming['programming_state'] in ['已下发'] else False diff --git a/sf_manufacturing/wizard/rework_wizard.py b/sf_manufacturing/wizard/rework_wizard.py index 9bb7be22..6304ca61 100644 --- a/sf_manufacturing/wizard/rework_wizard.py +++ b/sf_manufacturing/wizard/rework_wizard.py @@ -51,9 +51,12 @@ class ReworkWizard(models.TransientModel): 'test_report': self.workorder_id.detection_report})]}) self.workorder_id.button_finish() else: - if self.workorder_ids: - rework_workorder_ids = self.production_id.workorder_ids.filtered( - lambda ap: ap.id in self.workorder_ids.ids) + if self.hidden_workorder_ids: + hidden_workorder_list = self.hidden_workorder_ids.split(',') + rework_workorder_ids = self.workorder_ids.filtered(lambda w: str(w.id) in hidden_workorder_list) + else: + raise ValidationError('请选择返工工单!!!') + if rework_workorder_ids: clamp_workorder_ids = None if rework_workorder_ids: # 限制 From a434227807cf55b277e30e4578cd7cdee8e07059 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Wed, 27 Nov 2024 11:01:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1=E3=80=81=E5=B7=A5=E5=BA=8F=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=96=B9=E6=B3=95=E4=BC=98=E5=8C=96=EF=BC=9B2?= =?UTF-8?q?=E3=80=81=E8=BF=94=E5=B7=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 10 +++++++++- sf_manufacturing/wizard/rework_wizard.py | 5 +++++ sf_manufacturing/wizard/rework_wizard_views.xml | 7 ++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 794e5fe2..a28eb915 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -886,6 +886,14 @@ class MrpProduction(models.Model): and item.panel == work.processing_panel)) if td_ids: work.sequence = td_ids[0].sequence + cancel_work_ids = workorder_ids.filtered(lambda item: item.state in ('已取消', 'cancel')) + if cancel_work_ids: + sequence = max(workorder_ids.filtered(lambda item: item.state not in ('已取消', 'cancel')), + key=lambda w: w.sequence).sequence + for cw in cancel_work_ids: + cw.sequence = sequence + 1 + + def _reset_work_order_sequence_1(self): """ @@ -1152,7 +1160,7 @@ class MrpProduction(models.Model): 'target': 'new', 'context': { 'default_production_id': self.id, - 'default_workorder_ids': self.workorder_ids.filtered(lambda wk: wk.state == 'done').ids, + 'default_workorder_ids': self.workorder_ids.ids, 'default_hidden_workorder_ids': ','.join(map(str, work_id_list)) if work_id_list != [] else '', 'default_reprogramming_num': cloud_programming['reprogramming_num'], 'default_programming_state': cloud_programming['programming_state'], diff --git a/sf_manufacturing/wizard/rework_wizard.py b/sf_manufacturing/wizard/rework_wizard.py index 6304ca61..6c723761 100644 --- a/sf_manufacturing/wizard/rework_wizard.py +++ b/sf_manufacturing/wizard/rework_wizard.py @@ -54,6 +54,11 @@ class ReworkWizard(models.TransientModel): if self.hidden_workorder_ids: hidden_workorder_list = self.hidden_workorder_ids.split(',') rework_workorder_ids = self.workorder_ids.filtered(lambda w: str(w.id) in hidden_workorder_list) + # 限制判断 + # 1、当制造订单内ZM面的工单都已完成时,返工勾选工序时只能勾选上ZM面的所有工序进行返工 + # 2、当FM工单在CNC工单进行选择返工,并将已全部完成的ZM面工序全部勾选上时,FM工单上所有的已完成的工单(装夹预调工单)也必须进行勾选 + done_panel_workorder_ids = self.workorder_ids.filtered( + lambda w: w.state == 'done' and w.processing_panel is not False) else: raise ValidationError('请选择返工工单!!!') if rework_workorder_ids: diff --git a/sf_manufacturing/wizard/rework_wizard_views.xml b/sf_manufacturing/wizard/rework_wizard_views.xml index f9b9206d..05d1cc04 100644 --- a/sf_manufacturing/wizard/rework_wizard_views.xml +++ b/sf_manufacturing/wizard/rework_wizard_views.xml @@ -14,8 +14,13 @@ - + + +