From 402a323673959d6081d5d5f2e74034feaf11ca04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Thu, 19 Sep 2024 08:49:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=AB=E7=A0=81=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E8=B5=B7=E7=82=B9=E6=8E=A5=E9=A9=B3=E7=AB=99=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizard/workpiece_delivery_wizard.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) 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('当前接驳站不匹配!')