From 3422acc241147eadfb003ebdea18b998d4c6ef32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Wed, 21 Oct 2026 16:07:13 -0400 Subject: [PATCH] cpprrp017 (Validacion de Facturas): exportacion a PDF/Excel y filtro que se cortaba - La salida escribia un .txt en FGLSPOOL (no era PDF ni Excel); vuelve a configureOutput() con la ventana comun seleccionarsalida() (EXCEL / PDF / SCREEN), RIGHT MARGIN 142 y sin codigos de impresora matricial. - BUG de la migracion: la consulta se armaba en selec CHAR(500); al cambiar rowid por ROW_NUMBER() el texto fijo paso a 463 caracteres y cualquier filtro de factura+suplidor o de fechas se cortaba (-4145). Ahora se arma en un STRING local. Verificado contra la BD .250: factura 068-1AK05 de 22-770 (Debe = Haber = 1,253,019.91) y grupo 22 del 01/08/2026 al 15/08/2026 (4 facturas, total 3,834,979.72) cuadran con SQL; PDF y Excel generados. Build OK con gsmake. Co-Authored-By: Claude Opus 5.5 --- PROYECTO/cpdir/cpprrp017.4gl | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/PROYECTO/cpdir/cpprrp017.4gl b/PROYECTO/cpdir/cpprrp017.4gl index 3af449c..3d4472e 100644 --- a/PROYECTO/cpdir/cpprrp017.4gl +++ b/PROYECTO/cpdir/cpprrp017.4gl @@ -10,7 +10,6 @@ GLOBALS "cpprgb000.4gl" DEFINE selec1 CHAR(500) - DEFINE p_reportfile STRING DEFINE mvto RECORD fecha_in DATE, @@ -47,6 +46,9 @@ MAIN END MAIN FUNCTION cpprrp017() + -- La consulta se arma en STRING: con ROW_NUMBER() (en lugar de rowid) el texto + -- fijo ocupa 463 de los 500 caracteres de selec y el filtro se cortaba (-4145). + DEFINE l_selec STRING CLEAR SCREEN OPTIONS FORM LINE 8 @@ -68,7 +70,7 @@ END MAIN RETURN END IF - LET selec = + LET l_selec = "SELECT a.factura,a.cod_sp,a.cod_sp_sec,b.nom_sp,a.fecha,c.valor, ", " a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc, ", " a.debito,a.credito, ", @@ -84,14 +86,13 @@ END MAIN DISPLAY "<< Buscando Informacion .... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) - PREPARE comando FROM selec + PREPARE comando FROM l_selec DECLARE movto CURSOR FOR comando OPEN movto - -- La ruta original "C:\archivo" no es escribible sin privilegios de - -- administrador; se usa un archivo en FGLSPOOL en su lugar. - LET p_reportfile = FGL_GETENV("FGLSPOOL"), "/cpprrp017_valctas.txt" - START REPORT val_ctas TO p_reportfile + CALL seleccionarsalida() RETURNING r_output + CALL configureoutput(r_output) RETURNING handler + START REPORT val_ctas TO XML HANDLER handler DISPLAY "<< " AT 19,14 DISPLAY "<< Impresion En Proceso .... Espere Por Favor. >>" AT 19,14 @@ -149,7 +150,8 @@ END MAIN negrillas_off CHAR(6), hora CHAR(5) - OUTPUT + OUTPUT + RIGHT MARGIN 142 LEFT MARGIN 0 TOP MARGIN 1 BOTTOM MARGIN 4 @@ -157,10 +159,10 @@ END MAIN ORDER BY x.cod_sp_sec,x.factura,x.cuenta_no,x.id FORMAT PAGE HEADER - LET negrillas_on = ASCII 27, ASCII 69 - LET negrillas_off = ASCII 27, ASCII 70 - LET comp_on = ASCII 15 - LET comp_off = ASCII 18 + LET negrillas_on = NULL -- sin codigos de impresora (salida PDF/Excel) + LET negrillas_off = NULL -- sin codigos de impresora (salida PDF/Excel) + LET comp_on = NULL -- sin codigos de impresora (salida PDF/Excel) + LET comp_off = NULL -- sin codigos de impresora (salida PDF/Excel) LET hora = time LET lj = (82 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_off,negrillas_on