pdf打印模板
# -*- coding:utf-8 -*-
from odoo import models, fields, api, _
import decimal
class PDFDemoTemplate(models.AbstractModel):
_name = 'report.report_demo_pdf.pdf_demo_tempalte'
# 模板 :'report.Module.TemplateName'
# 1. 主要取数方法
@api.model
def _get_report_values(self, docids, data=None):
docs = []
docs.append({
'title_name':'PDF-员工信息打印示例'
})
th_list = ['ID','名称','部门','手机','地点']
return {
'docs': docs,
'th_list': th_list,
'_format': self._format,
'get_lines': self.get_lines,
}
# 2. 支持自定义函数调用和数据块获取
@api.model
def get_lines(self):
employee_obj = self.env['hr.employee']
employee_ids = employee_obj.search([], limit=10)
return employee_ids
def _format(self, data):
return "{:,}".format(decimal.Decimal("%.2f" % data))
视图
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<!--模板定义-->
<template id="pdf_demo_tempalte">
<t t-call="web.html_container">
<!--docs不是记录集的时候 请不要使用o 或 doc ,会检测模板报错 一般来说docs里存的都是记录集 这里我们假定不是记录集-->
<!--<t t-foreach="docs" t-as="o">-->
<!--<t t-foreach="docs" t-as="doc">-->
<t t-foreach="docs" t-as="do">
<t t-call="web.external_layout">
<div class="page">
<h2 class="text-center">
<t t-esc="do['title_name']"/>
</h2>
<table class="table table-bordered mb64">
<tr>
<t t-foreach="th_list" t-as="thd">
<td>
<t t-esc="thd"/>
</td>
</t>
</tr>
<t t-foreach="get_lines()" t-as="l">
<tr>
<td>
<t t-esc="l.id"/>
</td>
<td>
<t t-esc="l.name"/>
</td>
<td>
<t t-esc="l.department_id.name"/>
</td>
<td>
<t t-esc="l.work_phone"/>
</td>
<td>
<t t-esc="l.work_location"/>
</td>
</tr>
</t>
</table>
</div>
</t>
</t>
</t>
</template>
<!--PDF报表定义-->
<report
id="action_report_pdf_demo"
model="hr.employee"
string="PDF打印模板"
report_type="qweb-pdf"
name="report_demo_pdf.pdf_demo_tempalte"
file="report_demo_pdf.pdf_demo_tempalte"
print_report_name="'PDF - %s' % ('模板')"
/>
</data>
</odoo>