diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index c74370760..393c47804 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -6,3 +6,7 @@ from . import pms_folio_short_info from . import pms_room_short_info from . import pms_room_search_param + +from . import pms_partner_short_info +from . import pms_reservation_short_info + diff --git a/pms_api_rest/datamodels/pms_partner_short_info.py b/pms_api_rest/datamodels/pms_partner_short_info.py new file mode 100644 index 000000000..0f42d7dbc --- /dev/null +++ b/pms_api_rest/datamodels/pms_partner_short_info.py @@ -0,0 +1,9 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsPartnerShortInfo(Datamodel): + _name = "pms.partner.short.info" + id = fields.Integer(required=False, allow_none=True) + name = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_reservation_short_info.py b/pms_api_rest/datamodels/pms_reservation_short_info.py new file mode 100644 index 000000000..2fa4a3b22 --- /dev/null +++ b/pms_api_rest/datamodels/pms_reservation_short_info.py @@ -0,0 +1,11 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsReservationShortInfo(Datamodel): + _name = "pms.reservation.short.info" + id = fields.Integer(required=False, allow_none=True) + price = fields.Float(required=False, allow_none=True) + checkin = fields.String(required=False, allow_none=True) + checkout = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/services/__init__.py b/pms_api_rest/services/__init__.py index 67cfea7a8..4811e37ab 100644 --- a/pms_api_rest/services/__init__.py +++ b/pms_api_rest/services/__init__.py @@ -1,3 +1,7 @@ from . import folio_services from . import room_services from . import calendar_service +from . import partner_services + +from . import reservation_services + diff --git a/pms_api_rest/services/partner_services.py b/pms_api_rest/services/partner_services.py new file mode 100644 index 000000000..3025ddcc4 --- /dev/null +++ b/pms_api_rest/services/partner_services.py @@ -0,0 +1,42 @@ +from odoo.addons.base_rest import restapi +from odoo.addons.base_rest_datamodel.restapi import Datamodel +from odoo.addons.component.core import Component + + +class PmsPartnerService(Component): + _inherit = "base.rest.service" + _name = "pms.partner.service" + _usage = "partners" + _collection = "pms.reservation.service" + + @restapi.method( + [ + ( + [ + "/", + ], + "GET", + ) + ], + output_param=Datamodel("pms.partner.short.info", is_list=True), + auth="public", + ) + def get_partners(self): + domain = [] + result_partners = [] + PmsPartnerShortInfo = self.env.datamodels["pms.partner.short.info"] + for partner in ( + self.env["res.partner"] + .sudo() + .search( + domain, + ) + ): + + result_partners.append( + PmsPartnerShortInfo( + id=partner.id, + name=partner.name, + ) + ) + return result_partners diff --git a/pms_api_rest/services/reservation_services.py b/pms_api_rest/services/reservation_services.py new file mode 100644 index 000000000..4717a96d2 --- /dev/null +++ b/pms_api_rest/services/reservation_services.py @@ -0,0 +1,48 @@ +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 PmsRoomService(Component): + _inherit = "base.rest.service" + _name = "pms.reservation.service" + _usage = "reservations" + _collection = "pms.reservation.service" + + @restapi.method( + [ + ( + [ + "/", + ], + "GET", + ) + ], + output_param=Datamodel("pms.reservation.short.info", is_list=True), + auth="public", + ) + def get_reservations(self): + domain = [] + + result_reservations = [] + PmsReservationShortInfo = self.env.datamodels["pms.reservation.short.info"] + for reservation in ( + self.env["pms.reservation"] + .sudo() + .search( + domain, + ) + ): + print(type(reservation.checkin)) + result_reservations.append( + + PmsReservationShortInfo( + id=reservation.id, + price=reservation.price_subtotal, + checkin=datetime.combine(reservation.checkin, datetime.min.time()).isoformat(), + checkout=datetime.combine(reservation.checkout, datetime.min.time()).isoformat(), + ) + ) + return result_reservations