Publicidad

miƩrcoles, 5 de febrero de 2014

Crear Reportes Jasper Reports con Conexion a Base de Datos en Odoo (OpenERP 8.0)


Creando Query SQL para Generar un Reporte

Centered Popup
    Para crear Reportes en Jasper Reports y retomando los Post Anteriores, tenemos 2 Opciones una de ellas es haciendo conexion directa a la Base de Datos y la Otra generando un archivo XML, en este post vamos a conocer como generar un reporte utilizando un Query.

01. Lo primero y mas importante es tener instalado el Modulo Jasper Reports en Nuesta Base OPENERP y tambien tener instalado el JDK de Oracle Ć³ en su defecto el OpenJDK.


02. Abrimos el iReport y Creamos una Nueva ConexiĆ³n:


03. Seleccionamos la Primera OpciĆ³n Database JDBC conection y le damos siguiente:

    

    Name = Nombre de la Conexion en este caso tiene el nombre "Pedido de Venta".
    JDBC Driver = Seleccionamos el Driver PostgreSQL(org.postgresql.Driver).
    Server Address = La direccion del servidor en mi caso esta local asi que usamos localhost.
    Database = Nombre de la Base de Datos.
    JDBC URL= La URL para la Conexion con Postgres la genera automaticamente el boton Wizard.
    Username = Nombre del usuario que arranca el Servidor de OpenERP.
    Password = Password del usuario Postgres que arranca el Servidor de OpenERP.

04. Ahora damos Click al boton Test y si todo fue correcto nos debe mostrar el siguiente mensaje:


05. Ahora solo vamos a crear un nuevo Reporte al que nombrare Pedido-Jasper-SQL y estarĆ” Guardado en mis Documentos.


06. Una vez creado el reporte damos click al icono de Report Query.


07. Ahora Dentro del Report Query Seleccionamos la Opcion en Query Languaje SQL.


08. Ingresamos el Query en este caso el reporte lo creare para el modelo "sale.order" y mi Query es el siguiente:

" select so.name as ref_order, so.date_order, so.state, rp.name as cliente  from sale_order as so join res_partner as rp on so.partner_id=rp.id   "

Con esto obtengo los campos Nombre del Pedido, Fecha de Orden, Estado y Nombre del cliente, como se ve en la siguiente imagen:


Damos Click al Boton Ok.

09. Colocamos los campos en el reporte.

10. Ahora guardamos y Subimos el Reporte en OpenERP el menu Jasper Reports.

11. Creamos un Nuevo Registro y lo guardamos, subiendo el Reporte Anterior, nos quedaria como la siguiente Imagen.

 
    Nombre = Nombre del Reporte.
    Nombre del Servicio = Nombre con el que se Descarga el PDF.
    Modelo = Es el modelo en donde queremos que este Disponible este Reporte.
    Salida Jasper = Como queremos que se descargue este Reporte por defecto PDF.
    Archivos = Los Archivos que utlizamos en Nuestro Reporte JRXML, Imagenes, ETC...

12. Ahora vamos a Cotizaciones o Pedidos y en la opcion Imprimir Observamos Nuestro Reporte.

13. Le Damos click y nos Descargara el Reporte en PDF y el reporte queda como la siguiente Imagen:




26 comentarios:

  1. Report Error

    Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 455; cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'.

    ResponderBorrar
    Respuestas
    1. Que version de iReport estas utilizando debes utilizar la 3.7.6 por que con las versiones nuevas da error!

      Borrar
  2. Este error me es arrojando despude de seguier todos tu pasos, tiene idea de cual es la soluciĆ³n Ć³ talvez me equivoque en algo?

    ResponderBorrar
    Respuestas
    1. Buenas, yo trabajo con ireport 5.5.1 y me daba el mismo error, al final edite el jrxml y elimine todos los uuid="..." y funciona perfecto con OpenERP 7....un poco liado pero funciona

      Borrar
  3. Tengo la version 5.5.0, gracias voy descargar la versiĆ³n que me comentas y pruebo.

    Saludos...

    ResponderBorrar
  4. Listo he cambido a la versiĆ³n recomendada y ahora me mustra el sisguientes error

    Report Error

    Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: FATAL: password authentication failed for user "openerp"

    Y no tengo idea que me esta fallando

    ResponderBorrar
    Respuestas
    1. Puede ser debido a que el usuario openerp para postgres no existe en su instalacion de odoo, otra podria ser que utilice un template que no es el 1.

      Borrar
  5. Hola amigo yo tengo el mismo error:
    Report Error

    Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: FATAL: password authentication failed for user "openerp"

    Ayuda xfa!!!!!!!

    ResponderBorrar
  6. Buenas tardes, yo tengo el mismo problema con iReport y OpenERP 7.0. Habeis podido solucionar el tema de la password?

    ResponderBorrar
  7. Buenas tardes, yo tengo el mismo problema con iReport y OpenERP 7.0. Habeis podido solucionar el tema de la password?

    Gracias

    ResponderBorrar
  8. Buentas Tardes!

    Si instalaron el openerp con un all in one en windows o ubuntu deben buscar el archivo de configuracion y ver cual es el password que tiene los parametros que deben localizar en el archivo conf son:

    db_user = openerp70
    db_password = openerp70

    ResponderBorrar
  9. Buena, hice todos los pasos exactamente como tĆŗ pero en windows, pero al ejecutar el reporte me da este error

    Error reading file 'C:\Archivos de programa\OpenERP 7.0-20140620-231150\Server\server\openerp\addons': failed to load external entity "C:\Archivos de programa\OpenERP 7.0-20140620-231150\Server\server\openerp\addons"

    (, IOError(u'Error reading file \'C:\\Archivos de programa\\OpenERP 7.0-20140620-231150\\Server\\server\\openerp\\addons\': failed to load external entity "C:\\Archivos de programa\\OpenERP 7.0-20140620-231150\\Server\\server\\openerp\\addons"',), )

    ¿falta algo o debo mover el jrxml a otra carpeta?

    ResponderBorrar
    Respuestas
    1. En windows no es muy recomendable utilizar Odoo ya que no tienes el control sobre tu instalaciĆ³n. El error podria ser causado por permisos del Sistema.

      Borrar
  10. Buenos dƭas GermƔn,

    Tengo el siguiente problema, te comento.

    QUERY SQL de sale.order, funciona perfecta pero cuando imprime todos los registros del tree, si selecciono un solo registro me imprime todos.

    De que manera podemos pasar parƔmetro del ID desde OpenERP al la QUERY SQL para incluir clausula WHERE?

    Muchas gracias por tu ayuda.

    Juan Sallent

    ResponderBorrar
    Respuestas
    1. German, me olvidaba.

      He intentado seguir este post del foro antiguo de OpenERP sin Ć©xito....http://forum.openerp.com/forum/topic29446.html

      Gracias

      Borrar
  11. German buenos dias


    este tuto aplica solo para la version 7 ? en la version 8 no encuentro el modulo para instalar iReport...

    Te agradezco si tienes alguna solucion en la V8

    ResponderBorrar
    Respuestas
    1. Hola, IReport es el diseƱador de reportes no el modulo de odoo, este es el modulo jasper_reports.

      Borrar
  12. Buenas.
    Al tratar de emitir un reporte creado en Odoo 8.0 me emite el siguiente mensaje.

    ('RML is not available at specified location or not enough data to print!', (None, None, None))

    A alguien le paso lo mismo?
    Alguna soluciĆ³n?

    Gracias.

    ResponderBorrar
    Respuestas
    1. Que tal amigo, verifica que el reporte se encuentre en el Sistema con la ruta correcta y lo segundo es que verifiques que el usuario que inicia Odoo, tenga permisos para escribir en la ruta de addons, debido a que Jasper Reports crear Archivos con la extensiĆ³n .jasper en la carpeta custom_reports.

      Borrar
  13. Buenas noches,

    Alguien me podrĆ­a ayudar con un problema al imprimir mis reports??? Al seleccionar varias facturas desde la vista tree me imprime un pdf con la cabecera de la primera factura pero con las lineas de todas. ¿ Como podrĆ­a hacer para que se me imprima una factura en cada hoja del pdf al igual que hace el estĆ”ndar de Open?

    ResponderBorrar
    Respuestas
    1. Que tal, por defecto es la forma en la que lo hace jasper_reports pero podrĆ­as modificar el core del reporteador.

      Saludos

      Borrar
  14. Buenos dias, excelente aporte, solamente una consulta, como paso parametros de odoo a un reporte. por ejemplo una factura

    ResponderBorrar
  15. I receive a report error when i click on to the report.

    Failed to invoke method execute in class com.nantic.jasperreports.JasperServer: FATAL: password authentication failed for user "MSB"

    This is my config. file:

    [options]
    ; This is the password that allows database operations:
    ; admin_passwd = admin
    admin_passwd = admin
    db_host = False
    db_port = False
    db_user = msb
    db_password = odoo
    addons_path = /home/msb/odoo8.0/addons
    xmlrpc_port = 7077

    ResponderBorrar
    Respuestas
    1. Hola bala, el error puede ser debido a que el usuario con el que haces la conexiĆ³n a PostgreSQL que por lo que veo es MSB, no tiene permisos de acceso correctos en los perfiles de postgres template 1.

      Borrar
  16. Hi German,

    I checked with the user name permissions and even checked with other user - may i the actual reason/permission privileges need to be provided - actually it works fine in normal scenario only with this Jasper report integration while report connecting to the postgres it raises error.

    ResponderBorrar