[ADD] checkin/out dateime compute with property timezone

This commit is contained in:
Darío Lodeiros
2020-11-26 15:43:56 +01:00
parent 73fb817b67
commit 473510a60b
3 changed files with 33 additions and 5 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -543,12 +543,12 @@
<field name="model">pms.reservation</field>
<field name="arch" type="xml">
<calendar
date_start="checkin"
date_stop="checkout"
date_start="checkin_datetime"
date_stop="checkout_datetime"
string="Reservations"
quick_add="False"
mode="month"
scales="month,year"
scales="week,month,year"
>
<field name="partner_id" avatar_field="image_128" />
<field name="room_type_id" />