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:
co-authored by
Claude Sonnet 5
parent
79eff57d70
commit
7638c1046b
+1
-1
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user