diff --git a/sf_manufacturing/wizard/workpiece_delivery_wizard.py b/sf_manufacturing/wizard/workpiece_delivery_wizard.py index 4ee0928c..472910f9 100644 --- a/sf_manufacturing/wizard/workpiece_delivery_wizard.py +++ b/sf_manufacturing/wizard/workpiece_delivery_wizard.py @@ -179,18 +179,14 @@ class WorkpieceDeliveryWizard(models.TransientModel): self.feeder_station_destination_id = self.route_id.end_site_id.id def on_barcode_scanned(self, barcode): + delivery_type = self.env.context.get('default_delivery_type') # 判断barcode是否是数字 if not barcode.isdigit(): # 判断是否是AGV接驳站名称 agv_site = self.env['sf.agv.site'].search([('name', '=', barcode)]) - if agv_site: - if not self.feeder_station_start_id: - self.feeder_station_start_id = agv_site.id - else: - if self.feeder_station_start_id.id != agv_site.id: - raise UserError('起点接驳站不匹配!') + self.feeder_station_start_id = agv_site.id # 修正:移除 .id return - delivery_type = self.env.context.get('default_delivery_type') + if delivery_type == '上产线': workorder = self.env['mrp.workorder'].search( [('production_line_state', '=', '待上产线'), ('rfid_code', '=', barcode), @@ -214,7 +210,7 @@ class WorkpieceDeliveryWizard(models.TransientModel): self.production_ids |= workorder.production_id self.workorder_ids |= workorder - down_product_agv_scheduling = self.get_down_product_agv_scheduling() + down_product_agv_scheduling = workorder.get_down_product_agv_scheduling() if down_product_agv_scheduling: if not self.feeder_station_start_id: self.feeder_station_start_id = down_product_agv_scheduling.end_site_id.id @@ -226,4 +222,11 @@ class WorkpieceDeliveryWizard(models.TransientModel): raise UserError('该rfid码对应的工单不存在') return + @api.onchange('feeder_station_start_id') + def on_start_id_change(self): + if self.delivery_type == '运送空料架' and len(self.workorder_ids) > 0: + down_product_agv_scheduling = self.workorder_ids[0].get_down_product_agv_scheduling() + if down_product_agv_scheduling and self.feeder_station_start_id \ + and down_product_agv_scheduling.end_site_id.id != self.feeder_station_start_id.id: + raise UserError('当前接驳站不匹配!')