From b2d1e9ce8c5d8965ed09c3fbd6de543708223487 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Wed, 30 Nov 2022 14:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=91=A0=E5=A2=9E=E5=8A=A0=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E5=87=BD=E6=95=B0=EF=BC=9B=E2=91=A1=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=A4=84=E6=89=AB=E7=A0=81=E7=BB=91=E5=AE=9A=E6=89=98?= =?UTF-8?q?=E7=9B=98=E4=BB=A3=E7=A0=81=E7=A7=BB=E6=A4=8D=E5=88=B0mrp.worko?= =?UTF-8?q?rder=E4=B8=8B=EF=BC=9B=E2=91=A2=E4=BF=AE=E6=94=B9=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=A0=BC=E5=BC=8F=E4=B8=BAUsererror;=E2=91=A3?= =?UTF-8?q?=E3=80=81=E8=BF=94=E5=9B=9E=E5=81=8F=E5=B7=AE=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 2 +- sf_manufacturing/models/mrp_workorder.py | 42 +++++++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 57164e63..a39e6d92 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from odoo import api, fields, models +from odoo import api, fields, models,_ diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 8de51b8a..7c11f6bd 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -5,6 +5,7 @@ from datetime import datetime from dateutil.relativedelta import relativedelta from odoo import api, fields, models, SUPERUSER_ID, _ from odoo.addons.sf_base.commons.common import Common +from odoo.exceptions import UserError class ResMrpWorkOrder(models.Model): @@ -94,6 +95,7 @@ class ResMrpWorkOrder(models.Model): print("(%.2f,%.2f)" % (x, y)) self.material_center_point = ("(%.2f,%.2f,%.2f)" % (x, y, z)) self.X_deviation_angle = jdz + return self.material_center_point def json_workorder_str(self, k, production, route): workorders_values_str = [0, '', { @@ -136,9 +138,9 @@ class ResMrpWorkOrder(models.Model): values = self.env['sf.tray'].search([("code", "=", self.tray_code)]) if values: if values.state == "占用": - raise ValidationError('该托盘已占用') + raise UserError('该托盘已占用') if values.state == "报损": - raise ValidationError('该托盘已损坏') + raise UserError('该托盘已损坏') else: values.update({ 'workorder_id': self, @@ -146,7 +148,26 @@ class ResMrpWorkOrder(models.Model): 'state': '占用', }) else: - raise ValidationError('该托盘编码已失效') + raise UserError('该托盘编码已失效') + else: + return "" + + def gettray_auto(self, barcode): + if barcode != False: + values = self.env['sf.tray'].search([("code", "=", barcode)]) + if values: + if values.state == "占用": + raise UserError('该托盘已占用') + if values.state == "报损": + raise UserError('该托盘已损坏') + else: + values.update({ + 'workorder_id': self, + 'production_id': self.production_id, + 'state': '占用', + }) + else: + raise UserError('该托盘编码已失效') else: return "" @@ -334,3 +355,18 @@ class CNCprocessing(models.Model): 'remark': obj['remark'] # 'FJGDate': obj[''] }) + +class SfWorkOrderBarcodes(models.Model): + """ + 智能工厂工单处扫码绑定托盘 + """ + _name = "mrp.workorder" + _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) + workorder.gettray_auto(barcode) \ No newline at end of file