44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class YuthonCateringConf(models.Model):
|
|
_name = 'yuthon.catering.conf'
|
|
_order = 'is_active desc, effective_date desc'
|
|
|
|
company_id = fields.Many2one(string='公司', comodel_name='res.company', required=True, default=lambda self: self.env.company)
|
|
employee_ids = fields.Many2many(string='员工', comodel_name='hr.employee')
|
|
employee_count = fields.Integer(string='人数', compute='_compute_employee_count', store=True)
|
|
effective_date = fields.Date(string='生效日期')
|
|
expiry_date = fields.Date(string='失效日期')
|
|
is_active = fields.Integer(string='是否生效', compute='_compute_is_active', store=True)
|
|
note = fields.Text(string='备注')
|
|
|
|
@api.depends('employee_ids')
|
|
def _compute_employee_count(self):
|
|
for record in self:
|
|
record.employee_count = len(record.employee_ids)
|
|
|
|
@api.depends('expiry_date')
|
|
def _compute_is_active(self):
|
|
for record in self:
|
|
record.is_active = 0 if record.expiry_date else 1
|
|
|
|
def action_change_employees(self):
|
|
"""变更员工按鈕:打开wizard"""
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': '变更员工',
|
|
'res_model': 'catering.conf.change.wizard',
|
|
'view_mode': 'form',
|
|
'target': 'new',
|
|
'context': {'active_id': self.id},
|
|
}
|
|
|
|
def action_fix_null_effective_date(self):
|
|
"""一次性修复:将没有生效日期的记录补为 2020-01-01,使其排到最下面"""
|
|
from datetime import date as date_cls
|
|
records = self.search([('effective_date', '=', False)])
|
|
if records:
|
|
records.write({'effective_date': date_cls(2020, 1, 1)})
|