From e174df0af3c3ba88adbb2eb81d644b5ce5e50892 Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 21 May 2026 07:56:20 -0600 Subject: [PATCH] feature/rbac-implementation --- api/api_v2/modules/acuses/services.py | 5 +++-- api/api_v2/modules/coves/services.py | 9 ++++++--- api/api_v2/modules/edocs/services.py | 5 +++-- api/api_v2/modules/partidas/services.py | 13 ++++++++----- api/api_v2/modules/pedimentos/services.py | 14 +++++++------- controllers/RESTController.py | 3 ++- 6 files changed, 29 insertions(+), 20 deletions(-) diff --git a/api/api_v2/modules/acuses/services.py b/api/api_v2/modules/acuses/services.py index f995dca..288e2f8 100644 --- a/api/api_v2/modules/acuses/services.py +++ b/api/api_v2/modules/acuses/services.py @@ -145,12 +145,13 @@ async def obtener_acuse(**kwargs): organizacion = pedimento.get("organizacion", None) pedimento_id = pedimento.get("id", None) - rest_response = await acuse_rest_controller.post_document( + rest_response = await acuse_rest_controller.post_or_update_document( binary_content=pdf_bytes, organizacion=organizacion, pedimento=pedimento_id, file_name=_file_name, - document_type=4 + document_type=4, + identifier=idEdocument_efc, ) if rest_response is None: diff --git a/api/api_v2/modules/coves/services.py b/api/api_v2/modules/coves/services.py index 7332f4f..7b6a13e 100644 --- a/api/api_v2/modules/coves/services.py +++ b/api/api_v2/modules/coves/services.py @@ -134,12 +134,13 @@ 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( + document_response = await coves_rest_controller.post_or_update_document( soap_response=soap_response, organizacion=kwargs.get('pedimento').get('organizacion'), pedimento=kwargs.get('pedimento').get('id'), file_name=_file_name, document_type=8, + identifier=cove, ) except Exception as e: logger.error(f"Error detectado en la respuesta SOAP: {str(e)}") @@ -318,12 +319,14 @@ async def consume_ws_get_acuse_cove(**kwargs): organizacion = pedimento.get("organizacion", None) pedimento_id = pedimento.get("id", None) - rest_response = await coves_rest_controller.post_document( + cove_identifier = kwargs['cove'].get('cove', '') + rest_response = await coves_rest_controller.post_or_update_document( binary_content=pdf_bytes, organizacion=organizacion, pedimento=pedimento_id, file_name=_file_name, - document_type=7 + document_type=7, + identifier=cove_identifier, ) acuse_status = await change_acuse_status( diff --git a/api/api_v2/modules/edocs/services.py b/api/api_v2/modules/edocs/services.py index 7c023aa..148baec 100644 --- a/api/api_v2/modules/edocs/services.py +++ b/api/api_v2/modules/edocs/services.py @@ -203,12 +203,13 @@ async def obtener_edoc(**kwargs): # No guardaremos el archivo localmente por seguridad logger.debug(f"Procesando documento {numero_documento} para pedimento {pedimento_id}") - rest_response = await edocs_rest_controller.post_document( + rest_response = await edocs_rest_controller.post_or_update_document( binary_content=pdf_bytes, organizacion=organizacion, pedimento=pedimento_id, file_name=_file_name, - document_type=5 + document_type=5, + identifier=numero_documento, ) print(f"rest_response >>>> {rest_response}") diff --git a/api/api_v2/modules/partidas/services.py b/api/api_v2/modules/partidas/services.py index 6225313..65f6736 100644 --- a/api/api_v2/modules/partidas/services.py +++ b/api/api_v2/modules/partidas/services.py @@ -59,12 +59,13 @@ async def consume_ws_get_partida(**kwargs): file_name_request = f"vu_PT_{pedimento_app}_{partida.get('numero', '')}_REQUEST.xml" - document_response = await partida_rest_controller.post_document( + document_response = await partida_rest_controller.post_or_update_document( soap_response=soap_xml, organizacion=kwargs.get('pedimento').get('organizacion'), pedimento=kwargs.get('pedimento').get('id'), file_name=file_name_request, - document_type=17, # Tipo de documento para petición de partidas + document_type=17, + identifier=f"_PT_{pedimento_app}_{partida.get('numero', '')}_", ) except Exception as e: logger.error(f"Error al enviar documento request: {e}") @@ -97,12 +98,13 @@ async def consume_ws_get_partida(**kwargs): if soap_error(soap_response): error_file_name = f"vu_PT_{pedimento_app}_{partida.get('numero', '')}_ERROR.xml" try: - document_response = await partida_rest_controller.post_document( + document_response = await partida_rest_controller.post_or_update_document( soap_response=soap_response, organizacion=kwargs.get('pedimento').get('organizacion'), pedimento=kwargs.get('pedimento').get('id'), file_name=error_file_name, document_type=18, + identifier=f"_PT_{pedimento_app}_{partida.get('numero', '')}_", ) except Exception as e: logger.error(f"Error al guardar la respuesta de error: {e}") @@ -127,12 +129,13 @@ async def consume_ws_get_partida(**kwargs): # Enviar documento _file_name = f"vu_PT_{pedimento_app}_{partida.get('numero', '')}.xml" try: - document_response = await partida_rest_controller.post_document( + document_response = await partida_rest_controller.post_or_update_document( soap_response=soap_response, organizacion=kwargs.get('pedimento').get('organizacion'), pedimento=kwargs.get('pedimento').get('id'), file_name=_file_name, - document_type=1, + document_type=1, + identifier=f"_PT_{pedimento_app}_{partida.get('numero', '')}_", ) except Exception as e: logger.error(f"Error al enviar documento: {e}") diff --git a/api/api_v2/modules/pedimentos/services.py b/api/api_v2/modules/pedimentos/services.py index 70ed764..9654c3e 100644 --- a/api/api_v2/modules/pedimentos/services.py +++ b/api/api_v2/modules/pedimentos/services.py @@ -64,12 +64,12 @@ async def consume_ws_get_pedimento_completo(**kwargs) -> Dict[str, Any]: file_name_request = f"VU_PC_{pedimento_data.get('pedimento_app', 'unknown')}_REQUEST.xml" - document_response = await pedimento_rest_controller.post_document( + document_response = await pedimento_rest_controller.post_or_update_document( soap_response=soap_xml, organizacion=pedimento_data.get('organizacion'), pedimento=pedimento_data.get('id'), file_name=file_name_request, - document_type=13, + document_type=13, ) except Exception as e: logger.error(f"Error al enviar documento request: {e}") @@ -90,12 +90,12 @@ async def consume_ws_get_pedimento_completo(**kwargs) -> Dict[str, Any]: if soap_error(soap_response): logger.error(f"Error en respuesta SOAP: {soap_response.text if hasattr(soap_response, 'text') else 'Sin detalles'}") - document_response = await pedimento_rest_controller.post_document( - soap_response=None, + document_response = await pedimento_rest_controller.post_or_update_document( + soap_response=soap_response, organizacion=pedimento_data.get('organizacion'), pedimento=pedimento_data.get('id'), file_name=f"vu_PC_{pedimento_data.get('pedimento_app', 'unknown')}_ERROR.xml", - document_type=14, + document_type=14, ) raise HTTPException(status_code=500, detail="Error en la respuesta del servicio SOAP") @@ -111,12 +111,12 @@ async def consume_ws_get_pedimento_completo(**kwargs) -> Dict[str, Any]: # Enviar documento try: - document_response = await pedimento_rest_controller.post_document( + document_response = await pedimento_rest_controller.post_or_update_document( soap_response=soap_response, organizacion=pedimento_data.get('organizacion'), pedimento=pedimento_data.get('id'), file_name=file_name, - document_type=2, + document_type=2, ) except Exception as e: logger.error(f"Error al enviar documento: {e}") diff --git a/controllers/RESTController.py b/controllers/RESTController.py index ef75abc..30688ee 100644 --- a/controllers/RESTController.py +++ b/controllers/RESTController.py @@ -95,7 +95,7 @@ class APIRESTController: self, soap_response=None, organizacion: str = None, pedimento: str = None, file_name: str = None, document_type: int = None, fuente: int = 2, - identifier: str = None, + identifier: str = None, binary_content: bytes = None, ) -> Dict[str, Any]: """ Guarda un documento VU (request o error). Si ya existe uno del mismo @@ -124,6 +124,7 @@ class APIRESTController: return await self.post_document( soap_response=soap_response, + binary_content=binary_content, organizacion=organizacion, pedimento=pedimento, file_name=file_name, -- 2.49.1