Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagesql
themeMidnight
titleINSERT PARA LAS VALIDACIONES
INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES
(ID_API_SP, CATEGORIA, DESCRIPCION, API_PATH_GROUP, API_PATH_VERSION, API_PATH_NAME, PROCEDURE_DATABASE, PROCEDURE_SCHEMA, PROCEDURE_NAME, SIMPLIFICAR_RESPONSE_S_N, FECHA_HORA_INS, USUARIO_INS, FECHA_HORA_UPD, USUARIO_UPD)
VALUES(96105, 'DIMO SECURITY', 'Obetner datosVerificar que el usuario tenga permisos para validarmodificar los datos de tarjetas', 'security', 'v1', 'validarPersonavalidarPermiso', 'BAPY', 'creditopy', 'PKG_DIMO_SECURITY.PR_VALIDAR_TOKENPERMISO_TARJDATOS', 'S', SYSDATE sysdate, 'MBAEZasosa', SYSDATEsysdate, 'MBAEZasosa');

INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES_PRMS_IN
(ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, REQUERIDO_API_S_N, NULABLE_S_N, DEFAULT_VALUE)
VALUES(96105, 1, 'P_NUM_TARJdocumento', 'NUMEROTEXTO', 'S', 'N', NULL);

INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES_PRMS_OUTIN
(ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, RETORNARREQUERIDO_API_S_N, NULABLE_S_N, DEFAULT_VALUE)
VALUES(96105, 12, 'P_AFINIDADcodigo', 'NUMEROTEXTO', 'S', 'N', NULL);

INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES_PRMS_OUT
(ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, RETORNAR_API_S_N)
VALUES(96105, 21, 'P_EMISORvalidado', 'NUMERO', 'S');

INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES_PRMS_OUT
(ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, RETORNAR_API_S_N)
VALUES(96105, 32, 'P_VINCULADOdescripcion', 'NUMEROTEXTO', 'S');

INSERT INTO CREDITOPYDIMO_SICOOP.API_CEIBO_PROCEDURES_PRMS_OUTT_WEBSERVICE
(WEBSERVICE_ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, RETORNAR_API_S_N)
VALUES(96, 4, 'P_DOCUMENTO', 'TEXTO', 'S');

INSERT INTO CREDITOPY.API_CEIBO_PROCEDURES_PRMS_OUT
(ID_API_SP, NRO_ORDEN, PARAM_NAME, TIPO_DATO, RETORNAR_API_S_N)
VALUES(96, 5, 'P_VINC_DESC', 'TEXTO', 'S', CODE, REFERENCE, URL, NAMESPACE, SERVICENAME, CONNECT_TIMEOUT, CALL_TIMEOUT, MAX_RETRY, ENABLED, LAST_USER, LAST_TIME, URL_ALT)
VALUES(112, 'WS_VALID_CAMBIO_DATO', 'Web service para validar permisos', 'http://10.5.1.30:8083/ws-tarjetahabiente/prmservices/v2/sprunner/security/v1/validarPermiso', 'espacio', 'service', 60000, 60000, NULL, 1, 'asosa', sysdate, NULL);
Code Block
languagesql
themeMidnight
titleCREAR EL PAQUETE
/*					MODIFICACION DE LA CABECERA	(ESPECIFICACION DEL PACKAGE)				*/
CREATE OR REPLACE PACKAGE CREDITOPY.PKG_DIMO_SECURITY IS
	-- AUTOR: MANU BAEZ
	-- Fecha Creación: 07/10/2024
  PROCEDURE PR_VALIDAR_TOKEN_TARJ (
    P_NUM_TARJ IN NUMBER,
    P_AFINIDAD OUT NUMBER,
    P_EMISOR OUT NUMBER,
    P_VINCULADO OUT NUMBER,
    P_DOCUMENTO OUT VARCHAR2,
    P_VINC_DESC OUT VARCHAR2
  );

 	-- AUTOR: ARTURO SOSA
	-- Fecha Creación: 08/10/2024
  PROCEDURE PR_VALIDAR_PERMISO_DATOS (
    documento IN VARCHAR2,
    codigo IN VARCHAR2,
    validado OUT NUMBER,
    descripcion OUT VARCHAR2
  );

END PKG_DIMO_SECURITY;





/*					MODIFICACION DEL BODY (PACKAGE BODY)					*/
CREATE OR REPLACE PACKAGE BODY CREDITOPY.PKG_DIMO_SECURITY IS
 /*			VALIDAR PERMISOS DEL USUARIO PARA CAMBIAR LOS DATOS DE SU CUENTA			*/
 /*
	AUTOR: MANUEL BAEZ
	FECHA CREACION: 07/10/2024
	DESCRIPCION: 
	
	
	FECHA MODIFICACION: 
	DESCRIPCION DE CAMBIOS: 
 */
   PROCEDURE PR_VALIDAR_TOKEN_TARJ (
    P_NUM_TARJ IN NUMBER,
    P_AFINIDAD OUT NUMBER,
    P_EMISOR OUT NUMBER,
    P_VINCULADO OUT NUMBER,
    P_DOCUMENTO OUT VARCHAR2,
    P_VINC_DESC OUT VARCHAR2
  ) IS
    V_VALIDAR NUMBER;
    P_TARJ_ENCRI VARCHAR2(100); -- Declarar la variable que faltaba
  BEGIN
    
    SELECT CREDITOPY.FC_PAN2CRIPTO(P_NUM_TARJ)
    INTO P_TARJ_ENCRI
    FROM DUAL;
    
    
    -- Primera consulta corregida (remover la coma antes de INTO)
    SELECT T.EMISOR,
           T.DOCUMENTO,
           T.GRUPO_AFINIDAD
    INTO P_EMISOR, P_DOCUMENTO, P_AFINIDAD
    FROM CREDITOPY.TARJETAS T
    WHERE T.TARJETA = P_TARJ_ENCRI;

    P_DOCUMENTO := TO_CHAR(TO_NUMBER(SUBSTR(P_DOCUMENTO, 4)));
    
    BEGIN
    -- Tercera consulta
       SELECT ESTADO
       INTO V_VALIDAR
       FROM CREDITOPY.DIMO_TC_VINC_PROCESO dtvp
       WHERE dtvp.DOCUMENTO = P_DOCUMENTO
        AND dtvp.TARJETA = P_TARJ_ENCRI
        AND ROWNUM = 1
        ORDER BY dtvp.fecha_hora_ins DESC;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            V_VALIDAR := 3;  -- Si no se encuentra ninguna fila, asigna el valor 3
    END;

    -- Estructura condicional IF en lugar de CASE
  CASE V_VALIDAR
      WHEN 0 THEN
          P_VINCULADO := 0;
          P_VINC_DESC := 'EL USUARIO NO COMPLETO EL INTENTO';
      WHEN 1 THEN
          P_VINCULADO := 1;
          P_VINC_DESC := 'EL USUARIO VINCULO CORRECTAMENTE';
      WHEN 2 THEN
          P_VINCULADO := 0;
          P_VINC_DESC := 'EL USUARIO FALLO EN RESPONDER LAS PREGUNTAS DE SEGURIDAD';
      ELSE
          P_VINCULADO := 0;
          P_VINC_DESC := 'EL USUARIO AUN NO INTENTO VINCULAR';
  END CASE;
    
  END PR_VALIDAR_TOKEN_TARJ;
  
 /*			VALIDAR PERMISOS DEL USUARIO PARA CAMBIAR LOS DATOS DE SU CUENTA			*/
 /*
	AUTOR: ARTURO SOSA
	FECHA CREACION: 08/10/2024
	DESCRIPCION: Este procedimiento recibe el documento del usuario y debe controlar:
		1. Que el documento pertenezca a un usario.
		2. Si el usuario está validado por ATC (FLAG DIMO_SICOOP.D_CLIENTE@SICOOP => FLAG_VALIDADO_ATC).
		3. Si tiene abierto la incidencia para cambio de ese dato ().
		4. Si el usuario tiene permiso para cambiar ese dato (DIMO_SICOOP.D_FUNCIONALIDAD => ).
		Solo si cumple esos requisitos, debe devolver validado = true
		
	DEUDA TECNICA:El MACHEO DE CODIGO BACKEND e ID_TIPO_INCIDENCIA "está en duro" (no es critico, por que coinciden en ambos ambientes)
	
	FECHA MODIFICACION: 
	DESCRIPCION DE CAMBIOS: 
  */
  PROCEDURE PR_VALIDAR_PERMISO_DATOS (
    documento IN VARCHAR2,
    codigo IN VARCHAR2,
    validado OUT NUMBER,
    descripcion OUT VARCHAR2
  ) IS
	V_CLIENTE_ID NUMBER;
	V_FLAG_VALIDADO_ATC NUMBER;
	V_TIPO_INCIDENCIA_ID NUMBER;
	V_CLIENTE_INCIDENCIA_ID NUMBER;
	V_VALIDADO NUMBER;
  BEGIN
	  
    --VALIDAR QUE EL DOCUMENTO SEA USUARIO Y ESTÉ VALIDADO POR ATC
	BEGIN
		SELECT dc.CLIENTE_ID, dc.FLAG_VALIDADO_ATC
		INTO V_CLIENTE_ID, V_FLAG_VALIDADO_ATC
		FROM DIMO_SICOOP.D_CLIENTE@SICOOP dc
		WHERE dc.CI = documento;
		EXCEPTION
        	WHEN NO_DATA_FOUND THEN
            	V_CLIENTE_ID := 0;
	END;

   --SI ES USUARIO DIMO
	IF V_CLIENTE_ID <> 0 THEN
		--SI ES USUARIO DIMO y SI ESTÄ HABILITADO POR ATC
		IF V_FLAG_VALIDADO_ATC = 1 THEN
			--VERIFICACION PARA OBTENER EL TIPO_INCIDENCIA_ID.
			CASE codigo
			    WHEN 'PERFILMOD_CELLPHONE' THEN
			        V_TIPO_INCIDENCIA_ID := 20;
			    WHEN 'PERFILMOD_EMAIL' THEN
			        V_TIPO_INCIDENCIA_ID := 19;
			    WHEN 'PERFILMOD_DATA' THEN
			        V_TIPO_INCIDENCIA_ID := 18;
				ELSE
			        V_TIPO_INCIDENCIA_ID := 0;
			END CASE;
		
			--SI ES UN TIPO DE INCIDENCIA VALIDO
			IF V_TIPO_INCIDENCIA_ID <> 0 THEN
			
				--OBTENER EL ID DE LA INCIDENICA Y EL ESTADO
				BEGIN
					SELECT dci.CLIENTE_INCIDENCIA_ID
					INTO V_CLIENTE_INCIDENCIA_ID
					FROM DIMO_SICOOP.D_CLIENTE_INCIDENCIA@SICOOP dci
					WHERE dci.CLIENTE_ID = V_CLIENTE_ID AND dci.TIPO_INCIDENCIA_ID = V_TIPO_INCIDENCIA_ID AND dci.ESTADO = 1;
					EXCEPTION
			        	WHEN NO_DATA_FOUND THEN
			            	V_CLIENTE_INCIDENCIA_ID := 0;
				END;
			
				--SI TIENE LA INCIDENCIA
				IF V_CLIENTE_INCIDENCIA_ID <> 0 THEN
					--VERIFICAR SI TIENE EL PERMISO HABILITADO
					BEGIN
						SELECT dfd.ACTIVO INTO V_VALIDADO
						FROM DIMO_SICOOP.D_FUNCIONALIDAD_DOC@SICOOP dfd
						WHERE dfd.DOCUMENTO = documento AND dfd.ACTIVO = 1
						AND dfd.FUNCIONALIDAD_ID = (SELECT df.FUNCIONALIDAD_ID FROM DIMO_SICOOP.D_FUNCIONALIDAD@SICOOP df WHERE df.CODIGO = codigo);
						EXCEPTION
						   WHEN NO_DATA_FOUND THEN
						       V_VALIDADO := 0;

					END;
				
					IF V_VALIDADO = 1 THEN
						validado := 1;
						descripcion := 'El usuario tiene los permisos para cambiar el dato';
					ELSE
						validado := 0;
						descripcion := 'El usuario no tiene permiso de ATC para cambiar el dato';
					END IF;

				--EL DOCUMENTO NO TIENE LA INCIDENCIA
				ELSE
					validado := 0;
					descripcion := 'No existe la incidencia valida para ese documento';
				END IF;			
			ELSE
				validado := 0;
				descripcion := 'No corresponde el tipo de incidencia';
			END IF;
		--NO ESTÁ HABILITADO POR ATC
		ELSE
			validado := 0;
			descripcion := 'El usuario no está habilitado por ATC';
		END IF;
	
   --NO ES USUARIO DIMO
	ELSE
		validado := 0;
		descripcion := 'El documento ingresado no pertenece a ningún usuario';
	END IF;

  END PR_VALIDAR_PERMISO_DATOS;
END PKG_DIMO_SECURITY;


ROLLBACK

...