mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP] pms_api_rest: get_pending_checkin_reservations & get_pending_checkout_reservations in pms_dashboard_service
This commit is contained in:
committed by
Darío Lodeiros
parent
7511af32fc
commit
2923659a26
@@ -5,15 +5,13 @@ from odoo.addons.datamodel.core import Datamodel
|
||||
|
||||
class PmsDashboardPendingReservationsSearchParam(Datamodel):
|
||||
_name = "pms.dashboard.pending.reservations.search.param"
|
||||
dateTo = fields.String(required=False, allow_none=True)
|
||||
dateFrom = fields.String(required=False, allow_none=True)
|
||||
date = fields.String(required=False, allow_none=True)
|
||||
pmsPropertyId = fields.Integer(required=False, allow_none=True)
|
||||
|
||||
|
||||
class PmsDashboardPendingReservations(Datamodel):
|
||||
_name = "pms.dashboard.pending.reservations"
|
||||
id = fields.Integer(required=True, allow_none=False)
|
||||
state = fields.String(required=False, allow_none=True)
|
||||
reservationType = fields.String(required=False, allow_none=True)
|
||||
checkin = fields.String(required=False, allow_none=True)
|
||||
pendingReservations = fields.Integer(required=False, allow_none=True)
|
||||
completedReservations = fields.Integer(required=False, allow_none=True)
|
||||
|
||||
|
||||
|
||||
@@ -16,37 +16,74 @@ class PmsDashboardServices(Component):
|
||||
[
|
||||
(
|
||||
[
|
||||
"/reservations",
|
||||
"/pending-checkins",
|
||||
],
|
||||
"GET",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.dashboard.pending.reservations.search.param"),
|
||||
output_param=Datamodel("pms.dashboard.pending.reservations", is_list=True),
|
||||
output_param=Datamodel("pms.dashboard.pending.reservations"),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def get_reservations(self, pms_reservations_search_param):
|
||||
date_from = fields.Date.from_string(pms_reservations_search_param.dateFrom)
|
||||
date_to = fields.Date.from_string(pms_reservations_search_param.dateTo)
|
||||
def get_pending_checkin_reservations(self, pms_reservations_search_param):
|
||||
date = fields.Date.from_string(pms_reservations_search_param.date)
|
||||
|
||||
domain = [
|
||||
("checkin", ">=", date_from),
|
||||
("checkin", "<=", date_to),
|
||||
("state", "!=", "cancel"),
|
||||
("reservation_type", "!=", "out")
|
||||
]
|
||||
reservations = self.env["pms.reservation"].search(domain)
|
||||
|
||||
pendingReservations = self.env["pms.reservation"].search_count(
|
||||
[
|
||||
("checkin", "=", date),
|
||||
("state", "in", ("confirm", "arrival_delayed")),
|
||||
("reservation_type", "!=", "out")
|
||||
]
|
||||
)
|
||||
completedReservations = self.env["pms.reservation"].search_count(
|
||||
[
|
||||
("checkin", "=", date),
|
||||
("state", "=", "onboard"),
|
||||
]
|
||||
)
|
||||
PmsDashboardPendingReservations = self.env.datamodels["pms.dashboard.pending.reservations"]
|
||||
result = []
|
||||
for reservation in reservations:
|
||||
result.append(
|
||||
PmsDashboardPendingReservations(
|
||||
id=reservation.id,
|
||||
state=reservation.state,
|
||||
checkin=datetime.combine(
|
||||
reservation.checkin, datetime.min.time()
|
||||
).isoformat(),
|
||||
reservationType=reservation.reservation_type,
|
||||
)
|
||||
|
||||
return PmsDashboardPendingReservations(
|
||||
pendingReservations=pendingReservations,
|
||||
completedReservations=completedReservations,
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/pending-checkouts",
|
||||
],
|
||||
"GET",
|
||||
)
|
||||
return result
|
||||
],
|
||||
input_param=Datamodel("pms.dashboard.pending.reservations.search.param"),
|
||||
output_param=Datamodel("pms.dashboard.pending.reservations"),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def get_pending_checkout_reservations(self, pms_reservations_search_param):
|
||||
date = fields.Date.from_string(pms_reservations_search_param.date)
|
||||
|
||||
|
||||
pending_reservations = self.env["pms.reservation"].search_count(
|
||||
[
|
||||
("checkout", "=", date),
|
||||
("state", "in", ("onboard", "departure_delayed")),
|
||||
("reservation_type", "!=", "out"),
|
||||
]
|
||||
)
|
||||
completed_reservations = self.env["pms.reservation"].search_count(
|
||||
[
|
||||
("checkout", "=", date),
|
||||
("state", "=", "done"),
|
||||
]
|
||||
)
|
||||
PmsDashboardPendingReservations = self.env.datamodels["pms.dashboard.pending.reservations"]
|
||||
|
||||
return PmsDashboardPendingReservations(
|
||||
pendingReservations=pending_reservations,
|
||||
completedReservations=completed_reservations,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user