开发者社区> openerp.hk> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Odoo自定义报表 - 浅析

简介: 大家好, 在Odoo(原OpenERP 开源ERP)架构中,有自定义报表开发【Custom Report Engine】这一功能,但无论在海外还是国内的网站上很难找到相关的解释与介绍。所以,我们整理了相关开发介绍至本博文中。
+关注继续查看

大家好,

在Odoo(原OpenERP 开源ERP)架构中,有自定义报表开发【Custom Report Engine】这一功能,但无论在海外还是国内的网站上很难找到相关的解释与介绍。所以,我们整理了相关开发介绍至本博文中。

首先,需要讲解的是 Custom Report Engine 的机制。Odoo自定义报表架构是通过读取模块中report目录下的model文件和report目录下的context文件。来获取自定义报表所需的参数,系统通过这些基本参数,渲染出我们平日里所看到的报表。

Financial Report 财务报表

  • 通过简单地(XML)进行编辑
  • 只可以对aml对象进行控制
  • 只允许对一段时间内的数据进行求和

Custom Report 自定义财务报表

  • 更加灵活
  • 通过Python进行开发

那么,这些参数有哪些呐?

**> @api.model
def get_title(self):
**
说明: 此项目用以定义自定义报表的抬头,主要用途是在系统前端显示自定义报表名称,方便用户查看。
**> @api.model
def get_name(self):
**
说明: 此项目用以定义自定义报表的名称,但此名称将不会显示在前端视图上,它主要的功能是定义了此自定义报表的专属名称,方便之后的Context进行抓取和使用。同时,其他方法,也可以通过叫此名称来调用此模板。

**> @api.model
def get_template(self):
**
说明:此项目用以定义自定义报表所需要使用的模板。因OpenERP原生架构中,自带3大模板,可以渲染出相应的基本视图。其意义在于,方便开发者减少代码编写量。很多,重复的代码,可以直接通过继承的方式获得,而无需全部重新编写。这也是OpenERP(Odoo)架构中继承机制的完美应用。

**> @api.model
def get_report_type(self):
**
说明:此项用以定义报表的类型
(例如:date_range (Profit & Loss), no_date_range (Balance Sheet), date_range_extended (Aged Partner Balances), date_range_cash (Cash Method by default), no_comparison (General Ledger), 当然,您可以添加自己的类型!)
这里定义的报表类型,对报表的意义非常大。data_range说明,此报表可以使用日期期间工具,对报表内的数据进行过滤、筛选、求和等。如果,选择date_range_cash,意味着,报表中的数据将仅仅统计现金账户上的数据,而不会抓取全局数据。同时,现在财务记账机制中有现金收付制和权责发生制,通过定义不同的类型,来实现基于两种制度的报表数据统计计算。

*
*> @api.model
def get_lines(self, context_id, line_id=None):
**
在展开一行时使用Line_ID参数。如果设置了Line_ID,则该方法将返回只有对应于此Line_ID及其域的线。此方法将行返回为字典列表。每个字典对应于一行。在显示时,这些行会与它们需要的顺序相同。

每一行的字典,需要包含以下项目:
id : 所以,它可以为footnotes, unfolding,提供参考,同时如果有动作, active_id 也需要在这里定义.
name : 需要显示的名称
type : 行的类型. 这里定义鼠标点击时,对此行的动作。(行所支持的类型,包含:account_id, line, tax_id, unreconciled_aml,bank_statement_id, partner_id, move_line_id, too_many, payment. 当然,您也可以自行添加)
footnotes : 如果为某一行的名称或者某处定义了 footnotes,(这个定义是来自报表context). 字典 {column_number : footnote_id}将会被自动创建,同时在报表上会显示出相应的footnote
unfoldable : 定义此行是否可以被展开
unfolded : 定义此行默认为已经展开(fetched from context) 仅当unfoldable = True可用
columns : 具有列值的列表.
level : 定义布局.
action_id : 当点击报表行时会触发的动作
colspan : 如果,你希望动作可以跨越多个列,请定义此项.

报告contexts是每个报告和每个用户一次性的临时模型。你需要为每个自定义报表创建一个新的contexts模型。它的接口应该是 :_inherit = "account.report.context.common"

**> def get_report_obj(self):
**

**> def get_columns_names(self):
@api.multi
**

**> def get_columns_types(self):
**
列的类型可以是 : text, date or number

在报告可用前,还有最后几个步骤:

1.修改模型account.report.context.common 中的字典方法 对象 .
_report_name_to_report_model() :
添加一项 name_of_your_report: name_of_the_model
_report_model_to_report_context() :
添加一项 name_of_the_model: name_of_the_context_model
last_step

2.您还可以自定义报表的搜索视图,并将其与您的需求相适应。

创建一个新的report_type 以满足您的需要,例如“'journal_filter'”。将字段添加到与要添加的筛选器对应的上下文(context)对象 。
例如:journal_id = fields.Many2one('account.journal') 通过为过滤器添加下拉菜单来修改模板 'accountReports.searchView'
template2

3.为报表创建客户端操作和菜单项

您可以添加自己的行类型,并更改它将出现在报表上的方式和内容。为此,继承和修改'account.report_financial_line' 模板. 若要触发动作,请使用 'oe-account-web-action'类并 :

使用data-res-model 和 data-active-id 来打开对象的表单视图.
使用 data-action-name来触发相应动作.
您可以选择添加dataforce-context 属性来强制当前context通过动作传递.
请使用data-action-id 来触发动作.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
自定义列表|学习笔记
快速学习自定义列表
6 0
自定义异常
在某些应用中,编程人员可以根据程序的需要创建自己的异常类和异常对象,用来处理程序中特定的逻辑运行错误或异常
28 0
自定义列表|学习笔记
快速学习自定义列表
56 0
C#.NET自定义报表数据打印
原文:C#.NET自定义报表数据打印      这是一个自定义的报表打印,是对PrintPreviewDialog的扩展和封装。PrintPreviewDialog是一个windows的打印预览控件,该类返回的就是一个PrintPreviewDialog对象了,直接显示该控件就可以了。
712 0
自定义异常类一
自定义异常类 --->extends Exception--->extends Throwable都一样   异常类 1 package com.yeepay.sxf.exception; 2 /** 3 * 验证数据格式异常类 4 * @author sxf 5...
576 0
SSRS用自定义对象绑定报表
有一个报表的数据源是一个对象的List, 这个对象List中还有层级,其中还有其他的对象List,这样的层级有三层。其数据是从数据库中取出来的。其LINQ的操作太多了而且复杂,所以不太可 能从LINQ中挖掘出SQL语句了,只能从这个对象List作为报表数据源。
846 0
自定义列表对话框(二)
main.xml如下: dialog.xml如下: styles.
681 0
+关注
openerp.hk
OpenERP.HK 国际业务覆盖老挝、加拿大、美国、印度、韩国等地,国内业务覆盖福建、重庆、四川、广州、上海、宁波、陕西、深圳、山东、云南等城市。 2016 年,OpenERP.HK 获中国电子报《成都市信息消费优秀解决方案》 2017年6月,上线saas平台,提供3000
11
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载