From 879ce8d544b6eaf8fc8a1fef3bc54cad90a1f062 Mon Sep 17 00:00:00 2001 From: Kevin Rosales Date: Wed, 27 Aug 2025 08:19:45 -0600 Subject: [PATCH] Se modifico la tarea para que haga el update del pedimento Al parecer no se estaba mandando la fuente en el endpoint y eso fue lo que causaba el error --- .gitignore | 3 +++ tasks.py | 45 +++++++++++++++++++++++++++++++++++++++------ utils/peticiones.py | 1 + 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index f7f64fd..0e69221 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ __pycache__/ # C extensions *.so +main2.py +sample.xml + # Distribution / packaging .Python build/ diff --git a/tasks.py b/tasks.py index a2aa9e5..de40d79 100644 --- a/tasks.py +++ b/tasks.py @@ -90,7 +90,40 @@ def pedimento_completo_task(self, request_data: Dict[str, Any]): if not soap_response: raise Exception("Error en la petición SOAP para pedimento completo") + logger.info("[TASK] Petición SOAP para pedimento completo completada exitosamente") + + # Actualizar datos del pedimento con información del XML (igual que en el endpoint) + try: + xml_content = soap_response.get('xml_content', {}) + if xml_content: + update_content = {k: v for k, v in xml_content.items() if k != 'identificadores_ed'} + update_content['existe_expediente'] = True + pedimento_response = await rest_controller.put_pedimento( + service_data['pedimento']['id'], + update_content + ) + logger.info("Pedimento actualizado exitosamente (TASK)") + else: + logger.warning("No se recibió contenido XML para actualizar el pedimento (TASK)") + except Exception as e: + logger.warning(f"No se pudo actualizar el pedimento (TASK, continuando proceso): {e}") + + + # Procesar y guardar COVEs (igual que en el endpoint) + try: + coves = xml_content.get('coves', []) if 'xml_content' in locals() else [] + logger.warning(f"COVEs encontrados: {coves}") + for cove in coves: + logger.warning(f"Procesando COVE: {cove}") + cove_result = await _post_coves( + response_service=service_data, + coves=coves + ) + except Exception as e: + logger.error(f"Error al procesar COVEs: {e}") + cove_result = None + # Subir documento de pedimento completo si la petición fue exitosa try: upload_result = await _post_edocuments( @@ -100,11 +133,11 @@ def pedimento_completo_task(self, request_data: Dict[str, Any]): logger.info(f"Documento de pedimento completo subido exitosamente: {upload_result}") except Exception as upload_err: logger.error(f"Error al subir documento de pedimento completo: {upload_err}") - + self.update_state(state='PROGRESS', meta={'status': 'Finalizando proceso'}) - + await _update_service_status(service_data['id'], ESTADO_FINALIZADO, service_data, operation_name) - + response_data = await _create_response( service_data=service_data, additional_data={ @@ -114,7 +147,7 @@ def pedimento_completo_task(self, request_data: Dict[str, Any]): }, success_message="Pedimento completo obtenido exitosamente" ) - + logger.info(f"[TASK] Consulta de pedimento completo completada exitosamente - Servicio: {service_data['id']}") return response_data @@ -742,7 +775,6 @@ def coves_task(self, **kwargs): return run_async_task(_execute_coves) - @celery_app.task(bind=True) def acuse_cove_task(self, **kwargs): """Tarea asíncrona para obtener acuse de COVE""" @@ -890,4 +922,5 @@ def acuse_cove_task(self, **kwargs): await _update_service_status(service_data['id'], ESTADO_ERROR, service_data, operation_name) raise e - return run_async_task(_execute_acuse_cove) \ No newline at end of file + return run_async_task(_execute_acuse_cove) + diff --git a/utils/peticiones.py b/utils/peticiones.py index 2c8b1df..26f13b1 100644 --- a/utils/peticiones.py +++ b/utils/peticiones.py @@ -315,6 +315,7 @@ async def get_soap_pedimento_completo(credenciales, response_service, soap_contr data['organizacion'] = response_service['organizacion'] data['id'] = response_service['pedimento']['id'] + data['fuente'] = 2 return { "servicio": response_service,