- 所生成记录的 外部id
-
name
(必填) - 仅在某种列表中查找内容时用于报表的助记内容/描述
-
model
(必填) - 你的报表会相关的模型
-
report_type
(必填) -
PDF报表的
qweb-pdf
或HTML的qweb-html
-
report_name
- 你的报表名称(将会是PDF的输出名)
-
groups
-
允许浏览/使用当前报表的组的
Many2many
字段 -
attachment_use
-
若设置为True, 使用
attachment
表达式所生成的名称存储为附件的报表;如果需要仅生成一次报表可以使用它 (例如出于法律原因) -
attachment
-
定义报表名称的python 表达式;记录可作为
object
变量访问 -
paperformat
- 希望使用的纸张格式的外部id(如未指定默认为公司的纸张格式) file="account.report_invoice" attachment_use="True" attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')"
- 针对当前报表的记录
-
doc_ids
-
针对
docs
记录的id列表 -
doc_model
-
针对
docs
记录的模型 -
对Python标准库
time
的引用 -
打印报表的用户的
res.user
记录 -
res_company
-
当前
user
的公司的记录
每个报表必须由 报表动作 声明。
为进行简化,
<report>
元素快捷方式在定义报表可以使用, 而非需要手动设置
动作
及其周边内容。这个
<report>
可以接收如下属性:
调用
external_layout
会在报表上添加头部和底部。PDF内容体是
<div class="page">
内部的内容。 模板的
id
必须为在报表声明中指定的名称;例如对上面的报表为
account.report_invoice
。因为这是一个QWeb模板,你可以访问由模板接收的
docs
对象的所有字段。
有一些可在报表中访问的具体变量,主要有:
如果你希望访问模板中的记录/模型的其它记录,会需要用到 自定义报表 。
可翻译模板
如果要翻译报表 (如翻译到伙伴的语言),需要定义两个模板:
然后可以调用通过将属性设置
t-lang
为语言代码(例如
fr
或
en_US
)或是记录字段的主模板中的可翻译文档。如果使用可翻译的字段(如国家名、销售条件等)还需要通过相应的上下文重新浏览相关记录。
如果报表模板不使用可翻译记录字段,不需要在另一种语言中重新浏览记录且这样会影响性能。
例如,我们来看一下Sale模块中的销售订单报表:
<t t-call="web.html_container"> <t t-foreach="docs" t-as="doc"> <t t-call="sale.report_saleorder_document" t-lang="doc.partner_id.lang"/> </template> <!-- Translatable template --> <template id="report_saleorder_document"> <!-- Re-browse of the record with the partner lang --> <t t-set="doc" t-value="doc.with_context(lang=doc.partner_id.lang)" /> <t t-call="web.external_layout"> <div class="page"> <div class="oe_structure"/> <div class="row"> <div class="col-6"> <strong t-if="doc.partner_shipping_id == doc.partner_invoice_id">Invoice and shipping address:</strong> <strong t-if="doc.partner_shipping_id != doc.partner_invoice_id">Invoice address:</strong> <div t-field="doc.partner_invoice_id" t-options="{"no_marker": True}"/> <div class="oe_structure"/> </template>