<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Informes_amb_Jasper_Reports</id>
	<title>Informes amb Jasper Reports - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Informes_amb_Jasper_Reports"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Informes_amb_Jasper_Reports&amp;action=history"/>
	<updated>2026-08-30T10:01:50Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Informes_amb_Jasper_Reports&amp;diff=1551&amp;oldid=prev</id>
		<title>Joan: /* Treballant amb el iReports */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Informes_amb_Jasper_Reports&amp;diff=1551&amp;oldid=prev"/>
		<updated>2009-02-02T12:03:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Treballant amb el iReports&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Creació d'informes amb Jasper Reports&lt;br /&gt;
&lt;br /&gt;
==Documentació==&lt;br /&gt;
Creating reports using Jasper Reports (Theory):&lt;br /&gt;
&lt;br /&gt;
http://wiki.openbravo.com/wiki/Developers_Manual#Creating_reports_using_Jasper_Reports&lt;br /&gt;
&lt;br /&gt;
Creating reports using Jasper Reports (Practice): &lt;br /&gt;
&lt;br /&gt;
http://wiki.openbravo.com/wiki/Developers_Manual/Creating_reports_using_Jasper_Reports&lt;br /&gt;
&lt;br /&gt;
Amb Openbravo hi ha dues maneres de fer informes: XmlEngine i Jasper Reports. Jasper Reports és una eina externa que està integrada amb Openbravo.&lt;br /&gt;
&lt;br /&gt;
JasperReports uses an intermediate format and permits the ability to export the report to several different formats, html, pdf, excel, csv,... It also has a very advanced development tool ('''iReport''') that makes the design of new reports very easy. The management of the computer resources is better resulting in a faster generation of results for large reports. &lt;br /&gt;
&lt;br /&gt;
Hi ha dues maneres d'afegir un informe de Jasper Reports a l'aplicació:&lt;br /&gt;
*By creating a servlet that builds the filter window and generates (compiles) the output or developing only the Jasper Report template&lt;br /&gt;
*Or using a generic servlet to enter parameters and compile the output.&lt;br /&gt;
&lt;br /&gt;
Les plantilles es fan amb iReport, que és l'eina de desenvolupament de Jasper Reports. La plantilla és un fitxer tipus jrxml.&lt;br /&gt;
&lt;br /&gt;
Hi ha una sèrie de paràmetres predefinits que podem utilitzar:&lt;br /&gt;
*BASE_WEB (java.lang.String) és la utl del context (per ex, http://localhost:8080/openbravo). A la plantilla posaríem: $P{BASE_WEB}/images/image.png&lt;br /&gt;
*BASE_DESIGN (java.lang.String) és la url dels fitxers emmagatzemas en el directori '''src''' (normalment /opt/OpenbravoERP/AppsOpenbravo/src, però compte que potser és your_tomcat_context/src-loc/). Per ex podem fer referència a un subinforme: $P{BASE_DESIGN}/org/openbravo/erpCommon/ad_reports/subreport.jasper&lt;br /&gt;
*ATTACH (java.lang.String) és la ruta a la carpeta on es guarden els fitxers adjuntats a l'informe. Suposo que fa referència a /opt/OpenbravoERP/AppsOpenbravo/attachments (?) Per ex, $P{ATTACH}/image.png&lt;br /&gt;
*USER_CLIENT and USER_ORG (java.lang.String) s'utilitzen per filtrar els informes d'acord amb el client i l'organització. Per ex, MAIN_TABLE.AD_CLIENT_ID IN ($P!{USER_CLIENT}) o MAIN_TABLE.AD_ORG_ID IN ($P!{USER_ORG})&lt;br /&gt;
*LANGUAGE (java.lang.String) Idioma de la sessió d'usuari&lt;br /&gt;
*LOCALE (java.util.Locale) Local basat en l'idioma seleccionat&lt;br /&gt;
* NUMBERFORMAT (java.text.NumberFormat) Un objecte NumberFormat utilitzat per formatar els camps numèrics. $P{NUMBERFORMAT}.format($F{Field})&lt;br /&gt;
&lt;br /&gt;
Crear una plantilla utilitzant iReport:&lt;br /&gt;
&lt;br /&gt;
http://wiki.openbravo.com/wiki/Developers_Manual/Creating_reports_using_Jasper_Reports/Creating_the_Template_using_iReport&lt;br /&gt;
&lt;br /&gt;
iReport és una eina visual de Jasper Reports per fer i dissenyar informes de manera portent, intuitiva i fàcil. Escrita en Java. Aquesta eina permet als usuaris editar informes complexes de forma visual amb gràfics, imatges i subinformes. iReport està integrat amb les llibreries de Java open source líders per fer gràfics.&lt;br /&gt;
&lt;br /&gt;
Les dades que s'han d'imprimir es poden extreure de diferents maneres incloent múltiples connexions JDBC, TableModels, JavaBeans, XML, MDX, EJBQL, Hibernate, etc. &lt;br /&gt;
&lt;br /&gt;
==Instal.lar iReport i configurar la connectivitat amb la bd openbravo==&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
* Please keep in mind that Openbravo ERP 2.35 (MPx) and 2.40 do not support JRXML template files generated by iReport 2.0.4 or newer so please use the 2.0.3 version.&lt;br /&gt;
* Use version 3.x of iReport for Openbravo ERP&lt;br /&gt;
&lt;br /&gt;
Per a Openbravo 2.40 baixem la versió 2.0.3. de SourceForge:&lt;br /&gt;
 http://sourceforge.net/project/showfiles.php?group_id=64348&amp;amp;package_id=64215. Són 37 MB&lt;br /&gt;
&lt;br /&gt;
Es descomprimeix i s'instal.la . Obrim iReports (sudo ./iReport.sh)&lt;br /&gt;
&lt;br /&gt;
Obrim amb sudo prequè tot i que l'aplicació funciona sense sudo, a l'hora de grabar els fitxers resultants tinc problemes de permisos. Segurament això és l'arrel de problemes de permisos quan ho faig funcionar des d'Openbravo.&lt;br /&gt;
&lt;br /&gt;
Hem de definir el classpath per a la connectivitat amb la bd Postgres&lt;br /&gt;
&lt;br /&gt;
Options &amp;gt; Classpath i clickem sobre Add jar. Anem al directori lib de l'Openbravo (/opt/OpenbravoERP/AppsOpenbravo/lib) i seleccionem ojdbc14.jar. Guardem el classpath&lt;br /&gt;
&lt;br /&gt;
En el meu cas, vaig a http://jdbc.postgresql.org/ &amp;gt; Download &amp;gt; JDBC4 Postgresql Driver, Version 8.3-604 &amp;gt; postgresql-8.3-604.jdbc4.jar&lt;br /&gt;
&lt;br /&gt;
copio aquest fitxer a /opt/OpenbravoERP/AppsOpenbravo/lib:&lt;br /&gt;
&lt;br /&gt;
 $ sudo cp postgresql-8.3-604.jdbc4.jar /opt/OpenbravoERP/AppsOpenbravo/lib&lt;br /&gt;
&lt;br /&gt;
Ara, a Options &amp;gt; Classpath puc escollir jdbc3-postgresql.jar&lt;br /&gt;
&lt;br /&gt;
Anem a Data &amp;gt; Connections/Data Source. Fem Nem, Database JDBC Connection. A Name fiquem Openbravo i a JDBC driver fiquem el de Postgres (org.postgresql.Driver). Omplim els valors de ServerAddress (localhost) i Database (openbravo), username (tad) i pwd (tad). La pestanya JDBC url queda: jdbc:postgresql://localhost:5432/openbravo. &lt;br /&gt;
&lt;br /&gt;
Fem un test i és OK.&lt;br /&gt;
&lt;br /&gt;
==Crear una plantilla==&lt;br /&gt;
&lt;br /&gt;
Ara que ja tenim la connectivitat amb la bd openbravo funcionant, creem la plantilla.&lt;br /&gt;
&lt;br /&gt;
File &amp;gt; Report Wizzard&lt;br /&gt;
&lt;br /&gt;
connexió: openbravo&lt;br /&gt;
&lt;br /&gt;
i afegim la consulta SQL&lt;br /&gt;
&lt;br /&gt;
Si volem fer un informe dels productes fem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT M_Product_ID, Name, Description&lt;br /&gt;
  FROM M_Product&lt;br /&gt;
 ORDER BY Name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i si volem fer un informe dels països disponibles fem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select c_country_id,name,countrycode,regionname from c_country;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fem el Report, guardem l'informe com a paisos.jrxml a &lt;br /&gt;
&lt;br /&gt;
/opt/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpCommon/ad_reports&lt;br /&gt;
&lt;br /&gt;
No em deixa fer-ho per un problema de permisos. He d'executar l'aplicació com a sudo.&lt;br /&gt;
&lt;br /&gt;
Per fer un test de l'informe, he de fer Build (Construir) &amp;gt; Ejecutar informe (usando conexión activa)&lt;br /&gt;
&lt;br /&gt;
Ara es pot jugar amb les múltiples opcions que hi ha.&lt;br /&gt;
 &lt;br /&gt;
==Afegir l'informe a Openbravo==&lt;br /&gt;
&lt;br /&gt;
Hi ha dues maneres d'afegir un nou informe a l'aplicació:&lt;br /&gt;
*By creating a servlet that builds the filter window and generates (compiles) the output or developing only the Jasper Report template&lt;br /&gt;
*Or using a generic servlet to enter parameters and compile the out&lt;br /&gt;
&lt;br /&gt;
Ens loguem a l'Openbravo com a System Administrator i anem a Application Dictionary &amp;gt; Report and Process&lt;br /&gt;
&lt;br /&gt;
Cliquem sobre Nou Registre&lt;br /&gt;
&lt;br /&gt;
Fill the new Report data. e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    * Search Key: RPT_PAISOD&lt;br /&gt;
    * Name: Llista de països&lt;br /&gt;
    * Mark the Jasper Report checkbox (A textbox will appear with JR Template Name)&lt;br /&gt;
    * JR Template Name: @basedesign@/org/openbravo/erpCommon/ad_reports/paisos.jrxml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on @basedesign@ will be replaced in runtime with:&lt;br /&gt;
&lt;br /&gt;
your_tomcat_context/src-loc/design&lt;br /&gt;
&lt;br /&gt;
If you are using the base language, or if you are using a different language, will append the folder language at the end, e.g. In Spanish will be:&lt;br /&gt;
&lt;br /&gt;
your_tomcat_context/src-loc/es_ES&lt;br /&gt;
&lt;br /&gt;
molt de compte perquè jo he grabat l'informe paisos.jrxml a &lt;br /&gt;
&lt;br /&gt;
/opt/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpCommon/ad_reports&lt;br /&gt;
&lt;br /&gt;
i veig que l'hauria d'haver grabat a&lt;br /&gt;
&lt;br /&gt;
/opt/alfresco/tomcat/webapps/openbravo/src-loc/es_ES/org/openbravo/erpCommon/ad_reports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo cp /opt/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpCommon/ad_reports/paisos.jrxml  /opt/alfresco/tomcat/webapps/openbravo/src-loc/es_ES/org/openbravo/erpCommon/ad_reports&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
o bé&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo cp /opt/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpCommon/ad_reports/paisos.jrxml  /opt/alfresco/tomcat/webapps/openbravo/src-loc/design/org/openbravo/erpCommon/ad_reports&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(queda confirmat que fer aquest cp és molt important). si estic utilitzant la llengua base, ho he de copiar a /src-loc/design/..., i si estic utilitzant una traducció, a /src-loc/es_ES/..&lt;br /&gt;
&lt;br /&gt;
Afegim ara l'informe al menú:&lt;br /&gt;
&lt;br /&gt;
General Setup &amp;gt; Application &amp;gt; Menu &amp;gt; Nou registre&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    * Name: Informe llista Països&lt;br /&gt;
    * Action: Process&lt;br /&gt;
    * Process: Informe dels països (m'apareix a la llista desplegable)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Guardo&lt;br /&gt;
&lt;br /&gt;
Per veure els canvis he de compilar l'aplicació. El procés de compilació copiarà la plantilla .jrxml al context del tomcat, i generarà un nou actionButton. e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /opt/OpenbravoERP/AppsOpenbravo&lt;br /&gt;
$ sudo ant compile.development -Dtab=XX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
si tinc problemes fent la compilació perquè no troba la ruta, puc ficar la ruta completa del ant. També puc fer sudo bash o bé fer export JAVA_HOME=el que sigui. Aquí he tingut problemes perquè com que del Tomcat se n'encarrega el Alfresco, la configuració del JAVA_HOME i del ANT_HOME no és tant perfecta com quan tinc el Tomcat+Openbravo.&lt;br /&gt;
&lt;br /&gt;
No n'hi ha prou amb compilar, també s'ha de desplegar el nou war (fer war i deploy, llegir el manual de compilació)&lt;br /&gt;
&lt;br /&gt;
I un cop feta la compilació podem comprovar si funciona:&lt;br /&gt;
&lt;br /&gt;
Ens loguem com a Openbravo amb rol Admin&lt;br /&gt;
&lt;br /&gt;
En el menú de l'esquerra hem de veure el nou item de Informe Llista Països.&lt;br /&gt;
&lt;br /&gt;
Cliquem sobre el procés, -&amp;gt; em diu que no tinc permisos per fer-ho.&lt;br /&gt;
&lt;br /&gt;
Solució: el problema que tenia és que tinc el Openbravo instal.lat sobre el Alfresco-Tomcat, i tinc una mica de problemes amb les variables d'entorn. No n'hi ha prou amb compilar, sinó que s'ha de fer el war i el deploy, i el problema és que el deploy me'l fa en un lloc diferent del que espero, no me'l fa a /tomcat/webapps.&lt;br /&gt;
&lt;br /&gt;
Ho soluciono de forma manual:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
war:&lt;br /&gt;
&lt;br /&gt;
build.war:&lt;br /&gt;
   [delete] Deleting: /opt/OpenbravoERP/AppsOpenbravo/lib/openbravo.war&lt;br /&gt;
      [war] Building war: /opt/OpenbravoERP/AppsOpenbravo/lib/openbravo.war&lt;br /&gt;
&lt;br /&gt;
BUILD SUCCESSFUL&lt;br /&gt;
Total time: 2 minutes 1 second&lt;br /&gt;
root@joan-laptop:/opt/OpenbravoERP/AppsOpenbravo# /opt/apache-ant-1.7.1/bin/ant deploy&lt;br /&gt;
Buildfile: build.xml&lt;br /&gt;
&lt;br /&gt;
init:&lt;br /&gt;
&lt;br /&gt;
deploy:&lt;br /&gt;
     [copy] Copying 1 file to /opt/OpenbravoERP/AppsOpenbravo/${env.CATALINA_HOME}/webapps&lt;br /&gt;
&lt;br /&gt;
BUILD SUCCESSFUL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@joan-laptop:/opt/OpenbravoERP/AppsOpenbravo# export CATALINA_HOME=hola&lt;br /&gt;
root@joan-laptop:/opt/OpenbravoERP/AppsOpenbravo# echo $CATALINA_HOME &lt;br /&gt;
hola&lt;br /&gt;
root@joan-laptop:/opt/OpenbravoERP/AppsOpenbravo# /opt/apache-ant-1.7.1/bin/ant deploy&lt;br /&gt;
Buildfile: build.xml&lt;br /&gt;
&lt;br /&gt;
init:&lt;br /&gt;
&lt;br /&gt;
deploy:&lt;br /&gt;
     [copy] Copying 1 file to /opt/OpenbravoERP/AppsOpenbravo/hola/webapps&lt;br /&gt;
&lt;br /&gt;
BUILD SUCCESSFUL&lt;br /&gt;
Total time: 1 second&lt;br /&gt;
&lt;br /&gt;
sudo cp openbravo.war /opt/alfresco/tomcat/webapps/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
joan@joan-laptop:/opt/alfresco/tomcat/bin$ sudo bash&lt;br /&gt;
root@joan-laptop:/opt/alfresco/tomcat/bin# export JAVA_HOME=/usr/lib/jvm/java-6-sun&lt;br /&gt;
root@joan-laptop:/opt/alfresco/tomcat/bin# export JRE_HOME=/usr/lib/jvm/java-6-sun/jre/bin&lt;br /&gt;
./startup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Però aquest és un problema que he tingut en la meva instal.lació concreta.&lt;br /&gt;
&lt;br /&gt;
És important llegir http://wiki.openbravo.com/wiki/Developers_Manual#Compiling_the_application per entendre bé el procés de compilació, i mirar d'arreglar la meva instal.lació Alfresco+Tomcat+Openbravo.&lt;br /&gt;
&lt;br /&gt;
El tema és que quan ja està solucionat, ja puc fer click sobre l'informe. Fem OK, i haurà d'aparèixer el nou informe. Si no apareix, normalment em donarà un missatge dient quin és l'origen del problema.&lt;br /&gt;
&lt;br /&gt;
Per exemple, un problema que em donava era:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
org.xml.sax.SAXParseException: Element Type &amp;quot;noData&amp;quot; must be declared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
això segurament era un fallo meu que he modificat la plantilla paisos.jrxml però després no he copiat bé el fitxer, i hi havia una discordància. En aquest cas ho he solucionat manualment: trec aquesta part al final del fitxer paisos.jrxml&lt;br /&gt;
		&amp;lt;noData&amp;gt;&lt;br /&gt;
			&amp;lt;band height=&amp;quot;40&amp;quot;  isSplitAllowed=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
			&amp;lt;/band&amp;gt;&lt;br /&gt;
		&amp;lt;/noData&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i ja funciona.&lt;br /&gt;
&lt;br /&gt;
==Treballant amb el iReports==&lt;br /&gt;
Anem ara a millorar el nostre fitxer paisos.jrxml. El problema és que ''regionname'' normalment és ''null'', i queda molt malament que surti ''null'' en l'informe.&lt;br /&gt;
&lt;br /&gt;
http://rajibinfo.wordpress.com/category/tech/java/ireport/&lt;br /&gt;
&lt;br /&gt;
La solució és:&lt;br /&gt;
&lt;br /&gt;
 ($F{regionname}==null ? &amp;quot;&amp;quot; : $F{regionname})&lt;br /&gt;
[[Imatge:Informe paisos.png]]&lt;br /&gt;
&lt;br /&gt;
==Modificar una factura. Inserir  logo==&lt;br /&gt;
[http://cheli.aradaen.com/2008/02/05/imagenes-en-jasper-reports-de-openbravo/]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>