from odoo import models, fields, api class FixtureMaterial(models.Model): _name = 'sf.fixture.material' _description = "夹具物料" code = fields.Char(string='编码') name = fields.Char(string="名称", size=15) category = fields.Selection([('零点夹具', '零点夹具')], string="类别") remark = fields.Char(string="备注") active = fields.Boolean(string="有效", default=True) class Multi_MountingType(models.Model): _name = 'sf.multi_mounting.type' _description = "联装类型" code = fields.Char(string='编码') name = fields.Char(string="名称", size=15) remark = fields.Char(string="备注") active = fields.Boolean(string="有效", default=True) class FixtureModel(models.Model): _name = 'sf.fixture.model' _description = "夹具型号" name = fields.Char(string="名称", size=50) fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料") fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name') multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") brand_id = fields.Many2one('sf.machine.brand', string="品牌") model_file = fields.Binary(string="图片") glb_url = fields.Char(string="图片") status = fields.Boolean('状态') active = fields.Boolean('有效', default=False) zero_chuck_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='零点卡盘基本参数') zero_tray_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='零点托盘基本参数') pneumatic_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='气动夹具基本参数') jaw_vice_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='虎钳夹具基本参数') magnet_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='磁吸夹具基本参数') adapter_board_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='转接板(锁板)夹具基本参数') scroll_chuck_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', string='三爪卡盘基本参数') code = fields.Char(string='编码', readonly=True) # def _get_code(self, fixture_model_type_code): # fixture_model = self.env['sf.fixture.model'].sudo().search( # [('code', 'ilike', fixture_model_type_code)], # limit=1, # order="id desc") # if not fixture_model: # num = "%03d" % 1 # else: # m = int(fixture_model.code[-3:]) + 1 # num = "%03d" % m # return "%s%s" % (fixture_model_type_code, num) # # def _onchange_fixture_material_id(self, fixture_material_id): # if fixture_material_id: # if self.fixture_material_id.name == "气动夹具": # code = self._get_code("JKM-C-JJWL-QDJJ-") # elif self.fixture_material_id.name == "转接板(锁板)夹具": # code = self._get_code("JKM-C-JJWL-ZJJJ-") # elif self.fixture_material_id.name == "磁吸夹具": # code = self._get_code("JKM-C-JJWL-CXJJ-") # elif self.fixture_material_id.name == "虎钳夹具": # code = self._get_code("JKM-C-JJWL-HQJJ-") # elif self.fixture_material_id.name == "零点托盘": # code = self._get_code("JKM-C-JJWL-LDTP-") # elif self.fixture_material_id.name == "三爪卡盘": # code = self._get_code("JKM-C-JJWL-SZKP-") # else: # code = self._get_code("JKM-C-JJWL-LDKP-") # return code # # @api.model_create_multi # def create(self, vals): # obj = super(FixtureModel, self).create(vals) # if obj.fixture_material_id: # code = self._onchange_fixture_material_id(obj.fixture_material_id) # obj.code = code # return obj