如何定义Odoo的Report


在Odoo中定义Report所需要的步骤很少,我们要做的事情就是给用户一个打印按钮,然后给系统一个模板。

还记得以前课程的要求吗?当你要实现某种功能的时候,不管你能不能看懂官方的文档,先把它找出来。

我们这里讲的报表指的是从8.0加入的基于QWeb的报表引擎,所以7版本的同学不要继续往下看了。

另外,这里讲的是用代码开发。

- - - - - - - - - - - - - - - - - 手动分隔线 - - - - - - - - - - - - - - - - - - - - - - -

我们用命令行创建的初始模块有很多文件目录,这节课程不需要那些,删了它们,只留下根目录和__init__.py和__manifest__.py这两个文件。

然后,我们要在模块的根目录下创建一个名字叫report的目录,然后在report目录中创建1个文件reports.xml,我们接下来只需要在reports.xml文件中写一点代码就能够实现报表的定义。

<odoo>

    <data>
        <report
            id="action_report_training_report"
            model="sale.order"
            string="销售订单报表"
            report_type="qweb-pdf"
            name="mlj_sale_report.report_traing_report"
        />

        <template id="report_traing_report">
            <t t-call="report.html_container">
                <t t-foreach="docs" t-as="o">
                    <div class="page">
                        <t t-raw="o.name" />
                    </div>
                </t>
            </t>
        </template>
    </data>
</odoo>

上面是reports.xml文件的完整代码,report元素是用来定义报表动作的。我们想为销售订单(model为sale.order)创建一个报表,用户在某个订单Form视图上打印该报表,靠得就是这个动作。

接下来,是报表的内容。template元素是定义报表内容的。因为我们的报表是通过wkhtmltopdf这个插件将html页面转换成PDF文件的,而Odoo中使用的模板引擎是QWeb,所需要的模板就通过template元素来定义。

完成这个模块,上传到服务器试一下吧。

虽然你可以从本文后面下载代码包,但是千万不要啊!

相关下载

留下评论

你应该 登入 张贴评论