En esta opción podemos consultar los documentos de Ordenes de Pago previamente diligenciados. Esta ventana presenta la información del documento en 3 pestañas que a continuación serán descritas.
*En esta pestaña se visualiza el listado de Consulta ordenes de pago al señalar un cliente y dando click sobre la lupa generara el siguiente formato.
* Este documento muestra la identificación de la reserva a la que pertenece encima del titulo de orden de pago.
Se detectó que en el formato de Orden de Pago para el cliente Isvimed, la firma y los datos del usuario en la sección “Contabilizó” (y ocasionalmente “Revisó/Elaboró”) no se visualizaban cuando la orden era procesada desde la interfaz de Tesorería.
La consulta SQL del reporte (r_orden_pago_isvimed.srd) tenía una dependencia estricta con el código de aplicación 1 (Presupuesto). Los usuarios creados o activos en el módulo de Tesorería poseen códigos de aplicación distintos, lo que causaba que las subconsultas de firmas y las funciones de nombres devolvieran valores nulos al no encontrar coincidencia con la aplicación 1.
Se modificó la sentencia SQL del DataWindow para independizar la obtención de datos del usuario del módulo de aplicación:
Eliminación de Filtros: Se retiró la cláusula AND U.CODIGO_APLICACION = 1 de las subconsultas de imágenes de firma. Join por Cédula: Se implementó una lógica de búsqueda basada en el CODIGO_USUARIO (que es único por login) pero recuperando la información del tercero asociado a través de la CEDULA del maestro de usuarios. Uso de Agregados/ROWNUM: Se incorporó MAX() y ROWNUM = 1 para prevenir errores de cardinalidad en caso de que un usuario exista en múltiples aplicaciones dentro de la tabla USUARIOS.
r_orden_pago_isvimed.srd: Actualización del SELECT principal y subconsultas. Ajuste Sugerido en el Código Para que el cambio sea efectivo y consistente en todas las firmas (Elaboró, Revisó, Contabilizó), te sugiero aplicar este diff al archivo .srd:
r_orden_pago_isvimed.srd
E.NOMBRE AS NOM_USR_APR,
E.CEDULA AS CED_USR_APR ,
PRESUP01.F_NOMBRE_USUARIO(PRESUP01.F_USUARIO_CONTABILIDAD(:cod_orden_pago)) AS NOM_USR_REV,
PRESUP01.F_CEDULA_USUARIO(PRESUP01.F_USUARIO_CONTABILIDAD(:cod_orden_pago)) AS CED_USR_REV,
(SELECT MAX(M.NOMBRE) FROM USUARIOS U INNER JOIN MAESTRO_TERCEROS M ON U.CEDULA=TRUNC(M.NIT,0) WHERE U.CODIGO_USUARIO=PRESUP01.F_USUARIO_CONTABILIDAD(:cod_orden_pago)) AS NOM_USR_REV,
(SELECT MAX(U.CEDULA) FROM USUARIOS U WHERE U.CODIGO_USUARIO=PRESUP01.F_USUARIO_CONTABILIDAD(:cod_orden_pago)) AS CED_USR_REV,
(SELECT MAX(M.NOMBRE) FROM USUARIOS U INNER JOIN MAESTRO_TERCEROS M ON U.CEDULA=TRUNC(M.NIT,0) WHERE U.CODIGO_USUARIO=F.CODIGO_USUARIO_CAUSACION) AS NOM_USR_CONT,
(SELECT MAX(U.CEDULA) FROM USUARIOS U WHERE U.CODIGO_USUARIO=F.CODIGO_USUARIO_CAUSACION) AS CED_USR_CONT,
G.NUMERO_CUENTA, G.TIPO_CUENTA, G.BANCO,
A.CONSECUTIVO_EQUI,
Se realizaron dos mejoras críticas en el reporte de órdenes de pago: la normalización visual de los nombres de los revisores y la unificación de la fuente de datos para incluir usuarios provenientes de diferentes procesos (Presupuesto e Interfaces).
Estandarización de Formato: Se aplicó una regla de capitalización para que los nombres de los revisores sigan el estándar de “Nombres Propios” (ej: Juan Pérez), independientemente de cómo estén registrados en la base de datos. Unificación de Datos: Se ajustó la lógica de extracción de información para que el reporte muestre correctamente a los usuarios revisores, sin importar si el registro fue creado directamente en el módulo de presupuesto o a través de una interface.
Objeto Modificado: r_orden_pago_isvimed (DataWindow). Detalles del Cambio: Lógica de Datos (SQL): Se integró un subquery en el Source del DataWindow para consultar la tabla de usuarios. Esta subquery permite homologar la obtención de los datos del revisor, garantizando la integridad de la información ya sea que provenga de la gestión interna del sistema o de procesos de integración (interfaces). Formato (Capa de Presentación): Se implementó la función WordCap() en el campo del nombre del revisor para transformar el texto y asegurar que cada palabra inicie con mayúscula. Sintaxis: WordCap(nom_usr_rev)
Módulo: Presupuesto Reporte: Orden de Pago (ISVIMED). DataWindow: r_orden_pago_isvimed Origen de Datos: SQL Select (DataWindow Source).
(SELECT DECODE(NVL(C.CODIGO_USUARIO_CAUSACION,0),0,C.CODIGO_USUARIO_ELABORA,C.CODIGO_USUARIO_CAUSACION) CODIGO_USUARIO_CAUSACION
FROM DET_ORDEN_PAGO A,
DET_ASIENTOS_DOCUMENTO B,
MAESTRO_ASIENTO_CONTABLE C
WHERE A.CODIGO_ORDEN_PAGO = :cod_orden_pago
AND B.CODIGO_DOCUMENTO = A.CODIGO_DOCUMENTO
AND C.CODIGO_ASIENTO = B.CODIGO_ASIENTO
AND ROWNUM = 1) F,
(SELECT A.CODIGO_TERCERO, A.NUMERO_CUENTA, DECODE(A.TIPO_CUENTA,'01','DE AHORROS','CORRIENTE') TIPO_CUENTA, B.NOMBRE BANCO
FROM DET_TERCERO_CUENTA A,
MAESTRO_CODIGOS_BANCOS B
WHERE A.ESTADO = 'A'
AND B.CODIGO_BANCO_PRINCIPAL = A.CODIGO_BANCO_PRINCIPAL) G,
(SELECT NVL(MAX(
CASE
WHEN DOP.USUARIO_EMPRESA = 'TESORE01'
THEN MRP.CODIGO_USUARIO_RECIBE
END),PRESUP01.F_USUARIO_CONTABILIDAD(:cod_orden_pago)) CODIGO_USUARIO_REV
FROM DET_ORDEN_PAGO DOP
LEFT JOIN MAE_RECEPCION_PEDIDOS MRP ON MRP.CODIGO_RECEPCION = DOP.CODIGO_DOCUMENTO
WHERE DOP.CODIGO_ORDEN_PAGO = :cod_orden_pago) H
WHERE A.CODIGO_ORDEN_PAGO = :cod_orden_pago
AND B.CODIGO_DEPENDENCIA(+) = A.CODIGO_DEPENDENCIA
AND C.CODIGO_TERCERO(+) = A.CODIGO_TERCERO
AND D.CODIGO_USUARIO(+) = A.CODIGO_USUARIO_ELABORA
AND E.CODIGO_USUARIO(+) = A.CODIGO_USUARIO_APRUEBA
AND R.CODIGO_USUARIO(+) = H.CODIGO_USUARIO_REV
AND G.CODIGO_TERCERO(+) = A.CODIGO_TERCERO