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 webkit per renderitzar html i css, donant format als informes i després descarregar un pdf per a imprimir. Per poder fer aixó, necessita el programa wkhtmltopdf.

Instal·lació en Ubuntu

Aquest manual és per a Ubuntu 13.04

  • El wkhtmltopdf oficial d'Ubuntu falla amb OpenERP. 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 :
  
  <div class="address">
     <b>${o.name |entity}</b><br/>
     %if o.surname :
        ${o.surname or ''}<br>  
     %endif
     %if o.IDNum :
        ${o.IDNum or ''}<br>  
     %endif
  	
  	<div class="header">
  		<span class="header" style="width: 40%;">${_("Description")}</span>
  		<span class="header" style="width: 10%;">${_("Subject")}</span>
  		<span class="header" style="width: 10%;">${_("Hours Total")}</span>
  		<span class="header" style="width: 20%;">${_("Website")}</span>
  		<span class="header" style="width: 10%;">${_("Date")}</span>
  	</div>
  
  
  	%for line in o.subscriptions :
  
  	<div class="list">
  		<span class="list" style="width: 40%;">${line.name}</span>
  		<span class="list" style="width: 10%;">${line.subject}</span>
  		<span class="list" style="width: 10%;">${line.hours_total}</span>
  		<span class="list" style="width: 20%;">${line.website}</span>
  		<span class="list" style="width: 10%;">${line.date}</span>
  	</div>
  	%endfor
  
  
  </div>
  %endfor
  </body>
  </html>

Crear Capçaleres i peus

Les capçaleres i els peus són independents del contigut en webkit. Per això, cal crear la capçalera, el peu i els logos.

En primer lloc, cal fer referència al mòdul de webkit per crear les capçaleres i que puguen ser instal·lades:

__openerp__.py:

"depends" : ['base','report_webkit'],
...
 "update_xml" : ['school_view.xml', 'school_report.xml', 'report/header_school.xml'],

A continuació, en l'XML del report, cal fer referència a la base:

school_report.xml

webkit_header="school.school_report_header"

Després es crea el fixer header_school.xml. Podem utilitzar els exemples com a base per a modificar.

Si volen un logo personalitzat

Enllaços

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