Formato de números de iReport para OpenERP

En la entrada anterior explicaba como empezar a hacer un informe con iReport para OpenERP. Pero al darle forma al informe me encuentro que los importes de la factura las muestra con un único decimal, y lo esta devolviendo como una cadena (tipo String de java).

Lo primero repasamos la configuración del Datasource, vemos que la configuración de los números se muestran con dos decimales, pero sólo nos muestra uno porque en realidad lo esta devolviendo como una cadena.

Si hemos metido el field que hemos obtenido del datasource en un campo dinámico en el informe podemos cambiar la expresión metiendo código en java para convertirlo en numérico. Esto se hace pinchando con el botón derecho del ratón sobre el campo y seleccionando «Edit Expresion», el código es el siguiente:
new Double(String.valueOf($F{nombre_del_campo}))

Ahora teniendo seleccionado ese campo tenemos que cambiarle el tipo para indicarle que ahora se trata de un Double, esto se hace en las propiedades que aparecen en la parte derecha de nuestro informe debajo de la paleta en iReports.

Por último cambiamos el patrón para indicar como vamos a mostrar el número, en nuestro caso ###0.00 para indicar que siempre muestre dos decimales.

Sin pinchamos en el botón «…» a la derecha de este campo podemos ver diferentes opciones de patrones.

Con esto hemos cambiado el tipo de dato para poder aplicarle patrones, pero como podemos insertar código java en los campos tenemos muchas mas opciones, como por ejemplo concatenar varios fields en un solo campo, o aplicar funciones sobre cadenas.

30 comentarios sobre “Formato de números de iReport para OpenERP

  1. Albert Cervera i Areny

    Hola Ángel,
    de hecho es más fácil que esto. En la pantalla de configuración del data source debes ponerle como Locale ‘English’. De esta forma jasper ya puede interpretar que en el texto que le va a venir en el fichero, ‘12345.78’ por ejemplo, el punto significa separador decimal. Entonces, en el campo en cuestión solamente hay que ponerle el tipo de datos que le corresponde ‘java.lang.Double’, por ejemplo, y ya puedes añadirlo en el informe.

    No es necesario en absoluto hacer la conversión en la expresión.

  2. Angel Moya Autor del artículo

    Hola Albert, muchas gracias por el aporte, la verdad que lo tendré en cuenta par los próximos informes. Laa mayoría de informes de jasper los he hecho sobre consultas sql, como se hace en Openbravo y sugar, y con el datasource en xml sólo lo he utilizado en OpenERP.

    Lo interesante del post es la segunda parte donde se configura el formato, si tienes un número con un decimal si no lo configuras pondrá 3,4 pero lo normal es que quieran mostrar dos decimales y poner 3,40.

  3. Emilio Baena

    Muchas Gracias Angel, ya me estaba volviendo loco con el tema de los decimales!!

  4. are

    ay que obvio no? yo tambien ya llevaba horas buscando la forma de dejar solo 2 decimales, jeje se nota que soy principiante…. muchas gracias!!!

  5. PETER

    tengo un proble busco formatear un fiels de tipo Double a esta forma 1,234.45 pero al colarle la mascara que trae el ireport al visualizar lo presenta de esta forma: 1.234,45 que se tiene que configurar o hacer para que visualice de esta forma 1,234.45

  6. Eduardo

    Estoy con PETER con el mismo problema.. Alguien que nos ayude..???

  7. Angel Moya Autor del artículo

    Me ha impactado mucho este comentario, lo he editado porque no quiero ensuciar mi blog. Y contesto por aquí por que ni si quiera ha sido capaz de poner una dirección de correo real.

    Todos mis post los hago con la intención de compartir conocimientos, nadie me paga por esto pero de todas formas si puedo me gusta ayudar a los demás.

    Si alguien me pide ayuda y puedo lo ayudo, si tengo mucho trabajo y no tengo el sistema preparado para probar lo que dicen… pues seguramente no podré ayudar.

    He dejado los mensajes abiertos con toda la buena intención, los que pueda los contestaré los que no pueda no. Y a partir de ahora si me llegan mas como estos primero no los publicaré y si veo que va a peor deshabilitaré los comentarios.

  8. oliver.brildor

    Angel Moya por toda la ayuda realmente es muy útil y realmente funciona lo que comentas. por comentarios como esos que no tiene ni pies ni cabeza no manchan la utilidad de este blog de nuevo gracias.

  9. Angel Moya Autor del artículo

    Muchas gracias por el aporte

  10. Pingback: Formatear campo fecha en reporte Jasper Report desde OpenERP, diseñado con iReport « Principiante de LINUX

  11. Angel Moya Autor del artículo

    El comentario anterior es un poco caótico, pero si clickas en el enlace accedes al blog de http://principiantedelinux.wordpress.com y explica como formatear fechas… yo no he comprobado lo que dice, y el mismo dice que no sabe si es la mejor forma… así que como siempre si alguien conoce una forma mejor que lo diga.

  12. Gabriel

    Hola Ángel, Con tu blog he podido conseguir resolver varias dudas, muchas gracias por tus conocimientos. El problema es que he tratada de que en mis reportes los números salgan separados por miles. Ejemplo: 1.431.312,43 o 1,431,312.43 pero hago todo el reporte y lo que obtengo 1431312.43 lo cual es difícil de entender en un reporte. Seguí los pasos de esta entrada y obtuve efectivamente que no me salieran un monton de decimales, sino solamente dos. Pero en lo otro no he podido, cambie localización y tampoco.

    Si me pudieras dar una luz te lo agradecería.

    Saludos,
    Gabriel U

  13. Gabriel

    Hola Ángel, Con tu blog he podido conseguir resolver varias dudas, muchas gracias por tus conocimientos. El problema es que he tratada de que en mis reportes los números salgan separados por miles. Ejemplo: 1.431.312,43 o 1,431,312.43 pero hago todo el reporte y lo que obtengo 1431312.43 lo cual es difícil de entender en un reporte. Seguí los pasos de esta entrada y obtuve efectivamente que no me salieran un monton de decimales, sino solamente dos. Pero en lo otro no he podido, cambie localización y tampoco.

    Si me pudieras dar una luz te lo agradecería.

  14. Angel Moya Autor del artículo

    Hola Gabriel, ahora no tengo un ireport para hacer pruebas, pero prueba poniendo «###.###.##0,00» o «###,###,##0.00» en el pattern

  15. Gabriel

    Gracias Angel, te comento que no me sirvió tu solución. La forma que logre solucionarlo fue con algunas funciones y clases de java.
    Ejemplo:
    NumberFormat.getInstance().format($F{NUMERO}) en donde $F{NUMERO} es el campo que necesito formatear y que me salga con sus respectivos puntos y comas. Dejo la referencia completa a la clase de java: http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html

    Saludos,

    Gabriel Umaña

  16. Pedro

    Buenos dias, por alguna razón que no acabo de comprender, ya hice hace algún tiempo lo que decía este post, y me funciono a la perfección, pero actualice openerp a la versión 6.0.3 y dejo de funcionarme, he comprobado el JDK, el PATH y todo bien sin embargo cuando ejecuto el informe me dice esto: Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: Error evaluating expression :
    Source text : new Double(String.valueof($F{Base_imponible-amount_untaxed}))

    Eso con todos los campos numéricos, si los dejo como string y dejando en la expresion solo el campo si me ejecuta el informe,

    creo que es algún problema con el java pero no sé que.

    Muchas gracias

  17. Pedro

    Hola otra vez, vale he conseguido resolver lo del error (temas de letras en minúscula que deberían estar e mayúscula, y cosas asi),

    pero ahora me encuentro que no me coge el patrón que yo le pongo en iReport, lo tengo puesto tanto en el Datasource como en el pattern del campo, y el campo puesto como java.lang.Double. ¿Qué puede estar pasando?
    también me he asegurado de que el idioma de openerp es español, y los patrones también están bien.

  18. Darian Ramos

    Que tal Angel…

    Necesito tu ayuda espero puedas ayudarme…

    Actualmente estoy trabajando con OpenERP y necesito implementar reportes (iReport). El requerimiento de la empresa es crear un archivo XML para poder comunicar el reporte con Open Y pasarle parametros… Apenas voy comenzando con esto y no tengo idea de crear dicho XML… Mil Gracias por tu tiempo y ayuda.

  19. Diego García

    Saludos Ángel!

    Quisiera saber si ya está disponible alguna versión de iReport para OpenERP v.7.

    He trabajado para la versión 6.1 pero hemos migrado a la más reciente. El punto es que necesito pasar todos mis reporte a la nueva versión. Pobre RML pero la versión se me hace más tediosos, en cambio con JasperReports los genero en un mínimo de tiempo.

    Agradecería inmensamente tu ayuda.

    Atte
    Diego García

  20. christian

    hola gabriel buenas noches que pena molestarte, tu me podrias indicar en el en donde ubico la linea de codigo para solucionar el problema

    de antemano muchas gracias

  21. christian

    a todos muchas gracias
    gabriel tu solucion es correcta ya la pude implementar
    mil gracias

  22. antonio linares

    buenos dias
    en irepor tengo un campo fecha pero le deseo sumarle 30 dias pero no tengo idea de como se hace aqui en ireport me podrian horientar un poco
    saludos y gracias

  23. alejo

    Hola, soy nuevo con iReport, te explico mi caso : Tengo un resultset(generado desde oracle por un paquete) , y quiero que ese resultset al momento de presentarlo en el detalle pueda filtrarlo por un valor especifico , como y donde hago esto. Se que me puedes decir «filtralo en el paquete para que el resultset este filtrado» , lo que sucede es que necesito igual los otros datos

  24. Kayleen

    Caption Jack is SO loving all the fan girl atetntion, I bet that the cast member males fight over being Jack, especially since you get to act like a drunk pervert

  25. felix

    a mi me funciono establecer el report_locale como parámetro desde el openErp además de adicionar el formato en le pattern.
    desde open :
    ‘REPORT_LOCALE’:'(parametros.put(JRParameter.REPORT_LOCALE, Locale.US);)’
    desde iReport :
    pattern #,##0.00

  26. Karen Monteros

    Hola, disculpa, ¿Cómo colocaste el parametro REPORT_LOCALE en el Jaspersoft?, lo he intentado y me marca errores, te agradeceré que me ayudes, por favor.

    Estoy ocupando JASPERSOFT 6.18

  27. Angel Moya Autor del artículo

    Lo siento hace muchos años que no trabajo con jasper

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.