Files
gzth/yuthon_account_report/models/table_setting.py
T
2025-12-06 17:37:45 +08:00

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