From c16fccfa6e7576f773050fb08e68205dc1d9c128 Mon Sep 17 00:00:00 2001 From: Laetitia Da Costa Date: Mon, 8 Dec 2025 16:15:05 +0100 Subject: [PATCH] [FIX]hr_employee_stats_sheet:fix calculation of planned recovery when recovery takes several days --- hr_employee_stats_sheet/__manifest__.py | 2 +- .../models/hr_employee_stats.py | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/hr_employee_stats_sheet/__manifest__.py b/hr_employee_stats_sheet/__manifest__.py index 040e80c..19e9e03 100755 --- a/hr_employee_stats_sheet/__manifest__.py +++ b/hr_employee_stats_sheet/__manifest__.py @@ -1,6 +1,6 @@ { "name": "hr_employee_stats_sheet", - "version": "16.0.2.1.0", + "version": "16.0.2.1.1", "description": "Add global sheet for employee stats", "summary": "Add global sheet for employee stats", "author": "Nicolas JEUDY", diff --git a/hr_employee_stats_sheet/models/hr_employee_stats.py b/hr_employee_stats_sheet/models/hr_employee_stats.py index bf1ede0..7b6af5d 100644 --- a/hr_employee_stats_sheet/models/hr_employee_stats.py +++ b/hr_employee_stats_sheet/models/hr_employee_stats.py @@ -113,17 +113,23 @@ class HrEmployeeStats(models.Model): recovery = self.env["hr.leave"] total_recovery_hours = 0 if self.date and self.employee_id and self._get_holiday_status_id(): - recovery_ids = recovery.search( + recovery_id = recovery.search( [ ("employee_id", "=", self.employee_id.id), ("holiday_status_id", "=", self._get_holiday_status_id()), ("request_date_from", "<=", self.date), ("request_date_to", ">=", self.date), - ] - ) - total_recovery_hours = sum( - recovery_ids.mapped("number_of_hours_display") + ], + limit=1 ) + if recovery_id: + if recovery_id.request_unit_hours: + recovery_hours = recovery_id.number_of_hours_display + total_recovery_hours = min(recovery_hours,self._get_total_planned_hours()) + elif recovery_id.request_unit_half: + total_recovery_hours = self._get_total_planned_hours() / 2 + else : + total_recovery_hours = self._get_total_planned_hours() return total_recovery_hours def _get_total_leave_hours(self): @@ -142,7 +148,8 @@ class HrEmployeeStats(models.Model): ) if leave_id: if leave_id.request_unit_hours: - total_leave_hours = leave_id.number_of_hours_display + leave_hours = leave_id.number_of_hours_display + total_leave_hours = min(leave_hours,self._get_total_planned_hours()) elif leave_id.request_unit_half: total_leave_hours = self._get_total_planned_hours() / 2 else :