# -*- 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