Nuevo módulo de Reportes usando Latex

374 views
Skip to first unread message

Cristian Sebastian Rocha

unread,
Dec 20, 2013, 5:04:49 PM12/20/13
to openerp-localiz...@googlegroups.com
Hola Gente,

quería compartir con ustedes el desarrollo de un nuevo módulo que permite generar reportes usando Latex.

Qué es LaTex? 

Es un lenguaje de macros que permite generar documentos de alta calidad. Se usa principalmente en el ambiente académico, pero puede usarse en cualquier otro ambiente sin problema. Solo hay que tener un poco de imaginación.

Porque LaTex? 

OpenERP tiene como soporte de generación de reportes basado RML, en la próxima versión va a cambiar WebKit. Ambos parecen ser bastante potentes pero es imposible computar valores en tiempo de rendering. Para la localización argentina es importante: imprimir facturas con una lista larga de productos y descripciones, requiere calcular el transporte y los subtotales por página. Para ello se requiere conocer cuantas lineas entraron por página. Esto con RML se podría realizar usando docPara, pero el módulo openerp.report.trml2pdf no lo tiene implementado. Y si lo quieren implementar, no funciona (Perdí una semana con esto). Webkit está en pañales y los reportes son páginas web, no son documentos imprimibles. Poder asociar un salto de página con un evento de calculo todavía no está implementado, y no creo que sea posible.

Cómo lo uso?
 
Para el módulo, Latex tiene el mismo concepto que los reportes RML. Es un archivo .TEX con macros de Mako Template que genera el documento TEX más completo. Conceptualmente es muy parecido a lo que es HTML5 y CSS, aunque su sintaxis pueda resultar un poco rara. Esto quiere decir que hay que concentrarse en el contenido y no en el formato del documento. Con respecto al formato, es un tanto complicado de setear, pero una vez entendido todo fluye. Dejé en el módulo un ejemplo para imprimir un resumen de partners.

Donde aprendo Latex?

El mejor lugar es http://es.wikibooks.org/wiki/Manual_de_LaTeX . Documentación está llena. Por supuesto, hay más documentación de como escribir fórmulas de que cómo hacer una factura, pero hay mucho implementado. Si buscan algo ya implementado (porque Latex tiene muchos paquetes) pueden buscarlo en CTAN (http://www.ctan.org/)

De donde descargo el módulo?

El módulo lo pueden encontrar en: https://launchpad.net/openerp-report-latex

Puedo colaborar?

Por supuesto! Encuentra bugs, propone o implementa funcionalidades. Es lo que necesito.

Eso es todo amigos.

Espero resolver con esto el problema de la factura de la localización argentina. Eso si, el módulo no lo voy a poner en la localización por cuestiones obvias. Pero si me voy a poner ahora mismo a desarrollar un módulo que, usando este otro, genere el facturas como corresponde y sin limitaciones sonsas!.

Abrazo y feliz año a todos.
Cristian.

PD: Quizás se pregunten porque no utilizar otro sistema de generación de reportes, tipo jasperreport y otras yerbas. La razón es la misma. Todos los módulos terminan usando RML y otro lenguaje limitado a la hora de generar reportes. Juan, tu tienes más experiencia y creo que puedes contradecirme, no?

--
Coop. de Trab. Moldeo Interactive Lmt.
Cristian Sebastian Rocha
Consultor Analista.
Castillo 1336 Módulo 12 A
(C1414AXD) CABA, Argentina.
(+54-9-11).6800.0269
http://interactive.moldeo.coop

Juan Cristobal Lopez

unread,
Dec 20, 2013, 8:13:00 PM12/20/13
to openerp-localiz...@googlegroups.com
On 20/12/13 17:04, Cristian Sebastian Rocha wrote:
> Hola Gente,
>
> quer�a compartir con ustedes el desarrollo de un nuevo m�dulo que
> permite generar reportes usando Latex.
>
> Qu� es LaTex?
>
> Es un lenguaje de macros que permite generar documentos de alta
> calidad. Se usa principalmente en el ambiente acad�mico, pero puede
> usarse en cualquier otro ambiente sin problema. Solo hay que tener un
> poco de imaginaci�n.
>
> Porque LaTex?
>
> OpenERP tiene como soporte de generaci�n de reportes basado RML, en la
> pr�xima versi�n va a cambiar WebKit. Ambos parecen ser bastante
> potentes pero es imposible computar valores en tiempo de rendering.
> Para la localizaci�n argentina es importante: imprimir facturas con
> una lista larga de productos y descripciones, requiere calcular el
> transporte y los subtotales por p�gina. Para ello se requiere conocer
> cuantas lineas entraron por p�gina. Esto con RML se podr�a realizar
> usando docPara, pero el m�dulo openerp.report.trml2pdf no lo tiene
> implementado. Y si lo quieren implementar, no funciona (Perd� una
> semana con esto). Webkit est� en pa�ales y los reportes son p�ginas
> web, no son documentos imprimibles. Poder asociar un salto de p�gina
> con un evento de calculo todav�a no est� implementado, y no creo que
> sea posible.
>
> C�mo lo uso?
>
> Para el m�dulo, Latex tiene el mismo concepto que los reportes RML. Es
> un archivo .TEX con macros de Mako Template que genera el documento
> TEX m�s completo. Conceptualmente es muy parecido a lo que es HTML5 y
> CSS, aunque su sintaxis pueda resultar un poco rara. Esto quiere decir
> que hay que concentrarse en el contenido y no en el formato del
> documento. Con respecto al formato, es un tanto complicado de setear,
> pero una vez entendido todo fluye. Dej� en el m�dulo un ejemplo para
> imprimir un resumen de partners.
>
> Donde aprendo Latex?
>
> El mejor lugar es http://es.wikibooks.org/wiki/Manual_de_LaTeX .
> Documentaci�n est� llena. Por supuesto, hay m�s documentaci�n de como
> escribir f�rmulas de que c�mo hacer una factura, pero hay mucho
> implementado. Si buscan algo ya implementado (porque Latex tiene
> muchos paquetes) pueden buscarlo en CTAN (http://www.ctan.org/)
>
> De donde descargo el m�dulo?
>
> El m�dulo lo pueden encontrar
> en: https://launchpad.net/openerp-report-latex
>
> Puedo colaborar?
>
> Por supuesto! Encuentra bugs, propone o implementa funcionalidades. Es
> lo que necesito.
>
> Eso es todo amigos.
>
> Espero resolver con esto el problema de la factura de la localizaci�n
> argentina. Eso si, el m�dulo no lo voy a poner en la localizaci�n por
> cuestiones obvias. Pero si me voy a poner ahora mismo a desarrollar un
> m�dulo que, usando este otro, genere el facturas como corresponde y
> sin limitaciones sonsas!.
>
> Abrazo y feliz a�o a todos.
> Cristian.
>
> PD: Quiz�s se pregunten porque no utilizar otro sistema de generaci�n
> de reportes, tipo jasperreport y otras yerbas. La raz�n es la misma.
> Todos los m�dulos terminan usando RML y otro lenguaje limitado a la
> hora de generar reportes. Juan, tu tienes m�s experiencia y creo que
> puedes contradecirme, no?
>
> --
> Coop. de Trab. Moldeo Interactive Lmt.
> Cristian Sebastian Rocha
> Consultor Analista.
> Castillo 1336 M�dulo 12 A
> (C1414AXD) CABA, Argentina.
> (+54-9-11).6800.0269
> http://interactive.moldeo.coop
> --
> Has recibido este mensaje porque est�s suscrito al grupo "OpenERP -
> Localizaci�n Argentina" de Grupos de Google.
> Para anular la suscripci�n a este grupo y dejar de recibir sus correos
> electr�nicos, env�a un correo electr�nico a
> openerp-localizacion-...@googlegroups.com.
> Visita este grupo en
> http://groups.google.com/group/openerp-localizacion-argentina.
> Para obtener m�s opciones, visita
> https://groups.google.com/groups/opt_out.
Cristian, me encanta tu diea: ESPECTACULAR !!!!!
Felicidades y un Feliz A�o a todos !!
pd:ahora bajo el modulo y lo pruebo con tranquilidad en estos dias.

Juan José Scarafía

unread,
Dec 21, 2013, 8:23:46 AM12/21/13
to openerp-localiz...@googlegroups.com
Cristian! Felicitaciones! parece muy copado.
La verdad que mucho no puedo opinar.
De LaTex conozco nada, solamente esuché muchísimo y todas cosas buenas.
Respecto a las herramientas de reportes ya disponibles:
  • Webkit: use un poco, podes hacer los saltos de página pero no probé ni tuve la necesidad con el tema de ir acumulando los subtotales
  • Jasper y pentaho: tampoco los utilizamos para esta finalidad de de subtotales en diferentes páginas, habría que verlo pero a priori no me parece que sean las herramientas mas adecuadas para tener las facturas y demás comprobantes
  • Aeroo: este si me parece que podría cumplir más con estos requisitos. Gustavo (Soltic) me comentó que ellos habían desarrollado algo en aeroo que permitía contar para saber si el reporte haría un salto de página o no. Con esa información ya sería posible llevar los subtotales de la página. Igual sigue siendo un poco rebuscado.

La verdad que hasta el momento no tuvimos necesidad de dejar los subtotales porque nuestro clientes utiliazan pre-impresos entonces las facturas y remitos los cortamos para que sean de una página cada uno.

Saludos,
Juan


Ing. Juan José Scarafía
(+54 9 341)153 278039
Skype: jjscarafia
El 20/12/13 19:04, Cristian Sebastian Rocha escribió:
--
Has recibido este mensaje porque estás suscrito al grupo "OpenERP - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a openerp-localizacion-...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Julian Salas

unread,
Jan 1, 2014, 9:01:10 AM1/1/14
to openerp-localiz...@googlegroups.com
Juan,

para cortar las facturas de muchos artículos para imprimir en pre-impresos, usas algún modulo? si es así cual?

Saludos

Julian

Juan José Scarafía

unread,
Jan 9, 2014, 7:22:10 AM1/9/14
to openerp-localiz...@googlegroups.com
Julian, utilizamos el modulo report-aeroo-generator que aplica varias funcionalidades para el tema reportería basandose en aeroo.
Algunas de ellas:
  • Distintos reportes según diarios, estados de comprobantes y demás
  • Partir facturas y remitos según cantidad de líneas
  • Incluir o no impuestos

Dicho módulo lo podes encontrar en: https://code.launchpad.net/~sistemas-adhoc/adhoc-oerp/7.0
en el mismo repo, hay un modulo llamado l10n_ar_report_samples que crea varios reportes de ejemplo utilizando el módulo anterior, para entender como puede ser utilizado.
Saludos,
Juan

Ing. Juan José Scarafía
(+54 9 341)153 278039
Skype: jjscarafia
El 01/01/14 11:01, Julian Salas escribió:
--

Cristian Sebastian Rocha

unread,
Jan 9, 2014, 8:05:02 AM1/9/14
to openerp-localiz...@googlegroups.com

Bueno,

Queria comentar que el modulo esta listo. Hay detalles, pero mas para el desarrollador que para el usuario.

Caracteristicas:

1. No se necesita partir facturas porque soporta multiples hojas según las normas de la AFIP. Calcula Transporte y Trasporte + Subtotal por pagina.

2. Soporta multiples IVAs.

3. Acepta razones sociales, direcciones y descripción de tamaño variable y no rompe el diseño.

4. Soporta inclusión de logos e imágenes en el detalle en svg, png, jpeg, pdf, etc.

5. Si se pone un poco de ganas, se puede incluir en una carta o en otro documento facilmente.

6. Tiene implementado un filtro para aceptar texto plano.

8. Parser de errores para que aparezcan en el log de openerp.

9. "Rerun" automatico para resolver referencias, generar indices y tablas de contenidos y calcular varias opciones complicadas.

Faltaría:

7. Filtro para incluir HTML.

8. Filtro para aceptar Richtext.

Apenas tenga internet les adjunto un pdf con una factura.

Saludos,
Cristian.

Darío De Giacomo

unread,
Jan 9, 2014, 8:56:31 AM1/9/14
to openerp-localiz...@googlegroups.com
Cristian, acabo de bajar la revno 3 del módulo y sigo teniendo este inconveniente al intentar instalarlo.

Qué dependencias tiene? Me falta alguna?
 
  File "/usr/lib/pymodules/python2.7/openerp/modules/loading.py", line 354, in load_modules
    loaded_modules, update_module)
  File "/usr/lib/pymodules/python2.7/openerp/modules/loading.py", line 256, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/usr/lib/pymodules/python2.7/openerp/modules/loading.py", line 188, in load_module_graph
    load_data(module_name, idref, mode)
  File "/usr/lib/pymodules/python2.7/openerp/modules/loading.py", line 76, in <lambda>
    load_data = lambda *args: _load_data(cr, *args, kind='data')
  File "/usr/lib/pymodules/python2.7/openerp/modules/loading.py", line 118, in _load_data
    tools.convert_csv_import(cr, module_name, pathname, fp.read(), idref, mode, noupdate)
  File "/usr/lib/pymodules/python2.7/openerp/tools/convert.py", line 927, in convert_csv_import
    result, rows, warning_msg, dummy = pool.get(model).import_data(cr, uid, fields, datas,mode, module, noupdate, filename=fname_partial)
AttributeError: 'NoneType' object has no attribute 'import_data'

Saludos

Cristian Sebastian Rocha

unread,
Jan 9, 2014, 9:22:11 AM1/9/14
to openerp-localiz...@googlegroups.com
Veamos, ahora estoy instalando un servidor nuevo donde voy a instalar el módulo. Veamos que pasa.


--
Has recibido este mensaje porque estás suscrito al grupo "OpenERP - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a openerp-localizacion-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/openerp-localizacion-argentina.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Cristian Sebastian Rocha

unread,
Jan 9, 2014, 10:23:15 AM1/9/14
to openerp-localiz...@googlegroups.com
Este es el ejemplo del que hablaba.


2014/1/9 Cristian Sebastian Rocha <cristia...@moldeo.coop>
Electronic Invoice(31).pdf

Juan José Scarafía

unread,
Jan 9, 2014, 10:36:15 AM1/9/14
to openerp-localiz...@googlegroups.com
Muy bueno Cristian!
La no necesidad de partir facturas sería solo en factura electrónica, porque en factura pre-impresa sigue siendo necesario ya que el pre-impreso ya esta particionado. No?
Saludos


Ing. Juan José Scarafía
(+54 9 341)153 278039
Skype: jjscarafia
El 09/01/14 10:05, Cristian Sebastian Rocha escribió:

Cristian Sebastian Rocha

unread,
Jan 9, 2014, 10:39:34 AM1/9/14
to openerp-localiz...@googlegroups.com

Si. Exacto. En preimpresa estas obligado a cortar :-(

Sebastián Gurpegui

unread,
Jun 11, 2014, 3:12:28 PM6/11/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Disculpen mi ignorancia, pero no sé cómo ejecutar el reporte de prueba dentro de OpenERP.

Tengo la versión 7, instalé tanto el Latex en mi Debian como el módulo desarrolado por Cristian.
Veo dentro de Acciones > Informes el denominado "Partner Resume" que tiene como archivo el "partner.tex" que está dentro de la carpeta addons\report_latex\report (que es el mencionado por Cristian como ejemplo)

Lo que me está faltando es identificar cómo ejecutar el reporte para así poder tomar el archivo, ir modificándolo y aprender a manejar el Latex.

Gracias y perdón por la bolupregunta.

Cristian Sebastian Rocha

unread,
Jun 11, 2014, 4:09:09 PM6/11/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Hola Sebastian,

no es una bolu pregunta, porque es uno de los puntos más débiles del módulo. Igual aquí unos pasos a seguir:

1- bajate la última versión. 
2- usa el servidor en modo debug. 
3- asegurate que el latex que estás tocando tiene un error.
4- ejecutá el reporte.
5- una vez que tira un error, vas a ver en el log que te dejó el código generado y los archivos intermedios en un /tmp
6- copiate los estilos que están en el reporte en ese directorio temporal
7- y a partir de ahí edita el latex y compilá con el pdflatex.

Se entendió?

Abrazo,
Cristian.



--
Has recibido este mensaje porque estás suscrito al grupo "odoo - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-localizacion-a...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/odoo-localizacion-argentina.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Coop. de Trab. Moldeo Interactive Lmt.
Cristian Sebastian Rocha
Consultor Analista.
Bonpland 2363 Of 303
(C1425FWE) CABA, Argentina.
(+54-9-11).6800.0269
http://interactive.moldeo.coop

Sebastián Gurpegui

unread,
Jun 11, 2014, 4:15:02 PM6/11/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Ok, haré el intento.
Recién hace menos de 1 mes estoy investigando OpenERP y comparándolo con otro ERP que manejo, así que estoy empezando a empaparme con todos los módulos. Cuando vuelva al tema de edición de reportes me vengo a este instructivo que me diste para intentar y te comento!


 ws-biz


--
Has recibido este mensaje porque estás suscrito a un tema del grupo "odoo - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/odoo-localizacion-argentina/shsXr0Uie4M/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a odoo-localizacion-a...@googlegroups.com.

Sebastián Gurpegui

unread,
Jun 11, 2014, 8:02:13 PM6/11/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Cristian, retomé este asunto de los reportes.
El reporte que ponés vos de ejemplo en la carpeta del Latex, desde dónde lo ejecuto dentro del OpenERP?


El miércoles, 11 de junio de 2014 17:09:09 UTC-3, Cristian Sebastian Rocha escribió:
Hola Sebastian,

no es una bolu pregunta, porque es uno de los puntos más débiles del módulo. Igual aquí unos pasos a seguir:

1- bajate la última versión. 
2- usa el servidor en modo debug. 
3- asegurate que el latex que estás tocando tiene un error.
4- ejecutá el reporte.
5- una vez que tira un error, vas a ver en el log que te dejó el código generado y los archivos intermedios en un /tmp
6- copiate los estilos que están en el reporte en ese directorio temporal
7- y a partir de ahí edita el latex y compilá con el pdflatex.

Se entendió?

Abrazo,
Cristian.

2014-06-11 16:12 GMT-03:00 Sebastián Gurpegui <seba...@ws-biz.com>:
Disculpen mi ignorancia, pero no sé cómo ejecutar el reporte de prueba dentro de OpenERP.

Tengo la versión 7, instalé tanto el Latex en mi Debian como el módulo desarrolado por Cristian.
Veo dentro de Acciones > Informes el denominado "Partner Resume" que tiene como archivo el "partner.tex" que está dentro de la carpeta addons\report_latex\report (que es el mencionado por Cristian como ejemplo)

Lo que me está faltando es identificar cómo ejecutar el reporte para así poder tomar el archivo, ir modificándolo y aprender a manejar el Latex.

Gracias y perdón por la bolupregunta.

--
Has recibido este mensaje porque estás suscrito al grupo "odoo - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-localizacion-argentina+unsub...@googlegroups.com.

Visita este grupo en http://groups.google.com/group/odoo-localizacion-argentina.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Cristian Sebastian Rocha

unread,
Jun 11, 2014, 9:10:20 PM6/11/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Tienes que ir a la lista de Partners, elegir un par y vas a ver que aparece un botón de reportes. Ahí aparece el ejemplo.


Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-localizacion-a...@googlegroups.com.

Visita este grupo en http://groups.google.com/group/odoo-localizacion-argentina.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Sebastián Gurpegui

unread,
Jun 12, 2014, 7:01:57 PM6/12/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Te comento mi avance:
Logré instalar el Latex (me tiraba error con unas fuentes así que instalé correctamente)
Ejecuté el reporte de ejemplo que pusiste sin problemas.
Me bajé el TeXstudio, un editor de archivos .tex para Windows, ya que el Debian que tengo no tiene GUI (para hacerlo más liviano)
Estuve chusmeando el archivo .tex y claramente es muy rara la forma de "codificar" el reporte, así que me estoy empapando un poco con la documentación de la wiki

Me surje una pregunta y acá es donde hago agua (por ahora): ¿de dónde tomás los parámetros para imprimir? Es decir, cómo sabés que, por ejemplo, "par.name" te retorna el nombre del partner, o que "par.document_type_id.name", el tipo de documento. Es decir, los argumentos que utiliza el módulo para llamar al reporte, de dónde salen

Espero no preguntar demasiado.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-localizacion-argentina+unsubs...@googlegroups.com.

Visita este grupo en http://groups.google.com/group/odoo-localizacion-argentina.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Coop. de Trab. Moldeo Interactive Lmt.
Cristian Sebastian Rocha
Consultor Analista.
Bonpland 2363 Of 303
(C1425FWE) CABA, Argentina.
(+54-9-11).6800.0269
http://interactive.moldeo.coop

--
Has recibido este mensaje porque estás suscrito al grupo "odoo - Localización Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-localizacion-argentina+unsub...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/odoo-localizacion-argentina.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Francisco Cano Marchal

unread,
Dec 10, 2014, 1:01:09 PM12/10/14
to odoo-localiza...@googlegroups.com, openerp-localiz...@googlegroups.com
Buenas tardes, primero de todo felicitarle por su trabajo al integrar Odoo y Latex. He trabajado con Latex bastante y me gusta, y poder utilizarlo para informes en Odoo es genial.

Sin embargo, tengo algunos problemillas. He instalado el módulo en Odoo 8 pero no me aparece el report de ejemplo ni dentro de Configuración>Reports ni me da la opción de imprimir el informe desde clientes (existe el botón "print" arriba de la lista, y otros informes, pero no el de "Partner Resume"). Sí que tengo la opción de escoger el tipo "Latex" para los informes existentes. 

Cómo puedo enlazar los archivos de los informes a los informes ? Es necesario crearlos en alguna carpeta en especial ?  

Les agradezco de antemano, 
Reply all
Reply to author
Forward
0 new messages