目录

1.下载 wkhtmltopdf 组件

2.报表模型

3.定义动作视图

4.定义Qweb模板


1.下载 wkhtmltopdf 组件

下载地址:wkhtmltopdf

将下载之后的bin目录配置到环境变量中,高级系统设置>>环境变量>>path
配置成功后启动odoo,会显示组件路径:

2.报表模型

模型需要继承model.AbstractModel,模型的名字以 report.模块名.自定义名 的形式,

需要重写 _get_report_values 方法,用以传递数据给前端,代码如下所示:

class BookReport(models.AbstractModel):_name = 'report.test_report.report_book'@api.modeldef _get_report_values(self, docids, data=None):docs = self.env['system.book'].browse(docids)print(type(docs))return {'doc_ids': docids,'doc_model': "system.book",'docs': docs,'data':data}

其中的report_book 是模型的名字一般和前端的qweb模板id定义成一样,前端需要使用,docids是选中的记录的id列表,返回值以字典的形式,例如以上的 docs 可以在qweb模板语法中使用t-foreach遍历。

3.定义动作视图

动作视图的定义有两种方法:使用report标签和record标签,这里介绍record标签的使用。

name属性:

(1)name——在前端显示的动作名

(2)model——所连接的模型

(3)report_type——报表形式

(4)paperformat_id——纸张的格式,ref为外部标识符(不加的话应该是默认的)

(5)report_name与report_file——一般定义成一样的,防止出错,形式为: 模块名.模板id

(6)print_report_name——输出的pdf文件名(格式为python表达式,不然打印一条记录时报错)

代码如下所示:

<record id="book_report" model="ir.actions.report"><field name="name">打印报告</field><field name="model">system.book</field><field name="report_type">qweb-pdf</field><field name="paperformat_id" ref="maono_quality_extend.quality_check_report_A4"/><field name="report_name">test_report.report_book</field><field name="report_file">test_report.report_book</field><field name="print_report_name">('%s' % (object.name))</field><field name="binding_model_id" ref="booksystem.model_system_book"/><field name="binding_type">report</field>
</record>

4.定义Qweb模板

只需要注意id与所定义的模型的尾缀一样就行(防止报错),代码如下:

  <template id="report_book" name="book info"><t t-call="web.basic_layout" t-foreach="docs" t-as="doc"><div class="page"><tr><td><t t-esc="doc.name" /></td></tr></div></t></template>

odoo 使用打印功能相关推荐

  1. MIS开发中.net Framework的打印功能

    Microsoft .net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下. 打印操作通常包括以下四个功能 1 打印设置 ...

  2. window.print()前端实现打印功能

    方法介绍 window.print()方法用于打印当前窗口的内容. 默认打印页面中body里的所有内容. 调用 print() 方法会产生一个打印预览弹框,让用户可以设置打印配置. 1. 打印方法 1 ...

  3. php可以打印一个页面,利用html实现分页打印功能的实例详解

    本篇介绍利用html实现分页打印功能的实例详解,有些不想打印出来的分页打印的都可以应用这类样式进行控制 在非打印时是无效的. 页面打印 /* 应用这个样式的在打印时隐藏 */ .noPrint { d ...

  4. 开源的javascript实现页面打印功能,兼容所有的浏览器(情况属实)

    这篇文章完全是属于技术文章,也是记录一下自己在项目当中遇到的坑爹问题啊,因为是B/S的程序,所以打印功能还是必须要有的,对于打印我选择了一个js插件,发现非常的简单和方便,所以这里拿出来和大家分享一下 ...

  5. DevExpress打印功能 z

    一.打印功能说明: 打印功能,我们有多种实现方式,可以根据需要自行选择,我简单的总结下两种方法. (1).使用微软.net框架自带的PrintDocument,这种方式是直接借助Graphics,自行 ...

  6. 在该系统上全局禁用了虚拟打印功能,不会为该虚拟机启用此功能--解决办法

    问题描述:在开启此虚拟机时,提示在该系统上全局禁用了虚拟打印功能,不会为该虚拟机启用此功能. 解决办法:在VMware workstation页面依次点击 编辑--首选项--设备--启用虚拟机打印-- ...

  7. java发布后功能不能用,急项目发布后java写的打印功能失效了-求解解决方法

    当前位置:我的异常网» J2EE » 急项目发布后java写的打印功能失效了-求解解决方法 急项目发布后java写的打印功能失效了-求解解决方法 www.myexceptions.net  网友分享于 ...

  8. lodop打印不显示页码_Lodop插件实现打印功能

    下载lodop插件实现打印功能(element-ui框架) 一.vuejs弹窗部分 <el-dialog title="打印" width="960px" ...

  9. boost::describe模块实现打印功能的测试程序

    boost::describe模块实现打印功能的测试程序 实现功能 C++实现代码 实现功能 boost::describe模块实现打印功能的测试程序 C++实现代码 #include <boo ...

最新文章

  1. java数组排序之冒泡排序
  2. 一:redis 的string类型 - 相关操作
  3. Python 爬虫实例(7)—— 爬取 新浪军事新闻
  4. 作为一位75后的职场宝妈
  5. mysql 锁怎么使用_MySQL锁的用法之行级锁
  6. Python txt转换为excel
  7. 关于tcp/udp网络调试助手错误提示
  8. Django模板标签regroup方法对对象进行分组
  9. 2021春节档电影数据分析
  10. Java 求解加油站
  11. Traceback (most recent call last)解决方法
  12. [RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题
  13. windows保护无法启动修复服务器,win10使用命令修复系统时提示Windows 资源保护无法启动修复服务怎么办...
  14. java中继承内部类的方法_Java自学-接口与继承 内部类
  15. 基于SSM+Bootstrap【爱校教务系统管理系统】附源码
  16. ETH 2.0新纪元开启,究竟能带来什么?
  17. python制作有道翻译软件
  18. 遗传编程(GA,genetic programming)算法初探,以及用遗传编程自动生成符合题解的正则表达式的实践...
  19. 充电器pps功能是什么_联想推出45W拯救者充电器,支持PPS功能主打便携
  20. 木马情报报告:内部抓捕botnet-Dridex

热门文章

  1. 【C++学习笔记】复合类型和const限定符
  2. 创意美食、创意生活,今天我要把创意吃进肚子——邻家壹号创意之旅
  3. 邮件营销怎么做你知道吗?电子邮件营销平台注册流程
  4. AppleWWDRCA.cer证书
  5. matplotlib画图-折线/散点/柱状/条形图
  6. s一般怎么称呼自己的m_“老公、老婆、亲爱的”?快来围观明星怎么称呼自己的另一半!...
  7. 运维自动化之salt
  8. 实现键盘enter登录
  9. PS一分钟打造手机渐变壁纸
  10. 抽象数据类型的三元组C语言,试仿照三元组的抽象数据类型分别写出数据类型复数和有理数的定义?...