From 06373dde4eb46b4d392ec33cb070d53a94d4dbcd Mon Sep 17 00:00:00 2001 From: RomainLibert Date: Fri, 23 Nov 2018 09:48:08 +0000 Subject: [PATCH] [FIX] resource,hr_payroll: disable timezone conversion In the case of calculating payroll, we don't want to convert the datetimes using the timezone of the user as we really want to see what the employee has done from one date to another (usually from the start of the month to end of the month) Closes #26256 closes odoo/odoo#28977 --- addons/hr_payroll/models/hr_payslip.py | 2 +- addons/resource/models/resource.py | 5 +++-- addons/resource/models/resource_mixin.py | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/hr_payroll/models/hr_payslip.py b/addons/hr_payroll/models/hr_payslip.py index c9d14c47495..93ee4d42393 100644 --- a/addons/hr_payroll/models/hr_payslip.py +++ b/addons/hr_payroll/models/hr_payslip.py @@ -194,7 +194,7 @@ class HrPayslip(models.Model): current_leave_struct['number_of_days'] += leave_time / work_hours # compute worked days - work_data = contract.employee_id.get_work_days_data(day_from, day_to, calendar=contract.resource_calendar_id) + work_data = contract.employee_id.with_context(no_tz_convert=True).get_work_days_data(day_from, day_to, calendar=contract.resource_calendar_id) attendances = { 'name': _("Normal Working Days paid at 100%"), 'sequence': 1, diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index ebb2ab7ba6f..4ba68077ace 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -417,8 +417,9 @@ class ResourceCalendar(models.Model): if not end_dt: end_dt = datetime.datetime.combine(start_dt.date(), datetime.time.max) - start_dt = to_naive_user_tz(start_dt, self.env.user) - end_dt = to_naive_user_tz(end_dt, self.env.user) + if not self.env.context.get('no_tz_convert', False): + start_dt = to_naive_user_tz(start_dt, self.env.user) + end_dt = to_naive_user_tz(end_dt, self.env.user) for day in rrule.rrule(rrule.DAILY, dtstart=start_dt, diff --git a/addons/resource/models/resource_mixin.py b/addons/resource/models/resource_mixin.py index fcee4086ca3..477fc3033e3 100644 --- a/addons/resource/models/resource_mixin.py +++ b/addons/resource/models/resource_mixin.py @@ -51,6 +51,7 @@ class ResourceMixin(models.AbstractModel): days_count = 0.0 total_work_time = timedelta() calendar = calendar or self.resource_calendar_id + calendar = calendar.with_context(no_tz_convert=self.env.context.get('no_tz_convert', False)) for day_intervals in calendar._iter_work_intervals( from_datetime, to_datetime, self.resource_id.id, compute_leaves=True):