mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]pms-api-rest: filter folio by state and limit/offset
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user