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 <noreply@anthropic.com>
This commit is contained in:
Abel López
2026-10-21 16:07:13 -04:00
co-authored by Claude Opus 5.5
parent 65ad3fd68c
commit 3422acc241
+13 -11
View File
@@ -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
@@ -150,6 +151,7 @@ END MAIN
hora CHAR(5)
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