diff --git a/pms/models/pms_property.py b/pms/models/pms_property.py
index ebbfa19bf..76295607d 100644
--- a/pms/models/pms_property.py
+++ b/pms/models/pms_property.py
@@ -4,9 +4,13 @@
import time
+import pytz
+
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
+from odoo.addons.base.models.res_partner import _tz_get
+
class PmsProperty(models.Model):
_name = "pms.property"
@@ -54,6 +58,14 @@ class PmsProperty(models.Model):
folio_sequence_id = fields.Many2one(
"ir.sequence", "Folio Sequence", check_company=True, copy=False
)
+ tz = fields.Selection(
+ _tz_get,
+ string="Timezone",
+ required=True,
+ default=lambda self: self.env.user.tz or "UTC",
+ help="This field is used in order to define \
+ in which timezone the arrival/departure will work.",
+ )
# Constraints and onchanges
@api.constrains("default_arrival_hour")
@@ -83,3 +95,13 @@ class PmsProperty(models.Model):
record.default_departure_hour,
)
)
+
+ def date_property_timezone(self, date):
+ self.ensure_one()
+ tz_property = self.tz
+ date = pytz.timezone(tz_property).localize(date)
+ date = date.replace(tzinfo=None)
+ date = pytz.timezone(self.env.user.tz).localize(date)
+ date = date.astimezone(pytz.utc)
+ date = date.replace(tzinfo=None)
+ return date
diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py
index 604a837e8..c01237849 100644
--- a/pms/models/pms_reservation.py
+++ b/pms/models/pms_reservation.py
@@ -472,9 +472,12 @@ class PmsReservation(models.Model):
checkin_hour = int(reservation.arrival_hour[0:2])
checkin_minut = int(reservation.arrival_hour[3:5])
checkin_time = datetime.time(checkin_hour, checkin_minut)
- reservation.checkin_datetime = datetime.datetime.combine(
+ checkin_datetime = datetime.datetime.combine(
reservation.checkin, checkin_time
)
+ reservation.checkin_datetime = (
+ reservation.pms_property_id.date_property_timezone(checkin_datetime)
+ )
@api.depends("checkout", "departure_hour")
def _compute_checkout_datetime(self):
@@ -482,9 +485,12 @@ class PmsReservation(models.Model):
checkout_hour = int(reservation.departure_hour[0:2])
checkout_minut = int(reservation.departure_hour[3:5])
checkout_time = datetime.time(checkout_hour, checkout_minut)
- reservation.checkout_datetime = datetime.datetime.combine(
+ checkout_datetime = datetime.datetime.combine(
reservation.checkout, checkout_time
)
+ reservation.checkout_datetime = (
+ reservation.pms_property_id.date_property_timezone(checkout_datetime)
+ )
@api.depends(
"reservation_line_ids.date", "overbooking", "state", "preferred_room_id"
diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml
index 3ce4b6eeb..3a13a911d 100644
--- a/pms/views/pms_reservation_views.xml
+++ b/pms/views/pms_reservation_views.xml
@@ -543,12 +543,12 @@
pms.reservation