Registra noprrp003 (Herramientas de Empleados) y corrige bugs
Se agrega noprrp003 al proyecto usando nofmrp003.4fd, reutilizando FUNCIONESREPORT y libgre.42x ya configurados para noprrp002. Se corrige bug donde el combo "Departamento=TODOS" (valor NULL) generaba via CONSTRUCT la condicion "e.departamento is null" en vez de no filtrar, excluyendo a todos los empleados con departamento asignado (confirmado con debug logging: solo empleados sin departamento pasaban el filtro). Se agrega neutraliza_depto_null() para neutralizar esa condicion especifica tras el CONSTRUCT. Se corrige fila vacia sobrante al final del reporte (el FOREACH deja un elemento extra en el arreglo dinamico; se agrega inv.deleteElement(idx), igual que en noprrp002). Probado con empleado especifico, todos los empleados y filtro por departamento, verificado contra BD (94 registros totales, 12 para CONTABILIDAD). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
c7442a777b
commit
0641c6b2be
@@ -488,6 +488,7 @@
|
||||
<File filePath="nodir/nofmcs004.4fd"/>
|
||||
<File filePath="nodir/nofmcs006.4fd"/>
|
||||
<File filePath="nodir/nofmrp002.4fd"/>
|
||||
<File filePath="nodir/nofmrp003.4fd"/>
|
||||
</Library>
|
||||
<Library binaryName="FUNCIONES_NO" id="-306412216" label="FUNCIONES_NO">
|
||||
<File filePath="nodir/noprgb000.4gl"/>
|
||||
@@ -561,6 +562,11 @@
|
||||
<File filePath="nodir/noprrp002.4gl"/>
|
||||
<File filePath="bin/noprrp002.4rp"/>
|
||||
</Application>
|
||||
<Application binaryName="noprrp003" dependencies="-1026233879,-764824792,-306412216,-335228674,-1423229125" externalDependencies="libgre.42x" id="-700000077" label="noprrp003">
|
||||
<Configuration commandLineArguments="alopez Lopez2023" id="-700000078" label="Configuration"/>
|
||||
<File filePath="nodir/noprrp003.4gl"/>
|
||||
<File filePath="bin/noprrp003.4rp"/>
|
||||
</Application>
|
||||
</Group>
|
||||
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
|
||||
<Library binaryName="FORMULARIOS_IP" dependencies="-1026233879" id="-1826025351" label="FORMULARIOS_IP">
|
||||
|
||||
@@ -57,6 +57,12 @@ FUNCTION noprrp003()
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
-- El combo "departamento" usa NULL como valor para "TODOS", pero
|
||||
-- CONSTRUCT traduce eso a "e.departamento is null", que excluye
|
||||
-- (en vez de incluir) a los empleados con departamento asignado.
|
||||
-- Se neutraliza esa condicion para que "TODOS" no filtre nada.
|
||||
CALL neutraliza_depto_null(criterio) RETURNING criterio
|
||||
|
||||
LET query =
|
||||
"SELECT a.num_emp, ",
|
||||
" RTRIM(e.nom1_emp)+' '+RTRIM(ISNULL(e.apell1_emp,'')), ",
|
||||
@@ -84,6 +90,7 @@ FUNCTION noprrp003()
|
||||
FOREACH cur_rep INTO inv[idx].*
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
CALL inv.deleteElement(idx) -- descarta la fila vacia que deja el FOREACH
|
||||
|
||||
IF idx > 1 THEN
|
||||
LET r_filename = "noprrp003.4rp"
|
||||
@@ -143,5 +150,20 @@ REPORT rep_herr(x)
|
||||
ON EVERY ROW
|
||||
PRINTX x.fecha, x.codigo, x.descripcion, x.documento, x.cantidad
|
||||
|
||||
|
||||
END REPORT
|
||||
|
||||
END REPORT
|
||||
|
||||
FUNCTION neutraliza_depto_null(criterio)
|
||||
DEFINE criterio STRING
|
||||
DEFINE patron STRING
|
||||
DEFINE pos INT
|
||||
|
||||
LET patron = "e.departamento is null"
|
||||
LET pos = criterio.getIndexOf(patron, 1)
|
||||
IF pos > 0 THEN
|
||||
LET criterio = criterio.subString(1, pos - 1), "1=1",
|
||||
criterio.subString(pos + patron.getLength(), criterio.getLength())
|
||||
END IF
|
||||
|
||||
RETURN criterio
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user