From 367e59ac3723c0432fc99b5c478ff80d1bf34beb Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Thu, 29 May 2025 10:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_user_role.py | 15 +++++++++++++-- yuthon_holiday/models/yuthon_vacation_reports.py | 1 - .../views/yuthon_vacation_reports_views.xml | 2 -- .../views/resource_calendar_leaves_views.xml | 3 --- .../models/yuthon_hr_department.py | 16 ++++++++++++++-- yuthon_hr_employee/models/yuthon_hr_employee.py | 13 ++++++++++++- 6 files changed, 39 insertions(+), 11 deletions(-) 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 @@ - -