diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py
index 0aeb179cf0b..787b224b711 100644
--- a/addons/resource/models/resource.py
+++ b/addons/resource/models/resource.py
@@ -210,6 +210,7 @@ class ResourceCalendar(models.Model):
_tz_get, string='Timezone', required=True,
default=lambda self: self._context.get('tz') or self.env.user.tz or 'UTC',
help="This field is used in order to define in which timezone the resources will work.")
+ tz_offset = fields.Char(compute='_compute_tz_offset', string='Timezone offset', invisible=True)
two_weeks_calendar = fields.Boolean(string="Calendar in 2 weeks mode")
two_weeks_explanation = fields.Char('Explanation', compute="_compute_two_weeks_explanation")
@@ -233,6 +234,11 @@ class ResourceCalendar(models.Model):
(0, 0, leave._copy_leave_vals()) for leave in calendar.company_id.resource_calendar_id.global_leave_ids]
})
+ @api.depends('tz')
+ def _compute_tz_offset(self):
+ for calendar in self:
+ calendar.tz_offset = datetime.now(timezone(calendar.tz or 'GMT')).strftime('%z')
+
@api.returns('self', lambda value: value.id)
def copy(self, default=None):
self.ensure_one()
diff --git a/addons/resource/views/resource_views.xml b/addons/resource/views/resource_views.xml
index 37ee603f0b2..e1663012686 100644
--- a/addons/resource/views/resource_views.xml
+++ b/addons/resource/views/resource_views.xml
@@ -277,7 +277,8 @@
-
+
+
diff --git a/addons/web/static/src/legacy/js/fields/special_fields.js b/addons/web/static/src/legacy/js/fields/special_fields.js
index 52ef6d513f7..1e4948c232b 100644
--- a/addons/web/static/src/legacy/js/fields/special_fields.js
+++ b/addons/web/static/src/legacy/js/fields/special_fields.js
@@ -93,7 +93,12 @@ var FieldTimezoneMismatch = FieldSelection.extend({
if (this.mismatch){
$span.insertAfter(this.$el);
- $span.attr('title', _t("Timezone Mismatch : This timezone is different from that of your browser.\nPlease, set the same timezone as your browser's to avoid time discrepancies in your system."));
+ if (this.nodeOptions.mismatch_title) {
+ $span.attr('title', this.nodeOptions.mismatch_title);
+ }
+ else {
+ $span.attr('title', _t("Timezone Mismatch : This timezone is different from that of your browser.\nPlease, set the same timezone as your browser's to avoid time discrepancies in your system."));
+ }
this.$el = this.$el.add($span);
this.$option = this.$('option').filter(function () {