summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomainLibert <rli@odoo.com>2018-11-23 09:48:08 +0000
committerRomainLibert <rli@odoo.com>2018-11-23 09:48:08 +0000
commit06373dde4eb46b4d392ec33cb070d53a94d4dbcd (patch)
treea7fa8cfaf132a55a29b7323cb26fa8dd4906ed92
parentdb1ce8b591eb7785dfb55ed931e9d72f88ddec67 (diff)
[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
-rw-r--r--addons/hr_payroll/models/hr_payslip.py2
-rw-r--r--addons/resource/models/resource.py5
-rw-r--r--addons/resource/models/resource_mixin.py1
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):