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:




25 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'.

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

      Eliminar
  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?

    ResponderEliminar
    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

      Eliminar
  3. Tengo la version 5.5.0, gracias voy descargar la versión que me comentas y pruebo.

    Saludos...

    ResponderEliminar
  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

    ResponderEliminar
    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.

      Eliminar
  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!!!!!!!

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

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

    Gracias

    ResponderEliminar
  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

    ResponderEliminar
  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?

    ResponderEliminar
    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.

      Eliminar
  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

    ResponderEliminar
    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

      Eliminar
  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

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

      Eliminar
  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.

    ResponderEliminar
    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.

      Eliminar
  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?

    ResponderEliminar
    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

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

    ResponderEliminar
  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

    ResponderEliminar
    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.

      Eliminar
  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.

    ResponderEliminar