Corregir noprmt008 (Generacion de Nomina): checkbox no aplicaba su

valor por defecto

El checkbox "GENERO NOMINA ACTIVOS" (opt1) y los demas checkboxes de
la pantalla inicial no entregaban su defaultValue a la variable si el
usuario no los tocaba explicitamente, quedando en "N". Como el codigo
hace "IF opt1 != 'S' THEN RETURN" sin ningun mensaje, el programa
generaba 0 registros y se cerraba en silencio pareciendo exitoso.

Se inicializan opt1/opt2/opt3/regalia/vacaciones explicitamente antes
del INPUT BY NAME para que coincidan con los defaults del formulario,
sin depender de esa interaccion.

Se retiro tambien la funcion debuglog() (y su entrada FGLSPOOL) usada
solo para diagnosticar este problema.

Verificado generando la nomina 2701/Q completa: 4798 registros para
628 empleados, con calculo correcto de sueldo quincenal (50% primera
quincena) y descuentos de TSS/ARS.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Abel López
2026-09-15 12:16:53 -04:00
co-authored by Claude Sonnet 5
parent 79eff57d70
commit 7638c1046b
2 changed files with 10 additions and 16 deletions
+1 -1
View File
@@ -498,7 +498,7 @@
<Configuration commandLineArguments="alopez Lopez2023" id="-700000050" label="Configuration"/>
<File filePath="nodir/noprmt007.4gl"/>
</Application>
<Application binaryName="noprmt008" dependencies="-1026233879,-764824792,-306412216,-335228674" environment="dir:FGLSPOOL=$(ProjectDir)/spool" id="-700000053" label="noprmt008">
<Application binaryName="noprmt008" dependencies="-1026233879,-764824792,-306412216,-335228674" id="-700000053" label="noprmt008">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000054" label="Configuration"/>
<File filePath="nodir/noprmt008.4gl"/>
</Application>
+9 -15
View File
@@ -170,15 +170,6 @@ MAIN
CALL noprmt008()
END MAIN
FUNCTION debuglog(txt)
DEFINE txt STRING
DEFINE ch base.Channel
LET ch = base.Channel.create()
CALL ch.openFile(FGL_GETENV("FGLSPOOL") || "/noprmt008_debug.log", "a")
CALL ch.writeLine(txt)
CALL ch.close()
END FUNCTION
FUNCTION noprmt008()
#CLEAR SCREEN
@@ -193,6 +184,15 @@ FUNCTION noprmt008()
# Seccion de captura de informacion general de la generacion de
# la nomina
LET int_flag = FALSE
-- El checkbox de la forma no siempre entrega su defaultValue a la
-- variable si el usuario no lo toca explicitamente; se inicializan
-- aqui para que coincidan con los defaults del formulario
-- (opt1=S, resto=N) y no dependan de esa interaccion.
LET opt1 = "S"
LET opt2 = "N"
LET opt3 = "N"
LET regalia = "N"
LET vacaciones = "N"
INPUT BY NAME datos_nomi.*, opt1, opt2, opt3, regalia, vacaciones
AFTER FIELD num_nomi
IF datos_nomi.num_nomi IS NULL THEN
@@ -379,7 +379,6 @@ FUNCTION noprmt008()
AFTER INPUT
IF int_flag THEN
CALL debuglog("AFTER INPUT: int_flag true, saliendo")
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
@@ -387,29 +386,24 @@ FUNCTION noprmt008()
END IF
EXIT INPUT
END INPUT
CALL debuglog("Paso INPUT BY NAME ok")
# Preparacion para busqueda por rango de departamento y rango de ficha del
# empleado
CONSTRUCT BY NAME criterio ON a.departamento, a.num_emp
IF int_flag THEN
CALL debuglog("CONSTRUCT: int_flag true, saliendo")
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CALL debuglog("Paso CONSTRUCT ok, criterio=[" || criterio CLIPPED || "]")
#CLEAR SCREEN
# PROMPT
#"ESTA SEGURO DE GENERAR DE NUEVO LA NOMINA (S/N) " FOR CHAR opt1
LET opt1 = upshift(opt1)
IF opt1 != "S" THEN
CALL debuglog("opt1<>S, saliendo. opt1=[" || opt1 CLIPPED || "]")
RETURN
END IF
CALL debuglog("Paso opt1 check ok")
#PROMPT
#"ESTA NOMINA ES DE REGALIA (S/N) " FOR CHAR regalia