154 lines
5.7 KiB
Python
154 lines
5.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models
|
|
import json
|
|
|
|
|
|
class SheetCollectionSetting(models.Model):
|
|
_name = 'sheet.collection.setting'
|
|
_description = '财务数据表项目配置'
|
|
_order = 'sequence'
|
|
|
|
sequence = fields.Integer(string='序号')
|
|
name = fields.Char(string='名称')
|
|
employee_ids = fields.Many2many('hr.employee', string='员工')
|
|
user_role_ids = fields.Many2many('soong.user.role', string="角色")
|
|
start_date = fields.Date(string="生效日期", default=fields.Datetime.today())
|
|
end_date = fields.Date(string="失效日期")
|
|
is_enable = fields.Boolean(string="是否启用", compute="compute_is_enable")
|
|
|
|
@api.depends('start_date', 'end_date')
|
|
def compute_is_enable(self):
|
|
today = fields.Date.today()
|
|
for record in self:
|
|
if not record.start_date:
|
|
record.is_enable = False
|
|
elif not record.end_date:
|
|
record.is_enable = record.start_date <= today
|
|
else:
|
|
record.is_enable = record.start_date <= today <= record.end_date
|
|
|
|
@api.onchange('user_role_ids')
|
|
def _onchange_user_role_ids(self):
|
|
for rec in self:
|
|
domain = ['|', ('user_role_id', 'in', rec.user_role_ids.ids),
|
|
('user_role_ids', 'in', rec.user_role_ids.ids)]
|
|
new_employees = self.env['hr.employee'].search(domain)
|
|
all_employees = rec.employee_ids | new_employees
|
|
rec.employee_ids = all_employees
|
|
|
|
def table_setting_wizard(self):
|
|
collection_ids = self.env["sheet.collection.setting"].browse(
|
|
self._context.get('active_ids', self._context.get('active_id')))
|
|
return {
|
|
'name': '批量添加弹窗',
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'table.setting.wizard',
|
|
'view_mode': 'form',
|
|
'target': 'new',
|
|
'context': {'default_financial_ids': collection_ids.ids}
|
|
}
|
|
|
|
def check_today(self):
|
|
self.ensure_one()
|
|
today = fields.Date.today()
|
|
if self.start_date and self.end_date:
|
|
return self.start_date <= today <= self.end_date
|
|
elif self.start_date and not self.end_date:
|
|
return self.start_date <= today
|
|
elif not self.start_date and self.end_date:
|
|
return today <= self.end_date
|
|
else:
|
|
return '缺少参数'
|
|
|
|
def get_feild_form(self, staff_id):
|
|
tar = []
|
|
domain = []
|
|
if staff_id:
|
|
domain.append(('employee_ids', 'in', staff_id))
|
|
cons = self.search(domain)
|
|
for con in cons:
|
|
initiate = con.check_today()
|
|
if initiate:
|
|
tar.append({
|
|
'id': con.id,
|
|
'sequence': con.sequence,
|
|
'label': con.name,
|
|
})
|
|
tar.sort(key=lambda x: x['sequence'])
|
|
return tar
|
|
|
|
|
|
class SummaryTableSetting(models.Model):
|
|
_name = 'summary.table.setting'
|
|
_description = '信息汇总表项目配置'
|
|
_order = 'sequence'
|
|
|
|
sequence = fields.Integer(string='序号')
|
|
name = fields.Char(string='名称')
|
|
employee_ids = fields.Many2many('hr.employee', string='员工')
|
|
user_role_ids = fields.Many2many('soong.user.role', string="角色")
|
|
start_date = fields.Date(string="生效日期", default=fields.Datetime.today())
|
|
end_date = fields.Date(string="失效日期")
|
|
is_enable = fields.Boolean(string="是否启用", compute="compute_is_enable")
|
|
|
|
@api.depends('start_date', 'end_date')
|
|
def compute_is_enable(self):
|
|
today = fields.Date.today()
|
|
for record in self:
|
|
if not record.start_date:
|
|
record.is_enable = False
|
|
elif not record.end_date:
|
|
record.is_enable = record.start_date <= today
|
|
else:
|
|
record.is_enable = record.start_date <= today <= record.end_date
|
|
|
|
@api.onchange('user_role_ids')
|
|
def _onchange_user_role_ids(self):
|
|
for rec in self:
|
|
domain = ['|', ('user_role_id', 'in', rec.user_role_ids.ids),
|
|
('user_role_ids', 'in', rec.user_role_ids.ids)]
|
|
new_employees = self.env['hr.employee'].search(domain)
|
|
all_employees = rec.employee_ids | new_employees
|
|
rec.employee_ids = all_employees
|
|
|
|
def table_setting_wizard(self):
|
|
table_ids = self.env["summary.table.setting"].browse(
|
|
self._context.get('active_ids', self._context.get('active_id')))
|
|
return {
|
|
'name': 'Table Setting Wizard',
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'table.setting.wizard',
|
|
'view_mode': 'form',
|
|
'target': 'new',
|
|
'context': {'default_information_ids': table_ids.ids}
|
|
}
|
|
|
|
def check_today(self):
|
|
self.ensure_one()
|
|
today = fields.Date.today()
|
|
if self.start_date and self.end_date:
|
|
return self.start_date <= today <= self.end_date
|
|
elif self.start_date and not self.end_date:
|
|
return self.start_date <= today
|
|
elif not self.start_date and self.end_date:
|
|
return today <= self.end_date
|
|
else:
|
|
return '缺少参数'
|
|
|
|
def get_feild_form(self, staff_id):
|
|
tar = []
|
|
domain = []
|
|
if staff_id:
|
|
domain.append(('employee_ids', 'in', staff_id))
|
|
cons = self.search(domain)
|
|
for con in cons:
|
|
initiate = con.check_today()
|
|
if initiate:
|
|
tar.append({
|
|
'id': con.id,
|
|
'sequence': con.sequence,
|
|
'label': con.name
|
|
})
|
|
tar.sort(key=lambda x: x['sequence'])
|
|
return tar
|