from odoo import models, fields, api from odoo.exceptions import UserError class ProcedureEquipmentResourceSetting(models.Model): _name = 'sf.procedure.equipment.resource.setting' _description = '产线设备资源设置' name = fields.Many2one('sf.production.line', string='生产线', required=True) work_center_name_id = fields.Many2one('mrp.workcenter', string='工作中心名称') equipment_name_id = fields.Many2one('maintenance.equipment', string='设备名称', readonly=True, search=True, compute='_compute_equipment_name_id') equipment_code = fields.Char(string='机台号', readonly=True, related='equipment_name_id.code') brand_id = fields.Many2one('sf.machine.brand', string='品牌', readonly=True, related='equipment_name_id.brand_id') type_id = fields.Many2one('sf.machine_tool.type', string='型号', readonly=True, related='equipment_name_id.type_id') status = fields.Selection(string='设备状态', readonly=True, related='equipment_name_id.state') # todo 传入工序数据 working_procedure = fields.Char(string='工序', readonly=True) production_capacity = fields.Float(string='产能', required=True, digits=(4, 1)) working_calendar_id = fields.Many2one('sf.work.log.setting', string='工作日历') working_shift_id = fields.Many2many('sf.working.shift', string='班次', readonly=True, compute='_compute_working_shift_id') create_time = fields.Datetime(string='新增时间', default=lambda self: fields.Datetime.now(), readonly=True) participate_in_scheduling = fields.Boolean(string='参与排程', default=True) # check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked') check_status = fields.Boolean(string='启用状态', default=False, readonly=True) def action_check(self): """ 审核启用 """ self.check_status = True def action_uncheck(self): """ 审核禁用 """ self.check_status = False @api.depends('work_center_name_id') def _compute_equipment_name_id(self): for record in self: if record.work_center_name_id: record.equipment_name_id = record.work_center_name_id.equipment_id else: record.equipment_name_id = None @api.constrains('production_capacity') def _check_production_capacity(self): for record in self: if record.production_capacity < 0: raise UserError("产能不能为负!") @api.depends('working_calendar_id') def _compute_working_shift_id(self): for record in self: if record.working_calendar_id: record.working_shift_id = record.working_calendar_id.working_shift_ids else: record.working_shift_id = None