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_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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user