Se agregaron catch de errores

This commit is contained in:
2025-10-05 19:29:00 -06:00
parent f2c6a060d5
commit 458d3c1f34
4 changed files with 45 additions and 174 deletions

View File

@@ -95,7 +95,6 @@ async def consume_ws_get_cove(**kwargs):
# Enviar documento
_file_name = f"vu_COVE_{pedimento_app}_{cove}.xml"
try:
document_response = await coves_rest_controller.post_document(
soap_response=soap_response,
organizacion=kwargs.get('pedimento').get('organizacion'),
@@ -162,19 +161,33 @@ async def consume_ws_get_acuse_cove(**kwargs):
if response.status_code != 200:
raise Exception(f"Error en la solicitud SOAP: {response.status}")
if soap_error(response):
rest_response = await coves_rest_controller.post_document(
soap_response=response,
organizacion=kwargs.get('pedimento').get('organizacion'),
pedimento=kwargs.get('pedimento').get('id'),
file_name=f"vu_AC_COVE_{kwargs.get('pedimento', {}).get('pedimento_app', 'N/A')}_{kwargs['cove'].get('cove', 'N/A')}_ERROR.xml",
document_type=10,
)
raise Exception("Error detectado en la respuesta SOAP.")
if (response) and (not soap_error(response)):
logger.debug(f"Respuesta SOAP recibida, extrayendo acuse...")
acuse_base64 = _extract_acuse_data(response.text)
if acuse_base64 is None:
logger.error("No se encontró elemento acuseDocumento en la respuesta")
logger.debug(f"Contenido de respuesta (primeros 1000 chars): {response.text[:1000]}")
logger.debug(f"Contenido de respuesta (primeros 1000 chars): {response.text}")
else:
logger.error("Error en respuesta SOAP o soap_error detectado")
logger.debug(f"Contenido de respuesta con error: {response.text[:500] if response else 'No response'}")
logger.debug(f"Contenido de respuesta con error: {response.text if response else 'No response'}")
if acuse_base64 is None:
raise Exception("No se pudo extraer el acuse del documento de la respuesta SOAP.")
# Log de la respuesta SOAP para debugging
logger.error(f"Contenido de respuesta SOAP: {response.text}")
raise HTTPException(
status_code=500,
detail="No se pudo extraer el acuse del documento de la respuesta SOAP. Verifique el log para más detalles."
)
pdf_bytes = _decode_acuse_base64_content(acuse_base64)
@@ -330,7 +343,9 @@ def _extract_acuse_data(soap_response_text: str) -> str:
# Log de todos los elementos para debugging
logger.error("No se encontró elemento acuseDocumento. Elementos disponibles:")
for elem in root.iter():
logger.debug(f" - {elem.tag}: {elem.text[:50] if elem.text else 'Sin contenido'}...")
logger.error(f" - {elem.tag}: {elem.text[:50] if elem.text else 'Sin contenido'}...")
if 'acuse' in elem.tag.lower():
logger.error(f"Elemento similar encontrado: {elem.tag}")
return None
if acuse_elemento is not None and acuse_elemento.text: