From 23b44d053a74d096f79349e32a5d6d20bbe81833 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Fri, 10 Dec 2021 17:13:21 +0100 Subject: [PATCH] [IMP] pms-api-rest: swap reservation lines --- pms_api_rest/datamodels/__init__.py | 2 + .../datamodels/pms_calendar_swap_info.py | 11 +++++ pms_api_rest/services/calendar_service.py | 46 +++++++++++++++++-- 3 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 pms_api_rest/datamodels/pms_calendar_swap_info.py diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index fd0bf8e53..155aaec3e 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -12,3 +12,5 @@ from . import pms_reservation_info from . import pms_checkin_partner_info from . import pms_partner_info + +from . import pms_calendar_swap_info diff --git a/pms_api_rest/datamodels/pms_calendar_swap_info.py b/pms_api_rest/datamodels/pms_calendar_swap_info.py new file mode 100644 index 000000000..ee9f2a0bb --- /dev/null +++ b/pms_api_rest/datamodels/pms_calendar_swap_info.py @@ -0,0 +1,11 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsCalendarSwapInfo(Datamodel): + _name = "pms.calendar.swap.info" + swapFrom = fields.String(required=True, allow_none=False) + swapTo = fields.String(required=True, allow_none=False) + roomIdA = fields.Integer(required=True, allow_none=False) + roomIdB = fields.Integer(required=True, allow_none=False) diff --git a/pms_api_rest/services/calendar_service.py b/pms_api_rest/services/calendar_service.py index d1c0eeb0e..6132f8756 100644 --- a/pms_api_rest/services/calendar_service.py +++ b/pms_api_rest/services/calendar_service.py @@ -26,17 +26,12 @@ class PmsCalendarService(Component): ) def get_calendar(self, calendar_search_param): domain = list() -<<<<<<< HEAD - domain.append(("date", ">=", datetime.fromisoformat(calendar_search_param.date_from))) - domain.append(("date", "<=", datetime.fromisoformat(calendar_search_param.date_to))) -======= domain.append( ("date", ">", datetime.fromisoformat(calendar_search_param.date_from)) ) domain.append( ("date", "<=", datetime.fromisoformat(calendar_search_param.date_to)) ) ->>>>>>> d6e6a667... [IMP] pms_api_rest: add get_reservation and get_checkin_partners result_lines = [] PmsCalendarInfo = self.env.datamodels["pms.calendar.info"] for line in ( @@ -56,3 +51,44 @@ class PmsCalendarService(Component): ) ) return result_lines + + @restapi.method( + [ + ( + [ + "/swap", + ], + "POST", + ) + ], + input_param=Datamodel("pms.calendar.swap.info", is_list=False), + auth="public", + ) + def swap_reservation_slices(self, swap_info): + room_id_a = swap_info.roomIdA + room_id_b = swap_info.roomIdB + + lines_room_a = self.env["pms.reservation.line"].search( + [ + ("room_id", "=", room_id_a), + ("date", ">=", swap_info.swapFrom), + ("date", "<=", swap_info.swapTo), + ] + ) + + lines_room_b = self.env["pms.reservation.line"].search( + [ + ("room_id", "=", room_id_b), + ("date", ">=", swap_info.swapFrom), + ("date", "<=", swap_info.swapTo), + ] + ) + lines_room_a.occupies_availability = False + lines_room_b.occupies_availability = False + lines_room_a.flush() + lines_room_b.flush() + lines_room_a.room_id = room_id_b + lines_room_b.room_id = room_id_a + + lines_room_a._compute_occupies_availability() + lines_room_b._compute_occupies_availability()