Se modifico el task de coves

This commit is contained in:
2025-09-01 15:55:09 -06:00
parent 879ce8d544
commit c572d4beed
39 changed files with 173 additions and 31 deletions

View File

@@ -742,29 +742,81 @@ def coves_task(self, **kwargs):
if not coves_response:
raise Exception("Error en la petición REST para coves")
logger.info("[TASK] Petición REST para coves completada exitosamente")
# Subir documento de coves si la petición fue exitosa
try:
upload_result = await _post_coves(
response_service=service_data,
identificadores_cove=[coves_response[0].get('numero_cove')] if isinstance(coves_response, list) and coves_response else []
)
logger.info(f"Documento de coves subido exitosamente: {upload_result}")
except Exception as upload_err:
logger.error(f"Error al subir documento de coves: {upload_err}")
self.update_state(state='PROGRESS', meta={'status': 'Finalizando proceso'})
# Procesar acuses de documentos digitalizados
documentos_procesados = []
documentos_exitosos = 0
coves = coves_response if isinstance(coves_response, list) else []
logger.info(f"Procesando COVE para {len(coves)} documentos...")
# Obtener credenciales VUCEM para la firma
credentials = await _get_vucem_credentials(service_data.get('pedimento', {}).get('contribuyente', ''), operation_name)
from controllers.SOAPController import soap_controller
for idx, cove in enumerate(coves):
documento_info = {
"numero_cove": cove.get('numero_cove', 'N/A'),
"procesado": False,
"error": None
}
if not cove.get('numero_cove'):
logger.warning(f"Documento {idx + 1} no tiene numero_cove, saltando...")
documento_info["error"] = "Sin número de cove"
documentos_procesados.append(documento_info)
continue
try:
logger.info(f"Procesando cove para documento {idx + 1}: {cove['numero_cove']}")
soap_response = await get_soap_cove(
credenciales=credentials,
response_service=service_data,
soap_controller=soap_controller,
cove=cove,
idx=idx + 1
)
if soap_response:
documento_info["procesado"] = True
documento_info["documento"] = soap_response.get('documento', {})
documentos_exitosos += 1
logger.info(f"cove del documento {idx + 1} procesado exitosamente")
else:
documento_info["error"] = "Error en petición SOAP"
logger.warning(f"No se pudo procesar el cove del documento {idx + 1}")
except Exception as e:
logger.error(f"Error al procesar cove del documento {idx + 1}: {e}")
documento_info["error"] = str(e)
documentos_procesados.append(documento_info)
if documentos_exitosos == 0:
logger.error("No se pudo procesar ningún cove de documento digitalizado")
await _update_service_status(service_data['id'], ESTADO_ERROR, service_data, operation_name)
raise Exception("No se pudo procesar ningún acuse cove de documento digitalizado")
await _update_service_status(service_data['id'], ESTADO_FINALIZADO, service_data, operation_name)
response_data = await _create_response(
service_data=service_data,
additional_data={
"coves": coves_response
"covesDocs": documentos_procesados,
"total_documentos": len(coves),
"documentos_exitosos": documentos_exitosos,
"documentos_fallidos": len(coves) - documentos_exitosos
},
success_message="Coves obtenidos exitosamente"
success_message=f"Se procesaron {documentos_exitosos}/{len(coves)} cove de documentos exitosamente"
)
logger.info(f"[TASK] Consulta de coves completada exitosamente - Servicio: {service_data['id']}")
if documentos_exitosos < len(coves):
response_data["warnings"] = [
f"Se procesaron solo {documentos_exitosos} de {len(coves)} coves"
]
logger.info(f"Procesamiento de acuses cove completado - Exitosos: {documentos_exitosos}/{len(coves)}")
return response_data
except Exception as e: