From f661b67a4a928d31cddd3195370cb119b8bcfb8d Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 11 Jul 2022 17:02:27 +0200 Subject: [PATCH] [RFC]pms_api_rest: refactor in datamodels and services --- pms_api_rest/datamodels/__init__.py | 2 +- .../datamodels/pms_account_journal.py | 2 +- pms_api_rest/datamodels/pms_agency.py | 1 + pms_api_rest/datamodels/pms_amenity.py | 3 +- .../datamodels/pms_board_service_line.py | 2 +- pms_api_rest/datamodels/pms_folio.py | 3 +- ...ms_id_categories.py => pms_id_category.py} | 4 +- pms_api_rest/datamodels/pms_payment.py | 1 - pms_api_rest/datamodels/pms_pricelist.py | 2 + pms_api_rest/datamodels/pms_property.py | 1 - pms_api_rest/datamodels/pms_reservation.py | 15 ++-- pms_api_rest/datamodels/pms_service_line.py | 2 +- pms_api_rest/services/__init__.py | 4 +- pms_api_rest/services/pms_agency_service.py | 6 +- pms_api_rest/services/pms_amenity_service.py | 6 +- .../services/pms_availability_plan_service.py | 6 +- .../pms_board_service_line_service.py | 6 +- .../services/pms_board_service_service.py | 2 +- pms_api_rest/services/pms_calendar_service.py | 2 +- .../services/pms_cancelation_rule_service.py | 2 +- ...ds_service.py => pms_extra_bed_service.py} | 2 +- pms_api_rest/services/pms_folio_service.py | 64 ++++++++------ ..._service.py => pms_id_category_service.py} | 12 +-- pms_api_rest/services/pms_partner_service.py | 32 +++---- .../services/pms_pricelist_service.py | 4 + pms_api_rest/services/pms_property_service.py | 6 +- .../services/pms_reservation_service.py | 84 +++++++++---------- pms_api_rest/services/pms_room_service.py | 4 +- .../services/pms_room_type_class_service.py | 2 +- .../services/pms_sale_channel_service.py | 6 +- .../services/pms_service_line_service.py | 7 +- .../services/pms_ubication_service.py | 10 +-- pms_api_rest/services/res_city_zip_service.py | 6 +- pms_api_rest/services/res_country_service.py | 2 +- .../services/res_partner_category_service.py | 4 +- 35 files changed, 171 insertions(+), 146 deletions(-) rename pms_api_rest/datamodels/{pms_id_categories.py => pms_id_category.py} (73%) rename pms_api_rest/services/{pms_extra_beds_service.py => pms_extra_bed_service.py} (98%) rename pms_api_rest/services/{pms_id_categories_service.py => pms_id_category_service.py} (71%) diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index ddf81cb59..6482e3d0d 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -23,7 +23,7 @@ from . import pms_pricelist_item from . import pms_availability_plan from . import pms_availability_plan_rule -from . import pms_id_categories +from . import pms_id_category from . import res_country from . import res_partner_category from . import res_city_zip diff --git a/pms_api_rest/datamodels/pms_account_journal.py b/pms_api_rest/datamodels/pms_account_journal.py index 48527e346..6c96239bd 100644 --- a/pms_api_rest/datamodels/pms_account_journal.py +++ b/pms_api_rest/datamodels/pms_account_journal.py @@ -7,4 +7,4 @@ class PmsAccountJournalInfo(Datamodel): _name = "pms.account.journal.info" id = fields.Integer(required=False, allow_none=True) name = fields.String(required=False, allow_none=True) - allowedPmsPayments = fields.Boolean(required=False, allow_none=True) + allowedPayments = fields.Boolean(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_agency.py b/pms_api_rest/datamodels/pms_agency.py index 045a992ce..bd4de19e9 100644 --- a/pms_api_rest/datamodels/pms_agency.py +++ b/pms_api_rest/datamodels/pms_agency.py @@ -12,3 +12,4 @@ class PmsAgencyInfo(Datamodel): _name = "pms.agency.info" id = fields.Integer(required=True, allow_none=False) name = fields.String(required=True, allow_none=False) + image = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_amenity.py b/pms_api_rest/datamodels/pms_amenity.py index b9c970c39..f52cfceba 100644 --- a/pms_api_rest/datamodels/pms_amenity.py +++ b/pms_api_rest/datamodels/pms_amenity.py @@ -13,4 +13,5 @@ class PmsAmenityInfo(Datamodel): _name = "pms.amenity.info" id = fields.Integer(required=True, allow_none=False) name = fields.String(required=True, allow_none=False) - amenityTypeId = fields.Integer(required=True, allow_none=False) + defaultCode = fields.String(required=False, allow_none=True) + amenityTypeId = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_board_service_line.py b/pms_api_rest/datamodels/pms_board_service_line.py index 1820f8a23..3f271454a 100644 --- a/pms_api_rest/datamodels/pms_board_service_line.py +++ b/pms_api_rest/datamodels/pms_board_service_line.py @@ -5,7 +5,7 @@ from odoo.addons.datamodel.core import Datamodel class PmsBoardServiceLineSearchParam(Datamodel): _name = "pms.board.service.line.search.param" - pmsBoarServiceId = fields.Integer(required=True, allow_none=False) + boardServiceId = fields.Integer(required=True, allow_none=False) class PmsBoardServiceLineInfo(Datamodel): diff --git a/pms_api_rest/datamodels/pms_folio.py b/pms_api_rest/datamodels/pms_folio.py index 11b9b07f0..91462e5f8 100644 --- a/pms_api_rest/datamodels/pms_folio.py +++ b/pms_api_rest/datamodels/pms_folio.py @@ -30,5 +30,6 @@ class PmsFolioShortInfo(Datamodel): partnerPhone = fields.String(required=False, allow_none=True) partnerEmail = fields.String(required=False, allow_none=True) amountTotal = fields.Float(required=False, allow_none=True) - paymentState = fields.String(required=False, allow_none=True) + paymentStateCode = fields.String(required=False, allow_none=True) + paymentStateDescription = fields.String(required=False, allow_none=True) reservations = fields.List(fields.Dict(required=False, allow_none=True)) diff --git a/pms_api_rest/datamodels/pms_id_categories.py b/pms_api_rest/datamodels/pms_id_category.py similarity index 73% rename from pms_api_rest/datamodels/pms_id_categories.py rename to pms_api_rest/datamodels/pms_id_category.py index 09dec38c1..a802071f0 100644 --- a/pms_api_rest/datamodels/pms_id_categories.py +++ b/pms_api_rest/datamodels/pms_id_category.py @@ -3,7 +3,7 @@ from marshmallow import fields from odoo.addons.datamodel.core import Datamodel -class PmsIdCategoriesInfo(Datamodel): - _name = "pms.id.categories.info" +class PmsIdCategoryInfo(Datamodel): + _name = "pms.id.category.info" id = fields.Integer(required=False, allow_none=True) documentType = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_payment.py b/pms_api_rest/datamodels/pms_payment.py index 63d34602b..728870847 100644 --- a/pms_api_rest/datamodels/pms_payment.py +++ b/pms_api_rest/datamodels/pms_payment.py @@ -8,5 +8,4 @@ class PmsPaymentInfo(Datamodel): id = fields.Integer(required=False, allow_none=True) amount = fields.Float(required=False, allow_none=True) journalId = fields.Integer(required=False, allow_none=True) - journalName = fields.String(required=False, allow_none=True) date = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_pricelist.py b/pms_api_rest/datamodels/pms_pricelist.py index cf10e57fa..0fd0554da 100644 --- a/pms_api_rest/datamodels/pms_pricelist.py +++ b/pms_api_rest/datamodels/pms_pricelist.py @@ -7,4 +7,6 @@ class PmsPricelistInfo(Datamodel): _name = "pms.pricelist.info" id = fields.Integer(required=False, allow_none=True) name = fields.String(required=False, allow_none=True) + cancelationRuleId = fields.Integer(required=False, allow_none=True) + defaultAvailabilityPlanId = fields.Integer(required=False, allow_none=True) pmsPropertyIds = fields.List(fields.Integer(required=False, allow_none=True)) diff --git a/pms_api_rest/datamodels/pms_property.py b/pms_api_rest/datamodels/pms_property.py index 40e4d4550..0e2a7c6bf 100644 --- a/pms_api_rest/datamodels/pms_property.py +++ b/pms_api_rest/datamodels/pms_property.py @@ -14,7 +14,6 @@ class PmsPropertyInfo(Datamodel): name = fields.String(required=False, allow_none=True) company = fields.String(required=False, allow_none=True) defaultPricelistId = fields.Integer(required=False, allow_none=True) - defaultAvailabilityPlanId = fields.Integer(required=False, allow_none=True) colorOptionConfig = fields.String(required=False, allow_none=True) preReservationColor = fields.String(required=False, allow_none=True) confirmedReservationColor = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_reservation.py b/pms_api_rest/datamodels/pms_reservation.py index 15c31c6b5..5619b087f 100644 --- a/pms_api_rest/datamodels/pms_reservation.py +++ b/pms_api_rest/datamodels/pms_reservation.py @@ -6,17 +6,18 @@ from odoo.addons.datamodel.core import Datamodel class PmsReservationShortInfo(Datamodel): _name = "pms.reservation.short.info" id = fields.Integer(required=False, allow_none=True) - boardServiceName = fields.String(required=False, allow_none=True) + boardServiceId = fields.Integer(required=False, allow_none=True) checkin = fields.String(required=False, allow_none=True) checkout = fields.String(required=False, allow_none=True) - roomTypeName = fields.String(required=False, allow_none=True) - preferredRoomShortName = fields.String(required=False, allow_none=True) + roomTypeId = fields.Integer(required=False, allow_none=True) + preferredRoomId = fields.Integer(required=False, allow_none=True) adults = fields.Integer(required=False, allow_none=True) - state = fields.String(required=False, allow_none=True) + stateCode = fields.String(required=False, allow_none=True) + stateDescription = fields.String(required=False, allow_none=True) children = fields.Integer(required=False, allow_none=True) readyForCheckin = fields.Boolean(required=False, allow_none=True) allowedCheckout = fields.Boolean(required=False, allow_none=True) - isSplitted = fields.Boolean(required=False, allow_none=True) + splitted = fields.Boolean(required=False, allow_none=True) priceTotal = fields.Float(required=False, allow_none=True) servicesCount = fields.Integer(required=False, allow_none=True) @@ -26,6 +27,7 @@ class PmsReservationInfo(Datamodel): id = fields.Integer(required=False, allow_none=True) name = fields.String(required=False, allow_none=True) folioId = fields.Integer(required=False, allow_none=True) + folioSequence = fields.Integer(required=False, allow_none=True) partnerName = fields.String(required=False, allow_none=True) boardServiceId = fields.Integer(required=False, allow_none=True) saleChannelId = fields.Integer(required=False, allow_none=True) @@ -42,7 +44,8 @@ class PmsReservationInfo(Datamodel): adults = fields.Integer(required=False, allow_none=True) overbooking = fields.Boolean(required=False, allow_none=True) externalReference = fields.String(required=False, allow_none=True) - state = fields.String(required=False, allow_none=True) + stateCode = fields.String(required=False, allow_none=True) + stateDescription = fields.String(required=False, allow_none=True) children = fields.Integer(required=False, allow_none=True) readyForCheckin = fields.Boolean(required=False, allow_none=True) allowedCheckout = fields.Boolean(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_service_line.py b/pms_api_rest/datamodels/pms_service_line.py index 5ce638164..a03e868f8 100644 --- a/pms_api_rest/datamodels/pms_service_line.py +++ b/pms_api_rest/datamodels/pms_service_line.py @@ -7,7 +7,7 @@ class PmsServiceLineInfo(Datamodel): _name = "pms.service.line.info" id = fields.Integer(required=False, allow_none=True) isBoardService = fields.Boolean(required=False, allow_none=True) - productId = fields.Integer(required=False,allow_none=True) + productId = fields.Integer(required=False, allow_none=True) date = fields.String(required=False, allow_none=True) priceUnit = fields.Float(required=False, allow_none=True) priceTotal = fields.Float(required=False, allow_none=True) diff --git a/pms_api_rest/services/__init__.py b/pms_api_rest/services/__init__.py index 26be7c970..0ccf5d27d 100644 --- a/pms_api_rest/services/__init__.py +++ b/pms_api_rest/services/__init__.py @@ -10,13 +10,13 @@ from . import pms_property_service from . import pms_login_service from . import pms_pricelist_service from . import pms_availability_plan_service -from . import pms_id_categories_service +from . import pms_id_category_service from . import res_country_service from . import res_partner_category_service from . import res_city_zip_service from . import pms_room_type_class_service from . import pms_ubication_service -from . import pms_extra_beds_service +from . import pms_extra_bed_service from . import pms_amenity_service from . import pms_amenity_type_service diff --git a/pms_api_rest/services/pms_agency_service.py b/pms_api_rest/services/pms_agency_service.py index 52298eb8e..9d33cd95e 100644 --- a/pms_api_rest/services/pms_agency_service.py +++ b/pms_api_rest/services/pms_agency_service.py @@ -39,6 +39,9 @@ class PmsAgencyService(Component): PmsAgencyInfo( id=agency.id, name=agency.name, + image=agency.image_1024.decode("utf-8") + if agency.image_1024 + else None, ) ) return result_agencies @@ -66,7 +69,8 @@ class PmsAgencyService(Component): PmsAgencieInfo = self.env.datamodels["pms.agency.info"] return PmsAgencieInfo( id=agency.id, - name=agency.name, + name=agency.name if agency.name else None, + image=agency.image_1024.decode("utf-8") if agency.image_1024 else None, ) else: raise MissingError(_("Agency not found")) diff --git a/pms_api_rest/services/pms_amenity_service.py b/pms_api_rest/services/pms_amenity_service.py index 395100cf0..486c249d7 100644 --- a/pms_api_rest/services/pms_amenity_service.py +++ b/pms_api_rest/services/pms_amenity_service.py @@ -72,8 +72,10 @@ class PmsAmenityService(Component): return PmsAmenityInfo( id=amenity.id, name=amenity.name, - defaultCode=amenity.default_code, - pmsAmenityTypeId=amenity.pms_amenity_type_id.id, + defaultCode=amenity.default_code if amenity.default_code else None, + amenityTypeId=amenity.pms_amenity_type_id.id + if amenity.pms_amenity_type_id + else None, ) else: raise MissingError(_("Amenity not found")) diff --git a/pms_api_rest/services/pms_availability_plan_service.py b/pms_api_rest/services/pms_availability_plan_service.py index e51a64043..8ee6077a6 100644 --- a/pms_api_rest/services/pms_availability_plan_service.py +++ b/pms_api_rest/services/pms_availability_plan_service.py @@ -86,7 +86,9 @@ class PmsAvailabilityPlanService(Component): ) if not record_availability_plan_id: raise MissingError - PmsAvailabilityPlanInfo = self.env.datamodels["pms.availability.plan.rule.info"] + PmsAvailabilityPlanRuleInfo = self.env.datamodels[ + "pms.availability.plan.rule.info" + ] rooms = self.env["pms.room"].search( [ ( @@ -121,7 +123,7 @@ class PmsAvailabilityPlanService(Component): ] ) if rule: - availability_plan_rule_info = PmsAvailabilityPlanInfo( + availability_plan_rule_info = PmsAvailabilityPlanRuleInfo( roomTypeId=room_type.id, date=datetime.combine(date, datetime.min.time()).isoformat(), availabilityRuleId=rule.id, diff --git a/pms_api_rest/services/pms_board_service_line_service.py b/pms_api_rest/services/pms_board_service_line_service.py index 7ae8cc841..4a9e8a689 100644 --- a/pms_api_rest/services/pms_board_service_line_service.py +++ b/pms_api_rest/services/pms_board_service_line_service.py @@ -9,7 +9,7 @@ from odoo.addons.component.core import Component class PmsBoardServiceService(Component): _inherit = "base.rest.service" _name = "pms.board.service.line.service" - _usage = "board-service-line" + _usage = "board-service-lines" _collection = "pms.services" @restapi.method( @@ -27,12 +27,12 @@ class PmsBoardServiceService(Component): ) def get_board_service_lines(self, board_service_lines_search_param): domain = [] - if board_service_lines_search_param.pmsBoardServiceId: + if board_service_lines_search_param.boardServiceId: domain.append( ( "pms_board_service_room_type_id", "=", - board_service_lines_search_param.pmsBoardServiceId, + board_service_lines_search_param.boardServiceId, ) ) diff --git a/pms_api_rest/services/pms_board_service_service.py b/pms_api_rest/services/pms_board_service_service.py index ba66ec40c..94fd1a527 100644 --- a/pms_api_rest/services/pms_board_service_service.py +++ b/pms_api_rest/services/pms_board_service_service.py @@ -9,7 +9,7 @@ from odoo.addons.component.core import Component class PmsBoardServiceService(Component): _inherit = "base.rest.service" _name = "pms.board.service.service" - _usage = "board-service" + _usage = "board-services" _collection = "pms.services" @restapi.method( diff --git a/pms_api_rest/services/pms_calendar_service.py b/pms_api_rest/services/pms_calendar_service.py index c0014d627..9d5dce148 100644 --- a/pms_api_rest/services/pms_calendar_service.py +++ b/pms_api_rest/services/pms_calendar_service.py @@ -7,7 +7,7 @@ from odoo.addons.component.core import Component class PmsCalendarService(Component): _inherit = "base.rest.service" - _name = "pms.private.services" + _name = "pms.private.service" _usage = "calendar" _collection = "pms.services" diff --git a/pms_api_rest/services/pms_cancelation_rule_service.py b/pms_api_rest/services/pms_cancelation_rule_service.py index 96842bd42..35c15bbf3 100644 --- a/pms_api_rest/services/pms_cancelation_rule_service.py +++ b/pms_api_rest/services/pms_cancelation_rule_service.py @@ -9,7 +9,7 @@ from odoo.addons.component.core import Component class PmsCancelationRuleService(Component): _inherit = "base.rest.service" _name = "pms.cancelation.rule.service" - _usage = "cancelation-rule" + _usage = "cancelation-rules" _collection = "pms.services" @restapi.method( diff --git a/pms_api_rest/services/pms_extra_beds_service.py b/pms_api_rest/services/pms_extra_bed_service.py similarity index 98% rename from pms_api_rest/services/pms_extra_beds_service.py rename to pms_api_rest/services/pms_extra_bed_service.py index f9ad83536..2d80863b6 100644 --- a/pms_api_rest/services/pms_extra_beds_service.py +++ b/pms_api_rest/services/pms_extra_bed_service.py @@ -3,7 +3,7 @@ from odoo.addons.base_rest_datamodel.restapi import Datamodel from odoo.addons.component.core import Component -class PmsExtraBedsService(Component): +class PmsExtraBedService(Component): _inherit = "base.rest.service" _name = "pms.extra.beds.service" _usage = "extra-beds" diff --git a/pms_api_rest/services/pms_folio_service.py b/pms_api_rest/services/pms_folio_service.py index 6edb69e39..bb49f9dca 100644 --- a/pms_api_rest/services/pms_folio_service.py +++ b/pms_api_rest/services/pms_folio_service.py @@ -123,20 +123,23 @@ class PmsFolioService(Component): "checkout": datetime.combine( reservation.checkout, datetime.min.time() ).isoformat(), - "preferredRoomShortName": reservation.preferred_room_id.short_name + "preferredRoomId": reservation.preferred_room_id.id if reservation.preferred_room_id else None, + "roomTypeId": reservation.room_type_id.id + if reservation.room_type_id + else None, "adults": reservation.adults, - "pricelistName": reservation.pricelist_id.name, - "saleChannel": reservation.channel_type_id.name + "pricelistId": reservation.pricelist_id.id + if reservation.pricelist_id + else None, + "saleChannelId": reservation.channel_type_id.id if reservation.channel_type_id else None, - "agency": reservation.agency_id.name + "agencyId": reservation.agency_id.id if reservation.agency_id else None, - "agencyImage": reservation.agency_id.image_1024.decode("utf-8") - if reservation.agency_id and reservation.agency_id.image_1024 - else None, + "splitted": reservation.splitted, } ) result_folios.append( @@ -147,13 +150,12 @@ class PmsFolioService(Component): partnerEmail=folio.email if folio.email else None, amountTotal=folio.amount_total, reservations=[] if not reservations else reservations, - paymentState=dict( + paymentStateCode=folio.payment_state, + paymentStateDescription=dict( folio.fields_get(["payment_state"])["payment_state"][ "selection" ] - )[folio.payment_state] - if folio.payment_state - else None, + )[folio.payment_state], ) ) return result_folios @@ -174,7 +176,8 @@ class PmsFolioService(Component): def get_folio_payments(self, folio_id, pms_search_param): domain = list() domain.append(("id", "=", folio_id)) - domain.append(("pms_property_id", "=", pms_search_param.pmsPropertyId)) + if pms_search_param.pmsPropertyId: + domain.append(("pms_property_id", "=", pms_search_param.pmsPropertyId)) folio = self.env["pms.folio"].search(domain) payments = [] PmsPaymentInfo = self.env.datamodels["pms.payment.info"] @@ -191,9 +194,10 @@ class PmsFolioService(Component): PmsPaymentInfo( id=payment.id, amount=payment.amount, - journalId=payment.journal_id, - journalName=payment.journal_id.name, - date=str(payment.date), + journalId=payment.journal_id.id, + date=datetime.combine( + payment.date, datetime.min.time() + ).isoformat(), ) ) if folio.payment_ids: @@ -203,9 +207,10 @@ class PmsFolioService(Component): PmsPaymentInfo( id=payment.id, amount=payment.amount, - journalId=payment.journal_id, - journalName=payment.journal_id.name, - date=str(payment.date), + journalId=payment.journal_id.id, + date=datetime.combine( + payment.date, datetime.min.time() + ).isoformat(), ) ) return payments @@ -234,25 +239,32 @@ class PmsFolioService(Component): reservations.append( PmsReservationShortInfo( id=reservation.id, - boardServiceName=reservation.board_service_room_id.pms_board_service_id.name - or None, + boardServiceId=reservation.board_service_room_id.id + if reservation.board_service_room_id + else None, checkin=datetime.combine( reservation.checkin, datetime.min.time() ).isoformat(), checkout=datetime.combine( reservation.checkout, datetime.min.time() ).isoformat(), - roomTypeName=reservation.room_type_id.name or None, - preferredRoomShortName=reservation.preferred_room_id.short_name - or None, + roomTypeId=reservation.room_type_id.id + if reservation.room_type_id + else None, + preferredRoomId=reservation.preferred_room_id.id + if reservation.preferred_room_id + else None, adults=reservation.adults, - state=dict( + stateCode=reservation.state, + stateDescription=dict( reservation.fields_get(["state"])["state"]["selection"] )[reservation.state], - children=reservation.children or None, + children=reservation.children + if reservation.children + else None, readyForCheckin=reservation.ready_for_checkin, allowedCheckout=reservation.allowed_checkout, - isSplitted=reservation.splitted, + splitted=reservation.splitted, priceTotal=reservation.price_room_services_set, servicesCount=len( reservation.service_ids.filtered( diff --git a/pms_api_rest/services/pms_id_categories_service.py b/pms_api_rest/services/pms_id_category_service.py similarity index 71% rename from pms_api_rest/services/pms_id_categories_service.py rename to pms_api_rest/services/pms_id_category_service.py index 1a7a13e15..57db6a43b 100644 --- a/pms_api_rest/services/pms_id_categories_service.py +++ b/pms_api_rest/services/pms_id_category_service.py @@ -3,10 +3,10 @@ from odoo.addons.base_rest_datamodel.restapi import Datamodel from odoo.addons.component.core import Component -class PmsIdCategoriesService(Component): +class PmsIdCategoryService(Component): _inherit = "base.rest.service" - _name = "pms.id.categories.services" - _usage = "id_categories" + _name = "pms.id.category.service" + _usage = "id-categories" _collection = "pms.services" @restapi.method( @@ -18,15 +18,15 @@ class PmsIdCategoriesService(Component): "GET", ) ], - output_param=Datamodel("pms.id.categories.info", is_list=True), + output_param=Datamodel("pms.id.category.info", is_list=True), auth="jwt_api_pms", ) def get_id_categories(self): result_id_categories = [] - PmsIdCategoriesInfo = self.env.datamodels["pms.id.categories.info"] + PmsIdCategoryInfo = self.env.datamodels["pms.id.category.info"] for id_category in self.env["res.partner.id_category"].search([]): result_id_categories.append( - PmsIdCategoriesInfo( + PmsIdCategoryInfo( id=id_category.id, documentType=id_category.name, ) diff --git a/pms_api_rest/services/pms_partner_service.py b/pms_api_rest/services/pms_partner_service.py index 2a95e6af0..5933c7a68 100644 --- a/pms_api_rest/services/pms_partner_service.py +++ b/pms_api_rest/services/pms_partner_service.py @@ -32,7 +32,7 @@ class PmsPartnerService(Component): result_partners.append( PmsPartnerInfo( id=partner.id, - name=partner.name, + name=partner.name if partner.name else None, ) ) return result_partners @@ -72,51 +72,51 @@ class PmsPartnerService(Component): # id=doc_number.partner_id.id, name=doc_number.partner_id.name if doc_number.partner_id.name - else "", + else None, firstname=doc_number.partner_id.firstname if doc_number.partner_id.firstname - else "", + else None, lastname=doc_number.partner_id.lastname if doc_number.partner_id.lastname - else "", + else None, lastname2=doc_number.partner_id.lastname2 if doc_number.partner_id.lastname2 - else "", + else None, email=doc_number.partner_id.email if doc_number.partner_id.email - else "", + else None, mobile=doc_number.partner_id.mobile if doc_number.partner_id.mobile - else "", + else None, documentType=doc_type.id, documentNumber=doc_number.name, documentExpeditionDate=document_expedition_date if doc_number.valid_from - else "", + else None, documentSupportNumber=doc_number.support_number if doc_number.support_number - else "", + else None, gender=doc_number.partner_id.gender if doc_number.partner_id.gender - else "", + else None, birthdate=birthdate_date if doc_number.partner_id.birthdate_date - else "", + else None, residenceStreet=doc_number.partner_id.residence_street if doc_number.partner_id.residence_street - else "", + else None, zip=doc_number.partner_id.residence_zip if doc_number.partner_id.residence_zip - else "", + else None, residenceCity=doc_number.partner_id.residence_city if doc_number.partner_id.residence_city - else "", + else None, nationality=doc_number.partner_id.nationality_id.id if doc_number.partner_id.nationality_id - else -1, + else None, countryState=doc_number.partner_id.residence_state_id.id if doc_number.partner_id.residence_state_id - else -1, + else None, ) ) return partners diff --git a/pms_api_rest/services/pms_pricelist_service.py b/pms_api_rest/services/pms_pricelist_service.py index 6949f0e0e..cd5ea779c 100644 --- a/pms_api_rest/services/pms_pricelist_service.py +++ b/pms_api_rest/services/pms_pricelist_service.py @@ -60,6 +60,10 @@ class PmsPricelistService(Component): PmsPricelistInfo( id=pricelist.id, name=pricelist.name, + cancellationPolicyId=pricelist.cancelation_rule_id.id + if pricelist.cancelation_rule_id + else None, + defaultAvailabilityPlanId=pricelist.availability_plan_id.id, pmsPropertyIds=pricelist.pms_property_ids.mapped("id"), ) ) diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py index 991eaaed0..8c6f881e0 100644 --- a/pms_api_rest/services/pms_property_service.py +++ b/pms_api_rest/services/pms_property_service.py @@ -32,9 +32,7 @@ class PmsPropertyService(Component): PmsPropertyInfo( id=prop.id, name=prop.name, - company=prop.company_id.name, defaultPricelistId=prop.default_pricelist_id.id, - defaultAvailabilityPlanId=prop.default_pricelist_id.availability_plan_id.id, colorOptionConfig=prop.color_option_config, preReservationColor=prop.pre_reservation_color, confirmedReservationColor=prop.confirmed_reservation_color, @@ -66,7 +64,6 @@ class PmsPropertyService(Component): ) def get_property(self, property_id): pms_property = self.env["pms.property"].search([("id", "=", property_id)]) - default_avail = pms_property.default_pricelist_id.availability_plan_id.id res = [] PmsPropertyInfo = self.env.datamodels["pms.property.info"] if not pms_property: @@ -77,7 +74,6 @@ class PmsPropertyService(Component): name=pms_property.name, company=pms_property.company_id.name, defaultPricelistId=pms_property.default_pricelist_id.id, - defaultAvailabilityPlanId=default_avail, colorOptionConfig=pms_property.color_option_config, preReservationColor=pms_property.pre_reservation_color, confirmedReservationColor=pms_property.confirmed_reservation_color, @@ -120,7 +116,7 @@ class PmsPropertyService(Component): PmsAccountJournalInfo( id=payment_method.id, name=payment_method.name, - allowedPmsPayments=payment_method.allowed_pms_payments, + allowedPayments=payment_method.allowed_pms_payments, ) ) return res diff --git a/pms_api_rest/services/pms_reservation_service.py b/pms_api_rest/services/pms_reservation_service.py index bb3c9fbe8..fc0356615 100644 --- a/pms_api_rest/services/pms_reservation_service.py +++ b/pms_api_rest/services/pms_reservation_service.py @@ -38,20 +38,6 @@ class PmsReservationService(Component): if not reservation: pass else: - # services = [] - # for service in reservation.service_ids: - # if service.is_board_service: - # services.append( - # { - # "id": service.id, - # "name": service.name, - # "quantity": service.product_qty, - # "priceTotal": service.price_total, - # "priceSubtotal": service.price_subtotal, - # "priceTaxes": service.price_tax, - # "discount": service.discount, - # } - # ) # messages = [] # import re @@ -69,10 +55,15 @@ class PmsReservationService(Component): id=reservation.id, name=reservation.name, folioId=reservation.folio_id.id, + folioSequence=reservation.folio_sequence, partnerName=reservation.partner_name, - boardServiceId=reservation.board_service_room_id.id or None, - saleChannelId=reservation.channel_type_id.id or None, - agencyId=reservation.agency_id.id or None, + boardServiceId=reservation.board_service_room_id.id + if reservation.board_service_room_id + else None, + saleChannelId=reservation.channel_type_id.id + if reservation.channel_type_id + else None, + agencyId=reservation.agency_id.id if reservation.agency_id else None, checkin=datetime.combine( reservation.checkin, datetime.min.time() ).isoformat(), @@ -81,16 +72,25 @@ class PmsReservationService(Component): ).isoformat(), arrivalHour=reservation.arrival_hour, departureHour=reservation.departure_hour, - roomTypeId=reservation.room_type_id.id or None, - preferredRoomId=reservation.preferred_room_id.id or None, - pricelistId=reservation.pricelist_id.id, - adults=reservation.adults, + roomTypeId=reservation.room_type_id.id + if reservation.room_type_id + else None, + preferredRoomId=reservation.preferred_room_id.id + if reservation.preferred_room_id + else None, + pricelistId=reservation.pricelist_id.id + if reservation.pricelist_id + else None, + adults=reservation.adults if reservation.adults else None, overbooking=reservation.overbooking, - externalReference=reservation.external_reference or None, - state=dict(reservation.fields_get(["state"])["state"]["selection"])[ - reservation.state - ], - children=reservation.children or None, + externalReference=reservation.external_reference + if reservation.external_reference + else None, + stateCode=reservation.state, + stateDescription=dict( + reservation.fields_get(["state"])["state"]["selection"] + )[reservation.state], + children=reservation.children if reservation.children else None, readyForCheckin=reservation.ready_for_checkin, allowedCheckout=reservation.allowed_checkout, isSplitted=reservation.splitted, @@ -101,13 +101,13 @@ class PmsReservationService(Component): segmentationId=reservation.segmentation_ids[0].id if reservation.segmentation_ids else None, - cancellationPolicyId=reservation.pricelist_id.cancelation_rule_id.id - or None, toAssign=reservation.to_assign, reservationType=reservation.reservation_type, priceTotal=reservation.price_room_services_set, discount=reservation.discount, - commissionAmount=reservation.commission_amount or None, + commissionAmount=reservation.commission_amount + if reservation.commission_amount + else None, priceOnlyServices=reservation.price_services, priceOnlyRoom=reservation.price_total, ) @@ -338,46 +338,46 @@ class PmsReservationService(Component): name=checkin_partner.name if checkin_partner.name else "", firstname=checkin_partner.firstname if checkin_partner.firstname - else "", + else None, lastname=checkin_partner.lastname if checkin_partner.lastname - else "", + else None, lastname2=checkin_partner.lastname2 if checkin_partner.lastname2 - else "", + else None, email=checkin_partner.email if checkin_partner.email else "", mobile=checkin_partner.mobile if checkin_partner.mobile else "", documentType=checkin_partner.document_type.id if checkin_partner.document_type - else -1, + else None, documentNumber=checkin_partner.document_number if checkin_partner.document_number - else "", + else None, documentExpeditionDate=document_expedition_date if checkin_partner.document_expedition_date - else "", + else None, documentSupportNumber=checkin_partner.support_number if checkin_partner.support_number - else "", + else None, gender=checkin_partner.gender if checkin_partner.gender else "", birthdate=birthdate_date if checkin_partner.birthdate_date - else "", + else None, residenceStreet=checkin_partner.residence_street if checkin_partner.residence_street - else "", + else None, zip=checkin_partner.residence_zip if checkin_partner.residence_zip - else "", + else None, residenceCity=checkin_partner.residence_city if checkin_partner.residence_city - else "", + else None, nationality=checkin_partner.residence_country_id.id if checkin_partner.residence_country_id - else -1, + else None, countryState=checkin_partner.residence_state_id.id if checkin_partner.residence_state_id - else -1, + else None, checkinPartnerState=checkin_partner.state, ) ) diff --git a/pms_api_rest/services/pms_room_service.py b/pms_api_rest/services/pms_room_service.py index 793a4bc45..4237541f5 100644 --- a/pms_api_rest/services/pms_room_service.py +++ b/pms_api_rest/services/pms_room_service.py @@ -78,7 +78,9 @@ 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, + roomAmenityIds=room.room_amenity_ids.ids + if room.room_amenity_ids + else None, ) ) return result_rooms diff --git a/pms_api_rest/services/pms_room_type_class_service.py b/pms_api_rest/services/pms_room_type_class_service.py index f767b6582..876ac23f9 100644 --- a/pms_api_rest/services/pms_room_type_class_service.py +++ b/pms_api_rest/services/pms_room_type_class_service.py @@ -6,7 +6,7 @@ from odoo.addons.component.core import Component class PmsRoomTypeClassService(Component): _inherit = "base.rest.service" _name = "pms.room.type.class.service" - _usage = "room-type-class" + _usage = "room-type-classes" _collection = "pms.services" @restapi.method( diff --git a/pms_api_rest/services/pms_sale_channel_service.py b/pms_api_rest/services/pms_sale_channel_service.py index 73ba38b18..16f774e93 100644 --- a/pms_api_rest/services/pms_sale_channel_service.py +++ b/pms_api_rest/services/pms_sale_channel_service.py @@ -9,7 +9,7 @@ from odoo.addons.component.core import Component class PmsSaleChannelService(Component): _inherit = "base.rest.service" _name = "pms.sale.channel.service" - _usage = "sale-channel" + _usage = "sale-channels" _collection = "pms.services" @restapi.method( @@ -58,7 +58,7 @@ class PmsSaleChannelService(Component): result_sale_channels.append( PmsSaleChannelInfo( id=sale_channel.id, - name=sale_channel.name, + name=sale_channel.name if sale_channel.name else None, ) ) return result_sale_channels @@ -83,7 +83,7 @@ class PmsSaleChannelService(Component): PmsSaleChannelInfo = self.env.datamodels["pms.sale.channel.info"] return PmsSaleChannelInfo( id=sale_channel.id, - name=sale_channel.name, + name=sale_channel.name if sale_channel else None, ) else: raise MissingError(_("Sale Channel not found")) diff --git a/pms_api_rest/services/pms_service_line_service.py b/pms_api_rest/services/pms_service_line_service.py index 7637a0044..75039d397 100644 --- a/pms_api_rest/services/pms_service_line_service.py +++ b/pms_api_rest/services/pms_service_line_service.py @@ -11,7 +11,7 @@ from odoo.addons.component.core import Component class PmsServiceService(Component): _inherit = "base.rest.service" _name = "pms.reservation.line.service" - _usage = "service" + _usage = "services" _collection = "pms.services" @restapi.method( @@ -27,9 +27,7 @@ class PmsServiceService(Component): auth="jwt_api_pms", ) def get_service_lines(self, service_id): - service = self.env["pms.service"].search( - [("id", "=", service_id)] - ) + service = self.env["pms.service"].search([("id", "=", service_id)]) if not service: raise MissingError(_("Service not found")) result_service_lines = [] @@ -49,4 +47,3 @@ class PmsServiceService(Component): ) ) return result_service_lines - diff --git a/pms_api_rest/services/pms_ubication_service.py b/pms_api_rest/services/pms_ubication_service.py index a2fe08511..124dd30e4 100644 --- a/pms_api_rest/services/pms_ubication_service.py +++ b/pms_api_rest/services/pms_ubication_service.py @@ -6,7 +6,7 @@ from odoo.addons.component.core import Component class PmsUbicationService(Component): _inherit = "base.rest.service" _name = "pms.ubication.service" - _usage = "ubication" + _usage = "ubications" _collection = "pms.services" @restapi.method( @@ -47,15 +47,15 @@ class PmsUbicationService(Component): result_ubications = [] PmsUbicationInfo = self.env.datamodels["pms.ubication.info"] - for room in self.env["pms.ubication"].search( + for ubication in self.env["pms.ubication"].search( domain, ): result_ubications.append( PmsUbicationInfo( - id=room.id, - name=room.name, - pmsPropertyIds=room.pms_property_ids.mapped("id"), + id=ubication.id, + name=ubication.name, + pmsPropertyIds=ubication.pms_property_ids.mapped("id"), ) ) return result_ubications diff --git a/pms_api_rest/services/res_city_zip_service.py b/pms_api_rest/services/res_city_zip_service.py index 12efe97be..fa35ab494 100644 --- a/pms_api_rest/services/res_city_zip_service.py +++ b/pms_api_rest/services/res_city_zip_service.py @@ -3,10 +3,10 @@ from odoo.addons.base_rest_datamodel.restapi import Datamodel from odoo.addons.component.core import Component -class PmsIdCategoriesService(Component): +class ResCityZipService(Component): _inherit = "base.rest.service" - _name = "res.city.zip.services" - _usage = "zip" + _name = "res.city.zip.service" + _usage = "zips" _collection = "pms.services" @restapi.method( diff --git a/pms_api_rest/services/res_country_service.py b/pms_api_rest/services/res_country_service.py index e5ff5e0e9..d8bb1c2ee 100644 --- a/pms_api_rest/services/res_country_service.py +++ b/pms_api_rest/services/res_country_service.py @@ -5,7 +5,7 @@ from odoo.addons.component.core import Component class ResCountryService(Component): _inherit = "base.rest.service" - _name = "res.country.services" + _name = "res.country.service" _usage = "countries" _collection = "pms.services" diff --git a/pms_api_rest/services/res_partner_category_service.py b/pms_api_rest/services/res_partner_category_service.py index 8b99521fd..b24dfdf1a 100644 --- a/pms_api_rest/services/res_partner_category_service.py +++ b/pms_api_rest/services/res_partner_category_service.py @@ -3,9 +3,9 @@ from odoo.addons.base_rest_datamodel.restapi import Datamodel from odoo.addons.component.core import Component -class PmsIdCategoriesService(Component): +class PmsPartnerCategoriesService(Component): _inherit = "base.rest.service" - _name = "res.partner.category.services" + _name = "res.partner.category.service" _usage = "segmentations" _collection = "pms.services"