From f907ffdeb96113ace6377b3b214ca8f4b4e46f79 Mon Sep 17 00:00:00 2001 From: Toufik Ben Jaa Date: Wed, 24 Apr 2019 10:20:21 +0000 Subject: [PATCH] [FIX] hr_payroll: allow to request leaves - When having multiples contracts, at least one open and one closed, we may not be able to request a leave. This issue is triggered if the closed contract has no end date. The code checks if the leave you try create overlap over multiple contracts. But if a contract has no end date and is closed, the check may never succeed. So if a contract has no end date and is closed we don't take it in account. closes odoo/odoo#32909 Signed-off-by: Toufik Benjaa (tbe) --- addons/hr_payroll/models/hr_leave.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/hr_payroll/models/hr_leave.py b/addons/hr_payroll/models/hr_leave.py index e69aaa8b85f..e2f3daae4c8 100644 --- a/addons/hr_payroll/models/hr_leave.py +++ b/addons/hr_payroll/models/hr_leave.py @@ -53,7 +53,7 @@ class HrLeave(models.Model): for leave in self.filtered(lambda l: l.employee_id): - contract = leave.employee_id._get_contracts(leave.date_from, leave.date_to, states=['open', 'pending', 'close']) + contract = leave.employee_id._get_contracts(leave.date_from, leave.date_to, states=['open', 'pending']) if contract and contract.resource_calendar_id != leave.employee_id.resource_calendar_id: resource_leave_values += [{ 'name': leave.name, @@ -83,7 +83,9 @@ class HrLeave(models.Model): ('state', 'not in', ['draft', 'cancel']), '|', ('date_end', '>=', holiday.date_from), - ('date_end', '=', False), + '&', + ('date_end', '=', False), + ('state', '!=', 'close') ] nbr_contracts = self.env['hr.contract'].sudo().search_count(domain) if nbr_contracts > 1: