mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] pms-api-rest: pending update reservation by id
This commit is contained in:
committed by
Darío Lodeiros
parent
7a8db9757b
commit
74578e1c1a
@@ -14,5 +14,4 @@ class PmsAmenityInfo(Datamodel):
|
||||
_name = "pms.amenity.info"
|
||||
id = fields.Integer(required=True, allow_none=False)
|
||||
name = fields.String(required=True, allow_none=False)
|
||||
defaultCode = fields.String(required=False, allow_none=True)
|
||||
pmsAmenityTypeId = fields.Integer(required=True, allow_none=False)
|
||||
amenityTypeId = fields.Integer(required=True, allow_none=False)
|
||||
|
||||
@@ -5,10 +5,12 @@ from odoo.addons.datamodel.core import Datamodel
|
||||
|
||||
class PmsReservationLineSearchParam(Datamodel):
|
||||
_name = "pms.reservation.line.search.param"
|
||||
id = fields.Integer(required=False, allow_none=True)
|
||||
date = fields.String(required=False, allow_none=True)
|
||||
reservationId = fields.Integer(required=False, allow_none=True)
|
||||
pmsPropertyId = fields.Integer(required=False, allow_none=True)
|
||||
id = fields.Integer(required=False, allow_none=False)
|
||||
date = fields.String(required=False, allow_none=False)
|
||||
reservationId = fields.Integer(required=False, allow_none=False)
|
||||
pmsPropertyId = fields.Integer(required=False, allow_none=False)
|
||||
roomId = fields.Integer(required=False, allow_none=False)
|
||||
overbooking = fields.Boolean(required=False, allow_none=False)
|
||||
|
||||
|
||||
class PmsReservationLineInfo(Datamodel):
|
||||
@@ -16,8 +18,8 @@ class PmsReservationLineInfo(Datamodel):
|
||||
id = fields.Integer(required=False, allow_none=False)
|
||||
date = fields.String(required=False, allow_none=False)
|
||||
price = fields.Float(required=False, allow_none=False)
|
||||
discount = fields.Float(required=False, allow_none=True)
|
||||
cancelDiscount = fields.Float(required=False, allow_none=True)
|
||||
discount = fields.Float(required=False, allow_none=False)
|
||||
cancelDiscount = fields.Float(required=False, allow_none=False)
|
||||
roomId = fields.Integer(required=False, allow_none=False)
|
||||
reservationId = fields.Integer(required=False, allow_none=False)
|
||||
pmsPropertyId = fields.Integer(required=False, allow_none=False)
|
||||
|
||||
@@ -5,9 +5,13 @@ from odoo.addons.datamodel.core import Datamodel
|
||||
|
||||
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)
|
||||
id = fields.Integer(required=False, allow_none=False)
|
||||
name = fields.String(required=False, allow_none=False)
|
||||
pms_property_id = fields.Integer(required=True, allow_none=False)
|
||||
availabilityFrom = fields.String(required=False, allow_none=False)
|
||||
availabilityTo = fields.String(required=False, allow_none=False)
|
||||
currentLines = fields.List(fields.Integer(), required=False, allow_none=False)
|
||||
pricelistId = fields.Integer(required=False, allow_none=False)
|
||||
|
||||
|
||||
class PmsRoomInfo(Datamodel):
|
||||
|
||||
@@ -26,7 +26,7 @@ class PmsAmenityService(Component):
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def get_amenities(self, amenities_search_param):
|
||||
domain = []
|
||||
domain = [("pms_amenity_type_id", "!=", False)]
|
||||
if amenities_search_param.name:
|
||||
domain.append(("name", "like", amenities_search_param.name))
|
||||
if amenities_search_param.id:
|
||||
@@ -50,8 +50,7 @@ class PmsAmenityService(Component):
|
||||
PmsAmenityInfo(
|
||||
id=amenity.id,
|
||||
name=amenity.name,
|
||||
defaultCode=amenity.default_code,
|
||||
pmsAmenityTypeId=amenity.pms_amenity_type_id.id,
|
||||
amenityTypeId=amenity.pms_amenity_type_id.id,
|
||||
)
|
||||
)
|
||||
return result_amenities
|
||||
|
||||
@@ -82,7 +82,9 @@ class PmsFolioService(Component):
|
||||
reservation_lines.append(
|
||||
{
|
||||
"id": reservation_line.id,
|
||||
"date": reservation_line.date,
|
||||
"date": datetime.combine(
|
||||
reservation_line.date, datetime.min.time()
|
||||
).isoformat(),
|
||||
"roomId": reservation_line.room_id.id,
|
||||
"roomName": reservation_line.room_id.name,
|
||||
}
|
||||
@@ -103,7 +105,7 @@ class PmsFolioService(Component):
|
||||
"checkout": datetime.combine(
|
||||
reservation.checkout, datetime.min.time()
|
||||
).isoformat(),
|
||||
"preferredRoomId": reservation.preferred_room_id.name
|
||||
"preferredRoomId": reservation.preferred_room_id.id
|
||||
if reservation.preferred_room_id
|
||||
else "",
|
||||
"preferredRoomCapacity": reservation.preferred_room_id.capacity
|
||||
|
||||
@@ -208,6 +208,27 @@ class PmsReservationService(Component):
|
||||
)
|
||||
reservation_to_update.write(reservation_vals)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:_reservation_id>/reservation-lines/<int:reservation_line_id>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.reservation.line.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_reservation_lines(
|
||||
self, _reservation_id, reservation_line_id, reservation_line_param
|
||||
):
|
||||
if reservation_line_param.roomId:
|
||||
reservation_line_id = self.env["pms.reservation.line"].browse(
|
||||
reservation_line_id
|
||||
)
|
||||
reservation_line_id.room_id = reservation_line_param.roomId
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from datetime import datetime
|
||||
|
||||
from odoo import _
|
||||
from odoo.exceptions import MissingError
|
||||
|
||||
@@ -33,6 +35,30 @@ class PmsRoomService(Component):
|
||||
domain.append(("id", "=", room_search_param.id))
|
||||
if room_search_param.pms_property_id:
|
||||
domain.append(("pms_property_id", "=", room_search_param.pms_property_id))
|
||||
if (
|
||||
room_search_param.availabilityFrom
|
||||
and room_search_param.availabilityTo
|
||||
and room_search_param.pms_property_id
|
||||
and room_search_param.pricelistId
|
||||
):
|
||||
date_from = datetime.strptime(
|
||||
room_search_param.availabilityFrom, "%Y-%m-%d"
|
||||
).date()
|
||||
date_to = datetime.strptime(
|
||||
room_search_param.availabilityTo, "%Y-%m-%d"
|
||||
).date()
|
||||
pms_property = self.env["pms.property"].browse(
|
||||
room_search_param.pms_property_id
|
||||
)
|
||||
pms_property = pms_property.with_context(
|
||||
checkin=date_from,
|
||||
checkout=date_to,
|
||||
room_type_id=False, # Allows to choose any available room
|
||||
current_lines=room_search_param.currentLines,
|
||||
pricelist_id=room_search_param.pricelistId,
|
||||
real_avail=True,
|
||||
)
|
||||
domain.append(("id", "in", pms_property.free_room_ids.ids))
|
||||
|
||||
result_rooms = []
|
||||
PmsRoomInfo = self.env.datamodels["pms.room.info"]
|
||||
@@ -54,6 +80,7 @@ class PmsRoomService(Component):
|
||||
roomTypeClassId=room.room_type_id.class_id,
|
||||
ubicationId=room.ubication_id,
|
||||
extraBedsAllowed=room.extra_beds_allowed,
|
||||
roomAmenityIds=room.room_amenity_ids.ids,
|
||||
)
|
||||
)
|
||||
return result_rooms
|
||||
|
||||
Reference in New Issue
Block a user