diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index 333cd1b703d..465ed1615a5 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import base64 -from pytz import UTC +from pytz import timezone, UTC from datetime import datetime, time from random import choice from string import digits @@ -516,7 +516,8 @@ class HrEmployeePrivate(models.Model): def _get_calendar_attendances(self, date_from, date_to): self.ensure_one() - return self.resource_calendar_id.get_work_duration_data(date_from, date_to) + employee_timezone = timezone(self.tz) if self.tz else None + return self.resource_calendar_id.with_context(employee_timezone=employee_timezone).get_work_duration_data(date_from, date_to) # --------------------------------------------------------- # Business Methods diff --git a/addons/hr_contract/models/hr_employee.py b/addons/hr_contract/models/hr_employee.py index 1c4d12c2234..7f92bdb8001 100644 --- a/addons/hr_contract/models/hr_employee.py +++ b/addons/hr_contract/models/hr_employee.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from pytz import UTC +from pytz import timezone, UTC from datetime import date, datetime, time from odoo import api, fields, models @@ -145,7 +145,8 @@ class Employee(models.Model): valid_contracts = self.sudo()._get_contracts(date_from, date_to, states=['open', 'close']) if not valid_contracts: return super()._get_calendar_attendances(date_from, date_to) - return valid_contracts.resource_calendar_id.get_work_duration_data(date_from, date_to) + employee_timezone = timezone(self.tz) if self.tz else None + return valid_contracts.resource_calendar_id.with_context(employee_timezone=employee_timezone).get_work_duration_data(date_from, date_to) def write(self, vals): res = super().write(vals) diff --git a/addons/resource/models/resource_calendar.py b/addons/resource/models/resource_calendar.py index d7c154b4cd1..dc5f2bb0ec4 100644 --- a/addons/resource/models/resource_calendar.py +++ b/addons/resource/models/resource_calendar.py @@ -428,7 +428,7 @@ class ResourceCalendar(models.Model): else: resources_list = list(resources) + [self.env['resource.resource']] - attendance_intervals = self._attendance_intervals_batch(start_dt, end_dt, resources, tz=tz) + attendance_intervals = self._attendance_intervals_batch(start_dt, end_dt, resources, tz=tz or self.env.context.get("employee_timezone")) if compute_leaves: leave_intervals = self._leave_intervals_batch(start_dt, end_dt, resources, domain, tz=tz) return {