mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
@@ -3,7 +3,7 @@
|
||||
|
||||
{
|
||||
"name": "PMS Spanish Adaptation",
|
||||
"version": "14.0.2.15.0",
|
||||
"version": "14.0.3.0.0",
|
||||
"author": "Commit [Sun], Odoo Community Association (OCA)",
|
||||
"license": "AGPL-3",
|
||||
"application": True,
|
||||
|
||||
29
pms_l10n_es/migrations/14.0.3.0.0/post-migration.py
Normal file
29
pms_l10n_es/migrations/14.0.3.0.0/post-migration.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import logging
|
||||
import xml.etree.cElementTree as ET
|
||||
|
||||
from openupgradelib import openupgrade
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
for ses_communication in env["pms.ses.communication"].search(
|
||||
[
|
||||
("state", "=", "processed"),
|
||||
("entity", "=", "RH"),
|
||||
("operation", "=", "A"),
|
||||
]
|
||||
):
|
||||
root = ET.fromstring(ses_communication.response_query_status_soap)
|
||||
ses_communication.communication_id = root.find(".//codigoComunicacion").text
|
||||
ses_communication.batch_id = root.find(".//lote").text
|
||||
|
||||
# Retry all communications type delete, set status to to_send
|
||||
env["pms.ses.communication"].search(
|
||||
[
|
||||
("state", "in", ["processed", "error_processing"]),
|
||||
("entity", "=", "RH"),
|
||||
("operation", "=", "D"),
|
||||
]
|
||||
).write({"state": "to_send"})
|
||||
@@ -22,6 +22,10 @@ class PmsSesCommunication(models.Model):
|
||||
index=True,
|
||||
store=True,
|
||||
)
|
||||
batch_id = fields.Char(
|
||||
string="Batch ID",
|
||||
default=False,
|
||||
)
|
||||
communication_id = fields.Char(
|
||||
string="Communication ID",
|
||||
help="ID of the communication",
|
||||
@@ -99,5 +103,5 @@ class PmsSesCommunication(models.Model):
|
||||
for record in self:
|
||||
self.env["traveller.report.wizard"].ses_send_communication(
|
||||
entity=record.entity,
|
||||
communication_id=record.communication_id,
|
||||
pms_ses_communication_id=record.id,
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="reservation_id" />
|
||||
<field name="batch_id" />
|
||||
<field name="communication_id" />
|
||||
<field name="operation" />
|
||||
<field name="entity" />
|
||||
@@ -52,6 +53,7 @@
|
||||
>
|
||||
<field name="pms_property_id" />
|
||||
<field name="reservation_id" />
|
||||
<field name="batch_id" />
|
||||
<field name="communication_id" />
|
||||
<field name="operation" />
|
||||
<field name="entity" />
|
||||
@@ -73,6 +75,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Log SES Communications">
|
||||
<field name="pms_property_id" widget="selection" />
|
||||
<field name="batch_id" />
|
||||
<field name="communication_id" />
|
||||
<field name="reservation_id" />
|
||||
<!-- filters -->
|
||||
|
||||
@@ -335,7 +335,9 @@ def _generate_payload(lessor_id, operation, entity, data):
|
||||
<codigoArrendador>{lessor_id}</codigoArrendador>
|
||||
<aplicacion>Roomdoo</aplicacion>
|
||||
<tipoOperacion>{operation}</tipoOperacion>
|
||||
<tipoComunicacion>{entity}</tipoComunicacion>
|
||||
{
|
||||
'<tipoComunicacion>'+entity+'</tipoComunicacion>' if entity else ''
|
||||
}
|
||||
</cabecera>
|
||||
<solicitud>{data}</solicitud>
|
||||
</peticion>
|
||||
@@ -1072,13 +1074,13 @@ class TravellerReport(models.TransientModel):
|
||||
return xml_str
|
||||
|
||||
@api.model
|
||||
def ses_send_communications(self, entity, communication_id=False):
|
||||
def ses_send_communications(self, entity, pms_ses_communication_id=False):
|
||||
domain = [
|
||||
("state", "=", "to_send"),
|
||||
("entity", "=", entity),
|
||||
]
|
||||
if communication_id:
|
||||
domain.append(("id", "=", communication_id))
|
||||
if pms_ses_communication_id:
|
||||
domain.append(("id", "=", pms_ses_communication_id))
|
||||
for communication in self.env["pms.ses.communication"].search(domain):
|
||||
data = False
|
||||
try:
|
||||
@@ -1135,15 +1137,16 @@ class TravellerReport(models.TransientModel):
|
||||
communication.response_communication_soap = soap_response.text
|
||||
result_code = root.find(".//codigo").text
|
||||
if result_code == REQUEST_CODE_OK:
|
||||
communication.communication_id = root.find(".//lote").text
|
||||
communication.batch_id = root.find(".//lote").text
|
||||
|
||||
communication.state = "to_process"
|
||||
else:
|
||||
communication.state = "error_sending"
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except requests.exceptions.HTTPError as http_err:
|
||||
_handle_request_exception(communication, http_err)
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except Exception as e:
|
||||
_handle_request_exception(communication, e)
|
||||
|
||||
@@ -1199,18 +1202,17 @@ class TravellerReport(models.TransientModel):
|
||||
communication.response_communication_soap = soap_response.text
|
||||
result_code = root.find(".//codigo").text
|
||||
if result_code == REQUEST_CODE_OK:
|
||||
communication.communication_id = root.find(".//lote").text
|
||||
communication.batch_id = root.find(".//lote").text
|
||||
if communication.operation == CREATE_OPERATION_CODE:
|
||||
communication.state = "to_process"
|
||||
else:
|
||||
communication.state = "processed"
|
||||
else:
|
||||
communication.state = "error_sending"
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except requests.exceptions.HTTPError as http_err:
|
||||
_handle_request_exception(communication, http_err)
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except Exception as e:
|
||||
_handle_request_exception(communication, e)
|
||||
|
||||
@@ -1219,14 +1221,13 @@ class TravellerReport(models.TransientModel):
|
||||
for communication in self.env["pms.ses.communication"].search(
|
||||
[
|
||||
("state", "=", "to_process"),
|
||||
("operation", "!=", DELETE_OPERATION_CODE),
|
||||
]
|
||||
):
|
||||
try:
|
||||
var_xml_get_batch = f"""
|
||||
<con:lotes
|
||||
xmlns:con="http://www.neg.hospedajes.mir.es/consultarComunicacion">
|
||||
<con:lote>{communication.communication_id}</con:lote>
|
||||
<con:lote>{communication.batch_id}</con:lote>
|
||||
</con:lotes>
|
||||
"""
|
||||
communication.query_status_xml = var_xml_get_batch
|
||||
@@ -1234,7 +1235,7 @@ class TravellerReport(models.TransientModel):
|
||||
payload = _generate_payload(
|
||||
communication.reservation_id.pms_property_id.institution_lessor_id,
|
||||
"C",
|
||||
"",
|
||||
False,
|
||||
data,
|
||||
)
|
||||
communication.query_status_soap = payload
|
||||
@@ -1249,13 +1250,15 @@ class TravellerReport(models.TransientModel):
|
||||
)
|
||||
soap_response.raise_for_status()
|
||||
root = ET.fromstring(soap_response.text)
|
||||
communication.response_communication_soap = soap_response.text
|
||||
result_code = root.find(".//codigo").text
|
||||
communication.response_query_status_soap = soap_response.text
|
||||
if result_code == REQUEST_CODE_OK:
|
||||
result_status = root.find(".//codigoEstado").text
|
||||
if result_status == XML_OK:
|
||||
communication.state = "processed"
|
||||
communication.communication_id = root.find(
|
||||
".//codigoComunicacion"
|
||||
).text
|
||||
communication.processing_result = root.find(
|
||||
".//descripcion"
|
||||
).text
|
||||
@@ -1269,9 +1272,9 @@ class TravellerReport(models.TransientModel):
|
||||
else:
|
||||
communication.state = "error_processing"
|
||||
communication.processing_result = root.find(".//descripcion").text
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except requests.exceptions.HTTPError as http_err:
|
||||
_handle_request_exception(communication, http_err)
|
||||
except requests.exceptions.RequestException as e:
|
||||
_handle_request_exception(communication, e)
|
||||
except Exception as e:
|
||||
_handle_request_exception(communication, e)
|
||||
|
||||
Reference in New Issue
Block a user