mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD] checkin/out dateime compute with property timezone
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user