From f85cc5995ced2a7435fdcb4f09f108caab97bd0b Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 22 Feb 2022 13:57:55 +0000 Subject: [PATCH] [FIX] hr_holidays: Avoid useless overhead on employee creation Part-of: odoo/odoo#85133 --- .../hr_holidays/report/hr_leave_employee_type_report.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/hr_holidays/report/hr_leave_employee_type_report.py b/addons/hr_holidays/report/hr_leave_employee_type_report.py index 549f5ef5389..1117a69031f 100644 --- a/addons/hr_holidays/report/hr_leave_employee_type_report.py +++ b/addons/hr_holidays/report/hr_leave_employee_type_report.py @@ -11,7 +11,7 @@ class LeaveReport(models.Model): _order = "date_from DESC, employee_id" employee_id = fields.Many2one('hr.employee', string="Employee", readonly=True) - active_employee = fields.Boolean(related='employee_id.active', readonly=True) + active_employee = fields.Boolean(readonly=True) number_of_days = fields.Float('Number of Days', readonly=True, group_operator="sum") department_id = fields.Many2one('hr.department', string='Department', readonly=True) leave_type = fields.Many2one("hr.leave.type", string="Leave Type", readonly=True) @@ -39,6 +39,7 @@ class LeaveReport(models.Model): CREATE or REPLACE view hr_leave_employee_type_report as ( SELECT row_number() over(ORDER BY leaves.employee_id) as id, leaves.employee_id as employee_id, + leaves.active_employee as active_employee, leaves.number_of_days as number_of_days, leaves.department_id as department_id, leaves.leave_type as leave_type, @@ -49,6 +50,7 @@ class LeaveReport(models.Model): leaves.company_id as company_id FROM (SELECT allocation.employee_id as employee_id, + employee.active as active_employee, CASE WHEN request.number_of_days > 0 THEN allocation.number_of_days - request.number_of_days ELSE allocation.number_of_days @@ -61,12 +63,14 @@ class LeaveReport(models.Model): 'left' as holiday_status, allocation.employee_company_id as company_id FROM hr_leave_allocation as allocation + INNER JOIN hr_employee as employee ON (allocation.employee_id = employee.id) LEFT JOIN (SELECT holiday_status_id, employee_id, sum(number_of_days) as number_of_days FROM hr_leave GROUP BY holiday_status_id, employee_id) request on (allocation.employee_id=request.employee_id and allocation.holiday_status_id = request.holiday_status_id) UNION ALL SELECT request.employee_id as employee_id, + employee.active as active_employee, request.number_of_days as number_of_days, request.department_id as department_id, request.holiday_status_id as leave_type, @@ -78,7 +82,8 @@ class LeaveReport(models.Model): WHEN request.state = 'confirm' THEN 'planned' END as holiday_status, request.employee_company_id as company_id - FROM hr_leave as request) leaves + FROM hr_leave as request + INNER JOIN hr_employee as employee ON (request.employee_id = employee.id)) leaves ); """)