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.
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.
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.
Muchas Gracias Angel, ya me estaba volviendo loco con el tema de los decimales!!
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!!!
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
Estoy con PETER con el mismo problema.. Alguien que nos ayude..???
este ……. del post no responde las preguntas de los usuarios
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.
Para solventar problemas como la mascara, fecha, números con ireport trabajar directamente con ireport 3.7.5 las actualizaciones no funcionan muy bien si queréis trabajar con el modulo de NaN para solventarlos con las actualizaciones superiores editar los campos en la vista XML directamente si tenéis preguntas a @devopensource en twitter saludos. url de ireport http://sourceforge.net/projects/ireport/files/iReport/iReport-3.7.5/iReport-3.7.5.tar.gz/download
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.
Muchas gracias por el aporte
Pingback: Formatear campo fecha en reporte Jasper Report desde OpenERP, diseñado con iReport « Principiante de LINUX
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.
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
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.
Hola Gabriel, ahora no tengo un ireport para hacer pruebas, pero prueba poniendo «###.###.##0,00» o «###,###,##0.00» en el pattern
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
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
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.
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.
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
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
a todos muchas gracias
gabriel tu solucion es correcta ya la pude implementar
mil gracias
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
Hace tiempo que no trabajo con jasper, pero echale un ojo a esto https://angelmoya.es/blog/openerp/scriptlets-de-jasper-reports/, con código java en un scriptlet puedes hacer lo que necesitas.
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
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
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
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
Lo siento hace muchos años que no trabajo con jasper