from odoo import models, api, fields from odoo.exceptions import ValidationError class SfMaintenanceEquipmentTool(models.Model): _inherit = 'maintenance.equipment.tool' functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具名称') image = fields.Binary('图片', related='functional_tool_name_id.image') tool_code = fields.Char('功能刀具编码', related='functional_tool_name_id.code') functional_tool_type = fields.Char('功能刀具类型', related='functional_tool_name_id.sf_cutting_tool_type_id.name') tool_groups = fields.Char('刀具组', related='functional_tool_name_id.tool_groups_id.name') diameter = fields.Integer('直径(mm)', related='functional_tool_name_id.functional_tool_diameter') knife_tip_r_angle = fields.Float('刀尖R角(mm)', related='functional_tool_name_id.knife_tip_r_angle') life_value_max = fields.Integer('最大寿命值(min)', related='functional_tool_name_id.max_lifetime_value') alarm_value = fields.Integer('报警值(min)', related='functional_tool_name_id.alarm_value') used_value = fields.Integer('已使用值(min)', related='functional_tool_name_id.used_value') tool_install_time = fields.Datetime('机内装刀时间') @api.model_create_multi def create(self, vals_list): tools = super().create(vals_list) for tool in tools: self.env['sf.machine.table.tool.changing.apply'].sudo().create({ 'maintenance_equipment_id': tool.equipment_id.id, 'cutter_spacing_code_id': tool.id }) return tools class StockLot(models.Model): _inherit = 'stock.lot' @api.model def name_search(self, name='', args=None, operator='ilike', limit=100): # 调用父类的name_search方法 records = super(StockLot, self).name_search(name=name, args=args, operator=operator, limit=limit) if records: return records else: # 在调用父类方法之后执行自定义逻辑 if 5 >= len(args) > 3: if args[2][2] in ['整体式刀具', '刀片', '刀杆', '刀盘', '刀柄', '夹头']: objs = self.search([('name', '=', name), ('quant_ids.location_id.name', 'in', ['刀具房']), ('quant_ids.quantity', '>', 0)]) if objs.product_id.categ_id.name == '刀具': raise ValidationError('这是【%s】物料,请扫入正确的【%s】物料!!!' % ( objs.product_id.cutting_tool_material_id.name, args[2][2])) return records