一:概述
报表是使用qweb定义的,报表的pdf导出是使用wkhtmltopdf来完成的。
如果需要为一个模型创建报表,需要定义report及对应模板。
如果有需要的话还可以指定特定的纸张格式,
如果需要访问其他模型,就需要定义Custom Report。
二:Report
report
标签可用于定义一个报表:
id - 生成的数据的id name (必选) - 报表名用于查找及描述 model (必选) - 报表所对应的模型 report_type (必选) - qweb-pdf: pdf | qweb-html : html report_name - 输出pdf时文件名 groups - Many2many字段用于指定可以查看使用该报表的用户组 attachment_use - 如果设置为true时,该报表会以记录的附件的形式保存,一般用于一次生成多次使用的报表 attachment - 用于定义报表名的python表达式,记录可以通过object对象访问 paperformat - 用于打印报表的文件格式的外部id(默认是公司的格式)(可以自定义格式)
<report id="account_invoices" model="account.invoice" string="Invoices" report_type="qweb-pdf" name="account.report_invoice" file="account.report_invoice" attachment_use="True" attachment="(object.state in (‘open‘,‘paid‘)) and (‘INV‘+(object.number or ‘‘).replace(‘/‘,‘‘)+‘.pdf‘)" //拼接文件名 />
三:报表模板
<template id="report_invoice"> <t t-call="report.html_container"> <t t-foreach="docs" t-as="o"> <t t-call="report.external_layout"> <div class="page"> <h2>Report title</h2> <p>This object‘s name is <span t-field="o.name"/></p> </div> </t> </t> </t> </template>
通过调用external_layout
来给报表添加默认的头部和尾部,pdf内容会是<div class="page">
里的内容。
模板id需与报表声明中一致,比如上面的account.report_invoice
,由于这是qweb模板,可以在docs
对象中取得字段内容。
四:报表嵌入二维码
在controller中生成二维码,然后在生成报表时嵌入:
![](‘/report/barcode/QR/%s‘ % ‘My text in qr code‘)
还可以使用查询url来传多个参数:<img t-att-src="‘/report/barcode/? type=%s&value=%s&width=%s&height=%s‘%(‘QR‘, ‘text‘, 200, 200)"/>
时间: 2024-11-05 17:33:57