Prueba inprrp011 (completo) e inprrp028 (matricial completo, PDF pendiente)

- Corrige selectOutput()/seleccionarSalida()/configureOutput() en
  defecto.4gl para usar la API real fgl_report_* (Report Writer 2.0),
  reemplazando los stubs previos. Reutiliza el formulario Configuration
  ya existente en el proyecto (FUNCIONESREPORT)
- inprrp011: quita el START REPORT forzado a XML roto (media migracion
  abandonada), probado completo: filtros, totales/subtotales vs
  produccion, exportacion PDF/Excel/Pantalla funcionando
- inprrp028: mismo patron, restaura Sietesalida) - No/matricial
  como respaldo. Crea bin/inprrp028.4rp (diseno de reporte, no existia)
  para la salida grafica; carga sin error de formato pero la
  generacion no completa en este entorno - pendiente de revisar
  rendimiento/recursos

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 16:52:39 -04:00
co-authored by Claude Sonnet 5
parent 4cb8d4c71b
commit 4532d51e4b
5 changed files with 116 additions and 19 deletions
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="60003" version="7.00">
<report:Settings RWPageWidth="tabloidlength" RWPageLength="tabloidwidth" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-PDF/>
<report:Format-image/>
<report:Format-SVG/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../indir/inprrp028.rdd" RWFglReportName="prt_exist"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report">
<MINIPAGE name="MiniPage1" width="max" length="max" fontName="Arial" fontSize="8">
<LAYOUTNODE name="HeaderNode" width="min" length="min" swapX="true" port="anyPageHeader">
<MINIPAGE name="HeaderStripe" width="min" length="max" alignment="center" layoutDirection="topToBottom">
<WORDBOX name="WB1" alignment="baseline" fontBold="true" fontSize="12" text="MARMOTECH, S. A."/>
<WORDBOX name="WB2" alignment="baseline" text="Sistema de Inventario de Materia Prima"/>
<WORDBOX name="WB3" alignment="baseline" fontBold="true" text="Existencia con Entrada y Salida"/>
</MINIPAGE>
<LAYOUTNODE name="ColHeader" width="max" length="min" bgColor="#cccccc" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WBc1" width="3cm" alignment="baseline" text="Codigo"/>
<WORDWRAPBOX name="WBc2" width="6cm" alignment="baseline" text="Descripcion"/>
<WORDBOX name="WBc3" width="1.5cm" alignment="baseline" text="Unidad"/>
<WORDBOX name="WBc4" width="2.5cm" alignment="baseline" textAlignment="right" text="Existencia Ant."/>
<WORDBOX name="WBc5" width="2.5cm" alignment="baseline" textAlignment="right" text="Entradas"/>
<WORDBOX name="WBc6" width="2.5cm" alignment="baseline" textAlignment="right" text="Salidas"/>
<WORDBOX name="WBc7" width="2.5cm" alignment="baseline" textAlignment="right" text="Existencia Act."/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="RowNode" width="max" length="min" layoutDirection="leftToRight">
<rtl:input-variable name="x.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WBcodigo" width="3cm" alignment="baseline" text="{{x.cod_n.format(&quot;&amp;&quot;)+&quot;-&quot;+x.cod_grupo.format(&quot;&amp;&quot;)+&quot;-&quot;+x.cod_tipo.format(&quot;&amp;&amp;&quot;)+&quot;-&quot;+x.cod_sec.format(&quot;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WBdesc" width="6cm" alignment="baseline" text="{{x.descrip_esp.trim()}}"/>
<rtl:input-variable name="x.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WBund" width="1.5cm" alignment="baseline" text="{{x.unidad_med.trim()}}"/>
<rtl:input-variable name="x.existe_ant" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBant" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{x.existe_ant}}"/>
<rtl:input-variable name="entradas" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBent" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{entradas}}"/>
<rtl:input-variable name="salidas" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBsal" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{salidas}}"/>
<rtl:input-variable name="x.existe_act" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBact" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{x.existe_act}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+36 -11
View File
@@ -167,22 +167,47 @@ END FUNCTION
FUNCTION configureOutput(tipo_file)
DEFINE tipo_file CHAR(3)
-- La API fgl_report_* (Report Writer 2.0) no esta disponible en este
-- FGL 6.00.01. Esta salida (XML/XLS/PDF por handler) no esta soportada
-- en este entorno; usar r_output = 'MA' (impresion clasica) en su lugar.
IF NOT fgl_report_loadCurrentSettings(NULL) THEN
RETURN NULL
END IF
CALL fgl_report_setPageMargins("0.5cm", "0.5cm", "0.5cm", "0.5cm")
CALL fgl_report_configureCompatibilityOutput(160,"Monospaced",NULL,NULL,NULL,NULL)
CALL fgl_report_selectDevice(tipo_file)
CALL fgl_report_configurexlsxdevice(NULL, NULL, NULL, FALSE, FALSE, NULL, 1)
CALL fgl_report_selectPreview(TRUE)
RETURN fgl_report_commitCurrentSettings()
RETURN NULL
END FUNCTION
FUNCTION selectOutput()
-- El formulario "Configuration" del Report Writer 2.0 no esta disponible
-- en este entorno (ver configureOutput). Se devuelve un valor fijo para
-- que el flujo de "Reporte Grafico" siga y falle de forma consistente
-- con la limitacion ya conocida; usar MATRICIAL en su lugar.
RETURN "PDF"
DEFINE
r_output STRING,
r_action STRING,
preview INTEGER
OPTIONS INPUT WRAP
OPEN WINDOW f_configuration WITH FORM "Configuration"
LET INT_FLAG=FALSE
LET preview = FALSE
INPUT BY NAME r_output
ON ACTION CANCEL
EXIT PROGRAM
ON ACTION CLOSE
EXIT PROGRAM
END INPUT
CLOSE WINDOW f_configuration
CALL ui.interface.refresh()
IF r_action IS NOT NULL THEN
IF r_action == "preview" THEN
LET preview = TRUE
END IF
END IF
RETURN r_output
END FUNCTION
FUNCTION seleccionarSalida()
-- Mismo caso que selectOutput(): el formulario "Configuration" del
-- Report Writer 2.0 no esta disponible en este entorno; usar MATRICIAL.
RETURN "PDF"
RETURN selectOutput()
END FUNCTION
+7 -7
View File
@@ -159,14 +159,11 @@ LET selec =
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET opt1 = "yes"
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT opera TO XML HANDLER HANDLER
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT opera TO XML HANDLER HANDLER
PREPARE busca_p FROM selec
DECLARE periodo SCROLL CURSOR FOR busca_p
OPEN periodo using ano_act,datos_cons.fech_in,datos_cons.fech_fi
@@ -185,6 +182,9 @@ LET selec =
FINISH REPORT opera
CLEAR SCREEN
IF opt1 <> "yes" THEN
RUN imprime
END IF
END FUNCTION
REPORT opera(x)
+15 -1
View File
@@ -184,7 +184,7 @@ LET select_ant =
IF opt1 = "yes" THEN
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
CALL configureOutputRp028(r_output) RETURNING HANDLER
START REPORT prt_exist TO XML HANDLER handler
ELSE
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
@@ -438,3 +438,17 @@ END FUNCTION
PRINT COLUMN 4, ASCII 27, ASCII 80
END REPORT
FUNCTION configureOutputRp028(tipo_file)
DEFINE tipo_file CHAR(3)
IF NOT fgl_report_loadCurrentSettings("inprrp028.4rp") THEN
RETURN NULL
END IF
CALL fgl_report_setPageMargins("0.5cm", "0.5cm", "0.5cm", "0.5cm")
CALL fgl_report_selectDevice(tipo_file)
CALL fgl_report_configurexlsxdevice(NULL, NULL, NULL, FALSE, FALSE, NULL, 1)
CALL fgl_report_selectPreview(TRUE)
RETURN fgl_report_commitCurrentSettings()
RETURN NULL
END FUNCTION
+1
View File
@@ -459,6 +459,7 @@
<Application binaryName="inprrp028" dependencies="-801525068,-1026233879,-764824792" externalDependencies="libgre.42x" id="-900000023" label="inprrp028">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-900000024" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="indir/inprrp028.4gl"/>
<File filePath="bin/inprrp028.4rp"/>
</Application>
<Application binaryName="inprrp011" dependencies="-801525068,-1026233879,-764824792" externalDependencies="libgre.42x" id="-900000025" label="inprrp011">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-900000026" label="Configuration"/>