[IMP] pms-api-rest: adapt services & datamodels (folio, reservation, reservation_line) to swapping mode requirements

This commit is contained in:
miguelpadin
2024-01-24 18:33:45 +00:00
committed by Darío Lodeiros
parent b602f1fe41
commit f55b8d5d6e
6 changed files with 63 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ class PmsFolioSearchParam(Datamodel):
filter = fields.String(required=False, allow_none=True)
filterByState = fields.String(required=False, allow_none=True)
last = fields.Boolean(required=False, allow_none=True)
ids = fields.List(fields.Integer(), required=False)
class PmsFolioInfo(Datamodel):

View File

@@ -6,6 +6,8 @@ from odoo.addons.datamodel.core import Datamodel
class PmsReservationLineSearchParam(Datamodel):
_name = "pms.reservation.line.search.param"
date = fields.String(required=False, allow_none=False)
dateFrom = fields.String(required=False, allow_none=False)
dateTo = fields.String(required=False, allow_none=False)
reservationId = fields.Integer(required=False, allow_none=False)
pmsPropertyId = fields.Integer(required=False, allow_none=False)
roomId = fields.Integer(required=False, allow_none=False)
@@ -23,3 +25,6 @@ class PmsReservationLineInfo(Datamodel):
reservationId = fields.Integer(required=False, allow_none=False)
pmsPropertyId = fields.Integer(required=False, allow_none=False)
isReselling = fields.Boolean(required=False, allow_none=True)
reservationType = fields.String(required=False, allow_none=True)
state = fields.String(required=False, allow_none=True)
isSplitted = fields.Boolean(required=False, allow_none=True)

View File

@@ -9,3 +9,4 @@ class PmsSearchParam(Datamodel):
pmsPropertyId = fields.Integer(required=False, allow_none=True)
pmsPropertyIds = fields.List(fields.Integer(), required=False)
toAssign = fields.Boolean(required=False, allow_none=True)
ids = fields.List(fields.Integer(), required=False)

View File

@@ -137,6 +137,9 @@ class PmsFolioService(Component):
if folio_search_param.last:
domain_filter.append([("checkin", ">=", fields.Date.today())])
if folio_search_param.ids:
domain_filter.append([("folio_id", "in", folio_search_param.ids)])
if folio_search_param.filter:
target = folio_search_param.filter
if "@" in target:

View File

@@ -48,6 +48,57 @@ class PmsReservationLineService(Component):
else:
raise MissingError(_("Reservation Line not found"))
@restapi.method(
[
(
[
"/",
],
"GET",
)
],
input_param=Datamodel("pms.reservation.line.search.param", is_list=False),
output_param=Datamodel("pms.reservation.line.info", is_list=True),
auth="jwt_api_pms",
)
def get_reservation_lines(self, pms_reservation_lines_search_param):
result = []
if (
pms_reservation_lines_search_param.dateFrom
and pms_reservation_lines_search_param.dateTo
and pms_reservation_lines_search_param.pmsPropertyId
):
date_from = datetime.strptime(pms_reservation_lines_search_param.dateFrom, "%Y-%m-%d").date()
date_to = datetime.strptime(pms_reservation_lines_search_param.dateTo, "%Y-%m-%d").date()
domain = [
("date", ">=", date_from),
("date", "<", date_to),
("pms_property_id", "=", pms_reservation_lines_search_param.pmsPropertyId)
]
PmsReservationLineInfo = self.env.datamodels["pms.reservation.line.info"]
for reservation_line in self.env["pms.reservation.line"].search(domain):
print(reservation_line.state)
result.append(
PmsReservationLineInfo(
id=reservation_line.id,
date=datetime.combine(
reservation_line.date, datetime.min.time()
).isoformat(),
price=round(reservation_line.price, 2),
discount=round(reservation_line.discount, 2),
cancelDiscount=round(reservation_line.cancel_discount, 2),
roomId=reservation_line.room_id.id,
reservationId=reservation_line.reservation_id.id,
pmsPropertyId=reservation_line.pms_property_id.id,
isReselling=reservation_line.is_reselling,
reservationType=reservation_line.reservation_id.reservation_type,
state=reservation_line.state,
isSplitted=reservation_line.reservation_id.splitted,
)
)
return result
# @restapi.method(
# [
# (

View File

@@ -673,6 +673,8 @@ class PmsReservationService(Component):
if pms_search_param.toAssign:
domain.append(("to_assign", "=", True))
domain.append(("checkin", ">=", fields.Date.today()))
if pms_search_param.ids:
domain.append(("id", "in", pms_search_param.ids))
reservations = self.env["pms.reservation"].search(domain)
PmsReservationInfo = self.env.datamodels["pms.reservation.info"]
if not reservations: