[IMP]hr_employee_stats_sheet: fix leave hours when several leaves exits for the same days

This commit is contained in:
2025-12-22 14:27:07 +01:00
parent e61e2792a9
commit e1534c41d8
2 changed files with 21 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "hr_employee_stats_sheet", "name": "hr_employee_stats_sheet",
"version": "16.0.3.0.2", "version": "16.0.3.0.3",
"description": "Add global sheet for employee stats", "description": "Add global sheet for employee stats",
"summary": "Add global sheet for employee stats", "summary": "Add global sheet for employee stats",
"author": "Nicolas JEUDY", "author": "Nicolas JEUDY",

View File

@@ -114,23 +114,23 @@ class HrEmployeeStats(models.Model):
recovery = self.env["hr.leave"] recovery = self.env["hr.leave"]
total_recovery_hours = 0 total_recovery_hours = 0
if self.date and self.employee_id and self._get_holiday_status_id(): if self.date and self.employee_id and self._get_holiday_status_id():
recovery_id = recovery.search( recovery_ids = recovery.search(
[ [
("employee_id", "=", self.employee_id.id), ("employee_id", "=", self.employee_id.id),
("holiday_status_id", "=", self._get_holiday_status_id()), ("holiday_status_id", "=", self._get_holiday_status_id()),
("request_date_from", "<=", self.date), ("request_date_from", "<=", self.date),
("request_date_to", ">=", self.date), ("request_date_to", ">=", self.date),
], ],
limit=1
) )
if recovery_id: if recovery_ids:
if recovery_id.request_unit_hours: for recovery_id in recovery_ids:
recovery_hours = recovery_id.number_of_hours_display if recovery_id.request_unit_hours:
total_recovery_hours = min(recovery_hours,self._get_total_planned_hours()) recovery_hours = recovery_id.number_of_hours_display
elif recovery_id.request_unit_half: total_recovery_hours += min(recovery_hours,self._get_total_planned_hours())
total_recovery_hours = self._get_total_planned_hours() / 2 elif recovery_id.request_unit_half:
else : total_recovery_hours += self._get_total_planned_hours() / 2
total_recovery_hours = self._get_total_planned_hours() else :
total_recovery_hours += self._get_total_planned_hours()
return total_recovery_hours return total_recovery_hours
def _get_total_leave_hours(self): def _get_total_leave_hours(self):
@@ -138,23 +138,23 @@ class HrEmployeeStats(models.Model):
leave = self.env["hr.leave"] leave = self.env["hr.leave"]
total_leave_hours = 0 total_leave_hours = 0
if self.date and self.employee_id: if self.date and self.employee_id:
leave_id = leave.search( leave_ids = leave.search(
[ [
("employee_id", "=", self.employee_id.id), ("employee_id", "=", self.employee_id.id),
("holiday_status_id", "!=", self._get_holiday_status_id()), ("holiday_status_id", "!=", self._get_holiday_status_id()),
("request_date_from", "<=", self.date), ("request_date_from", "<=", self.date),
("request_date_to", ">=", self.date), ("request_date_to", ">=", self.date),
], ],
limit=1
) )
if leave_id: if leave_ids:
if leave_id.request_unit_hours: for leave_id in leave_ids:
leave_hours = leave_id.number_of_hours_display if leave_id.request_unit_hours:
total_leave_hours = min(leave_hours,self._get_total_planned_hours()) leave_hours = leave_id.number_of_hours_display
elif leave_id.request_unit_half: total_leave_hours += min(leave_hours,self._get_total_planned_hours())
total_leave_hours = self._get_total_planned_hours() / 2 elif leave_id.request_unit_half:
else : total_leave_hours += self._get_total_planned_hours() / 2
total_leave_hours = self._get_total_planned_hours() else :
total_leave_hours += self._get_total_planned_hours()
return total_leave_hours return total_leave_hours
@api.depends("employee_id", "date") @api.depends("employee_id", "date")