Webkit Report Engine

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Webkit és un motor de renderitzat d'html. La idea de Openerp és utilitzar html i css per donar format als informes i després descarregar un pdf per a imprimir. Per poder fer aixó, necessita el programa wkhtmltopdf.

Instal·lació en Ubuntu

  • El wkhtmltopdf oficial d'Ubuntu falla. Per tant, cal descarregar-lo de la web oficial:
# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
# bunzip2 wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
# tar -xvf wkhtmltopdf-0.11.0_rc1-static-amd64.tar
# mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf 
  • A continuació, cal instal·lar el mòdul report_webkit.
  • Cal dir a OpenERP on està el wkhtmltopdf. Cal anar a Configuracion -> Técnico -> Parámetros -> Parámetros del sistema i crear una nova clau webkit_path amb la ruta absoluta del wkhtmltopdf.
No cal fer aquest pas si està /usr/bin/, ja que forma part del PATH
  • És recomanable fer els nous mòduls en un directori diferent al oficial d'OpenERP. Per tant, es recomana afegir una ruta al addons_path:
 # nano /etc/openerp/openerp-server.conf

Afegir:

   addons_path = /usr/lib/pymodules/python2.7/openerp/addons,/opt/openerp-custom/addons
  • Es reinicia el servici openerp


En aquest moment tenim el mòdul correctament instal·lat, però no tenim informes fets per a webkit. El que anem a fer és instal·lar uns mòduls bàsics per a provar webkit i entendre cóm funciona:

  # apt-get install bzr
  # cd /opt/openerp-custom
  # mkdir sources
  # cd sources
  # bzr branch lp:account-invoice-report/7.0 account-invoice-report
  # bzr branch lp:sale-reports/7.0 sale-report
  # bzr branch lp:account-financial-report/7.0 account-financial-report
  # bzr branch lp:webkit-utils webkit-utils
  # cd ..
  # mkdir addons
  # cd addons
  # ln -s ../sources/sale-report/sale_order_webkit/ sale_order_webkit
  # ln -s ../sources/account-invoice-report/invoice_webkit/ invoice_webkit
  # ln -s ../sources/webkit-utils/base_headers_webkit/ base_headers_webkit
  # ln -s ../sources/webkit-utils/report_webkit_chapter_server/ report_webkit_chapter_server

A continuació, en OpenERP, instal·lem els 4 mòduls que hem descarregat. Aquest són:

  • sale_order_webkit : Un reemplaç per a l'impresió de ordres de venda.
  • invoice_webkit: Un reemplaç per al pressuposts.
  • base_headers_webkit: Les capçaleres i peu bàsics per a començar a fer informes.
  • report_webkit_chapter_server: Utilitat per a proporcionar una funció que necessita webkit.

Una vegada instal·lat, les factures i els pressupostos es poden imprimir amb webkit.

Crear els nostres informes

Per a crear un infome, cal utilitzar una plantilla mako. També necessitem declarar el report en un xml.

En el cas de l'exemple de school del DIA, aquest sería un informe bàsic per als estudiants:

__openerp__.py:

...
       "update_xml" : ['school_view.xml', 'school_report.xml'],
...

school_report.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>

<report id="school.report_student"
name="school.student.webkit"
auto="False"
model="school.student"
file="school/report/student.mako"
string="Student"
report_type="webkit"/>

</openerp>

report/student.mako

 <html>
 <head>
 <style type="text/css">
 ${css}
 div.header {
 	 border-bottom: 2px solid black;
          width: 100%;
 	 }
 	 
 span.header {
 	display: inline-block;
 	text-align: left;
 	font-size: 12;
 	font-weight: bold;
 	padding-left: 6px;
 	 }
 div.list {
 	page-break-inside: avoid;
          width: 100%;
 	border-bottom:1px solid gray;
 	}
 
 span.list {
 	display: inline-block;
 	text-align: left;
 	font-size: 12;
 	padding-right: 6px;
         vertical-align: middle;
 	margin-top: 7px;
 	padding-bottom: 2px;
 	page-break-inside: avoid;
         min-height: 30px;
 	}
 </style>
 </head>
 <body>
 %for o in objects :
 
    ${o.name |entity}
%if o.surname : ${o.surname or }
%endif %if o.IDNum : ${o.IDNum or }
%endif
 		${_("Description")}
 		${_("Subject")}
 		${_("Hours Total")}
 		${_("Website")}
 		${_("Date")}


 	%for line in o.subscriptions :
 
 		${line.name}
 		${line.subject}
 		${line.hours_total}
 		${line.website}
 		${line.date}
 	%endfor
 
 
 %endfor
 </body>
 </html>

Enllaços

http://help.openerp.com/question/4724/how-to-configure-webkit-for-v7/