diff --git a/sf_bf_connect/__manifest__.py b/sf_bf_connect/__manifest__.py index bcec62fa..af572074 100644 --- a/sf_bf_connect/__manifest__.py +++ b/sf_bf_connect/__manifest__.py @@ -13,8 +13,8 @@ 'depends': ['sf_base', 'sf_sale', 'sf_dlm'], 'data': [ 'views/res_partner_view.xml', - 'views/view.xml', - 'report/bill_report.xml', + # 'views/view.xml', + # 'report/bill_report.xml', ], 'demo': [ ], diff --git a/sf_bf_connect/models/__init__.py b/sf_bf_connect/models/__init__.py index 21f9d732..43a269e9 100644 --- a/sf_bf_connect/models/__init__.py +++ b/sf_bf_connect/models/__init__.py @@ -1,5 +1,5 @@ from . import http from . import models from . import process_status -from . import jd_eclp +# from . import jd_eclp diff --git a/sf_bf_connect/models/process_status.py b/sf_bf_connect/models/process_status.py index 34acc2b6..e5f33a4d 100644 --- a/sf_bf_connect/models/process_status.py +++ b/sf_bf_connect/models/process_status.py @@ -115,7 +115,7 @@ class FinishStatusChange(models.Model): # default_code = fields.Char(string='内部编码') - def button_validate(self): + def button_validate1(self): # Clean-up the context key at validation to avoid forcing the creation of immediate # transfers. ctx = dict(self.env.context) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 0e388d20..b6e7f3e5 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +import re + from odoo import api, fields, models, _ @@ -57,11 +59,12 @@ class MrpProduction(models.Model): def action_generate_serial(self): self.ensure_one() + iot_code = self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) or self.env['ir.sequence'].next_by_code('stock.lot.serial') + iot_code_name = re.sub('[\u4e00-\u9fa5]', "", iot_code) self.lot_producing_id = self.env['stock.lot'].create({ 'product_id': self.product_id.id, 'company_id': self.company_id.id, - 'name': self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) or self.env[ - 'ir.sequence'].next_by_code('stock.lot.serial'), + 'name': iot_code_name, }) if self.move_finished_ids.filtered(lambda m: m.product_id == self.product_id).move_line_ids: self.move_finished_ids.filtered( @@ -235,6 +238,7 @@ class MrpProduction(models.Model): current_sequence += 1 if work.name == '获取CNC加工程序': work.button_start() + #work.button_finish() work.fetchCNC() #创建工单并进行排序 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 @@ - - + + + +
+ +
+ +