From c3fc102f0e4e2b5229fb34c82451c1985bea8200 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Tue, 28 Dec 2021 15:16:05 +0100 Subject: [PATCH] [IMP] pms-api-rest: add several fields reserv. line service --- pms_api_rest/__manifest__.py | 2 +- pms_api_rest/datamodels/pms_calendar_info.py | 3 +++ pms_api_rest/services/calendar_service.py | 7 +++++-- pms_api_rest/services/property_services.py | 7 +++---- pms_api_rest/services/reservation_services.py | 18 +++++++++++++++--- pms_api_rest/services/room_services.py | 1 - pms_api_rest/services/room_type_services.py | 1 - requirements.txt | 1 + 8 files changed, 28 insertions(+), 12 deletions(-) diff --git a/pms_api_rest/__manifest__.py b/pms_api_rest/__manifest__.py index 2529e90b0..7bf98aa07 100644 --- a/pms_api_rest/__manifest__.py +++ b/pms_api_rest/__manifest__.py @@ -14,7 +14,7 @@ "auth_jwt_login", ], "external_dependencies": { - "python": ["jwt", "simplejson", "marshmallow"], + "python": ["jwt", "simplejson", "marshmallow", "jose"], }, "data": ["data/auth_jwt_validator.xml"], "installable": True, diff --git a/pms_api_rest/datamodels/pms_calendar_info.py b/pms_api_rest/datamodels/pms_calendar_info.py index 37d95b629..089fbea09 100644 --- a/pms_api_rest/datamodels/pms_calendar_info.py +++ b/pms_api_rest/datamodels/pms_calendar_info.py @@ -10,3 +10,6 @@ class PmsCalendarInfo(Datamodel): roomId = fields.Integer(required=False, allow_none=True) partnerId = fields.Integer(required=False, allow_none=True) reservationId = fields.Integer(required=False, allow_none=True) + isFirstDay = fields.Boolean(required=False, allow_none=True) + isLastDay = fields.Boolean(required=False, allow_none=True) + totalPrice = fields.Float(required=False, allow_none=True) diff --git a/pms_api_rest/services/calendar_service.py b/pms_api_rest/services/calendar_service.py index ce0c02cf3..3ba49c196 100644 --- a/pms_api_rest/services/calendar_service.py +++ b/pms_api_rest/services/calendar_service.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timedelta from odoo.addons.base_rest import restapi from odoo.addons.base_rest_datamodel.restapi import Datamodel @@ -23,7 +23,6 @@ class PmsCalendarService(Component): input_param=Datamodel("pms.calendar.search.param"), output_param=Datamodel("pms.calendar.info", is_list=True), auth="jwt_api_pms", - ) def get_calendar(self, calendar_search_param): domain = list() @@ -49,6 +48,10 @@ class PmsCalendarService(Component): date=datetime.combine(line.date, datetime.min.time()).isoformat(), partnerId=line.reservation_id.partner_id.id, reservationId=line.reservation_id, + isFirstDay=line.reservation_id.checkin == line.date, + isLastDay=line.reservation_id.checkout + == (line.date + timedelta(days=1)), + totalPrice=line.reservation_id.price_total, ) ) return result_lines diff --git a/pms_api_rest/services/property_services.py b/pms_api_rest/services/property_services.py index 60b270940..e5573a61f 100644 --- a/pms_api_rest/services/property_services.py +++ b/pms_api_rest/services/property_services.py @@ -21,7 +21,6 @@ class PmsPropertyComponent(Component): 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): domain = [] @@ -58,7 +57,6 @@ class PmsPropertyComponent(Component): ], output_param=Datamodel("pms.property.info"), auth="jwt_api_pms", - ) def get_property(self, property_id): pms_property = ( @@ -88,11 +86,12 @@ class PmsPropertyComponent(Component): ], output_param=Datamodel("pms.account.journal.info", is_list=True), auth="jwt_api_pms", - ) def get_method_payments_property(self, property_id): - pms_property = self.env["pms.property"].sudo().search([("id", "=", property_id)]) + pms_property = ( + self.env["pms.property"].sudo().search([("id", "=", property_id)]) + ) PmsAccountJournalInfo = self.env.datamodels["pms.account.journal.info"] res = [] if not pms_property: diff --git a/pms_api_rest/services/reservation_services.py b/pms_api_rest/services/reservation_services.py index c97821c22..96fc4da35 100644 --- a/pms_api_rest/services/reservation_services.py +++ b/pms_api_rest/services/reservation_services.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timedelta from odoo.addons.base_rest import restapi from odoo.addons.base_rest_datamodel.restapi import Datamodel @@ -22,7 +22,6 @@ class PmsRoomService(Component): ], output_param=Datamodel("pms.reservation.info", is_list=True), auth="jwt_api_pms", - ) def get_reservations(self): domain = [] @@ -57,7 +56,6 @@ class PmsRoomService(Component): ], input_param=Datamodel("pms.calendar.changes", is_list=False), auth="jwt_api_pms", - ) def move_reservation_line(self, reservation_id, reservation_lines_changes): @@ -96,3 +94,17 @@ class PmsRoomService(Component): and line_to_change.room_id.id != change_iterator["roomId"] ): line_to_change.room_id = change_iterator["roomId"] + + max_value = max( + first_reservation_line_to_change.reservation_id.reservation_line_ids.mapped( + "date" + ) + ) + timedelta(days=1) + min_value = min( + first_reservation_line_to_change.reservation_id.reservation_line_ids.mapped( + "date" + ) + ) + reservation = self.env["pms.reservation"].browse(reservation_id) + reservation.checkin = min_value + reservation.checkout = max_value diff --git a/pms_api_rest/services/room_services.py b/pms_api_rest/services/room_services.py index 62ca6fd4b..70ea0f2bf 100644 --- a/pms_api_rest/services/room_services.py +++ b/pms_api_rest/services/room_services.py @@ -21,7 +21,6 @@ class PmsRoomService(Component): input_param=Datamodel("pms.room.search.param"), output_param=Datamodel("pms.room.info", is_list=True), auth="jwt_api_pms", - ) def get_rooms(self, room_search_param): domain = [] diff --git a/pms_api_rest/services/room_type_services.py b/pms_api_rest/services/room_type_services.py index 668250440..45bd33c40 100644 --- a/pms_api_rest/services/room_type_services.py +++ b/pms_api_rest/services/room_type_services.py @@ -21,7 +21,6 @@ class PmsRoomTypeService(Component): input_param=Datamodel("pms.room.search.param"), output_param=Datamodel("pms.room.info", is_list=True), auth="jwt_api_pms", - ) def get_room_types(self, room_type_search_param): domain = [] diff --git a/requirements.txt b/requirements.txt index ba49ce196..093f58f35 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ # generated from manifests external_dependencies bs4 +jose jwt marshmallow pycountry