Odoo13创建报表

Odoo13创建报表

前提:参考Odoo13创建一个基本模块创建好Academy模块

1.安装并配置wkhtmltopdf

  1. 安装windows版wkhtmltopdf ,按照官网要求安装最新版的wkhtmltopdf,当前最新版为0.12.5;
  2. 配置wkhtmltopdf,在window中配置环境变量,在系统变量path中添加wkhtmltopdf的bin路径,配置完成也可以在命令行测试
    Odoo13创建报表_第1张图片
    Odoo13创建报表_第2张图片
  3. 重启,如果在启动日志中看到You need Wkhtmltopdf to print a pdf version of the report,则在配置完环境变量后重启PyCharm或者重启电脑即可,会看到日志输出Will use the Wkhtmltopdf binary at X:\xxx\wkhtmltopdf\bin\wkhtmltopdf.exe

2.创建报表

  1. 创建report文件夹 ,在academy模块下创建report文件夹
  2. 创建声明文件 ,在report文件夹下创建一个teachers_report.xml文件
  3. 添加report标签,在teachers_report.xml文件中添加report标签,model属性的值对应academy的teachers,report_type可以是qweb-html或qweb-pdf,qweb-pdf是直接下载,因此使用qweb-html先进行浏览再进行下载,name属性的值为这个报表使用到的模板
    Odoo13创建报表_第3张图片
  4. 添加template模板,在teachers_report.xml文件中添加name属性的值声明的模板,其中id的值就为name中声明的值,template模板也可以单独写在一个xml文件中,但是要注意文件引用顺序
    Odoo13创建报表_第4张图片
<?xml version="1.0"?>
<odoo>
    <report
        id="action_academy_teachers_report"
        model="academy.teachers"
        string="报表"
        report_type="qweb-html"
        name="academy.teachers_report_template"
    />
    <template id="teachers_report_template">
        <t t-call="web.html_container">
            <div class="page">
                <h2>Teachers Info</h2>
                <br/>
                <table>
                    <tr><th>id</th><th>name</th></tr>
                    <t t-foreach="docs" t-as="o">
                        <tr><td><span t-field="o.id"/></td><td><span t-field="o.name"/></td></tr>
                    </t>
                </table>
            </div>
        </t>
    </template>
</odoo>
  1. 添加声明文件,将teachers_report.xml加入到__manifest__.py的data数组里
    'data': [
        'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
        'reports/teachers_report.xml',
    ],
  1. 重启应用并更新模块,通过命令启动应用并快速更新模块,可以添加-d和-u参数指定更新某个数据库的某个模块,这样就不需要在页面上进行更新模块
python odoo-bin -r root -w admin --addons-path=addons,my-modules --db-filter=^odoo$ -d odoo -u academy

3.访问报表

  1. 打开academy模块,打开academy模块,并勾选所有记录,此时会看到多出了一个打印按钮,点击可以看到我们添加的报表功能
    Odoo13创建报表_第5张图片
  2. 打开报表,打开报表后,可以看到我们使用teachers_report.xml声明的报表及模板生成的打印格式
    Odoo13创建报表_第6张图片
  3. 官网参考文档,https://www.odoo.com/documentation/13.0/reference/reports.html
  4. 模块源码xia载,https://download.csdn.net/download/u010520912/12027109

4.实现打印预览

  1. 修改report配置,odoo的打印功能默认是需要下载pdf的,我们修改report配置添加file和print_report_name,并修改report_type为qweb-pdf,注意print_report_name指定的文件名不能包含中文
    <report
        id="action_academy_teachers_report"
        model="academy.teachers"
        string="报表"
        report_type="qweb-pdf"
        name="academy.teachers_report_template"
        file="academy.teachers_report"
        print_report_name="'%s' % (object.name)"
    />
  1. 下载并添加预览模块,prt_report_attachment_preview
    http://www.odoo.com/apps/modules/11.0/prt_report_attachment_preview/
  2. 更新模块并查看报表,即可实现打印预览

5.其它相关文章

1.Odoo13使用SQL构建报表

你可能感兴趣的:(Python)