mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
@@ -35,7 +35,10 @@ class PmsReservation(models.Model):
|
|||||||
@api.model
|
@api.model
|
||||||
def create(self, vals):
|
def create(self, vals):
|
||||||
reservation = super(PmsReservation, self).create(vals)
|
reservation = super(PmsReservation, self).create(vals)
|
||||||
if reservation.pms_property_id.institution == "ses":
|
if (
|
||||||
|
reservation.pms_property_id.institution == "ses"
|
||||||
|
and reservation.reservation_type != "out"
|
||||||
|
):
|
||||||
self.create_communication(reservation.id, CREATE_OPERATION_CODE, "RH")
|
self.create_communication(reservation.id, CREATE_OPERATION_CODE, "RH")
|
||||||
return reservation
|
return reservation
|
||||||
|
|
||||||
|
|||||||
@@ -37,11 +37,20 @@ DELETE_OPERATION_CODE = "B"
|
|||||||
# requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
# requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
||||||
|
|
||||||
|
|
||||||
def clean_string_ses(string):
|
def replace_multiple_spaces(text: str) -> str:
|
||||||
clean_string = re.sub(r"[^a-zA-Z0-9\s]", "", string).upper()
|
# Replace 2 or more consecutive spaces with a single space
|
||||||
|
return re.sub(r"\s{2,}", " ", text)
|
||||||
|
|
||||||
|
|
||||||
|
def clean_string_only_letters(string):
|
||||||
|
clean_string = re.sub(r"[^a-zA-Z\s]", "", string).upper()
|
||||||
clean_string = " ".join(clean_string.split())
|
clean_string = " ".join(clean_string.split())
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def clean_string_only_numbers_and_letters(string):
|
||||||
|
clean_string = re.sub(r"[^a-zA-Z0-9\s]", "", string).upper()
|
||||||
|
clean_string = " ".join(clean_string.split())
|
||||||
return clean_string
|
return clean_string
|
||||||
|
|
||||||
|
|
||||||
@@ -104,9 +113,13 @@ def _ses_xml_person_names_elements(persona, reservation, checkin_partner):
|
|||||||
if reservation:
|
if reservation:
|
||||||
ses_firstname = False
|
ses_firstname = False
|
||||||
if reservation.partner_id.firstname:
|
if reservation.partner_id.firstname:
|
||||||
ses_firstname = clean_string_ses(reservation.partner_id.firstname)
|
ses_firstname = clean_string_only_letters(reservation.partner_id.firstname)[
|
||||||
|
:50
|
||||||
|
]
|
||||||
elif reservation.partner_name:
|
elif reservation.partner_name:
|
||||||
ses_firstname = clean_string_ses(reservation.partner_name).split(" ")[0]
|
ses_firstname = clean_string_only_letters(
|
||||||
|
replace_multiple_spaces(reservation.partner_name)
|
||||||
|
).split(" ")[0][:50]
|
||||||
_ses_xml_text_element_and_validate(
|
_ses_xml_text_element_and_validate(
|
||||||
persona,
|
persona,
|
||||||
"nombre",
|
"nombre",
|
||||||
@@ -115,9 +128,16 @@ def _ses_xml_person_names_elements(persona, reservation, checkin_partner):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if reservation.partner_id.lastname:
|
if reservation.partner_id.lastname:
|
||||||
ses_lastname = clean_string_ses(reservation.partner_id.lastname)
|
ses_lastname = clean_string_only_letters(reservation.partner_id.lastname)[
|
||||||
elif reservation.partner_name and len(reservation.partner_name.split(" ")) > 1:
|
:50
|
||||||
ses_lastname = clean_string_ses(reservation.partner_name).split(" ")[1]
|
]
|
||||||
|
elif (
|
||||||
|
reservation.partner_name
|
||||||
|
and len(replace_multiple_spaces(reservation.partner_name).split(" ")) > 1
|
||||||
|
):
|
||||||
|
ses_lastname = clean_string_only_letters(
|
||||||
|
replace_multiple_spaces(reservation.partner_name)
|
||||||
|
).split(" ")[1][:50]
|
||||||
else:
|
else:
|
||||||
ses_lastname = "No aplica"
|
ses_lastname = "No aplica"
|
||||||
ET.SubElement(persona, "apellido1").text = ses_lastname
|
ET.SubElement(persona, "apellido1").text = ses_lastname
|
||||||
@@ -126,13 +146,13 @@ def _ses_xml_person_names_elements(persona, reservation, checkin_partner):
|
|||||||
_ses_xml_text_element_and_validate(
|
_ses_xml_text_element_and_validate(
|
||||||
persona,
|
persona,
|
||||||
"nombre",
|
"nombre",
|
||||||
clean_string_ses(checkin_partner.firstname),
|
clean_string_only_letters(checkin_partner.firstname)[:50],
|
||||||
_("The guest does not have a name."),
|
_("The guest does not have a name."),
|
||||||
)
|
)
|
||||||
_ses_xml_text_element_and_validate(
|
_ses_xml_text_element_and_validate(
|
||||||
persona,
|
persona,
|
||||||
"apellido1",
|
"apellido1",
|
||||||
clean_string_ses(checkin_partner.lastname),
|
clean_string_only_letters(checkin_partner.lastname)[:50],
|
||||||
_("The guest does not have a lastname."),
|
_("The guest does not have a lastname."),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -140,7 +160,7 @@ def _ses_xml_person_names_elements(persona, reservation, checkin_partner):
|
|||||||
_ses_xml_text_element_and_validate(
|
_ses_xml_text_element_and_validate(
|
||||||
persona,
|
persona,
|
||||||
"apellido2",
|
"apellido2",
|
||||||
clean_string_ses(checkin_partner.partner_id.lastname2),
|
clean_string_only_letters(checkin_partner.partner_id.lastname2)[:50],
|
||||||
_("The guest does not have a second lastname."),
|
_("The guest does not have a second lastname."),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1121,9 +1141,11 @@ class TravellerReport(models.TransientModel):
|
|||||||
]
|
]
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
if (
|
time_difference = fields.Datetime.now() - communication.create_date
|
||||||
fields.Datetime.now() - communication.create_date
|
hours_difference = (
|
||||||
).hours > hours_after_first_checkin_to_inform:
|
time_difference.days * 24 + time_difference.seconds // 3600
|
||||||
|
)
|
||||||
|
if hours_difference > hours_after_first_checkin_to_inform:
|
||||||
# add a note to the reservation
|
# add a note to the reservation
|
||||||
communication.reservation_id.sudo().message_post(
|
communication.reservation_id.sudo().message_post(
|
||||||
body=_(
|
body=_(
|
||||||
|
|||||||
Reference in New Issue
Block a user