[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_calendar
from . import pms_folio from . import pms_folio
@@ -8,7 +9,7 @@ from . import pms_room_type_class
from . import pms_reservation from . import pms_reservation
from . import pms_reservation_line from . import pms_reservation_line
from . import pms_rest_metadata
from . import pms_checkin_partner from . import pms_checkin_partner
from . import pms_partner from . import pms_partner

View File

@@ -6,6 +6,7 @@ from odoo.addons.datamodel.fields import NestedModel
class PmsFolioSearchParam(Datamodel): class PmsFolioSearchParam(Datamodel):
_name = "pms.folio.search.param" _name = "pms.folio.search.param"
_inherit = "pms.rest.metadata"
pmsPropertyId = fields.Integer(required=True, allow_none=True) pmsPropertyId = fields.Integer(required=True, allow_none=True)
dateFrom = fields.String(required=False, allow_none=True) dateFrom = fields.String(required=False, allow_none=True)
dateTo = 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", "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), output_param=Datamodel("pms.folio.short.info", is_list=True),
auth="jwt_api_pms", auth="jwt_api_pms",
) )
@@ -155,20 +155,23 @@ class PmsFolioService(Component):
[("reservation_type", "!=", "out")], [("reservation_type", "!=", "out")],
] ]
domain_filter.append(expression.AND(subdomains)) domain_filter.append(expression.AND(subdomains))
else: elif folio_search_param.filterByState == 'onBoard':
subdomain_checkin = [ subdomains = [
[("state", "in", ("confirm", "arrival_delayed"))],
[("checkin", "<=", fields.Date.today())],
]
subdomain_checkin = expression.AND(subdomain_checkin)
subdomain_checkout = [
[("state", "in", ("onboard", "departure_delayed"))], [("state", "in", ("onboard", "departure_delayed"))],
[("checkout", "=", fields.Date.today())], [("reservation_type", "!=", "out")],
] ]
subdomain_checkout = expression.AND(subdomain_checkout) domain_filter.append(expression.AND(subdomains))
domain_filter.append( elif folio_search_param.filterByState == 'toAssign':
expression.OR([subdomain_checkin, subdomain_checkout]) 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: if domain_filter:
domain = expression.AND([domain_fields, domain_filter[0]]) domain = expression.AND([domain_fields, domain_filter[0]])
if folio_search_param.filter and folio_search_param.filterByState: 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"] PmsFolioShortInfo = self.env.datamodels["pms.folio.short.info"]
for folio in self.env["pms.folio"].search( 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 = [] reservations = []
for reservation in folio.reservation_ids: for reservation in folio.reservation_ids: