diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index d8f37d3315e..1b752502846 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -1046,7 +1046,7 @@ class ResourceResource(models.Model): calendar_mapping[resource.calendar_id] |= resource for calendar, resources in calendar_mapping.items(): - resources_unavailable_intervals = calendar._unavailable_intervals_batch(start_datetime, end_datetime, resources) + resources_unavailable_intervals = calendar._unavailable_intervals_batch(start_datetime, end_datetime, resources, tz=timezone(calendar.tz)) resource_mapping.update(resources_unavailable_intervals) return resource_mapping diff --git a/addons/test_resource/tests/test_resource.py b/addons/test_resource/tests/test_resource.py index 2adb5393014..32a9a6fdc1d 100644 --- a/addons/test_resource/tests/test_resource.py +++ b/addons/test_resource/tests/test_resource.py @@ -2,6 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from datetime import date, datetime +from freezegun import freeze_time from pytz import timezone, utc from odoo import fields @@ -1238,6 +1239,19 @@ class TestTimezones(TestResourceCommon): (date(2018, 4, 13), 8), ]) + @freeze_time("2022-09-21 15:30:00", tz_offset=-10) + def test_unavailable_intervals(self): + resource = self.env['resource.resource'].create({ + 'name': 'resource', + 'tz': self.tz3, + }) + intervals = resource._get_unavailable_intervals(datetime(2022, 9, 21), datetime(2022, 9, 22)) + self.assertEqual(list(intervals.values())[0], [ + (datetime(2022, 9, 21, 0, 0, tzinfo=utc), datetime(2022, 9, 21, 6, 0, tzinfo=utc)), + (datetime(2022, 9, 21, 10, 0, tzinfo=utc), datetime(2022, 9, 21, 11, 0, tzinfo=utc)), + (datetime(2022, 9, 21, 15, 0, tzinfo=utc), datetime(2022, 9, 22, 0, 0, tzinfo=utc)), + ]) + class TestResource(TestResourceCommon): def test_calendars_validity_within_period(self):