首页 > 代码库 > odoo10学习笔记十三:qweb报表

odoo10学习笔记十三:qweb报表

一:概述

报表是使用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 objects 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=http://www.mamicode.com/"‘/report/barcode/?
    type=%s&value=http://www.mamicode.com/%s&width=%s&height=%s%(QR, text, 200, 200)"/>

 

odoo10学习笔记十三:qweb报表