diff --git a/soong_workflow/models/soong_user_role.py b/soong_workflow/models/soong_user_role.py index fbcefa268..aa4ea0027 100644 --- a/soong_workflow/models/soong_user_role.py +++ b/soong_workflow/models/soong_user_role.py @@ -2,7 +2,7 @@ from odoo import api, fields, models, _ from pypinyin import pinyin, lazy_pinyin from odoo.osv import expression - +from odoo.exceptions import UserError, ValidationError class YuthonUserRole(models.Model): _name = 'soong.user.role' @@ -22,7 +22,7 @@ class YuthonUserRole(models.Model): employee_ids = fields.One2many('hr.employee', 'user_role_id') company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company) pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True) - is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company') + is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company', search='_search_part_of_company_id') @api.depends_context('uid', 'company') @api.depends('company_id') @@ -45,6 +45,17 @@ class YuthonUserRole(models.Model): employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1] return employee + def _search_part_of_company_id(self, operator, value): + if operator not in ('=', '!=') or not isinstance(value, bool): + raise UserError(('Operation not supported')) + user_employee = self._get_valid_employee_for_user() + # Double negation + if not value: + operator = '!=' if operator == '=' else '=' + if not user_employee.company_id: + return [('id', operator, user_employee.id)] + return (['!'] if operator == '!=' else []) + [('company_id', '=', user_employee.company_id.id)] + @api.onchange('is_main') def _onchange_is_main(self): for employee in self.personnel_ids: diff --git a/yuthon_holiday/models/yuthon_vacation_reports.py b/yuthon_holiday/models/yuthon_vacation_reports.py index 4d9a7c9ed..7589c8dbd 100644 --- a/yuthon_holiday/models/yuthon_vacation_reports.py +++ b/yuthon_holiday/models/yuthon_vacation_reports.py @@ -11,7 +11,6 @@ class YuthonVacationReports(models.Model): employee_id = fields.Many2one('hr.employee', string='员工') leave = fields.Float(string='年假') working_overtime = fields.Float(string='加班时') - vacation_balance = fields.Float(string='假期余额') def button_fixes_approval(self): form_id = self.env.ref('yuthon_holiday.view_yuthon_fixes_approval_form').id diff --git a/yuthon_holiday/views/yuthon_vacation_reports_views.xml b/yuthon_holiday/views/yuthon_vacation_reports_views.xml index 0fdacc26b..609c9be6c 100644 --- a/yuthon_holiday/views/yuthon_vacation_reports_views.xml +++ b/yuthon_holiday/views/yuthon_vacation_reports_views.xml @@ -8,8 +8,6 @@ - -