Server Action return report action - xiaohao0576/odoo-doc GitHub Wiki

在服务器动作中返回PDF报表

Odoo的报表动作提供了一个 report_action函数,调用此函数,可以返回一个报表动作,并且可以传递自定义的data

点击查看源码

按以下步骤,可以做到在Odoo系统中自定义按钮来生成PDF报表

  1. 打开开发者模式
  2. Settings -> Techinal -> Actions -> Reports -> New,新建一个PDF报表
  3. Settings -> Techinal -> Actions -> Server Actions -> New,新建一个服务器动作,在新建的服务器动作中,可以使用env和model ORM准备报表需要的数据,这些数据可以来自不同的Model,也可以是再加工处理过的,把报表需要用到的所有数据,放到一个名字是data的字典中
  4. 在服务器动作中,调用report_action函数,第一个参数是docids,如果是空,就写空列表[],第二个参数是 data=data,把准备好的数据传递进去
  5. 在Qweb报表模板中,直接调用data字典中的键值,比如data字典中有一个'name'键,调用时使用<t t-out="name"/>就可以
  6. 在需要触发报表的页面添加button,type=action。例如<button type="action" name="addon.action_report" string="Download Report"/>,参考文档Odoo Button

如果在生成报表之前,需要用户输入一些数据作为条件,可以先创建一个TransientModel,制作一个对话框,让用户填写数据,在用户点击确认后,使用用户输入的数据作为条件准备data。

以上所有步骤,都可以在Sass版本的Odoo Online中实现,不需要本地化部署。

可以参考此视频 https://youtu.be/3UJ8UfP48B4?si=2LcxNUZmensi4i1Q