diff --git a/addons/hr_payroll/models/resource.py b/addons/hr_payroll/models/resource.py
index 25985687c11..b989eb4ab4a 100644
--- a/addons/hr_payroll/models/resource.py
+++ b/addons/hr_payroll/models/resource.py
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, fields, api
-
+from odoo.addons.resource.models.resource_mixin import timezone_datetime
class ResourceCalendar(models.Model):
_inherit = 'resource.calendar'
@@ -61,8 +61,8 @@ class ResourceMixin(models.AbstractModel):
domain = [('benefit_type_id', 'in', benefit_type_ids)]
# naive datetimes are made explicit in UTC
- from_datetime = self._timezone_datetime(from_datetime)
- to_datetime = self._timezone_datetime(to_datetime)
+ from_datetime = timezone_datetime(from_datetime)
+ to_datetime = timezone_datetime(to_datetime)
day_total = self._get_day_total(from_datetime, to_datetime, calendar, resource)
# actual hours per day
diff --git a/addons/hr_payroll/views/hr_benefit_views.xml b/addons/hr_payroll/views/hr_benefit_views.xml
index 6aa46656a4c..12fc3b40729 100644
--- a/addons/hr_payroll/views/hr_benefit_views.xml
+++ b/addons/hr_payroll/views/hr_benefit_views.xml
@@ -45,8 +45,7 @@ if records:
-
-
+
@@ -67,7 +66,7 @@ if records:
diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py
index fd0e8260fc5..53bdf87ce09 100644
--- a/addons/resource/models/resource.py
+++ b/addons/resource/models/resource.py
@@ -11,6 +11,7 @@ from pytz import timezone, utc
from odoo import api, fields, models, _
from odoo.addons.base.models.res_partner import _tz_get
from odoo.exceptions import ValidationError
+from odoo.osv import expression
from odoo.tools.float_utils import float_round
# Default hour per day value. The one should
@@ -211,10 +212,10 @@ class ResourceCalendar(models.Model):
resource_ids = [resource.id, False] if resource else [False]
domain = domain if domain is not None else []
- domain = domain + [
+ domain = expression.AND([domain, [
('calendar_id', '=', self.id),
('resource_id', 'in', resource_ids),
- ]
+ ]])
# express all dates and times in the resource's timezone
tz = timezone((resource or self).tz)
diff --git a/addons/resource/models/resource_mixin.py b/addons/resource/models/resource_mixin.py
index 68541f891c0..f1dc84564da 100644
--- a/addons/resource/models/resource_mixin.py
+++ b/addons/resource/models/resource_mixin.py
@@ -12,6 +12,12 @@ from odoo.tools import float_utils
ROUNDING_FACTOR = 16
+def timezone_datetime(time):
+ if not time.tzinfo:
+ time = time.replace(tzinfo=utc)
+ return time
+
+
class ResourceMixin(models.AbstractModel):
_name = "resource.mixin"
_description = 'Resource Mixin'
@@ -75,7 +81,7 @@ class ResourceMixin(models.AbstractModel):
def _get_day_total(self, from_datetime, to_datetime, calendar, resource):
"""
- @return dict with hours of attendance in each day between `from_datetime` and `to_datetime`
+ :return: dict with hours of attendance in each day between `from_datetime` and `to_datetime`
"""
# total hours per day: retrieve attendances with one extra day margin,
@@ -88,12 +94,6 @@ class ResourceMixin(models.AbstractModel):
day_total[start.date()] += (stop - start).total_seconds() / 3600
return day_total
- def _timezone_datetime(self, time):
- if not time.tzinfo:
- time = time.replace(tzinfo=utc)
- return time
-
-
def _get_work_days_data(self, from_datetime, to_datetime, compute_leaves=True, calendar=None, domain=None):
"""
By default the resource calendar is used, but it can be
@@ -109,8 +109,8 @@ class ResourceMixin(models.AbstractModel):
calendar = calendar or self.resource_calendar_id
# naive datetimes are made explicit in UTC
- from_datetime = self._timezone_datetime(from_datetime)
- to_datetime = self._timezone_datetime(to_datetime)
+ from_datetime = timezone_datetime(from_datetime)
+ to_datetime = timezone_datetime(to_datetime)
day_total = self._get_day_total(from_datetime, to_datetime, calendar, resource)
@@ -137,8 +137,8 @@ class ResourceMixin(models.AbstractModel):
calendar = calendar or self.resource_calendar_id
# naive datetimes are made explicit in UTC
- from_datetime = self._timezone_datetime(from_datetime)
- to_datetime = self._timezone_datetime(to_datetime)
+ from_datetime = timezone_datetime(from_datetime)
+ to_datetime = timezone_datetime(to_datetime)
day_total = self._get_day_total(from_datetime, to_datetime, calendar, resource)