mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD]pms_api_rest: reservation_lines get and patch services
This commit is contained in:
@@ -7,6 +7,7 @@ from . import pms_room_type
|
||||
from . import pms_room_type_class
|
||||
|
||||
from . import pms_reservation
|
||||
from . import pms_reservation_line
|
||||
|
||||
from . import pms_checkin_partner
|
||||
from . import pms_partner
|
||||
|
||||
23
pms_api_rest/datamodels/pms_reservation_line.py
Normal file
23
pms_api_rest/datamodels/pms_reservation_line.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from marshmallow import fields
|
||||
|
||||
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)
|
||||
|
||||
|
||||
class PmsReservationLineInfo(Datamodel):
|
||||
_name = "pms.reservation.line.info"
|
||||
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)
|
||||
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,6 +5,7 @@ from . import pms_calendar_service
|
||||
from . import pms_partner_service
|
||||
|
||||
from . import pms_reservation_service
|
||||
from . import pms_reservation_line_service
|
||||
from . import pms_property_service
|
||||
from . import pms_login_service
|
||||
from . import pms_pricelist_service
|
||||
|
||||
133
pms_api_rest/services/pms_reservation_line_service.py
Normal file
133
pms_api_rest/services/pms_reservation_line_service.py
Normal file
@@ -0,0 +1,133 @@
|
||||
from datetime import datetime
|
||||
|
||||
from odoo import _
|
||||
from odoo.exceptions import MissingError
|
||||
|
||||
from odoo.addons.base_rest import restapi
|
||||
from odoo.addons.base_rest_datamodel.restapi import Datamodel
|
||||
from odoo.addons.component.core import Component
|
||||
|
||||
|
||||
class PmsReservationLineService(Component):
|
||||
_inherit = "base.rest.service"
|
||||
_name = "pms.reservation.line.service"
|
||||
_usage = "reservation-lines"
|
||||
_collection = "pms.services"
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_line_id>",
|
||||
],
|
||||
"GET",
|
||||
)
|
||||
],
|
||||
output_param=Datamodel("pms.reservation.line.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def get_reservation_line(self, reservation_line_id):
|
||||
reservation_line = self.env["pms.reservation.line"].search(
|
||||
[("id", "=", reservation_line_id)]
|
||||
)
|
||||
if reservation_line:
|
||||
PmsReservationLineInfo = self.env.datamodels["pms.reservation.line.info"]
|
||||
return PmsReservationLineInfo(
|
||||
id=reservation_line.id,
|
||||
date=datetime.combine(
|
||||
reservation_line.date, datetime.min.time()
|
||||
).isoformat(),
|
||||
price=reservation_line.price,
|
||||
discount=reservation_line.discount,
|
||||
cancelDiscount=reservation_line.cancel_discount,
|
||||
roomId=reservation_line.room_id.id,
|
||||
reservationId=reservation_line.reservation_id.id,
|
||||
pmsPropertyId=reservation_line.pms_property_id.id,
|
||||
)
|
||||
else:
|
||||
raise MissingError(_("Reservation Line not found"))
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/",
|
||||
],
|
||||
"GET",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.reservation.line.search.param"),
|
||||
output_param=Datamodel("pms.reservation.line.info", is_list=True),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def get_reservation_lines(self, reservation_lines_search_param):
|
||||
domain = []
|
||||
if reservation_lines_search_param.date:
|
||||
domain.append(("date", "=", reservation_lines_search_param.date))
|
||||
if reservation_lines_search_param.id:
|
||||
domain.append(("id", "=", reservation_lines_search_param.id))
|
||||
if reservation_lines_search_param.reservationId:
|
||||
domain.append(
|
||||
("reservation_id", "=", reservation_lines_search_param.reservationId)
|
||||
)
|
||||
if reservation_lines_search_param.pmsPropertyId:
|
||||
domain.extend(
|
||||
[
|
||||
(
|
||||
"pms_property_id",
|
||||
"=",
|
||||
reservation_lines_search_param.pmsPropertyId,
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
result_lines = []
|
||||
PmsReservationLineInfo = self.env.datamodels["pms.reservation.line.info"]
|
||||
for reservation_line in self.env["pms.reservation.line"].search(
|
||||
domain,
|
||||
):
|
||||
result_lines.append(
|
||||
PmsReservationLineInfo(
|
||||
id=reservation_line.id,
|
||||
date=datetime.combine(
|
||||
reservation_line.date, datetime.min.time()
|
||||
).isoformat(),
|
||||
price=reservation_line.price,
|
||||
discount=reservation_line.discount,
|
||||
cancelDiscount=reservation_line.cancel_discount,
|
||||
roomId=reservation_line.room_id.id,
|
||||
reservationId=reservation_line.reservation_id.id,
|
||||
pmsPropertyId=reservation_line.pms_property_id.id,
|
||||
)
|
||||
)
|
||||
return result_lines
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_line_id>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.reservation.line.info"),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_reservation_line(self, reservation_line_id, reservation_line_info):
|
||||
reservation_line = self.env["pms.reservation.line"].search(
|
||||
[("id", "=", reservation_line_id)]
|
||||
)
|
||||
vals = dict()
|
||||
if reservation_line:
|
||||
if reservation_line_info.price:
|
||||
vals["price"] = reservation_line_info.price
|
||||
if reservation_line_info.discount:
|
||||
vals["discount"] = reservation_line_info.discount
|
||||
if reservation_line_info.cancelDiscount:
|
||||
vals["cancel_discount"] = reservation_line_info.cancelDiscount
|
||||
if reservation_line_info.roomId:
|
||||
vals["room_id"] = reservation_line_info.roomId
|
||||
reservation_line.write(vals)
|
||||
else:
|
||||
raise MissingError(_("Reservation Line not found"))
|
||||
Reference in New Issue
Block a user