Esta opción permite la generación masiva de documentos financieros por medio de la funcionalidad interna Supertabla 1). El proceso de carga de archivos utiliza la supertabla de forma implícita2) es decir el usuario previamente configura archivos planos de acuerdo a configuraciones de conceptos y los carga en esta opción.
Este proceso se ejecuta de forma atómica es decir si ocurre un error en el procesamiento de la carga (por lo general por problemas en las configuraciones o saldos en los procesos) el proceso de generación masiva de documentos (Carga) se cancela.
A Continuación se describe la funcionalidad por medio de pestañas.
En esta pestaña se pueden visualizar los procesos de cargas previamente realizados en el sistema. Se pueden filtrar, ordenar y buscar procesos previos.
Tanto el boton test como el estado borrador, no lo usa el cliente, nada más está allí para fines de pruebas con acompañamiento, el cliente solamente usa estado Aprobado. Cuando estos se encuentren activos son porque se activaron por base de datos, pero en todos los clientes se deben encontrar inactivos.
Los siguientes UPDATE son para inhabilitar tanto el boton test como el estado si se llegan a encontrar habilitados.
UPDATE sicof.m_constantes SET APLICA = 'N' WHERE UPPER(TRIM(DESCRIPCION)) ='MOSTRAR_BOTON_SFCOMERCIAL_DOCUMENTO';
UPDATE sicof.m_constantes SET APLICA = 'N' where UPPER(TRIM(DESCRIPCION)) = 'MOSTRAR_BOTON_SFCOMERCIAL_TEST' ;
En esta pestaña se encuentra la funcionalidad de analizador previo de cargar. Para más información consulte: Analizador
Objeto: w_carga_datos_comercial_avance.srw Función: of_validador_carga() Módulo: Tesorería / Interfaz Comercial Versión de PB: 12.5 Fecha: Octubre 2023
En el proceso de carga de avances comerciales, el sistema realiza una validación presupuestal contra el PAC (Plan Anual de Caja) cuando el parámetro PRESUP01.PARAMETROS_SISTEMA.maneja_pac está activo ('S').
Se detectó que la variable ld_pac_disponible siempre retornaba 0, lo que provocaba bloqueos erróneos en la carga, incluso cuando existía disponibilidad presupuestal en el rubro correspondiente.
Causa Raíz La consulta SQL embebida original intentaba obtener el rubro desde la tabla SFCOMERCIAL.DET_CONCEPTOS_RUBROS filtrando por la columna RUBRO_INGRESOS. Sin embargo, los procesos de avance y egresos manejan rubros de gasto definidos en la maestra de conceptos comerciales (MAE_CONCEPTOS_COMERCIAL). Al no encontrar coincidencia en la tabla de ingresos, el SELECT no devolvía registros o el NVL resultaba en 0.
Se modificó el SQL embebido dentro de la función of_validador_carga() para:
Agregación: Utilizar SUM(DP.SALDO_DISPONIBLE) para consolidar el saldo en caso de existir múltiples registros para un mismo rubro en el mes/año. Fuente de Datos correcta: Cambiar la subconsulta para que busque el rubro asociado al concepto comercial en MAE_CONCEPTOS_COMERCIAL.CODIGO_RUBRO, que es la fuente verídica para procesos de egresos/avances. Cláusula de búsqueda: Se reemplazó el EXISTS por un IN sobre la maestra de conceptos para mayor claridad y precisión en la relación concepto-rubro.
if ls_maneja_pac = 'S' then
iuo_validador.of_add_console('Validando saldos de PAC...', 1)
for li_row = 1 to li_count
ls_codigo_concepto = idw_detalle.getitemstring(li_row, 'codigo_concepto')
ld_valor = idw_detalle.getitemdecimal(li_row, 'valor')
ldt_fecha = date(idw_detalle.getitemDatetime(li_row, 'fecha_pago'))
If isnull(ldt_fecha) then ldt_fecha = ldt_fecha_hoy
li_ano = year(ldt_fecha)
li_mes = month(ldt_fecha)
setNull(ld_pac_disponible)
guo_app.of_sql_embedded_context( ts_transaccion)
SELECT NVL(SUM(DP.SALDO_DISPONIBLE), 0)
INTO :ld_pac_disponible
FROM PRESUP01.PLAN_ANUAL_DE_CAJA DP
WHERE DP.ANO = :li_ano AND DP.MES = :li_mes
AND DP.PAC_RUBRO IN (SELECT MCC.CODIGO_RUBRO FROM MAE_CONCEPTOS_COMERCIAL MCC
WHERE MCC.CODIGO_CONCEPTO = :ls_codigo_concepto)
USING ts_transaccion;
if Not IsNull(ld_pac_disponible) AND ld_valor > ld_pac_disponible then
ls_msg = 'El valor (' + String(ld_valor, '$#,##0.00') + ') del concepto ' + ls_codigo_concepto + &
' excede el saldo PAC disponible (' + String(ld_pac_disponible, '$#,##0.00') + ') para el mes ' + String(li_mes) + '.'
iuo_validador.of_add_console(ls_msg, 3)
lb_valid = false
end if
next
if lb_valid then iuo_validador.of_add_console('---> OK Validando saldos de PAC', 1)
end if