Liferay Jasper

25
Andrés Aznar Royo Página 1 Aperte Reports: Integrando informes de Jasper en Liferay Andrés Aznar [email protected]

description

Manual de integración de Jasper Reports en Liferay

Transcript of Liferay Jasper

Page 1: Liferay Jasper

     

Andrés Aznar Royo Página 1

 

 

 

 

 

Aperte Reports: Integrando informes de Jasper en Liferay 

 

 

 

Andrés Aznar [email protected] 

 

   

Page 2: Liferay Jasper

     

Andrés Aznar Royo Página 2

INDICE

1.- La creación de informes y su publicació ..................................... 3 1.1.- Jaspersoft iReports .................................................................. 3 1.2.- Aperte Reports ........................................................................ 3 2.- Prerrequisitos para la instalación ............................................... 5 3.- Instalando Aperte Reports .......................................................... 6 3.1.- El software de Aperte .............................................................. 6 4.- Instalación de Aperte Reports .................................................... 8 4.1.- Despliegue del WAR File ......................................................... 8 4.2.- La configuración de la conexión JNDI ..................................... 8 4.3.- Actualización de Vaadin ........................................................ 10 5.- Los portlets de Aperte Reports ................................................. 13 5.1.- El portlet de administración ................................................... 13 5.3.- El portlet de visualización .................................................. 16 5.4.- Los portlets para informes en background....................... 17 6.- La generación de los informes en Jasper ................................. 18 6.1- La definición del parámetro datasource ................................. 18 6.2.- La sintaxis de los parámetros propios de informes ......... 18 7.- Conclusiones ............................................................................ 20

Page 3: Liferay Jasper

     

Andrés Aznar Royo Página 3

1.- La creación de informes y su publicación

1.1.- Jaspersoft iReports

La gestión de la información a partir de su almacenamiento en bases de datos relacionales permite realizar una exportación de las mismas y una representación en listados o gráficos que mejora la comprensión de los datos. Este ha sido el origen de las aplicaciones de reporting, datawarehousing, business intelligence, datamining etc…

Dentro de las aplicaciones open source destinadas a este tipo de sistemas la más significativa y más utilizada ha sido la herramienta de Jaspersoft comúnmente conocida como Jasper Reports. El programa iReport permite la generación de informes a partir de datos clasificados, ya sean estos tablas de una base de datos, hojas de cálculo, ficheros ASCII o datos embebidos en Javabeans.

Muchos sistemas realizados a medida en tecnología J2EE han utilizado estos informes y las librerías de Jasper para integrar la visión de esa información embebida. Teniendo en cuenta que Liferay es un portal basado en Java es lógico pensar que existan formas de poder embeber esos informes dentro del portal y generar portlets para visualizar o exportar en formato documental dichos informes.

Vista de Liferay con la integración de el visor de informes de Jasper de Aperte Reports

1.2.- Aperte Reports

Aperte Reports es un desarrollo realizado desde la empresa Bluesoft, open source, y que permite introducir dentro de Liferay la visión de los informes generados con Jaspersoft iReports. A partir de su web en el vault de desarrollos de Google

Page 4: Liferay Jasper

     

Andrés Aznar Royo Página 4

http://code.google.com/p/aperte-reports es posible descargar su aplicación y las instrucciones propias para ser integrado dentro de nuestro entorno Liferay (o utilizar un bundle de prueba ya creado con Liferay+Aperte Reports). No obstante este documento pretende realizar dicha tarea de una forma más ilustrativa y en lengua castellana.

Aperte Reports nos permitirá insertar dentro de Liferay aquellos informes que hayamos realizado con iReports, incluyendo la posibilidad de que integren parámetros a fin de poder visualizarlos de forma dinámica en función de los mismos. También será posible realizar exportación de los informes a formatos como PDF o MS Excel.

Vista de la generación de informes en PDF desde Aperte Reports en Liferay

Page 5: Liferay Jasper

     

Andrés Aznar Royo Página 5

2.- Prerrequisitos para la instalación  

Aperte Reports está basado en estándares open source, desde el propio Liferay, hasta Vaadin, Hibernate o Quarz. En base a ello es muy posible que el funcionamiento del sistema pueda extrapolarse a otros entornos no listados en este capítulo. No obstante, el testing realizado desde Bluesoft y, por tanto, los entornos sobre los cuales el software está certificado, son los siguientes:

• Base de datos: o HSQL (embebido en el bundle de descarga de Liferay 6). Esta base de

datos no se recomienda desde Liferay para entornos de producción. o PostgreSQL en su versión 9.1 o MySQL en su versión 5.0.77 o Oracle en su versión 10g

• Servidor de aplicaciones: o Glashfish en versión 3.0.1 o JBoss en su versión 5.1 o Tomcat en versión 6.0.29 (con funcionalidad limitada ya que no permite

la funcionalidad de Cyclic reports). • Contenedor de portlet:

o Liferay 6.0.6 Community Edition o Liferay 6.1 Community Edition

El presente documento está realizado con una configuración de MySQL 5.5, Liferay 6.1 bajo Tomcat 7.0.29, siendo totalmente operativo.

Page 6: Liferay Jasper

     

Andrés Aznar Royo Página 6

3.- Instalando Aperte Reports

3.1.- El software de Aperte

El software de Aperte Reports está disponible para la descarga en la dirección:

http://code.google.com/p/aperte-reports/downloads/list

Este directorio contiene dos tipos de ficheros:

• El fichero WAR de la aplicación para ser desplegado sobre un servidor de aplicaciones (en diferentes versiones)

• Un bundle de Liferay (bajo Tomcat) preconfigurado para poder desplegar en él la aplicación. El bundle no contiene Aperte Reports.

 

Pantalla de descarga de Aperte Reports

3.1.1.- El bundle de Liferay preconfigurado  

El bundle de Liferay configurado y descargable contiene dos modificaciones respecto de la instalación estándar del portal:

• Dispone de la versión 6.7.4 de Vaadin, una versión más reciente y necesaria para el uso de Aperte Reports que la que trae de serie Liferay.

• Ya tiene configurada la conexión JNDI con una base de datos a fin de cargar los datos de los reports.

Page 7: Liferay Jasper

     

Andrés Aznar Royo Página 7

3.1.2.- El fichero WAR de despliegue

El fichero WAR de la aplicación es un fichero estándar para ser desplegado en un servidor de aplicaciones como Tomcat o JBoss. Como cualquier otra aplicación que se vaya a incluir como portlets dentro de Liferay la forma de realizar esta instalación es colocar el fichero en el directorio

{Directorio de Liferay}\deploy

Page 8: Liferay Jasper

     

Andrés Aznar Royo Página 8

4.- Instalación de Aperte Reports

4.1.- Despliegue del WAR File

Para instalar Aperte Reports simplemente situaremos el fichero WAR descargado en el directorio de despliegue de Liferay {Directorio de Liferay}\deploy. De esta manera el servidor de aplicaciones realizará el despliegue y la aplicación nos aparecerá en nuestro portal.

Si la instalación la realizamos sobre el bundle preconfigurado que podemos descargar de la página de Aperte Reports no tendremos que realizar ninguna acción adicional para tener disponible el aplicativo. Si nuestro despliege se realiza sobre una instalación ya realizada de Liferay tendremos que realizar dos operaciones adicionales para que Aperte Reports funcione:

• Configurar la conectividad de nuestro servidor de aplicaciones con la fuente de alimentación de datos (la base de datos o de donde se vayan a extraer los datos para la generación de los informes).

• Actualizar la versión de Vaadin si la que disponemos es anterior a la 6.7.4.

4.2.- La configuración de la conexión JNDI

Aperte Reports utiliza una conexión con la fuente de datos de los informes JNDI que nombre como jdbc/aperte-reports.

Esto nos obligará a realizar dos cosas en nuestra instalación y utilización del sistema:

• Deberemos configurar dicha conexión en nuestro servidor de aplicaciones. • Los informes generados desde iReport deberán incluir esta conexión como

parámetro a fin que Liferay encuentre donde debe ir a buscar los datos. Esta segunda parte la trataremos más adelante.

Para dar de alta una conexión JNDI del servidor de aplicaciones contra una base de datos debemos configurarla en su fichero context.xml. Este fichero se halla ubicado en el directorio {Directorio del servidor de aplicaciones}\conf. Si, por ejemplo, hemos instalado el bundle de Liferay extraído de su propia web en nuestra unidad D: lo deberemos buscar en: D:\Liferay\tomcat-7.0.23\conf.

En nuestro caso basaremos nuestra conexión en los siguientes parámetros:

• Usaremos un motor de base de datos mySQL 5.5 • Nuestro usuario será “root” con contraseña “admin” • Nuestra base de datos se llamará jasper • La tendremos localizada en la misma máquina que Liferay y Aperte (en el

localhost)

Page 9: Liferay Jasper

     

Andrés Aznar Royo Página 9

Vista de la base de datos mySQL desde Quest Toad

En base a todo lo anterior deberemos declarar en nuestro context.xml la siguiente instrucción:

<Resource name="jdbc/aperte-reports" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/jasper" maxActive="8" maxIdle="4" username="root" password="admin" />

Fichero context.xml del servidor de aplicaciones con la conexión jdbc/aperte-reports

Page 10: Liferay Jasper

     

Andrés Aznar Royo Página 10

Esta instrucción creará la conexión desde el servidor de aplicaciones a la base de datos en mySQL, y Aperte Reports la utilizará para obtener los datos con los que generar el informe.

4.3.- Actualización de Vaadin

El bundle de Liferay ya incopora Vaadin en su estructura. Vaadin es un framework web creado para desarrollar aplicaciones RIA (Rich Internet Applications) sin plugins y con una arquitectura server-driven, con un modelo orientado a componentes y pensando en la simplificación de la programación; no es necesario conocer ni HTML, ni XML ni Javascript.

La versión de Vaadin incorporada en el último bundle de Liferay es anterior a la 6.7.4 que es la que nos solicita Aperte Reports para funcionar. Por tanto, si vamos a trabajar sobre el bundle o sobre una instalación con un Vaadin anterior, debemos realizar la actualización.

Si nuestra instalación además de las librerías y ficheros dispone del portlet de Vaadin, esta actualización se puede realizar directamente desde Liferay. Hay determinadas aplicaciones, como por ejemplo Aperte Workflow (otra aplicación de origen similar a la que tratamos pensada para la generación de workflows jBPM dentro de Liferay) que en sus bundles incorporan no sólo la actualización de los ficheros de Vaadin, sino el propio portlet de administración.

Acceso al gestor de Vaadin en el panel de control de Liferay

Page 11: Liferay Jasper

     

Andrés Aznar Royo Página 11

Este portlet de administración se sitúa en la parte del menú de portal. El portlet nos muestra la información sobre la versión en los settings, además de indicarnos cual es la versión más actual disponible. Desde allí podemos utilizar la opción change version para actualizarlo.

Una vez actualizado hemos de recordar que hemos de recompilarlo. Para ello usaremos el botón compile widget set que está encima de la consola de mensajes.

 

Portlet de gestión de Vaadin en el panel de control de Liferay

Si no disponemos del portlet de control de Vaadin en nuestra instalación de Liferay deberemos aplicar los cambios de manera manual. Estos cambios consisten en:

• Cambiar la librería vaadin.jar de Vaadin ubicada en el directorio {servidor de aplicaciones}\webapps\ROOT\WEB-INF\lib.

• Actualizar el denominado widget set, que corresponde a los ficheros de Vaadin ubicados en el directorio del servidor de aplicaciones (Tomcat) {servidor de aplicaciones}\webapps\ROOT\html\VAADIN.

Para realizar estos cambios iremos a la página web de versiones de Vaadin (https://vaadin.com/releases) y descargaremos el software necesario. En principio la versión sobre la que está desarrollado Aperte Reports es la 6.7.4, pero sobre las posteriores hasta la 6.7.6 se ha comprobado el correcto funcionamiento.

Debemos descargar el paquete denominado Vaadin 6 Jar-only for all platforms que incluye el fichero vaadin.jar y el denominado Vaadin 6 Liferay update package. El primero sólo contiene la librería .jar. El segundo contiene un fichero comprimido con el widget set.

Page 12: Liferay Jasper

     

Andrés Aznar Royo Página 12

Vista de la página de descarga de versiones de Vaadin

Vista del contenido del fichero vaadin-6.7.5-liferay.zip el widget set de Vaadin para Liferay

Seguiremos ahora los pasos indicados:

• El fichero .jar descargado (que tendrá como nombre vaadin-6.7.x.jar) lo pondremos en el directorio {servidor de aplicaciones}\webapps\ROOT\WEB-INF\lib y lo renombraremos a vaadin.jar. Deberemos borrar o renombrar el existente previamente con ese nombre perteneciente a la versión anterior. Es posible que existan otras aplicaciones (no sólo el propio Liferay)

• A continuación descomprimiremos el fichero con los archivos del widget set (vaadin-6.7.x-liferay.zip) en el directorio del servidor de aplicaciones {servidor de aplicaciones}\webapps\ROOT\html reescribiendo los ficheros nuevos sobre aquellos ya existentes de la versión anterior

La actualización de Vaadin se deberá completar rearrancando el servidor de aplicaciones y Liferay.

Una vez generada la conexión JNDI en el servidor, actualizado Vaadin, y desplegado el fichero WAR ya dispondremos de Aperte Reports en nuestro gestor de contenidos.

Page 13: Liferay Jasper

     

Andrés Aznar Royo Página 13

5.- Los portlets de Aperte Reports

Aperte reports nos generará, en su despliegue los siguientes portlets dentro de Liferay:

• Portlet de administración en el panel de control (Aperte Reports Manager). • Cuatro portlets de utilización dentro del portal

o Aperte Cyclic Reports o Aperte Resports Dashboard o Aperte Reports Invoker o Aperte Reports Order Browser

Visión del portal y de los cuatro posibles portlets que se pueden integrar

5.1.- El portlet de administración

El portlet de administración (Aperte Reports Manager) nos aparecerá en nuestro panel de control de Liferay. Será con él que podamos realizar la importación de los informes generados en iReport de Jasper que queremos que sean visualizados y gestionados en nuestro portal.

Page 14: Liferay Jasper

     

Andrés Aznar Royo Página 14

Acceso al portlet de administración desde el panel de control de Liferay

En el portlet veremos que por una parte disponemos del botón upload new… que nos permitirá insertar nuevos informes dentro de Liferay. Por otro lado tenemos los diferentes informes ya insertados donde mediante la opción de show parameters podemos desplegar las propiedades e incluso generar la exportación de los mismos para ver el resultado.

Portlet de administración de Aperte Reports en el panel de control

Ejemplo de generación de un report en PDF desde el portlet de administración

5.2.- El portlet de generación y exportación  

Aperte report invoker es un portlet que nos permite generar informes y exportarlos a diferentes formatos: CSV, HTML, MS Excel y PDF. Básicamente nos traslada la funcionalidad que ya tiene el portlet de administración en el panel de control a un portlet publicable en cualquiera de las páginas de nuestro portal de Liferay.

Page 15: Liferay Jasper

     

Andrés Aznar Royo Página 15

Visión del portlet Aperte Reports Invoker

Vista de la exportación a Excel del informe

 

Page 16: Liferay Jasper

     

Andrés Aznar Royo Página 16

5.3.- El portlet de visualización  

El portlet de visualización (Aperte Reports Dashboard) permite realizar la visualización de los informes dentro de la propia interfaz de Liferay (sin necesidad de generarlo sobre un formato externo como PDF o XLS).

 

Visión del portlet Aperte Reports Dashboard

En este portlet se nos permitirá visualizar aquel informe que queramos (y, obviamente, cambiar de uno a otro). Para realizar la visualización del informe los pasos a seguir serán:

1. Seleccionar desde el menú de herramientas la opción de preferencias.

2. Seleccionar el informe y completar los parámetros adicionales que el propio informe requiera.

3. Salvar mediante el botón Save e indicar que se desea volver a la página índice.

Page 17: Liferay Jasper

     

Andrés Aznar Royo Página 17

Repitiendo la misma acción se podrá seleccionar otro informe y seguir viendo los diferentes resultados.

5.4.- Los portlets para informes en background  

Aperte reports permite la generación de informes en background, así que los resultados no se generan de forma automática e inmediata. Estos informes se pueden guardar en el sistema e incluso enviar por correo electrónico. Existen dos porlets para tratar estos tipos de informes:

• Aperte reports order browser nos permite acceder a todos los reports generados en background para poder visualizarlos en pantalla.

• Aperte cyclic reports permite gestionar la generación de informes periódicos, que se generarán en background cuando pertoque.

Los informes en background no son operativos si el entorno de implementación de Liferay es Tomcat, por lo que no serán tratados en este documento en profundidad.

Page 18: Liferay Jasper

     

Andrés Aznar Royo Página 18

6.- La generación de los informes en Jasper

A fin que los informes generados en iReports puedan ser introducidos en nuestro Aperte Reports para su integración en Liferay se han de realizar algunas implementaciones en nuestro fichero jrxml del informe.

6.1.- La definición del parámetro datasource

En el fichero del informe deberemos añadir un parámetro que deberá llamarse “datasource”. Este parámetro tendrá en su descripción la cadena de conexión que usaremos y que habíamos definido con anterioridad, en la instalación de Aperte, en el fichero context.xml. Será un parámetro estático cuya única validez será para que lo interpreten nuestros portlet.

<parameter name="datasource" class="java.lang.String" isForPrompting="false"> <parameterDescription> <![CDATA[java:comp/env/jdbc/aperte-reports]]></parameterDescription>

</parameter>

F

Vista de iReport: código XML con el parámetro datasource y su definición

6.2.- La sintaxis de los parámetros propios de informes

El resto de parámetros que utilicen los informes deberán estar introducidos también mediante la llamada a nuestra cadena de conexión JNDI que tenemos definida java:comp/env/jdbc/aperte-reports.

Page 19: Liferay Jasper

     

Andrés Aznar Royo Página 19

Así la sintaxis de un parámetro como puede ser el mes (para extraer el informe de ventas mensual) tendrá un códico xml como el siguiente:

<parameter name="mes" class="java.lang.String"> <property name="input_type" value="select"/> <property name="dict_query" value="java:comp/env/jdbc/aperte-reports; select distinct(ven_mes), ven_mes as displayed_username from jas_ventas"/> </parameter>

Vista de iReport: código XML con la sintaxis indicada para los parámetros.

Page 20: Liferay Jasper

     

Andrés Aznar Royo Página 20

7.- Conclusiones  

Mediante Aperte Reports podemos integrar informes realizados en iReports de Jasper en nuestro portal de Liferay. Estos informes deben tener un código XML adaptado (en la definición de los parámetros) para que puedan ser leídos en nuestro sistema.

La funcionalidad que nos presenta Aperte con los informes incluye:

• Inclusión de los informes dentro de Liferay y visualización a través del portlet de dashboard.

• Gestión y exportación de los informes a formatos CSV, Excel, HTML y PDF desde el portlet invoker (y desde el manager).

• Posibilidad de generar informes en background y cíclicos (no válido si se utiliza Tomcat como servidor de aplicaciones).

En la página siguiente se muestra el código del report utilizado como ejemplo en este manual.

Page 21: Liferay Jasper

     

Andrés Aznar Royo Página 21

<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="04_2011Quat3_Mes_P.jrxml" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="218"/> <style name="Title" fontName="Times New Roman" fontSize="50" isBold="true" pdfFontName="Times-Bold"/> <style name="SubTitle" forecolor="#736343" fontName="Arial" fontSize="18"/> <style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/> <style name="Detail" fontName="Arial" fontSize="12"/> <style name="Row" mode="Transparent"> <conditionalStyle> <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression> <style backcolor="#E6DAC3"/> </conditionalStyle> </style> <parameter name="datasource" class="java.lang.String" isForPrompting="false"> <parameterDescription><![CDATA[java:comp/env/jdbc/aperte-reports]]></parameterDescription> </parameter> <parameter name="mes" class="java.lang.String"> <property name="input_type" value="select"/> <property name="dict_query" value="java:comp/env/jdbc/aperte-reports; select distinct(ven_mes), ven_mes as displayed_username from jas_ventas"/> </parameter> <queryString> <![CDATA[select * from jas_ventas where ven_mes = $P{mes} order by ven_idZona]]> </queryString> <field name="ven_idEntrada" class="java.lang.Integer"/> <field name="ven_idEmpresa" class="java.lang.Integer"/> <field name="ven_nomEmpresa" class="java.lang.String"/> <field name="ven_anyo" class="java.lang.Integer"/> <field name="ven_mes" class="java.lang.String"/> <field name="ven_idComercial" class="java.lang.Integer"/> <field name="ven_nomComercial" class="java.lang.String"/> <field name="ven_idZona" class="java.lang.Integer"/> <field name="ven_nomZona" class="java.lang.String"/> <field name="ven_cifra" class="java.lang.Float"/> <field name="ven_idMes" class="java.lang.Long"/> <variable name="ven_cifra_1" class="java.lang.Float" calculation="Sum"> <variableExpression><![CDATA[$F{ven_cifra}]]></variableExpression> </variable> <background> <band height="802" splitType="Stretch"> <image> <reportElement x="0" y="289" width="555" height="513"/> <imageExpression><![CDATA["D:\\Liferay\\imagenes\\jaspersoftlogobackground.jpg"]]></imageExpression> </image> </band> </background> <title> <band height="65" splitType="Stretch"> <staticText> <reportElement x="149" y="10" width="404" height="32"/> <textElement textAlignment="Center"> <font size="20" isBold="true"/> </textElement> <text><![CDATA[INFORME DE VENTAS POR MES]]></text> </staticText> <staticText>

Page 22: Liferay Jasper

     

Andrés Aznar Royo Página 22

<reportElement x="481" y="44" width="74" height="20"/> <textElement textAlignment="Right"> <font size="14" isBold="true"/> </textElement> <text><![CDATA[Año 2011]]></text> </staticText> <image> <reportElement x="3" y="4" width="126" height="40"/> <imageExpression><![CDATA["D:\\Liferay\\imagenes\\jaspersoftlogo.gif"]]></imageExpression> </image> </band> </title> <pageHeader> <band splitType="Stretch"/> </pageHeader> <columnHeader> <band height="47" splitType="Stretch"> <line> <reportElement positionType="FixRelativeToBottom" x="0" y="15" width="555" height="1"/> <graphicElement> <pen lineWidth="0.5" lineColor="#999999"/> </graphicElement> </line> <staticText> <reportElement style="Column header" x="2" y="0" width="80" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Empresa]]></text> </staticText> <staticText> <reportElement style="Column header" x="82" y="0" width="67" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Año]]></text> </staticText> <staticText> <reportElement style="Column header" x="149" y="0" width="80" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Mes]]></text> </staticText> <staticText> <reportElement style="Column header" x="229" y="0" width="80" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Matricula]]></text> </staticText> <staticText> <reportElement style="Column header" x="309" y="0" width="80" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Comercial]]></text> </staticText> <staticText>

Page 23: Liferay Jasper

     

Andrés Aznar Royo Página 23

<reportElement style="Column header" x="389" y="0" width="80" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Zona]]></text> </staticText> <staticText> <reportElement style="Column header" x="469" y="0" width="86" height="16" forecolor="#736343"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Ventas]]></text> </staticText> <staticText> <reportElement style="Column header" x="2" y="21" width="37" height="23" forecolor="#736343"/> <textElement textAlignment="Right"> <font fontName="SansSerif" size="14"/> </textElement> <text><![CDATA[Mes:]]></text> </staticText> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="43" y="21" width="124" height="23"/> <textElement> <font fontName="SansSerif" size="14" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$F{ven_mes}]]></textFieldExpression> </textField> </band> </columnHeader> <detail> <band height="15" splitType="Stretch"> <frame> <reportElement style="Row" mode="Opaque" x="0" y="0" width="555" height="15"/> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="2" y="0" width="80" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_nomEmpresa}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="82" y="0" width="67" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_anyo}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="149" y="0" width="80" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_mes}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="229" y="0" width="80" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement>

Page 24: Liferay Jasper

     

Andrés Aznar Royo Página 24

<textFieldExpression><![CDATA[$F{ven_idComercial}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="309" y="0" width="80" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_nomComercial}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="Detail" x="389" y="0" width="80" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_nomZona}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true" pattern="#,##0.00"> <reportElement style="Detail" x="469" y="0" width="86" height="15"/> <textElement> <font fontName="SansSerif"/> </textElement> <textFieldExpression><![CDATA[$F{ven_cifra}]]></textFieldExpression> </textField> </frame> </band> </detail> <columnFooter> <band height="4" splitType="Stretch"> <line> <reportElement positionType="FixRelativeToBottom" x="0" y="3" width="555" height="1"/> <graphicElement> <pen lineWidth="0.5" lineColor="#999999"/> </graphicElement> </line> </band> </columnFooter> <pageFooter> <band height="32" splitType="Stretch"> <frame> <reportElement mode="Opaque" x="0" y="1" width="555" height="24" forecolor="#D0B48E" backcolor="#F2EBDF"/> </frame> </band> </pageFooter> <summary> <band height="263" splitType="Stretch"> <textField pattern="EEEEE dd MMMMM yyyy"> <reportElement x="70" y="243" width="207" height="20"/> <textElement verticalAlignment="Bottom"> <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <staticText> <reportElement x="11" y="243" width="59" height="20"/> <textElement verticalAlignment="Bottom"> <font size="8" isBold="true"/> </textElement> <text><![CDATA[Generated:]]></text> </staticText> <textField pattern="#,##0.00">

Page 25: Liferay Jasper

     

Andrés Aznar Royo Página 25

<reportElement x="439" y="0" width="115" height="20"/> <textElement textAlignment="Right"> <font size="14" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$V{ven_cifra_1}]]></textFieldExpression> </textField> <pie3DChart> <chart> <reportElement x="0" y="56" width="319" height="154"/> <chartTitle/> <chartSubtitle/> <chartLegend/> </chart> <pieDataset> <keyExpression><![CDATA[$F{ven_nomComercial}]]></keyExpression> <valueExpression><![CDATA[$F{ven_cifra}]]></valueExpression> </pieDataset> <pie3DPlot> <plot/> <itemLabel/> </pie3DPlot> </pie3DChart> <bar3DChart> <chart> <reportElement x="319" y="56" width="235" height="154"/> <chartTitle/> <chartSubtitle/> <chartLegend/> </chart> <categoryDataset> <categorySeries> <seriesExpression><![CDATA[$F{ven_nomComercial}]]></seriesExpression> <categoryExpression><![CDATA[$F{ven_mes}]]></categoryExpression> <valueExpression><![CDATA[$F{ven_cifra}]]></valueExpression> </categorySeries> </categoryDataset> <bar3DPlot> <plot/> <itemLabel/> </bar3DPlot> </bar3DChart> <staticText> <reportElement x="2" y="26" width="551" height="30"/> <textElement textAlignment="Center"> <font size="18" isBold="true"/> </textElement> <text><![CDATA[Ventas mensuales]]></text> </staticText> <staticText> <reportElement style="Column header" x="298" y="0" width="139" height="20" forecolor="#736343"/> <textElement textAlignment="Right"> <font fontName="SansSerif" size="14"/> </textElement> <text><![CDATA[Total de ventas:]]></text> </staticText> </band> </summary> </jasperReport>