Etiqueta group
Esta etiqueta es la encargada de agrupar la definición de los datos y como 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
Debemos tener en cuenta algunas consideraciones:
-
Cada una de las bandas (header, detail y footer) son de tipo bloque o ancho completo. Esto indica que siempre ocuparan 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 se debe 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án 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. Se debe 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. Se debe 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.
Podemos 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 deseamos totalizar. Para indicar esto debemos 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. Se debe 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>