...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
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 | ||||||
|---|---|---|---|---|---|---|
| ||||||
/* 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
...