[ADD] pms-pwa: add calendar service

This commit is contained in:
miguelpadin
2021-09-22 18:19:37 +02:00
committed by Darío Lodeiros
parent f1bfaf45ee
commit cc0c0b22c9
8 changed files with 85 additions and 11 deletions

View File

@@ -1,4 +1,8 @@
from . import pms_folio_short_info
from . import pms_calendar_search_param
from . import pms_calendar_short_info
from . import pms_folio_search_param
from . import pms_folio_short_info
from . import pms_room_short_info
from . import pms_room_search_param

View File

@@ -0,0 +1,9 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
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)

View File

@@ -0,0 +1,12 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
class PmsCalendarShortInfo(Datamodel):
_name = "pms.calendar.short.info"
id = fields.Integer(required=False, allow_none=True)
date = fields.String(required=False, allow_none=True)
roomId = fields.Integer(required=False, allow_none=True)
partnerId = fields.Integer(required=False, allow_none=True)
reservationId = fields.Integer(required=False, allow_none=True)

View File

@@ -5,6 +5,5 @@ from odoo.addons.datamodel.core import Datamodel
class PmsRoomSearchParam(Datamodel):
_name = "pms.room.search.param"
id = fields.Integer(required=False, allow_none=False)
name = fields.String(required=False, allow_none=False)
id = fields.Integer(required=False, allow_none=True)
name = fields.String(required=False, allow_none=True)

View File

@@ -1,2 +1,3 @@
from . import folio_services
from . import room_services
from . import calendar_service

View File

@@ -0,0 +1,49 @@
from datetime import datetime
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
class PmsCalendarService(Component):
_inherit = "base.rest.service"
_name = "pms.calendar.service"
_usage = "calendar"
_collection = "pms.reservation.service"
@restapi.method(
[
(
[
"/",
],
"GET",
)
],
input_param=Datamodel("pms.calendar.search.param"),
output_param=Datamodel("pms.calendar.short.info", is_list=True),
auth="public",
)
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)))
result_lines = []
PmsCalendarShortInfo = self.env.datamodels["pms.calendar.short.info"]
for line in (
self.env["pms.reservation.line"]
.sudo()
.search(
domain,
)
):
result_lines.append(
PmsCalendarShortInfo(
id=line.id,
roomId=line.room_id.id,
date=datetime.combine(line.date, datetime.min.time()).isoformat(),
partnerId=line.reservation_id.partner_id.id,
reservationId=line.reservation_id,
)
)
return result_lines

View File

@@ -72,7 +72,9 @@ class PmsFolioService(Component):
"boardService": reservation.board_service_room_id.pms_board_service_id.name
if reservation.board_service_room_id
else "",
"reservationLines": [] if not reservation_lines else reservation_lines
"reservationLines": []
if not reservation_lines
else reservation_lines,
}
)
result_folios.append(
@@ -105,7 +107,7 @@ class PmsFolioService(Component):
"GET",
)
],
output_param=Datamodel("pms.reservation.short.info", is_list=True),
output_param=Datamodel("pms.folio.short.info", is_list=True),
auth="public",
)
def get_reservations(self, folio_id):

View File

@@ -1,11 +1,9 @@
from datetime import datetime
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
class PmsFolioService(Component):
class PmsRoomService(Component):
_inherit = "base.rest.service"
_name = "pms.room.service"
_usage = "rooms"
@@ -20,8 +18,8 @@ class PmsFolioService(Component):
"GET",
)
],
input_param=Datamodel("pms.folio.search.param"),
output_param=Datamodel("pms.folio.short.info", is_list=True),
input_param=Datamodel("pms.room.search.param"),
output_param=Datamodel("pms.room.short.info", is_list=True),
auth="public",
)
def get_rooms(self, room_search_param):