Reescribir ipprrp010 (Operacion Movimientos Detallado): .4rp equivocado

El .4rp que traia el repo (y su copia en el backup viejo) era en
realidad el reporte de "activos" de otro programa (RWFglReportName y
todo el cuerpo no correspondian a REPORT detalle(x)) - por eso nunca
pudo generar nada, ni siquiera despues de arreglar el crash original
de configureOutput().

- Se convirtio el REPORT detalle(x) de PRINT COLUMN clasico a PRINTX
  (siguiendo el patron de ipprrp005, que si funciona), y se escribio un
  .4rp nuevo desde cero con las variables correctas.
- Se quito el subtotal por "Orden" que la migracion habia agregado sin
  incluirlo en el ORDER BY (nunca funciono bien, no existia en 3.20).
- Se agrego titulo a la ventana (usaba el generico "screen").

Pendiente: el acomodo visual de columnas del reporte sale apilado en
vertical en vez de en fila - los datos y subtotales son correctos, pero
falta pulir el layout en el Report Designer (consultado con Johnny).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-29 12:22:25 -04:00
co-authored by Claude Sonnet 5
parent 6ec15cfb3d
commit d1b29437c9
3 changed files with 150 additions and 129 deletions
+24 -87
View File
@@ -78,6 +78,7 @@ FUNCTION ipprrp010()
OPEN FORM ipfmrp010 FROM "ipfmrp010"
DISPLAY FORM ipfmrp010
CALL ui.Window.getCurrent().setText("Operaciones Por Movimientos Al Standard")
DISPLAY "ipprrp010" AT 4,3
DISPLAY "Operaciones Por Movimientos Al Standard" AT 6,22
@@ -163,7 +164,16 @@ END INPUT
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
CALL configureOutput("SVG") RETURNING handler
LET r_filename = "ipprrp010.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET r_output = "SVG"
LET preview = 1
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
LET handler = fgl_report_commitCurrentSettings()
ELSE
EXIT PROGRAM
END IF
START REPORT detalle TO XML HANDLER handler
PREPARE busca_ant FROM select_ac
@@ -246,110 +256,37 @@ END FUNCTION
proveedor VARCHAR(100)
END RECORD
DEFINE primera CHAR(1)
DEFINE c_ano1 char(4)
DEFINE negrillas_on CHAR(3)
DEFINE negrillas_off CHAR(3)
DEFINE doce,comp_on,comp_off CHAR(3)
DEFINE hora CHAR(5)
DEFINE total_p,total_m DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150
DEFINE total_p,total_m,total_consumo_m DECIMAL(12,2)
DEFINE pcodigo CHAR(30)
DEFINE fecha_fmt CHAR(10)
ORDER BY x.cod_mov,x.num_doc
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 doce = ASCII 27, ASCII 77
}
LET hora = time
PRINT comp_on
LET lj = (100 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, "ipprrp010",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 93, "Pag. ",pageno using "###"
PRINT COLUMN 28, " Sistema de Inventario de Productos Terminados",
COLUMN 93, today using "dd/mm/yyyy"
PRINT COLUMN 28, " Operacion por Tipo de Movimiento Al Standard",
COLUMN 96, hora
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------"
PRINT COLUMN 96, "Material +"
PRINT COLUMN 96, "Labor +"
PRINT COLUMN 1, "Docto.",
COLUMN 10, "ORDEN",
COLUMN 20, "Fecha",
COLUMN 32, "Producto",
COLUMN 85, "Cantidad",
COLUMN 98, "Gasto ",
COLUMN 112, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------"
PRINT negrillas_off
BEFORE GROUP OF x.cod_mov
LET total_m = 0
LET total_consumo_m = 0
SELECT descrip_mov INTO x.descrip_mov FROM iptb00005
WHERE cod_mov = x.cod_mov
PRINT negrillas_on
PRINT COLUMN 1, "Movimiento: ",x.cod_mov using "##"," ",
x.descrip_mov
PRINT negrillas_off
PRINTX x.cod_mov, x.descrip_mov
BEFORE GROUP OF x.num_doc
PRINT COLUMN 1, x.num_doc USING "######",
COLUMN 10, x.orden USING "#######",
COLUMN 20, x.fecha USING "dd/mm/yyyy",
2 SPACES, x.proveedor CLIPPED
SKIP 1 LINE
ON EVERY ROW
LET total_p = x.costo * x.consumo
LET total_p = x.costo * x.consumo
IF total_p IS NULL THEN
LET total_p = 0
END IF
LET total_m = total_m + total_p
LET total_consumo_m = total_consumo_m + x.consumo
PRINT COLUMN 1, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-",
x.cod_tipo USING "&&&&&&&&","-",x.cod_sec USING "&&&&&&&&",
" ",x.descrip_esp,
COLUMN 80, x.consumo USING "###,###.###",
2 SPACES, x.costo USING "#,###,###.###",
2 SPACES, total_p USING "##,###,###.##"
LET pcodigo = x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-",
x.cod_tipo USING "&&&&&&&&","-",x.cod_sec USING "&&&&&&&&"
LET fecha_fmt = x.fecha USING "dd/mm/yyyy"
AFTER GROUP OF x.num_doc
SKIP 1 LINE
PRINTX pcodigo, x.descrip_esp, x.num_doc, x.orden, fecha_fmt, x.proveedor,
x.consumo, x.costo, total_p
AFTER GROUP OF x.cod_mov
PRINT COLUMN 80, "-------------",
COLUMN 109,"-------------"
PRINT COLUMN 50, "Total ---->",
COLUMN 80, GROUP SUM(x.consumo) USING "###,###.###",
COLUMN 109, total_m USING "##,###,###.##"
SKIP TO TOP OF PAGE
AFTER GROUP OF x.orden
PRINT COLUMN 80, "-------------",
COLUMN 109,"-------------"
PRINT COLUMN 50, "Total ---->",
COLUMN 80, GROUP SUM(x.consumo) USING "###,###.###",
COLUMN 106, GROUP SUM(x.consumo*X.costo) USING "###,###,###.###"
PRINTX total_consumo_m, total_m
ON LAST ROW
PRINT ASCII 27, ASCII 80
END REPORT