diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index e2def6e..c036e1c 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -488,6 +488,7 @@ + @@ -561,6 +562,11 @@ + + + + + diff --git a/PROYECTO/nodir/noprrp003.4gl b/PROYECTO/nodir/noprrp003.4gl index c66ca59..44ce865 100644 --- a/PROYECTO/nodir/noprrp003.4gl +++ b/PROYECTO/nodir/noprrp003.4gl @@ -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 \ No newline at end of file + +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 \ No newline at end of file