[IMP] pms_api_rest: get_pending_checkin_reservations & get_pending_checkout_reservations in pms_dashboard_service

This commit is contained in:
Sara Lago
2023-09-05 12:46:29 +02:00
committed by Darío Lodeiros
parent 7511af32fc
commit 2923659a26
2 changed files with 65 additions and 30 deletions

View File

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

View File

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