打印

# 打印报表

以tx.rep.review.fa.ca.report模块为型为例

在report目录下新建:`fa_ca_report_reports.py`,`fa_ca_report_templates.xml`,`paperformat.xml`。

## fa_ca_report_reports.py

用于处理tx.rep.review.fa.ca.report模型打印的内容

使用AbstractModel,

_name命名为report+模块名+模板名 

```python

class FaCaReport(models.AbstractModel): 

​_name = 'report.plm_project_quality.fa_ca_report_template' 

​_description = "Fa Ca Report"

​def _get_report_values(self, docids, data=None): 

​docs = self.env['tx.rep.review.fa.ca.report'].sudo().browse(docids)

​docargs = { '

​docs': docs, 

​} 

​return docargs

```

在 _get_report_values方法中处理打印的内容

## fa_ca_report_templates.xml

### 打印模板

在模板中使用_get_report_values方法中docargs的值

```xml

<template id="fa_ca_report_template"> 

​<style> 

​</style> 

​<t t-call="web.basic_layout">

​  ​<t t-foreach="docs" t-as="o"> 

​</t> 

​</t>

</t>`

``

### 打印动作

`report_name`和`report_file`均使用模块名+模板名,通过`binding_model_id`和`binding_type`绑定到模型对应的**打印**按钮上,通过`paperformat_id`绑定纸张格式

```xml

<record id="action_fa_ca_report" model="ir.actions.report">

​ <field name="name">Fa Ca Report</field>

​ <field name="model">tx.rep.review.fa.ca.report</field> 

​<field name="report_type">qweb-pdf</field> 

​<field name="report_name">plm_project_quality.fa_ca_report_template</field> 

​<field name="report_file">plm_project_quality.fa_ca_report_template</field> 

​<field name="print_report_name">'Fa Ca Report %s' % object.name</field> 

​<field name="binding_model_id" ref="model_tx_rep_review_fa_ca_report"/> 

​<field name="binding_type">report</field>

​ <field name="paperformat_id" ref="plm_project_quality.paperformat_fa_ca_report"/></record>```

## paperformat.xml

纸张格式

```xml

<!-- Portrait 纵向 Landscape 横向 -->

<record id="paperformat_fa_ca_report" model="report.paperformat">

​ <field name="name">Fa Ca Report Paper</field>

​ <field name="default" eval="True" />

​ <field name="format">custom</field> 

​<field name="page_height">297</field> 

​<field name="page_width">210</field> 

​<field name="orientation">Landscape</field> 

​<field name="margin_top">0</field> 

​<field name="margin_bottom">0</field> 

​<field name="margin_left">0</field> 

​<field name="margin_right">0</field> 

​<field name="disable_shrinking" eval="False"/>

​ <field name="dpi">96</field>

</record>

```

王柏茗 2024年9月13日
分析这篇文章

存档
登录 留下评论
工作流定义
创建简单工作流