Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

martes, 27 de marzo de 2018

Reportes Word en Odoo


GeneraciĆ³n de reportes en formato Doc/Docx integrado a Odoo




Mas de uno de nosotros hemos tenido la curiosidad o necesidad de Generar reportes en formato Doc(x),  esto es posible gracias a Python y a la gran cantidad de librerias que se crean y existen, en este Post les enseƱare un par de librerias que nos ayudan a generar este tipo de Reportes.


InstalaciĆ³n

Haremos uso de la libreria python-docx alojada en los Repositorios de Python, para ello podemos utilizar la aplicaciĆ³n Pip en Linux o easy_install.

sudo pip install python-docx
o
sudo easy_install install python-docx


ImplementaciĆ³n

El primer paso que debemos realizar como cualquier libreria es importarla en nuestra Clase Odoo.

from docx import Document

Creamos una instancia de la libreria y la asignamos a una variable para poder generar nuestro Documento.

report_word = Document()

A partir de nuestra variable instanciada, podemos ir aƱadiendo informaciĆ³n tomada de nuestro recordset o bien para ejemplos, podemos usar informaciĆ³n ficticia.

Algunos ejemplos de lo que podemos hacer con la  libreria son:

Agregar un Parrafo


report_word = Document()

paragraph  = report_word.add_paragraph('Hola, este es mi primer parrafo con la libreria docx')


Agregar una cabecera


report_word = Document()

report_word.add_heading('Dream big and start with something small')

Agregar una tabla

report_word = Document()

report_word.add_table(rows=2, cols=2)

Un ejemplo completo seria:

from docx import Document
from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='IntenseQuote')

document.add_paragraph(
    'first item in unordered list', style='ListBullet'
)
document.add_paragraph(
    'first item in ordered list', style='ListNumber'
)

document.add_picture('monty-truth.png', width=Inches(1.25))

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for item in recordset:
    row_cells = table.add_row().cells
    row_cells[0].text = str(item.qty)
    row_cells[1].text = str(item.id)
    row_cells[2].text = item.desc

document.add_page_break()

document.save('demo.docx')

Si quieren conocer mas acerca de la libreria:

https://python-docx.readthedocs.io/en/latest/