diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 43da85e97..833c64d9e 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -442,14 +442,16 @@ class HolidaysRequestBatch(models.Model): @api.depends('users_id') def _compute_holiday_allowance(self): + number_of_days = 0 for record in self: holiday_status_id = self.env['hr.leave.type'].search([('name', '=', '年假')]) - leave_id = self.env['hr.leave.allocation'].search([('employee_id', '=', record.users_id.employee_id.id), + leave_ids = self.env['hr.leave.allocation'].search([('employee_id', '=', record.users_id.employee_id.id), ('holiday_status_id', '=', holiday_status_id.id)]) employee = self.env['hr.employee'].search([('id', '=', record.users_id.employee_id.id)]) all_overtime_hours = round(employee.all_overtime_hours / 8, 1) - if leave_id: - number_of_days = int(leave_id.number_of_days) + if leave_ids: + for leave_id in leave_ids: + number_of_days += leave_id.number_of_days else: number_of_days = 0 record.holiday_allowance = (f"年假{number_of_days}天, 补休{all_overtime_hours}天") diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index 380a5b75b..79d2e6e73 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -49,6 +49,38 @@ class IssueLibrary(models.Model): urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度', default='normal') work_end = fields.Boolean(string="结束") + member_of_department = fields.Boolean("是否是本部门数据", compute='_compute_part_of_department', + search='_search_part_of_department') + + @api.depends_context('uid', 'company') + @api.depends('department_id') + def _compute_part_of_department(self): + user_employee = self._get_valid_employee_for_user() + active_department = user_employee.department_id + for employee in self: + employee.member_of_department = employee.department_id == active_department + + def _get_valid_employee_for_user(self): + user = self.env.user + employee = user.employee_ids + if not employee: + user_employees = user.employee_id.sudo().search([ + ('user_id', '=', user.id) + ]) + employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1] + return employee + + # + def _search_part_of_department(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.department_id: + return [('id', operator, user_employee.id)] + return (['!'] if operator == '!=' else []) + [('department_id', '=', user_employee.department_id.id)] def _get_default_name_title(self): return self._description if self._description else self._name diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 4d6ddf12a..5ecc02bd0 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -23,6 +23,7 @@ +