From 45f69330a74c55450902d5690241bde505e54b60 Mon Sep 17 00:00:00 2001 From: Sara Lago Date: Mon, 31 Jan 2022 17:46:12 +0100 Subject: [PATCH] [IMP] pms_api_rest: add one property in query params --- pms_api_rest/datamodels/__init__.py | 2 ++ pms_api_rest/datamodels/pms_calendar.py | 2 ++ pms_api_rest/datamodels/pms_folio.py | 1 + pms_api_rest/datamodels/pms_reservation.py | 2 +- pms_api_rest/datamodels/pms_room.py | 2 +- pms_api_rest/datamodels/pms_search_param.py | 9 +++++++++ pms_api_rest/services/pms_calendar_service.py | 11 +++++----- pms_api_rest/services/pms_folio_service.py | 11 +++++++--- pms_api_rest/services/pms_property_service.py | 7 +------ .../services/pms_reservation_service.py | 20 +++++++++++++------ 10 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 pms_api_rest/datamodels/pms_search_param.py diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index 01b14bdff..9befd935e 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -18,3 +18,5 @@ from . import pms_user from . import pms_pricelist from . import pms_pricelist_item + +from . import pms_search_param diff --git a/pms_api_rest/datamodels/pms_calendar.py b/pms_api_rest/datamodels/pms_calendar.py index cffc2569a..878a11ca6 100644 --- a/pms_api_rest/datamodels/pms_calendar.py +++ b/pms_api_rest/datamodels/pms_calendar.py @@ -14,12 +14,14 @@ class PmsCalendarSwapInfo(Datamodel): swapTo = fields.String(required=True, allow_none=False) roomIdA = fields.Integer(required=True, allow_none=False) roomIdB = fields.Integer(required=True, allow_none=False) + pms_property_id = fields.Integer(required=True, allow_none=False) class PmsCalendarSearchParam(Datamodel): _name = "pms.calendar.search.param" date_from = fields.String(required=False, allow_none=True) date_to = fields.String(required=False, allow_none=True) + pms_property_id = fields.Integer(required=True, allow_none=False) class PmsCalendarInfo(Datamodel): diff --git a/pms_api_rest/datamodels/pms_folio.py b/pms_api_rest/datamodels/pms_folio.py index da9febb5b..ffdad75a3 100644 --- a/pms_api_rest/datamodels/pms_folio.py +++ b/pms_api_rest/datamodels/pms_folio.py @@ -6,6 +6,7 @@ from odoo.addons.datamodel.core import Datamodel class PmsFolioSearchParam(Datamodel): _name = "pms.folio.search.param" + pms_property_id = fields.Integer(required=True, allow_none=True) date_from = fields.String(required=False, allow_none=True) date_to = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_reservation.py b/pms_api_rest/datamodels/pms_reservation.py index 08f7bfffb..f002fdf16 100644 --- a/pms_api_rest/datamodels/pms_reservation.py +++ b/pms_api_rest/datamodels/pms_reservation.py @@ -21,7 +21,7 @@ class PmsReservationInfo(Datamodel): pricelistId = fields.Integer(required=False, allow_none=True) services = fields.List(fields.Dict(required=False, allow_none=True)) messages = fields.List(fields.Dict(required=False, allow_none=True)) - property = fields.Integer(required=False, allow_none=True) + pms_property_id = fields.Integer(required=False, allow_none=True) boardServiceId = fields.Integer(required=False, allow_none=True) boardServiceName = fields.String(required=False, allow_none=True) channelTypeId = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_room.py b/pms_api_rest/datamodels/pms_room.py index 61825ea49..ae9ed3ace 100644 --- a/pms_api_rest/datamodels/pms_room.py +++ b/pms_api_rest/datamodels/pms_room.py @@ -7,7 +7,7 @@ class PmsRoomSearchParam(Datamodel): _name = "pms.room.search.param" id = fields.Integer(required=False, allow_none=True) name = fields.String(required=False, allow_none=True) - pms_property_id = fields.Integer(required=False, allow_none=True) + pms_property_id = fields.Integer(required=True, allow_none=False) class PmsRoomInfo(Datamodel): diff --git a/pms_api_rest/datamodels/pms_search_param.py b/pms_api_rest/datamodels/pms_search_param.py new file mode 100644 index 000000000..03bdd07b5 --- /dev/null +++ b/pms_api_rest/datamodels/pms_search_param.py @@ -0,0 +1,9 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsSearchParam(Datamodel): + _name = "pms.search.param" + + pms_property_id = fields.Integer(required=True, allow_none=False) diff --git a/pms_api_rest/services/pms_calendar_service.py b/pms_api_rest/services/pms_calendar_service.py index 18da08f35..4acaa84ff 100644 --- a/pms_api_rest/services/pms_calendar_service.py +++ b/pms_api_rest/services/pms_calendar_service.py @@ -26,12 +26,9 @@ class PmsCalendarService(Component): ) def get_calendar(self, calendar_search_param): domain = list() - domain.append( - ("date", ">", datetime.fromisoformat(calendar_search_param.date_from)) - ) - domain.append( - ("date", "<=", datetime.fromisoformat(calendar_search_param.date_to)) - ) + domain.append(("date", ">=", calendar_search_param.date_from)) + domain.append(("date", "<=", calendar_search_param.date_to)) + domain.append(("pms_property_id", "=", calendar_search_param.pms_property_id)) result_lines = [] PmsCalendarInfo = self.env.datamodels["pms.calendar.info"] for line in self.env["pms.reservation.line"].search( @@ -83,6 +80,7 @@ class PmsCalendarService(Component): ("room_id", "=", room_id_a), ("date", ">=", swap_info.swapFrom), ("date", "<=", swap_info.swapTo), + ("pms_property_id", "=", swap_info.pms_property_id), ] ) @@ -91,6 +89,7 @@ class PmsCalendarService(Component): ("room_id", "=", room_id_b), ("date", ">=", swap_info.swapFrom), ("date", "<=", swap_info.swapTo), + ("pms_property_id", "=", swap_info.pms_property_id), ] ) lines_room_a.occupies_availability = False diff --git a/pms_api_rest/services/pms_folio_service.py b/pms_api_rest/services/pms_folio_service.py index 8d016b709..4b95842df 100644 --- a/pms_api_rest/services/pms_folio_service.py +++ b/pms_api_rest/services/pms_folio_service.py @@ -28,6 +28,7 @@ class PmsFolioService(Component): domain = list() domain.append(("checkin", ">=", folio_search_param.date_from)) domain.append(("checkout", "<", folio_search_param.date_to)) + domain.append(("pms_property_id", "=", folio_search_param.pms_property_id)) result_folios = [] reservations_result = ( @@ -119,11 +120,15 @@ class PmsFolioService(Component): "GET", ) ], + input_param=Datamodel("pms.search.param"), output_param=Datamodel("pms.payment.info", is_list=True), auth="jwt_api_pms", ) - def get_folio_payments(self, folio_id): - folio = self.env["pms.folio"].search([("id", "=", folio_id)]) + def get_folio_payments(self, folio_id, pms_search_param): + domain = list() + domain.append(("id", "=", folio_id)) + domain.append(("pms_property_id", "=", pms_search_param.pms_property_id)) + folio = self.env["pms.folio"].search(domain) payments = [] PmsPaymentInfo = self.env.datamodels["pms.payment.info"] if not folio: @@ -174,7 +179,7 @@ class PmsFolioService(Component): reservation = self.env["pms.reservation"].create( { "partner_name": pms_reservation_info.partner, - "pms_property_id": pms_reservation_info.property, + "pms_property_id": pms_reservation_info.pms_property_id, "room_type_id": pms_reservation_info.roomTypeId, "pricelist_id": pms_reservation_info.pricelistId, "checkin": pms_reservation_info.checkin, diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py index d3b8a211d..0c8a36d8b 100644 --- a/pms_api_rest/services/pms_property_service.py +++ b/pms_api_rest/services/pms_property_service.py @@ -18,16 +18,11 @@ class PmsPropertyService(Component): "GET", ) ], - input_param=Datamodel("pms.property.search.param"), output_param=Datamodel("pms.property.info", is_list=True), auth="jwt_api_pms", ) - def get_properties(self, property_search_param): + def get_properties(self): domain = [] - if property_search_param.name: - domain.append(("name", "like", property_search_param.name)) - if property_search_param.id: - domain.append(("id", "=", property_search_param.id)) result_properties = [] PmsPropertyInfo = self.env.datamodels["pms.property.info"] for prop in self.env["pms.property"].search( diff --git a/pms_api_rest/services/pms_reservation_service.py b/pms_api_rest/services/pms_reservation_service.py index 947347ef6..9dcc51df9 100644 --- a/pms_api_rest/services/pms_reservation_service.py +++ b/pms_api_rest/services/pms_reservation_service.py @@ -20,11 +20,15 @@ class PmsReservationService(Component): "GET", ) ], - output_param=Datamodel("pms.reservation.info"), + input_param=Datamodel("pms.search.param", is_list=False), + output_param=Datamodel("pms.reservation.info", is_list=False), auth="jwt_api_pms", ) - def get_reservation(self, reservation_id): - reservation = self.env["pms.reservation"].search([("id", "=", reservation_id)]) + def get_reservation(self, reservation_id, pms_search_param): + domain = list() + domain.append(("id", "=", reservation_id)) + domain.append(("pms_property_id", "=", pms_search_param.pms_property_id)) + reservation = self.env["pms.reservation"].search(domain) res = [] PmsReservationInfo = self.env.datamodels["pms.reservation.info"] if not reservation: @@ -59,7 +63,7 @@ class PmsReservationService(Component): ) res = PmsReservationInfo( id=reservation.id, - partner=reservation.partner_id.name, + partner=reservation.partner_id.name if reservation.partner_id else "", checkin=str(reservation.checkin), checkout=str(reservation.checkout), preferredRoomId=reservation.preferred_room_id.id @@ -175,11 +179,15 @@ class PmsReservationService(Component): "GET", ) ], + input_param=Datamodel("pms.search.param"), output_param=Datamodel("pms.checkin.partner.info", is_list=True), auth="jwt_api_pms", ) - def get_checkin_partners(self, reservation_id): - reservation = self.env["pms.reservation"].search([("id", "=", reservation_id)]) + def get_checkin_partners(self, reservation_id, pms_search_param): + domain = list() + domain.append(("id", "=", reservation_id)) + domain.append(("pms_property_id", "=", pms_search_param.pms_property_id)) + reservation = self.env["pms.reservation"].search(domain) checkin_partners = [] PmsCheckinPartnerInfo = self.env.datamodels["pms.checkin.partner.info"] if not reservation: