Etiqueta group
Esta etiqueta es la encargada de agrupar la definición de los datos y cómo se deben imprimir. Cada grupo tiene tres partes o bandas: cabecera, detalle y pie, que se corresponden con la cabecera de grupo o de página, el detalle que se imprime y el pie de grupo, de página, o final del informe.
Cada grupo debe tener obligatoriamente un identificador (atributo name) que debe ser único dentro del informe, y se pueden tener varios grupos que se imprimirán de manera secuencial (siempre es obligatorio al menos un primer grupo).
<group name="main">
[ ... ]
</group>
<group name="resume">
[ ... ]
</group>
📚 Bandas de los grupos
Ten en cuenta las siguientes consideraciones:
-
Cada una de las bandas (header, detail y footer) es de tipo bloque o ancho completo. Esto indica que siempre ocuparán todo el ancho de la página en la orientación que se ha indicado. Debido a esto no es posible definir el ancho de la misma.
-
Cada una de las bandas puede tener un alto distinto, que debes definir mediante el atributo height con un valor numérico.
-
Las bandas header y footer (cabecera y pie) dependen de la banda detail (detalle). La banda detalle puede tener asociado un campo o dato que establece una ruptura dentro de los datos del informe, que forzará a imprimir las bandas del pie del dato anterior y la cabecera del nuevo dato. Esto es conocido como informes con ruptura de secuencia o informes con datos agrupados.
🧾 header o cabecera
Indica los datos que se imprimirán en la cabecera de grupo. Esto puede suceder por dos motivos: por inicio de un grupo o por inicio de una página. Debes establecer el height (alto) que se reserva para esta banda, y dentro de este espacio podemos definir los datos a imprimir mediante etiquetas column y su correspondiente widget.
Esta banda tiene un atributo booleano (true/false) opcional newpage, que nos permite forzar un salto de página antes de imprimir la nueva cabecera. Por defecto, su valor es false.
<header height="150">
<!-- Datos Empresa -->
<column posx="20" posy="25" width="540">
<widget type="default" fieldname="company.nombre"
size="12" align="left" bgcolor="4169E1" color="white" />
</column>
<!-- Datos Fecha y Página -->
<column posx="450" posy="25" width="60">
<widget type="default" fieldname="date" size="12" color="white" />
</column>
<column posx="510" posy="25" width="60">
<widget type="default" fieldname="time" size="12" color="white" />
</column>
[ ... ]
</header>
<header height="150" newpage="true">
[ ... ]
</header>
📄 detail o detalle
Indica los datos que se imprimirán por cada registro de datos. Debes establecer el height (alto) que se reserva para esta banda, y dentro de este espacio podemos definir los datos a imprimir mediante etiquetas column y su correspondiente widget.
Puedes definir de manera opcional el nombre de campo o dato dentro del registro de datos por el cual los datos están agrupados u ordenados y que deseas totalizar. Para indicar esto debes añadir el atributo fieldname.
<detail height="20">
<column posx="20" width="50">
<widget type="label" fieldname="code" italic="true" />
</column>
<column posx="80" width="170">
<widget type="label" fieldname="name" italic="true" />
</column>
[ ... ]
</detail>
<detail height="20" fieldname="customer">
[ ... ]
</detail>
📌 footer o pie
Indica los datos que se imprimirán en el pie de grupo. Esto puede suceder por dos motivos: por el fin de un grupo de datos o por el fin de una página. Debes establecer el height (alto) que se reserva para esta banda, y dentro de este espacio podemos definir los datos a imprimir mediante etiquetas column y su correspondiente widget.
Esta banda tiene un atributo booleano (true/false) opcional newpage, que nos permite forzar un salto de página después de imprimir el pie. Por defecto, su valor es false.
<footer height="65">
<column posx="10" posy="1" width="550" height="1">
<widget type="line" />
</column>
<column posx="180" posy="30" width="60">
<widget type="label" value="totales-ellipsis" align="right" translate="true" bold="true" size="13" />
</column>
<column posx="270" posy="30" width="65">
<widget type="calculated" operator="sum" fieldname="previous_value[0]" decimal="2" bold="true" size="11" />
</column>
[ ... ]
</footer>