From 86891b8e082bb70ca20dd5149735528bb32c0409 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Fri, 2 Feb 2024 13:16:12 +0100 Subject: [PATCH] [FIX] hr_holidays: Avoid useless check_validity calls on payslip computation closes odoo/odoo#152311 Signed-off-by: Yannick Tivisse (yti) --- addons/hr_holidays/models/hr_leave.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 4a94cbc75fe..1bbfe770a43 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -783,7 +783,7 @@ Attempting to double-book your time off won't magically make your vacation 2x be if leave_type.allows_negative: max_excess = leave_type.max_allowed_negative for employee in employees: - if leave_data[employee][0][1]['virtual_remaining_leaves'] < -max_excess: + if leave_data[employee] and leave_data[employee][0][1]['virtual_remaining_leaves'] < -max_excess: raise ValidationError(_("There is no valid allocation to cover that request.")) continue @@ -791,8 +791,10 @@ Attempting to double-book your time off won't magically make your vacation 2x be ignored_leave_ids=leaves.ids ).get_allocation_data(employees, date_from) for employee in employees: - previous_emp_data = previous_leave_data[employee][0][1]['virtual_excess_data'] - emp_data = leave_data[employee][0][1]['virtual_excess_data'] + previous_emp_data = previous_leave_data[employee] and previous_leave_data[employee][0][1]['virtual_excess_data'] + emp_data = leave_data[employee] and leave_data[employee][0][1]['virtual_excess_data'] + if not previous_emp_data and not emp_data: + continue if previous_emp_data != emp_data and len(emp_data) >= len(previous_emp_data): raise ValidationError(_("There is no valid allocation to cover that request.")) @@ -990,7 +992,8 @@ Attempting to double-book your time off won't magically make your vacation 2x be if 'date_to' in values: values['request_date_to'] = values['date_to'] result = super(HolidaysRequest, self).write(values) - self._check_validity() + if any(field in values for field in ['request_date_from', 'date_from', 'request_date_from', 'date_to', 'holiday_status_id', 'employee_id']): + self._check_validity() if not self.env.context.get('leave_fast_create'): for holiday in self: if employee_id: