From e5e1f09ae7e72cf2fca3c868d7899ec26a3cab83 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Thu, 5 May 2022 11:38:19 +0000 Subject: [PATCH] [FIX] hr_work_entry_contract: Fix work entries generation Coming from https://github.com/odoo/odoo/commit/0bac1d33a25e37ebece69de030b9fd72caa43a02 closes odoo/odoo#90670 X-original-commit: f2eb4f0fb4294b4548312a909a841744ee4a9734 Signed-off-by: Yannick Tivisse (yti) --- .../hr_work_entry_contract/models/hr_contract.py | 2 +- .../tests/test_global_time_off.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/addons/hr_work_entry_contract/models/hr_contract.py b/addons/hr_work_entry_contract/models/hr_contract.py index 2e95cb7eea2..aff668a325a 100644 --- a/addons/hr_work_entry_contract/models/hr_contract.py +++ b/addons/hr_work_entry_contract/models/hr_contract.py @@ -105,7 +105,7 @@ class HrContract(models.Model): for leave in itertools.chain(leaves_by_resource[False], leaves_by_resource[resource.id]): for resource in resources_list: # Global time off is not for this calendar, can happen with multiple calendars in self - if resource and leave.calendar_id != calendar and not leave.resource_id: + if resource and leave.calendar_id and leave.calendar_id != calendar and not leave.resource_id: continue tz = tz if tz else pytz.timezone((resource or contract).tz) if (tz, start_dt) in tz_dates: diff --git a/addons/hr_work_entry_contract/tests/test_global_time_off.py b/addons/hr_work_entry_contract/tests/test_global_time_off.py index 0a38d2e3dcf..c4b7f925b14 100644 --- a/addons/hr_work_entry_contract/tests/test_global_time_off.py +++ b/addons/hr_work_entry_contract/tests/test_global_time_off.py @@ -36,3 +36,18 @@ class TestGlobalTimeOff(TestWorkEntryBase): leave.calendar_id = contract.resource_calendar_id work_entries = contract._generate_work_entries(start, end) self.assertEqual(work_entries.work_entry_type_id, leave.work_entry_type_id) + + def test_gto_no_calendar(self): + start = datetime(2018, 1, 1, 0, 0, 0) + end = datetime(2018, 1, 1, 23, 59, 59) + leave = self.env['resource.calendar.leaves'].create({ + 'date_from': start, + 'date_to': end, + 'work_entry_type_id': self.work_entry_type_leave.id, + }) + contract = self.richard_emp.contract_ids + contract.state = 'open' + contract.date_generated_from = start + contract.date_generated_to = start + work_entries = contract._generate_work_entries(start, end) + self.assertEqual(work_entries.work_entry_type_id, leave.work_entry_type_id)