Traducciones e información del usuario en los informes Jasper
Resumen rápido
El módulo `jasper_reports` incorpora un campo de relación virtual de usuario para que los informes accedan a los datos de quien los ejecuta, incluso cuando el documento no está relacionado con una empresa. También permite diseñar y previsualizar traducciones en iReport mediante `i18ngroovy`, las bibliotecas necesarias y las funciones `tr()`.
Contenidos
Hemos mejorado recientemente un par de cosas en el módulo jasper_reports para OpenERP que encontrarás en bazaar.
Campo de usuario
Una de ellas es la adición de un campo de relación virtual llamado Usuario. Este nuevo campo proporciona al diseñador de informes acceso a toda la información relacionada con el usuario que está ejecutando el informe, lo cual es especialmente interesante en aquellos documentos que no tienen una relación directa o indirecta con la empresa, como pedidos de venta/compra o albaranes.

El campo Usuario recién agregado, al final de la lista de campos para el modelo stock.picking.
i18n en iReport
Otra mejora ha sido en el área de traducciones. Para facilitar el diseño de informes, hemos modificado el código Java para que sea posible utilizar nuestro idioma i18ngroovy dentro de iReport. Aquí están los pasos que debes seguir para configurar iReport (las bibliotecas se pueden encontrar en jasper_reports/java/lib):
Agregar la biblioteca gettext
Si trabajas en Linux, ve a la opción del menú Herramientas -> Bibliotecas, haz clic en el botón Nueva biblioteca.... Establece Nombre de la biblioteca como "i18n" y agrega un nuevo JAR: "gettext-commons-0.9.6.jar"

Configuración de la biblioteca gettext en Linux
Agregar la biblioteca i18n
Ve a la opción del menú Herramientas -> Opciones -> Classpath. Si trabajas en Linux, agrega el nuevo JAR "i18n.jar". Si trabajas en Windows, también debes agregar el archivo "gettext-commons-0.9.6.jar" que agregamos en el paso anterior en Windows.

Configuración de la biblioteca i18n en Linux
Agregar la propiedad i18ngroovy
Ve a la opción del menú Herramientas -> Opciones -> Propiedades de Jasper y agrega una nueva propiedad llamada net.sf.jasperreports.compiler.i18ngroovy con el valor com.nantic.jasperreports.I18nGroovyCompiler

Configuración de la propiedad i18ngroovy
Ten en cuenta que los usuarios de Windows se verán molestados por el hecho de que esta propiedad no es recordada por la aplicación al reiniciarla (al menos con la versión 3.5.3) y, por lo tanto, debe restablecerse cada vez que abras iReport. Esperamos que los desarrolladores de iReport solucionen este problema en versiones futuras.
Configurar el idioma del informe
Una vez que todo esté configurado, puedes usar el nuevo idioma i18ngroovy en tus informes.

Configuración del idioma del informe a i18ngroovy
Uso
Ahora puedes usar libremente el conjunto de funciones tr() para traducir tus informes y previsualizarlos dentro de iReport. Por ejemplo, en el siguiente informe tenemos la variable L definida como:
$F{Idioma-lang} != null && $F{Idioma-lang}.length() == 5 ? new Locale( $F{Idioma-lang}.substring(0,2), $F{Idioma-lang}.substring(3,5) ) : ( $F{Idioma-lang} != null && $F{Idioma-lang}.length() == 2 ? new Locale( $F{Idioma-lang}.substring(0,2) ) : $P{REPORT_LOCALE} )

Uso de funciones tr() en iReport

Vista previa del informe en iReport
Ten en cuenta que los informes que usan Groovy en lugar de i18ngroovy seguirán funcionando cuando se ejecuten en OpenERP. Esto solo es necesario para previsualizar informes que utilizan el sistema de traducción de NaN.
Preguntas frecuentes
¿Para qué sirve el campo virtual Usuario de los informes?
Permite al diseñador acceder a la información de la persona que ejecuta el informe, incluso en documentos sin relación directa o indirecta con la empresa, como pedidos o albaranes.
¿Qué lenguaje se puede utilizar para previsualizar traducciones en iReport?
Se puede utilizar el lenguaje i18ngroovy, habilitado en iReport mediante modificaciones del código Java del módulo.
¿Qué bibliotecas hay que añadir para configurar i18ngroovy?
Hay que añadir gettext-commons-0.9.6.jar como biblioteca i18n e incorporar i18n.jar al classpath; en Windows también hay que añadir allí el JAR de gettext.
¿Qué propiedad de iReport activa el compilador i18ngroovy?
La propiedad es net.sf.jasperreports.compiler.i18ngroovy y su valor es com.nantic.jasperreports.I18nGroovyCompiler.
¿Los informes que utilizan Groovy dejan de funcionar en OpenERP?
No. Los informes que usan Groovy en lugar de i18ngroovy siguen funcionando al ejecutarse en OpenERP; i18ngroovy solo es necesario para previsualizar informes que utilizan el sistema de traducción de NaN.
Artículos relacionados
Desarrollador
jasper_reports NG
jasper_reports NG mejora el rendimiento de los informes al evitar reinicios repetidos de la máquina virtual de Java y acelerar hasta un 10 % los informes basados en XML. También amplía la localización con campos traducibles, parámetros, formas plurales y selección de configuración regional, además de herramientas para extraer y preparar traducciones.
Desarrollador
Generando informes de Jasper a partir de varios modelos
El artículo explica cómo crear informes Jasper que parten de un modelo pero necesitan mostrar datos relacionados de otros modelos. La solución consiste en utilizar un subinforme y configurar la propiedad `OPENERP_PATH_PREFIX` con el recorrido desde el modelo principal hasta el del subinforme; en el ejemplo, el prefijo es `order_line/product_id`.
ERP y Negocio
Informes contables con Jasper
El módulo `account_jasper_report` ofrece informes de Diario, Sumas y Saldos, Libro Mayor y Registro de IVA para OpenERP v6. Según el artículo, reduce drásticamente el tiempo de generación de informes contables y requiere la última versión de `jasper_reports`.