From 4ec5f2c1de9a984c2e1026d9246ed2df437fc031 Mon Sep 17 00:00:00 2001 From: gqh Date: Fri, 24 Feb 2023 17:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=9D=AF=E6=96=99=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_workorder.py | 28 +++++++++++++++++-- sf_manufacturing/views/mrp_workorder_view.xml | 10 +++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 852db2d7..2fadcf19 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -202,10 +202,24 @@ class ResMrpWorkOrder(models.Model): else: raise UserError('托盘码不能为空') + #验证坯料序列号是否正确 + def pro_code_is_ok(self,barcode): + if barcode!=False: + if barcode != self.pro_code: + raise UserError('坯料序列号错误') + return False + else: + return True + + pro_code = fields.Char(string='坯料序列号') + + pro_code_ok = fields.Boolean(default=False) + #托盘扫码绑定 def gettray_auto(self, barcode): if barcode != False: values = self.env['sf.tray'].search([("code", "=", barcode)]) + if values: if values.state == "占用": raise UserError('该托盘已占用') @@ -378,8 +392,11 @@ class ResMrpWorkOrder(models.Model): }] return workorders_values_str + # 重写工单开始按钮方法 def button_start(self): + if self.routing_type == '装夹': + self.pro_code = self.production_id.move_raw_ids[0].move_line_ids[0].lot_id.name if self.state == 'waiting' or self.state == 'ready' or self.state == 'progress': self.ensure_one() if any(not time.date_end for time in self.time_ids.filtered(lambda t: t.user_id.id == self.env.user.id)): @@ -538,10 +555,15 @@ class SfWorkOrderBarcodes(models.Model): _inherit = ["mrp.workorder", "barcodes.barcode_events_mixin"] def on_barcode_scanned(self, barcode): - tray_code = self.env['sf.tray'].search([('code', '=', barcode)]) - self.tray_code = tray_code.code workorder = self.env['mrp.workorder'].browse(self.ids) - self.tray_id = workorder.gettray_auto(barcode) + if "*" not in barcode: + tray_code = self.env['sf.tray'].search([('code', '=', barcode)]) + self.tray_code = tray_code.code + self.tray_id = workorder.gettray_auto(barcode) + else: + self.pro_code_ok = workorder.pro_code_is_ok(barcode) + + # return { # 'type': 'ir.actions.act_window', diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 2a847788..f31af8d9 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -166,9 +166,15 @@ - - + + + +
+ +
+ +