import logging from datetime import timedelta, datetime, date from odoo import fields, models, api from odoo.exceptions import ValidationError, UserError class JikimoBomWizard(models.TransientModel): _name = 'jikimo.bom.wizard' _description = '组装方式选择' bom_id = fields.Many2one('jikimo.bom', '刀具组装清单') assembly_options = fields.Selection([ ('刀柄+整体式刀具', '刀柄+整体式刀具'), ('刀柄+刀杆+刀片', '刀柄+刀杆+刀片'), ('刀柄+刀盘+刀片', '刀柄+刀盘+刀片') ], string='组装方式', required=True) is_ok = fields.Boolean('确认上述信息正确无误。') @api.model def default_get(self, fields): res = super(JikimoBomWizard, self).default_get(fields) # 根据某个字段的值设置默认选项 if 'default_bom_id' in self.env.context: jikimo_bom = self.env['jikimo.bom'].browse(self.env.context['default_bom_id']) if not jikimo_bom: return res if jikimo_bom.options: res['assembly_options'] = jikimo_bom.options # some_field_value = self.env.context.get('some_field') # if some_field_value == 'condition_value': # res['default_option'] = 'option2' # 设置为特定选项 return res def submit(self): if not self.bom_id: raise UserError('缺少bom信息') if self.bom_id.tool_inventory_id.functional_cutting_tool_model_id.name == '飞刀' and self.assembly_options == '刀柄+整体式刀具': raise UserError('飞刀只可选 刀柄+刀杆+刀片 或 刀柄+刀盘+刀片') if self.bom_id.tool_inventory_id.functional_cutting_tool_model_id.name in['中心钻','合金钻','合金刀','整体刀','倒角刀','丝锥'] and self.assembly_options != '刀柄+整体式刀具': raise UserError('此功能刀具只可选 刀柄+整体式刀具') self.bom_id.generate_bill_materials(self.assembly_options)