diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py index d232c643..488fa0a0 100644 --- a/sf_manufacturing/models/agv_scheduling.py +++ b/sf_manufacturing/models/agv_scheduling.py @@ -265,3 +265,17 @@ class ResMrpWorkOrder(models.Model): 'sf_agv_scheduling_mrp_workorder_ref', string='AGV调度', domain=[('state', '!=', '已取消')]) + + def get_down_product_agv_scheduling(self): + """ + 获取关联的制造订单下产线的agv任务 + """ + workorder_ids = self.production_id.workorder_ids + cnc_workorder = workorder_ids.filtered( + lambda w: w.routing_type == 'CNC加工' and w.state == 'done' and w.processing_panel == self.processing_panel + ) + if cnc_workorder: + agv_schedulingss = cnc_workorder.agv_scheduling_ids + return agv_schedulingss.filtered(lambda a: a.state == '已配送' and a.agv_route_type == '下产线') + else: + return None diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index c3842d30..976097e3 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1340,7 +1340,7 @@ class ResMrpWorkOrder(models.Model): 'name': 'button_delivery', 'type': 'object', 'string': '解除装夹', - 'class': 'btn-primary', + 'class': 'btn-primary jikimo_button_confirm', # 'className': 'btn-primary', 'modifiers': '{"force_show": 1}' }) @@ -1355,6 +1355,7 @@ class ResMrpWorkOrder(models.Model): workorder_ids = [] delivery_type = '运送空料架' max_num = 4 # 最大配送数量 + feeder_station_start_id = False if len(self) > max_num: raise UserError('仅限于拆卸1-4个制造订单,请重新选择') for item in self: @@ -1363,6 +1364,10 @@ class ResMrpWorkOrder(models.Model): production_ids.append(item.production_id.id) workorder_ids.append(item.id) + if not feeder_station_start_id: + down_product_agv_scheduling = self.get_down_product_agv_scheduling() + if down_product_agv_scheduling: + feeder_station_start_id = down_product_agv_scheduling.end_site_id.id return { 'name': _('确认'), 'type': 'ir.actions.act_window', @@ -1375,7 +1380,8 @@ class ResMrpWorkOrder(models.Model): 'default_delivery_type': delivery_type, 'default_workorder_ids': [(6, 0, workorder_ids)], 'default_workcenter_id': self.env.context.get('default_workcenter_id'), - 'default_confirm_button': '确认解除' + 'default_confirm_button': '确认解除', + 'default_feeder_station_start_id': feeder_station_start_id, }} diff --git a/sf_manufacturing/wizard/workpiece_delivery_wizard.py b/sf_manufacturing/wizard/workpiece_delivery_wizard.py index 67fb6035..f00ac499 100644 --- a/sf_manufacturing/wizard/workpiece_delivery_wizard.py +++ b/sf_manufacturing/wizard/workpiece_delivery_wizard.py @@ -210,6 +210,13 @@ class WorkpieceDeliveryWizard(models.TransientModel): # 将对象添加到对应的同模型且是多对多类型里 self.production_ids |= workorder.production_id self.workorder_ids |= workorder + + if not self.feeder_station_start_id: + down_product_agv_scheduling = self.get_down_product_agv_scheduling() + if down_product_agv_scheduling: + self.feeder_station_start_id = down_product_agv_scheduling.end_site_id.id else: raise UserError('该rfid码对应的工单不存在') return + +