mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]pms_api_rest: added services and datamodels for save checkin partners data
This commit is contained in:
@@ -9,6 +9,9 @@ class PmsReservationUpdates(Datamodel):
|
||||
preferredRoomId = fields.Integer(required=False, allow_none=True)
|
||||
boardServiceId = fields.Integer(required=False, allow_none=True)
|
||||
pricelistId = fields.Integer(required=False, allow_none=True)
|
||||
adults = fields.Integer(required=False, allow_none=True)
|
||||
children = fields.Integer(required=False, allow_none=True)
|
||||
segmentationId = fields.Integer(required=False, allow_none=True)
|
||||
|
||||
|
||||
class PmsCalendarSwapInfo(Datamodel):
|
||||
|
||||
@@ -13,7 +13,7 @@ class PmsCheckinPartnerInfo(Datamodel):
|
||||
lastname2 = fields.String(required=False, allow_none=True)
|
||||
email = fields.String(required=False, allow_none=True)
|
||||
mobile = fields.String(required=False, allow_none=True)
|
||||
documentType = fields.String(required=False, allow_none=True)
|
||||
documentType = fields.Integer(required=False, allow_none=True)
|
||||
documentNumber = fields.String(required=False, allow_none=True)
|
||||
documentExpeditionDate = fields.String(required=False, allow_none=True)
|
||||
documentSupportNumber = fields.String(required=False, allow_none=True)
|
||||
@@ -22,5 +22,6 @@ class PmsCheckinPartnerInfo(Datamodel):
|
||||
residenceStreet = fields.String(required=False, allow_none=True)
|
||||
zip = fields.String(required=False, allow_none=True)
|
||||
residenceCity = fields.String(required=False, allow_none=True)
|
||||
nationality = fields.String(required=False, allow_none=True)
|
||||
countryState = fields.String(required=False, allow_none=True)
|
||||
nationality = fields.Integer(required=False, allow_none=True)
|
||||
countryState = fields.Integer(required=False, allow_none=True)
|
||||
checkinPartnerState = fields.String(required=False, allow_none=True)
|
||||
|
||||
@@ -90,7 +90,7 @@ class PmsFolioService(Component):
|
||||
segmentation_ids = []
|
||||
if reservation.segmentation_ids:
|
||||
for segmentation in reservation.segmentation_ids:
|
||||
segmentation_ids.append(segmentation.name)
|
||||
segmentation_ids.append(segmentation.id)
|
||||
|
||||
reservations.append(
|
||||
{
|
||||
@@ -149,9 +149,7 @@ class PmsFolioService(Component):
|
||||
"roomTypeCode": reservation.room_type_id.default_code
|
||||
if reservation.room_type_id
|
||||
else "",
|
||||
"children": reservation.children
|
||||
if reservation.children
|
||||
else "",
|
||||
"children": reservation.children if reservation.children else 0,
|
||||
"countServices": len(reservation.service_ids)
|
||||
if reservation.service_ids
|
||||
else 0,
|
||||
@@ -162,9 +160,9 @@ class PmsFolioService(Component):
|
||||
"departureHour": reservation.departure_hour,
|
||||
"pendingCheckinData": reservation.pending_checkin_data,
|
||||
"createDate": reservation.create_date,
|
||||
"segmentations": segmentation_ids[0]
|
||||
"segmentationId": segmentation_ids[0]
|
||||
if segmentation_ids
|
||||
else "",
|
||||
else 0,
|
||||
"cancellationPolicy": reservation.pricelist_id.cancelation_rule_id.name
|
||||
if reservation.pricelist_id.cancelation_rule_id.name
|
||||
else "",
|
||||
|
||||
@@ -51,7 +51,7 @@ class PmsPartnerService(Component):
|
||||
)
|
||||
def get_partner_by_doc_number(self, document_type, document_number):
|
||||
doc_type = self.env["res.partner.id_category"].search(
|
||||
[("name", "=", document_type)]
|
||||
[("id", "=", document_type)]
|
||||
)
|
||||
doc_number = self.env["res.partner.id_number"].search(
|
||||
[("name", "=", document_number), ("category_id", "=", doc_type.id)]
|
||||
@@ -88,7 +88,7 @@ class PmsPartnerService(Component):
|
||||
mobile=doc_number.partner_id.mobile
|
||||
if doc_number.partner_id.mobile
|
||||
else "",
|
||||
documentType=doc_type.name,
|
||||
documentType=doc_type.id,
|
||||
documentNumber=doc_number.name,
|
||||
documentExpeditionDate=document_expedition_date
|
||||
if doc_number.valid_from
|
||||
@@ -111,12 +111,12 @@ class PmsPartnerService(Component):
|
||||
residenceCity=doc_number.partner_id.residence_city
|
||||
if doc_number.partner_id.residence_city
|
||||
else "",
|
||||
nationality=doc_number.partner_id.nationality_id.name
|
||||
nationality=doc_number.partner_id.nationality_id.id
|
||||
if doc_number.partner_id.nationality_id
|
||||
else "",
|
||||
countryState=doc_number.partner_id.residence_state_id.name
|
||||
else -1,
|
||||
countryState=doc_number.partner_id.residence_state_id.id
|
||||
if doc_number.partner_id.residence_state_id
|
||||
else "",
|
||||
else -1,
|
||||
)
|
||||
)
|
||||
return partners
|
||||
|
||||
@@ -192,7 +192,20 @@ class PmsReservationService(Component):
|
||||
reservation_vals.update(
|
||||
{"pricelist_id": reservation_lines_changes.pricelistId}
|
||||
)
|
||||
|
||||
if reservation_lines_changes.adults:
|
||||
reservation_vals.update({"adults": reservation_lines_changes.adults})
|
||||
if reservation_lines_changes.children:
|
||||
reservation_vals.update(
|
||||
{"children": reservation_lines_changes.children}
|
||||
)
|
||||
if reservation_lines_changes.segmentationId:
|
||||
reservation_vals.update(
|
||||
{
|
||||
"segmentation_ids": [
|
||||
(6, 0, [reservation_lines_changes.segmentationId])
|
||||
]
|
||||
}
|
||||
)
|
||||
reservation_to_update.write(reservation_vals)
|
||||
|
||||
@restapi.method(
|
||||
@@ -214,7 +227,10 @@ class PmsReservationService(Component):
|
||||
if not reservation:
|
||||
pass
|
||||
else:
|
||||
for checkin_partner in reservation.checkin_partner_ids:
|
||||
# TODO Review state draft
|
||||
for checkin_partner in reservation.checkin_partner_ids.filtered(
|
||||
lambda ch: ch.state != "dummy"
|
||||
):
|
||||
if checkin_partner.document_expedition_date:
|
||||
document_expedition_date = (
|
||||
checkin_partner.document_expedition_date.strftime("%d/%m/%Y")
|
||||
@@ -237,9 +253,9 @@ class PmsReservationService(Component):
|
||||
else "",
|
||||
email=checkin_partner.email if checkin_partner.email else "",
|
||||
mobile=checkin_partner.mobile if checkin_partner.mobile else "",
|
||||
documentType=checkin_partner.document_type.name
|
||||
if checkin_partner.document_type.name
|
||||
else "",
|
||||
documentType=checkin_partner.document_type.id
|
||||
if checkin_partner.document_type
|
||||
else -1,
|
||||
documentNumber=checkin_partner.document_number
|
||||
if checkin_partner.document_number
|
||||
else "",
|
||||
@@ -262,12 +278,13 @@ class PmsReservationService(Component):
|
||||
residenceCity=checkin_partner.residence_city
|
||||
if checkin_partner.residence_city
|
||||
else "",
|
||||
nationality=checkin_partner.residence_country_id.name
|
||||
nationality=checkin_partner.residence_country_id.id
|
||||
if checkin_partner.residence_country_id
|
||||
else "",
|
||||
countryState=checkin_partner.residence_state_id.name
|
||||
else -1,
|
||||
countryState=checkin_partner.residence_state_id.id
|
||||
if checkin_partner.residence_state_id
|
||||
else "",
|
||||
else -1,
|
||||
checkinPartnerState=checkin_partner.state,
|
||||
)
|
||||
)
|
||||
return checkin_partners
|
||||
@@ -276,64 +293,7 @@ class PmsReservationService(Component):
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/adults/<int:adults>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_reservation_adults(self, reservation_id, adults):
|
||||
reservation_id = self.env["pms.reservation"].browse(reservation_id)
|
||||
reservation_id.write(
|
||||
{
|
||||
"adults": adults,
|
||||
}
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/children/<int:children>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_reservation_children(self, reservation_id, children):
|
||||
reservation_id = self.env["pms.reservation"].browse(reservation_id)
|
||||
reservation_id.write(
|
||||
{
|
||||
"children": children,
|
||||
}
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/segmentation/<int:segmentation_id>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
],
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def update_segmentation_id(self, reservation_id, segmentation_id):
|
||||
reservation_id = self.env["pms.reservation"].browse(reservation_id)
|
||||
reservation_id.write(
|
||||
{
|
||||
"segmentation_ids": [segmentation_id],
|
||||
}
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/checkin_partner/<int:checkin_partner_id>",
|
||||
"/<int:reservation_id>/checkin_partners/<int:checkin_partner_id>",
|
||||
],
|
||||
"PATCH",
|
||||
)
|
||||
@@ -348,60 +308,109 @@ class PmsReservationService(Component):
|
||||
[("id", "=", checkin_partner_id), ("reservation_id", "=", reservation_id)]
|
||||
)
|
||||
if checkin_partner:
|
||||
vals = dict()
|
||||
if pms_checkin_partner_info.firstname:
|
||||
vals.update({"firstname": pms_checkin_partner_info.firstname})
|
||||
if pms_checkin_partner_info.lastname:
|
||||
vals.update({"lastname": pms_checkin_partner_info.lastname})
|
||||
if pms_checkin_partner_info.lastname2:
|
||||
vals.update({"lastname2": pms_checkin_partner_info.lastname2})
|
||||
if pms_checkin_partner_info.email:
|
||||
vals.update({"email": pms_checkin_partner_info.email})
|
||||
if pms_checkin_partner_info.mobile:
|
||||
vals.update({"mobile": pms_checkin_partner_info.mobile})
|
||||
if pms_checkin_partner_info.documentType:
|
||||
document_type = self.env["res.partner.id_category"].search(
|
||||
[("name", "=", pms_checkin_partner_info.documentType)]
|
||||
checkin_partner.write(
|
||||
self._get_checkin_partner_values(pms_checkin_partner_info)
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/checkin_partners",
|
||||
],
|
||||
"POST",
|
||||
)
|
||||
],
|
||||
input_param=Datamodel("pms.checkin.partner.info", is_list=False),
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def create_reservation_checkin_partner(
|
||||
self, reservation_id, pms_checkin_partner_info
|
||||
):
|
||||
reservation_rec = self.env["pms.reservation"].browse(reservation_id)
|
||||
if any(
|
||||
reservation_rec.checkin_partner_ids.filtered(lambda ch: ch.state == "dummy")
|
||||
):
|
||||
checkin_partner_last_id = max(
|
||||
reservation_rec.checkin_partner_ids.filtered(
|
||||
lambda ch: ch.state == "dummy"
|
||||
)
|
||||
vals.update({"document_type": document_type})
|
||||
if pms_checkin_partner_info.documentNumber:
|
||||
vals.update(
|
||||
{"document_number": pms_checkin_partner_info.documentNumber}
|
||||
)
|
||||
if pms_checkin_partner_info.documentExpeditionDate:
|
||||
document_expedition_date = datetime.strptime(
|
||||
pms_checkin_partner_info.documentExpeditionDate, "%d/%m/%Y"
|
||||
)
|
||||
document_expedition_date = document_expedition_date.strftime("%Y-%m-%d")
|
||||
vals.update({"document_expedition_date": document_expedition_date})
|
||||
if pms_checkin_partner_info.documentSupportNumber:
|
||||
vals.update(
|
||||
{"support_number": pms_checkin_partner_info.documentSupportNumber}
|
||||
)
|
||||
if pms_checkin_partner_info.gender:
|
||||
vals.update({"gender": pms_checkin_partner_info.gender})
|
||||
if pms_checkin_partner_info.birthdate:
|
||||
birthdate = datetime.strptime(
|
||||
pms_checkin_partner_info.birthdate, "%d/%m/%Y"
|
||||
)
|
||||
birthdate = birthdate.strftime("%Y-%m-%d")
|
||||
vals.update({"birthdate_date": birthdate})
|
||||
if pms_checkin_partner_info.residenceStreet:
|
||||
vals.update(
|
||||
{"residence_street": pms_checkin_partner_info.residenceStreet}
|
||||
)
|
||||
if pms_checkin_partner_info.zip:
|
||||
vals.update({"residence_zip": pms_checkin_partner_info.zip})
|
||||
if pms_checkin_partner_info.residenceCity:
|
||||
vals.update({"residence_city": pms_checkin_partner_info.residenceCity})
|
||||
if pms_checkin_partner_info.nationality:
|
||||
country_id = self.env["res.country"].search(
|
||||
[("name", "=", pms_checkin_partner_info.nationality)]
|
||||
)
|
||||
vals.update({"residence_country_id": country_id})
|
||||
if pms_checkin_partner_info.countryState:
|
||||
country_state = self.env["res.country.state"].search(
|
||||
[("name", "=", pms_checkin_partner_info.countryState)]
|
||||
)
|
||||
vals.update({"residence_state_id": country_state})
|
||||
checkin_partner.write(vals)
|
||||
).id
|
||||
checkin_partner = self.env["pms.checkin.partner"].browse(
|
||||
checkin_partner_last_id
|
||||
)
|
||||
checkin_partner.write(
|
||||
self._get_checkin_partner_values(pms_checkin_partner_info)
|
||||
)
|
||||
|
||||
@restapi.method(
|
||||
[
|
||||
(
|
||||
[
|
||||
"/<int:reservation_id>/checkin_partners/<int:checkin_partner_id>",
|
||||
],
|
||||
"DELETE",
|
||||
)
|
||||
],
|
||||
auth="jwt_api_pms",
|
||||
)
|
||||
def delete_reservation_checkin_partner(self, reservation_id, checkin_partner_id):
|
||||
reservation = self.env["pms.reservation"].browse(reservation_id)
|
||||
reservation.adults = reservation.adults - 1
|
||||
|
||||
def _get_checkin_partner_values(self, pms_checkin_partner_info):
|
||||
vals = dict()
|
||||
if pms_checkin_partner_info.firstname:
|
||||
vals.update({"firstname": pms_checkin_partner_info.firstname})
|
||||
if pms_checkin_partner_info.lastname:
|
||||
vals.update({"lastname": pms_checkin_partner_info.lastname})
|
||||
if pms_checkin_partner_info.lastname2:
|
||||
vals.update({"lastname2": pms_checkin_partner_info.lastname2})
|
||||
if pms_checkin_partner_info.email:
|
||||
vals.update({"email": pms_checkin_partner_info.email})
|
||||
if pms_checkin_partner_info.mobile:
|
||||
vals.update({"mobile": pms_checkin_partner_info.mobile})
|
||||
if (
|
||||
pms_checkin_partner_info.documentType
|
||||
and pms_checkin_partner_info.documentType != -1
|
||||
):
|
||||
document_type = pms_checkin_partner_info.documentType
|
||||
vals.update({"document_type": document_type})
|
||||
if pms_checkin_partner_info.documentNumber:
|
||||
vals.update({"document_number": pms_checkin_partner_info.documentNumber})
|
||||
if pms_checkin_partner_info.documentExpeditionDate:
|
||||
document_expedition_date = datetime.strptime(
|
||||
pms_checkin_partner_info.documentExpeditionDate, "%d/%m/%Y"
|
||||
)
|
||||
document_expedition_date = document_expedition_date.strftime("%Y-%m-%d")
|
||||
vals.update({"document_expedition_date": document_expedition_date})
|
||||
if pms_checkin_partner_info.documentSupportNumber:
|
||||
vals.update(
|
||||
{"support_number": pms_checkin_partner_info.documentSupportNumber}
|
||||
)
|
||||
if pms_checkin_partner_info.gender:
|
||||
vals.update({"gender": pms_checkin_partner_info.gender})
|
||||
if pms_checkin_partner_info.birthdate:
|
||||
birthdate = datetime.strptime(
|
||||
pms_checkin_partner_info.birthdate, "%d/%m/%Y"
|
||||
)
|
||||
birthdate = birthdate.strftime("%Y-%m-%d")
|
||||
vals.update({"birthdate_date": birthdate})
|
||||
if pms_checkin_partner_info.residenceStreet:
|
||||
vals.update({"residence_street": pms_checkin_partner_info.residenceStreet})
|
||||
if pms_checkin_partner_info.zip:
|
||||
vals.update({"residence_zip": pms_checkin_partner_info.zip})
|
||||
if pms_checkin_partner_info.residenceCity:
|
||||
vals.update({"residence_city": pms_checkin_partner_info.residenceCity})
|
||||
if (
|
||||
pms_checkin_partner_info.nationality
|
||||
and pms_checkin_partner_info.nationality != -1
|
||||
):
|
||||
vals.update({"nationality_id": pms_checkin_partner_info.nationality})
|
||||
vals.update({"residence_country_id": pms_checkin_partner_info.nationality})
|
||||
if (
|
||||
pms_checkin_partner_info.countryState
|
||||
and pms_checkin_partner_info.countryState != -1
|
||||
):
|
||||
vals.update({"residence_state_id": pms_checkin_partner_info.countryState})
|
||||
return vals
|
||||
|
||||
Reference in New Issue
Block a user