From ddef14826092cda8465857a0875d65ff1c15e28e Mon Sep 17 00:00:00 2001 From: William Braeckman Date: Fri, 21 May 2021 09:51:40 +0000 Subject: [PATCH] [FIX] hr_holidays: half day outside of working hours Fixes taking a hald day outside of working hours counting as half a day instead of nothing. See odoo/odoo#68977 closes odoo/odoo#74147 X-original-commit: 35a7308188d069465ad624d4199ec26b6d25d651 Signed-off-by: Yannick Tivisse (yti) Signed-off-by: William Braeckman (wbr) --- addons/hr_holidays/models/hr_leave.py | 2 +- .../tests/test_automatic_leave_dates.py | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 16eb106d95e..a52417077d7 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -610,7 +610,7 @@ class HolidaysRequest(models.Model): if employee_id: employee = self.env['hr.employee'].browse(employee_id) result = employee._get_work_days_data_batch(date_from, date_to)[employee.id] - if self.request_unit_half: + if self.request_unit_half and result['hours'] > 0: result['days'] = 0.5 return result diff --git a/addons/hr_holidays/tests/test_automatic_leave_dates.py b/addons/hr_holidays/tests/test_automatic_leave_dates.py index 70b9709e5bc..d3774e0974f 100644 --- a/addons/hr_holidays/tests/test_automatic_leave_dates.py +++ b/addons/hr_holidays/tests/test_automatic_leave_dates.py @@ -33,8 +33,8 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): leave_form.request_unit_half = True leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0.5) - self.assertEqual(leave_form.number_of_hours_text, '4 Hours') + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0 Hours') def test_single_attendance_on_morning_and_afternoon(self): calendar = self.env['resource.calendar'].create({ @@ -167,14 +167,15 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: leave_form.holiday_status_id = self.leave_type + # does not work on mondays leave_form.request_date_from = date(2019, 9, 2) leave_form.request_date_to = date(2019, 9, 2) leave_form.request_unit_half = True leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0.5) - self.assertEqual(leave_form.number_of_hours_text, '4 Hours') + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0 Hours') self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0)) @@ -196,14 +197,15 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): with Form(self.env['hr.leave'].with_context(default_employee_id=employee.id)) as leave_form: leave_form.holiday_status_id = self.leave_type + # does not work on tuesdays leave_form.request_date_from = date(2019, 9, 3) leave_form.request_date_to = date(2019, 9, 3) leave_form.request_unit_half = True leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0.5) - self.assertEqual(leave_form.number_of_hours_text, '4 Hours') + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0 Hours') self.assertEqual(leave_form.date_from, datetime(2019, 9, 3, 6, 0, 0)) self.assertEqual(leave_form.date_to, datetime(2019, 9, 3, 10, 0, 0)) @@ -285,7 +287,7 @@ class TestAutomaticLeaveDates(TestHrHolidaysCommon): leave_form.request_unit_half = True leave_form.request_date_from_period = 'am' - self.assertEqual(leave_form.number_of_days_display, 0.5) - self.assertEqual(leave_form.number_of_hours_text, '4 Hours') + self.assertEqual(leave_form.number_of_days_display, 0) + self.assertEqual(leave_form.number_of_hours_text, '0 Hours') self.assertEqual(leave_form.date_from, datetime(2019, 9, 2, 6, 0, 0)) self.assertEqual(leave_form.date_to, datetime(2019, 9, 2, 10, 0, 0))