Registra noprrp009 (Movimientos de Empleados) y corrige varios bugs
Se agrega noprrp009 al proyecto usando nofmrp009.per. Se corrige conversion CONVERT(CHAR,fecha,103) hacia variables DATE en 3 consultas (mismo patron de error -1205 "Invalid month in date" visto en otros programas). Se corrige salida del reporte: REPORT list_cooper usa el estilo clasico PRINT COLUMN (no PRINTX/.4rp), incompatible con el motor de reportes moderno (fgl_report_*); configureOutput() en msgrp000.4gl es un stub que siempre retorna NULL para este caso (documentado en su propio comentario). Se cambia a escribir un archivo de texto plano en FGLSPOOL, igual que noprrp038. Se corrige comparacion de fechas como texto (CONVERT a CHAR en formato dd/mm/yyyy comparado alfabeticamente) en el modo "Vacaciones Pagadas", que fallaba al usar un rango de fechas que cruza meses/anos distintos; se cambia a comparacion real de fechas (>= y < dia_siguiente). Se corrige formato de fecha faltante en los campos de rango de fecha del formulario (.per), causando "Invalid month in date" al capturar un dia mayor a 12 como mes. Se corrige perdida del valor de fecha final en el encabezado del modo "Vacaciones Pagadas" (el campo se reutilizaba en el record de fetch y se sobreescribia con un valor en blanco); se guarda en una variable separada antes del ciclo. Se corrige formato de impresion de montos y totales sin signo (mascaras "#,###,###.##" sin caracter de signo), que ocultaba silenciosamente los valores negativos mostrandolos como positivos. Probado en ambos modos (por nomina/movimiento, y por vacaciones pagadas con rango de fechas cruzando meses), verificado contra BD. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a7431ef94a
commit
8ac18135e5
@@ -495,6 +495,7 @@
|
||||
<File filePath="nodir/nofmrp044.4fd"/>
|
||||
<File filePath="nodir/nofmrp008.4fd"/>
|
||||
<File filePath="nodir/nofmrp043.4fd"/>
|
||||
<File filePath="nodir/nofmrp009.per"/>
|
||||
</Library>
|
||||
<Library binaryName="FUNCIONES_NO" id="-306412216" label="FUNCIONES_NO">
|
||||
<File filePath="nodir/noprgb000.4gl"/>
|
||||
@@ -592,6 +593,10 @@
|
||||
<File filePath="nodir/noprrp043.4gl"/>
|
||||
<File filePath="bin/noprrp043.4rp"/>
|
||||
</Application>
|
||||
<Application binaryName="noprrp009" dependencies="-1026233879,-764824792,-306412216,-335228674,-1423229125" environment="dir:FGLSPOOL=$(ProjectDir)/spool" externalDependencies="libgre.42x" id="-700000089" label="noprrp009">
|
||||
<Configuration commandLineArguments="alopez Lopez2023" id="-700000090" label="Configuration"/>
|
||||
<File filePath="nodir/noprrp009.4gl"/>
|
||||
</Application>
|
||||
</Group>
|
||||
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
|
||||
<Library binaryName="FORMULARIOS_IP" dependencies="-1026233879" id="-1826025351" label="FORMULARIOS_IP">
|
||||
|
||||
@@ -22,8 +22,8 @@ end
|
||||
tables
|
||||
notb00008
|
||||
ATTRIBUTES
|
||||
f1 = formonly.fecha_inicial;
|
||||
f2 = formonly.fecha_al;
|
||||
DATEEDIT f1 = formonly.fecha_inicial type date,format = "dd/mm/yyyy";
|
||||
DATEEDIT f2 = formonly.fecha_al type date,format = "dd/mm/yyyy";
|
||||
COMBOBOX s1 = formonly.vacaciones_pagadas, ITEMS=("SI","NO"),DEFAULT="NO";
|
||||
f001 = notb00008.num_nomi,autonext,
|
||||
comments = "Digite el numero de la nomina";
|
||||
|
||||
@@ -17,7 +17,8 @@ GLOBALS "noprgb000.4gl"
|
||||
num_emp LIKE notb00008.num_emp,
|
||||
valor DECIMAL(12,2)
|
||||
END RECORD,
|
||||
vacaciones_pagadas CHAR(2)
|
||||
vacaciones_pagadas CHAR(2),
|
||||
fecha_al_sel DATE
|
||||
|
||||
DEFINE cooper RECORD
|
||||
num_emp LIKE notb00008.num_emp,
|
||||
@@ -93,13 +94,13 @@ FUNCTION noprrp009()
|
||||
NEXT FIELD tipo_emp
|
||||
END IF
|
||||
LET selec =
|
||||
"SELECT CONVERT(CHAR(10),fecha_al,103) FROM notb00010 ",
|
||||
"SELECT fecha_al FROM notb00010 ",
|
||||
" WHERE num_nomi = ",cooper.num_nomi USING "<<<<","and tipo_emp = '",cooper.tipo_emp,"'"
|
||||
PREPARE busca_fecha FROM selec
|
||||
PREPARE busca_fecha FROM selec
|
||||
EXECUTE busca_fecha INTO cooper.fecha_al
|
||||
|
||||
LET selec =
|
||||
"SELECT CONVERT(CHAR(10),MIN(fecha_del),103) FROM notb00010 ",
|
||||
"SELECT MIN(fecha_del) FROM notb00010 ",
|
||||
" WHERE ano = ",year(cooper.fecha_al)," and tipo_emp = '",cooper.tipo_emp,"'"
|
||||
PREPARE busca_fecha1 FROM selec
|
||||
EXECUTE busca_fecha1 INTO fecha_inicial
|
||||
@@ -124,8 +125,9 @@ FUNCTION noprrp009()
|
||||
RETURN
|
||||
END IF
|
||||
EXIT INPUT
|
||||
END INPUT
|
||||
END IF
|
||||
END INPUT
|
||||
END IF
|
||||
LET fecha_al_sel = cooper.fecha_al
|
||||
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
||||
doble_on,doble_off,comp_on,comp_off,
|
||||
doce,normal,archivo,imprime
|
||||
@@ -134,7 +136,7 @@ FUNCTION noprrp009()
|
||||
IF vacaciones_pagadas = "NO" THEN
|
||||
LET SELEC =
|
||||
"SELECT UNIQUE a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ",
|
||||
" b.nom1_emp,b.apell1_emp,ISNULL(a.valor*-1,0),a.num_nomi,CONVERT(CHAR(10),d.fecha_al,103), ",
|
||||
" b.nom1_emp,b.apell1_emp,ISNULL(a.valor*-1,0),a.num_nomi,d.fecha_al, ",
|
||||
" a.tipo_emp,a.cod_mov,c.descrip_mov ",
|
||||
" FROM adtb00003 b,notb00008 a,notb00002 c,notb00010 d ",
|
||||
" WHERE a.num_emp = b.num_emp AND a.tipo_emp = b.nomina AND ",
|
||||
@@ -151,9 +153,8 @@ FUNCTION noprrp009()
|
||||
" FROM adtb00003 b,notb00008 a,notb00002 c,notb00010 d,adtb00020 e,adtb00032 f ",
|
||||
" WHERE a.num_emp = b.num_emp AND a.tipo_emp = b.nomina AND ",
|
||||
" a.cod_mov = c.cod_mov AND a.num_nomi = d.num_nomi AND ",
|
||||
" CONVERT(CHAR(10),e.fecha,103) between '",fecha_inicial USING "dd/mm/yyyy" ,"' and '",cooper.fecha_al USING "dd/mm/yyyy","' ",
|
||||
" and CONVERT(CHAR(10),e.fecha,103) between '",fecha_inicial USING "dd/mm/yyyy" ,"' and '",cooper.fecha_al USING "dd/mm/yyyy",
|
||||
"' and a.tipo_emp = '",cooper.tipo_emp,"' and a.tipo_emp=d.tipo_emp AND ",
|
||||
" e.fecha >= '",fecha_inicial USING "yyyy-mm-dd" ,"' and e.fecha < '",(cooper.fecha_al+1) USING "yyyy-mm-dd","' ",
|
||||
" and a.tipo_emp = '",cooper.tipo_emp,"' and a.tipo_emp=d.tipo_emp AND ",
|
||||
# " a.cod_mov in (1) AND ",
|
||||
" b.num_emp = e.num_emp and e.cod_mto=1 and e.num_trx = f.num_trx AND ",
|
||||
" f.num_nomi = a.num_nomi and f.num_nomi_no IS NULL AND ",
|
||||
@@ -181,11 +182,9 @@ FUNCTION noprrp009()
|
||||
EXIT WHILE
|
||||
END IF
|
||||
IF idx = 1 THEN
|
||||
CALL seleccionarsalida() RETURNING r_output
|
||||
CALL configureoutput(r_output) RETURNING HANDLER
|
||||
|
||||
START REPORT list_cooper TO XML HANDLER HANDLER
|
||||
LET idx = 2
|
||||
LET cmd = FGL_GETENV("FGLSPOOL"),"\\noprrp009.txt"
|
||||
START REPORT list_cooper TO cmd
|
||||
LET idx = 2
|
||||
END IF
|
||||
|
||||
IF int_flag THEN
|
||||
@@ -282,7 +281,7 @@ END FUNCTION
|
||||
SKIP 1 LINE
|
||||
## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA
|
||||
IF vacaciones_pagadas = "SI" THEN
|
||||
PRINT COLUMN 1,fecha_inicial USING "dd/mm/yyyy", " hasta ",cooper.fecha_al USING "dd/mm/yyyy"
|
||||
PRINT COLUMN 1,fecha_inicial USING "dd/mm/yyyy", " hasta ",fecha_al_sel USING "dd/mm/yyyy"
|
||||
ELSE
|
||||
|
||||
PRINT COLUMN 1, "Nomina No.:",
|
||||
@@ -359,8 +358,8 @@ END FUNCTION
|
||||
COLUMN 11, x.nivel_emp using "&&","-",
|
||||
COLUMN 15, x.cod_puesto using "&&",
|
||||
COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped,
|
||||
COLUMN 55, GROUP SUM(x.valor) using "#,###,###.##",
|
||||
COLUMN 70, balance using "##,###,###.##"
|
||||
COLUMN 55, GROUP SUM(x.valor) using "-#,###,###.##",
|
||||
COLUMN 70, balance using "-##,###,###.##"
|
||||
|
||||
LET noRegistros = noRegistros + 1
|
||||
END IF
|
||||
@@ -371,7 +370,7 @@ END FUNCTION
|
||||
PRINT COLUMN 1, negrillas_on,
|
||||
COLUMN 2, "TOTAL GENERAL",
|
||||
COLUMN 18, negrillas_off,
|
||||
COLUMN 52, GROUP SUM(x.valor) using "###,###,###.##",
|
||||
COLUMN 70, total using "###,###,###.##"
|
||||
COLUMN 52, GROUP SUM(x.valor) using "-###,###,###.##",
|
||||
COLUMN 70, total using "-###,###,###.##"
|
||||
|
||||
END REPORT
|
||||
|
||||
Reference in New Issue
Block a user