[IMP]pms-api-rest: filter folio by state and limit/offset

This commit is contained in:
braisab
2023-04-27 19:38:10 +02:00
committed by Darío Lodeiros
parent b21dee5100
commit a451b71812
3 changed files with 23 additions and 15 deletions

View File

@@ -1,3 +1,4 @@
from . import pms_rest_metadata
from . import pms_calendar
from . import pms_folio
@@ -8,7 +9,7 @@ from . import pms_room_type_class
from . import pms_reservation
from . import pms_reservation_line
from . import pms_rest_metadata
from . import pms_checkin_partner
from . import pms_partner

View File

@@ -6,6 +6,7 @@ from odoo.addons.datamodel.fields import NestedModel
class PmsFolioSearchParam(Datamodel):
_name = "pms.folio.search.param"
_inherit = "pms.rest.metadata"
pmsPropertyId = fields.Integer(required=True, allow_none=True)
dateFrom = fields.String(required=False, allow_none=True)
dateTo = fields.String(required=False, allow_none=True)

View File

@@ -91,7 +91,7 @@ class PmsFolioService(Component):
"GET",
)
],
input_param=Datamodel("pms.folio.search.param"),
input_param=Datamodel("pms.folio.search.param", is_list=False),
output_param=Datamodel("pms.folio.short.info", is_list=True),
auth="jwt_api_pms",
)
@@ -155,20 +155,23 @@ class PmsFolioService(Component):
[("reservation_type", "!=", "out")],
]
domain_filter.append(expression.AND(subdomains))
else:
subdomain_checkin = [
[("state", "in", ("confirm", "arrival_delayed"))],
[("checkin", "<=", fields.Date.today())],
]
subdomain_checkin = expression.AND(subdomain_checkin)
subdomain_checkout = [
elif folio_search_param.filterByState == 'onBoard':
subdomains = [
[("state", "in", ("onboard", "departure_delayed"))],
[("checkout", "=", fields.Date.today())],
[("reservation_type", "!=", "out")],
]
subdomain_checkout = expression.AND(subdomain_checkout)
domain_filter.append(
expression.OR([subdomain_checkin, subdomain_checkout])
)
domain_filter.append(expression.AND(subdomains))
elif folio_search_param.filterByState == 'toAssign':
subdomains = [
[("to_assign", "=", True)],
[("reservation_type", "!=", "out")],
]
domain_filter.append(expression.AND(subdomains))
elif folio_search_param.filterByState == 'cancelled':
subdomains = [
[("state", "=", "cancel")],
]
domain_filter.append(expression.AND(subdomains))
if domain_filter:
domain = expression.AND([domain_fields, domain_filter[0]])
if folio_search_param.filter and folio_search_param.filterByState:
@@ -185,7 +188,10 @@ class PmsFolioService(Component):
PmsFolioShortInfo = self.env.datamodels["pms.folio.short.info"]
for folio in self.env["pms.folio"].search(
[("id", "in", reservations_result)], order="write_date desc"
[("id", "in", reservations_result)],
order="write_date desc",
limit=folio_search_param.limit,
offset=folio_search_param.offset,
):
reservations = []
for reservation in folio.reservation_ids: