Dalla documentazione ufficiale (odoo 8).
Servono solo due cose:
il Report template (cioè il qweb che dice come fare il report) ed l'azione
il "ir.actions.report.xml", che genera la creazione del report.
Vedendo un esempio che funziona, la stampa di un ordine di vendita (in odoo/addons/sale)
ci sono effettivamente solo questi due, nessun ulteriore file in python è necessario (verifica con
ca@A:~$ grep -r render_html /home/odoo/addons/sale che non trova niente)
Nel report template, i.e. il model qweb in /odoo/addons/sale/views/report_saleorder.xml, ci sono il documento vero e proprio (report_saleorder_document) ed il modello che garantisce la traduzione (report_saleorder) richiamato originariamente dall’azione.
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_saleorder_document">
<t t-call="report.external_layout">
<div class="page">
...
<template id="report_saleorder">
<t t-call="report.html_container">
<t t-foreach="doc_ids" t-as="doc_id">
<t t-raw="translate_doc(doc_id, doc_model, 'partner_id.lang', 'sale.report_saleorder_document')"/>
</t>
</t>
</template>
l’azione in /odoo/addons/sale/ Report Actions (ir.actions.report.xml)
che usa la scorciatoia del tag report
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report
id="report_sale_order"
string="Quotation / Order"
model="sale.order"
report_type="qweb-pdf"
file="sale.report_saleorder"
name="sale.report_saleorder"
/>
</data>
</openerp>
Purtroppo non riesco a replicarlo, cioè non riesco a far creare, con gli abbonamenti, una stampa dei contratti, con questo codice:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report
id="report_contract_pdf"
string="print contract"
model="account.analytic.account"
report_type="qweb-pdf"
name="account.analytic.account.report_contract"
/>
</data>
</openerp>
E neppure con name="analytic.report_contract"
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_contract_document">
<t t-call="report.external_layout">
<div class="page">
<h1>hola</h1>
</div>
</t>
</template>
<template id="report_contract">
<t t-call="report.html_container">
<t t-foreach="doc_ids" t-as="doc_id">
<t t-raw="translate_doc(doc_id, doc_model, 'partner_id.lang', 'sale.report_contract_document')"/>
</t>
</t>
</template>
</data>
</openerp>