diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 7a77fc5c..712940f0 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -122,10 +122,10 @@ class ResMrpWorkOrder(models.Model): chuck_type_id = fields.Char(string="卡盘类型") chuck_model_id = fields.Char(string="卡盘型号") tray_serial_number = fields.Char(string="托盘序列号") - tray_name = fields.Char(string="托盘名称") + tray_product_id = fields.Many2one('product.product', string="托盘名称") tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌") - tray_type_id = fields.Char(string="托盘类型") - tray_model_id = fields.Char(string="托盘型号") + tray_type_id = fields.Many2one('sf.fixture.material', string="托盘类型") + tray_model_id = fields.Many2one('sf.fixture.model', string="托盘型号") total_wight = fields.Float(string="总重量") maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") maximum_clamping_force = fields.Char(string="最大夹持力[n]") @@ -552,6 +552,9 @@ class ResMrpWorkOrder(models.Model): raise UserError(_('请先完成上一步工单')) def button_finish(self): + if self.routing_type == '装夹预调': + if not self.material_center_point and self.X_deviation_angle > 0: + raise UserError("请对前置三元检测定位参数进行计算定位") if self.picking_out_id: picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)]) if picking_out.workorder_out_id: @@ -721,54 +724,22 @@ class SfWorkOrderBarcodes(models.Model): _name = "mrp.workorder" _inherit = ["mrp.workorder", "barcodes.barcode_events_mixin"] - # def on_barcode_scanned(self, barcode): - # workorder = self.env['mrp.workorder'].browse(self.ids) - # if "*" not in barcode: - # if self.routing_type == '装夹': - # tray_code = self.env['sf.tray'].search([('code', '=', barcode)]) - # self.tray_code = tray_code.code - # self.tray_id = workorder.gettray_auto(barcode) - # elif self.routing_type == '前置三元定位检测': - # print('我是前置三元检测') - # logging.info('我是前置三元检测') - # elif self.routing_type == 'CNC加工': - # if barcode == 'UP-ALL': - # print("我是一键合并下发") - # logging.info('我是一键合并下发') - # self.up_merge_all() - # else: - # print('CNC加工') - # # print(barcode) - # # a = self.env['sf.tray'].search([('code', '=', barcode)]) - # # print(a) - # # # workorder_obj = self.env['mrp.workorder'].search([('tray_code', '=', barcode)], limit=1) - # # workorder_obj = self.env['mrp.workorder'].search([('tray_code', '=', barcode)]) - # # e = workorder_obj.id - # # print(workorder_obj) - # # action = { - # # 'name': '工单', - # # 'type': 'ir.actions.act_window', - # # # 'view_type': 'form', - # # 'view_mode': 'form', - # # 'res_model': 'mrp.workorder', - # # 'view_id': self.env.ref('mrp.mrp_production_workorder_form_view_inherit').id, - # # # 'res_id': workorder_obj.id, - # # 'res_id': 1023, - # # 'target': 'current', - # # # 'context': self.env.context, - # # # 'flags': {'initial_mode': 'edit'}, - # # } - # # return action - # - # elif self.routing_type == '后置三元质量检测': - # print('后置三元检测') - # elif self.routing_type == '解除装夹': - # print("我是解除装夹") - # else: - # pass - # - # else: - # self.pro_code_ok = workorder.pro_code_is_ok(barcode) + def on_barcode_scanned(self, barcode): + workorder = self.env['mrp.workorder'].browse(self.ids) + # workorder = self.env['mrp.workorder'].search( + # [('routing_type', '=', '装夹预调'), ('production_id', '=', self.production_id.id)]) + if workorder: + if workorder.routing_type == '装夹预调': + stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)]) + if stock_move_line: + workorder.write({ + 'tray_serial_number': stock_move_line.lot_name, + 'tray_product_id': stock_move_line.product_id.id, + 'tray_brand_id': stock_move_line.product_id.brand_id.id, + 'tray_type_id': stock_move_line.product_id.fixture_material_id.id, + 'tray_model_id': stock_move_line.product_id.fixture_model_id.id + }) + workorder.button_start() class WorkPieceDelivery(models.Model): diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index a39bd0f4..f13abf6b 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -375,8 +375,18 @@ class ReStockMove(models.Model): def print_serial_numbers(self): if not self.next_serial: raise UserError(_("请先分配序列号再进行打印")) + label_data = [] for item in self.move_line_ids: - print(item.lot_name) + label_data.append({ + 'item_id': item.id, + }) + if label_data: + report_template = self.env.ref('stock.label_package_template') + res = report_template.report_action(label_data) + res['id'] = report_template.id + return res + else: + raise UserError(_("没有可打印的标签数据")) class ReStockQuant(models.Model): diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 42b58149..502b33a2 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -117,7 +117,7 @@ attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>