- 博客(114)
- 资源 (18)
- 收藏
- 关注
原创 Odoo12功能增强模块
该模块是之前帮一群友在odoo10环境下开发的,因为现在需要升级到odoo12,但odoo12版本的js模块变化比较大,基本上相当于重写了,为了升级此功能,花时间大概看了一个odoo12的js源码,经过三日的连续苦战,基本把框架的逻辑理顺,对该模块进行了升级,主要增强的功能有三个。一是如果某个字段有onchange设置,可以在xml定义中设置定时执行间隔,这样不需要用户变动该字段就可以自动执行...
2018-12-02 20:55:12 3519
原创 Odoo8.0环境中,限制Selection字段的有效值
今天有群里的小伙伴咨询,一个字段是Selection类型,可能会有多个可选择的项目,但在某个界面中,不想用户选择全部可选项,只希望在某几个选项中选择。如果是Many2one字段,我们可以根据domain来过滤可选项,但Selection目前没有这个过滤功能,所以我自己加了一个js模块,来实现此需求。首先我们来看一个字段的定义是这样子的:lab_kind = fields.Selectio...
2018-10-31 15:12:23 1402 2
原创 odoo10中onchange改变的domain问题
在odoo的有些模块应用中,在onchange中可能会改变其他字段的domain条件,比如询价单中,改变明细的产品时,在onchange中会根据产品资料中的单位组类型,设置明细行中单位的domain条件,这样在下拉选择时,你就只能选择某几个单位。但如果是针对已有的明细行进行修改(不改产品,只改单位),因为没有触发onchange事件,所以这个时候你会发现所有单位都在下拉列表中,并不只是当前产品对应...
2018-06-27 21:03:49 1525
原创 odoo10下设置onchange方法定时执行
因圈内朋友需求,某个字段的值是通过后台py方法获取,业务逻辑是写在该字段的onchange方法中,前台操作时,默认只有该字段值发生改变时才会触发后台方法,现在他希望前台js能定时触发该字段的onchange事件,调用后台方法返回值。经过分析odoo的onchange触发机制及工作流程,写了一个模块,可以方便开发人员处理该类型的业务需求。安装该模块后,针对需处理的字段定义一个onchange方法,如...
2018-03-22 11:57:23 1817
原创 odoo10日历控件功能增强
在odoo开发中,经常会用到日期栏位,一般是由用户输入日期以后,再在后台进行判断日期是否在有效范围以内,这样效率比较低。这个模块可以在定义xml时指定日期的可用范围,对于不在范围的日期,日历控件弹出时显示为灰色,并不可选择。这样就保证用户输入的日期在有效范围以内。举个栗子: 最小日期为当天 最小日期为前一天(-2为前天,依次类推) 最小日期为后一天(2为后两天,依次类推) 最小日期以s
2017-09-06 11:55:29 2188
原创 odoo9在treeview视图固定表头
此功能原来有一个8.0的版本,但9.0的版本需要收费,所以我就拿原来的进行一些修改。亲测可以使用。源码下载地址:http://download.csdn.net/detail/vnsoft/9643811
2016-09-30 11:57:14 2725 1
原创 odoo8百度地图模块
一个在odoo8中应用百度地图的案例。请至http://download.csdn.net/detail/vnsoft/9585234下载源码。
2016-07-25 09:56:42 3029 4
原创 odoo8 FormView的one2many中many记录删除权限精细控制
在目前的Odoo8.0版本中,如果FormView有one2many的字段,many记录在编辑时,都会在后面显示一个删除的小图标,这个图标的显示与否是由统一的权限管控的,要么所有明细记录都显示,要么所有明细记录都不显示。在实际的业务需求中,可能需要针对明细记录作精细控制,比如领料申请单,如果已经出库的记录就不允许删除,没有出库的记录可以删除。本来在删除的py源码中也可以实现,但那样的处理方式中
2016-05-22 11:46:24 2184
原创 Odoo8的一次js前端调试过程
今天群里有网友上传了一个模块,就是在非debug状态下,右上角的登录用户位置同时显示出数据库的名称,但网友反映安装此模块后,原来的聊天按钮会不见了,然后查看了一下源码,经过调试后,大致找到问题所在。原来显示的样示如图,安装模块后显示的样示如图,看了一下代码如下图:主要只是屏蔽了红色框那一行,这样在非调试状态下也显示出来数据库名称。为什么安装这个以后,原来的消息按钮不显示了呢?经跟踪
2016-04-09 23:28:48 3855 1
原创 Odoo8中通过域名来自动选择数据库
安装了一个Odoo8的测试环境,给不同的客户建立了不同的数据库,为了不让客户访问时看到其它数据库选择,需要把选择数据库的功能隐藏起来。每个客户分配一个域名,用不同的域名来自动关联数据库。在之前openerp7应用中,有人提到了通过修改源码的方式来实现,但实际体验不太好,后来看了odoo8中的代码,实际上系统本身就已经提供了类似的功能。def db_filter(dbs, httpreque
2016-03-08 15:18:40 2319
原创 Odoo8中“更多”下拉菜单选项指定后台执行代码
在Odoo8中的仓库模块,根据每日最小安全库存数量,系统会自动生成一些补货单,而且是一个产品会生成一笔,如果产品比较多,这里生成的补货单也会很多。如果这里的补货单没有即时处理,那相同产品后续不会再生成新的补货单。所以采购人员要求不处理的补货单可以手动来取消,这样方便第二天能产生出新的补货单。现在取消补货单的功能是放在form视图中,需要逐张单据点开,再去点取消按钮,不方便操作。采购人员
2015-12-15 15:30:21 3872 2
转载 Odoo数据库的parent_left,parent_right设计
网上有网友在问odoo数据库中,有许多的数据表都有parent_left和parent_right栏位,不清楚这个是作什么用的。其实这个是一种针对SQL数据库的设计方法,网上有一些介绍,其中认为解释得比较好,通俗易懂的文章可以参考http://download.csdn.net/detail/vnsoft/9293921下载内容。在odoo中,如果自己需要设计类似的架构,只要在osv.osv模
2015-11-23 20:45:07 2850
原创 Odoo8查询产品时提示"maximum recursion depth exceeded while calling a Python object"
今天在生产系统中查询产品时,莫名提示错误:maximum recursion depth exceeded while calling a Python object,根据错误日志提示,发现在查询产品时,系统会构造一个domain,查询所有库位的库存量。当仓库较多的时候,构造的这个domain比较长,然后解析这个domain的方法distribute_negate是递归调用,因为递归次数太多,所以
2015-11-04 11:11:24 4709
原创 Odoo8在TreeView左上角增加自定义按钮以及通过继承生成自定义的View_Mode
今天有网友在问怎么在TreeView左上角增加一个自定义的按钮,在查询Odoo 自带的模块,发现在purchase_requisition中有使用,并且此模块还应用到了自定义View_Mode的情况,所以今天拿出来分析一下,有兴趣的童鞋可以参考说明去模块中查看详细内容。首先模块显示的效果如下图:这个是在招标单中,如果一个产品有多个询价单,则在完成招标单时,系统会显示此界面,需要你确
2015-11-03 20:58:10 5294 3
原创 Odoo8.0中允许用户动态调整TreeView栏位宽度
现有的Odoo8.0中TreeView的栏位宽度是固定的,不可以手动调整,通过安装第三方插件后,可以实现手工动态调整。下载模块安装即可。http://download.csdn.net/detail/vnsoft/9223407
2015-10-29 14:11:34 2122 2
原创 Odoo8模块中增加延时自动消失的提示
在odoo中,如果必要栏位没有值,在保存时右上角会有如下图的提示,该提示会延时并自动关闭。有网友问如何在自己的模块中增加这样的提示,以方便用户在操作时,能提示一些必要的信息。下面例出大致的步骤以供参考:1.一般来说我们是在py中执行到一些业务逻辑的时候需要提示,所以先看在py脚本中怎么来写,格式如下:def get_express_list(self, cr, uid, ids
2015-10-29 10:12:46 2169 3
原创 odoo8编辑视图中sheet边距过宽问题调整
在Odoo8的Form视图中,预设有一个sheet的边距,这样看起来像是在一页纸上录入信息,但因为现在的显示器比较宽,预设的sheet宽度比较小,这样看起来就浪费了大量的空间,尤其是明细字段比较多的时候,数据挤在一起非常难看。经过分析源码,这个风格是由如下CSS定义的:.openerp .oe_form_sheet_width { min-width: 650px; max-wid
2015-10-22 16:08:49 2032 1
转载 PostgreSQL获取汉字拼音首字母函数
本文转自http://blog.qdac.cc/?p=1281--© 2014,swish,原版首发:http://blog.qdac.cc/?p=1281,自由使用,保留版权CREATE OR REPLACE FUNCTION CnFirstChar(s character varying) RETURNS character varying AS$BODY$declare r
2015-10-17 21:38:42 4900 7
原创 Odoo8.0根据资料的条件来控制画面上的修改按钮显示
今天有网友在问,当达到某个条件的时候,资料的所有字段都变为只读,传统的方法是在view或model中,逐一对每个字段进行属性设置,这样比较麻烦。后来我在考虑,如果是把所有字段都变为只读,是不是只要屏蔽form界面上的修改按钮就可以了呢?只要用户不能点修改按钮,那相当于就是所有字段为只读了。经过测试和阅读源码,我们通过如下方法来实现。在自己的model中,重载框架函数fields_view_
2015-07-29 21:12:07 4085 6
原创 Odoo环境下Ubuntu服务器性能优化--参数调整
公司在使用Odoo进行内部信息化管理,随着业务增长,服务器性能问题变成了瓶颈,为了解决这些问题,最近的工作重点将移到性能调整上来,同时也会在此记录整个处理过程,以便日后回顾。1.根据相关资料建议,在linux文件系统有一个预读的参数,可以通过如下命令查看:blockdev --getra /dev/sda一般的默认值为256,我们可以将此数据改大一点,建议的范围是在4096-16384
2015-06-24 16:50:37 3423
原创 odoo8.0下selection_add的使用
在odoo中有selection类型的字段,用于限定字段的值在某些范围之内,在view上面显示此字段时,会显示一个下拉的列表。如果是自己新定义的字段,这个列表的内容可以自己定义,但如果是继承自某个对象的模块,我们要在原来的基础上增加新的值该怎么办法?8.0提供了一个简单的新方法,可以对继承的字段增加新的列表项目,如下语法:_inherit = 'ir.actions.report.xm
2015-04-30 22:46:47 2595 1
原创 Odoo8.0列表表尾数值统计方式
在Odoo中,Tree视图所显示的数据表尾,对于数值型的栏位会进行一个统计,默认的统计方式是汇总求和,之前有网友在咨询是否有其它的计算方式,经查询源码,发现Odoo对于此部分数据提供了四种处理方法,分别是sum,avg,max,min。如果需要改变此部分的不同计算方式,需要在定义表对象栏位时指定参数,格式如下:'price_average': fields.float('Average Pri
2015-04-21 21:04:33 1815 1
转载 odoo8.0条形码改为js方式处理
群里网友@上海-gavin 提供的odoo条形码处理,将原来的图片生成方式改为js处理方式。为了方便各位复制,如下特将图片文字输出一遍。 --> $(function(){ $("#barcode_").barcode('',"code128",{barWidth:"2",barHeight:"50",fontSize:"16"}); })
2015-04-14 20:26:23 2602 1
原创 odoo8登录时,同帐号在其它客户端的连接自动退出
odoo跟大多数B/S系统一样,同一个帐号可以在不同的电脑上登录,并且可以同时操作,这样子会带来一些权限上的漏洞。为了解决这个问题,经过分析odoo的session处理机制,开发了一个模块,安装此模块后,用户登录时,相同帐号的其它session会自动清除,其它session再进行操作时,会提示session已经过期。
2015-04-14 16:49:38 2200 1
转载 Odoo8.0中使用多进程
因为用户业务量增加,在使用Odoo时开始有出现性能问题,暂时还没有进行其它方面的性能诊断和调优,先了解一下odoo的处理机制,根据网上的说明,odoo有一个workers的参数来开启多进程作业模式,查网上说开了多进程以后,系统的cron job会停止启动,这样子也会影响一些自动化任务处理。后来找谷歌了解了一下有关workers和cron的问题,其中有一遍文章进行了一些说明,并且给出了一个修改建
2015-04-14 16:29:38 2539
原创 Odoo8.0的弹窗通过标题栏进行移动
在Odoo8.0中,所有弹窗位置都是固定的,不可以移动,因实际业务需求,用户在操作弹窗时,需要看到底下的原来浏览出来的数据,如果弹窗不能移动,就会挡住这些数据。经过分析odoo的弹窗处理代码,并参考bootstrap处理机制,我在弹窗的js处理中增加一个指令来实现可移动功能。
2015-04-02 16:35:48 2084
原创 odoo8使用onchange改变one2many类型的值
因实际业务需求,在主表的栏位变更时,需要重新刷新明细的数据。使用odoo new api方式来处理此操作时,开始发现明细数据总是无法写入,经过查询相关资料,最后实现成功,现记录如下:class Order(models.Model): name="mymodule.order" line = fields.One2many('mymodule.line',
2015-03-13 01:31:25 5018
原创 odoo8下新增时初始化明细项目的新增
最近听到有人在讨论一个开发问题,就是在新增一笔资料时,在明细字段需要初始化新增一些资料,找了odoo下面的一个实例看了一下,功能面上是可以做到的。例如项目模块,在新增一个项目时,系统会自动带入阶段的明细定义。看了一下源码,大概是这样子实现的,在定义项目的源码中,加了一个default的定义,返回的是一个明细的列表:_defaults = { 'type_ids': _get
2015-02-07 15:35:47 1715
原创 odoo8中form视图中statusbar部件功能
群里有人咨询安装了投诉模块后,有关投诉的信息会显示一个进度状态,但没有按钮或其它操作的地方来改变这个状态,偶然发现操作人员可以直接用鼠标点状态上的文字来改变当前资料的状态。这个操作与平时的操作有点不一样。查看了一下这个部分的源码,原来oe还有一个不常用的属性来控制此部分,平时我们定义的状态源码一般是这样的:<field name="state" widget="statusbar" sta
2015-02-07 15:16:38 2563 1
原创 Odoo8中创建数据表index问题
在Odoo中,我们可以通过ORM的方式来创建和访问数据库,如果要对数据表中的某个字段创建索引,则可以在定义字段时,加个select=True属性,这样模块在安装时,就会对数据表的该字段创建索引。但有时候我们需要创建一些组合型的索引,包含多个栏位或函数计算,这个时候就需要在py代码中自己来创建。def init(self, cr): cr.execute("""SELECT
2015-01-16 15:38:19 1649
原创 odoo8在py脚本中取得selection字段定义的列表
在使用oe开发的过程中,我们会经常定义一些selection类型的栏位,并且存入数据库的值与显示在界面上的值并不相同。例如这样子的定义:"cx_time": fields.selection( [(7, u'7点'), (8, u'8点'), (9, u'9点'), (10, u'10点')], u'时间', required=True),这样子如果我们在代码中要根据数据库中的记录取得后面
2015-01-15 17:09:26 4075
原创 odoo列表视图下栏位宽度显示问题
在odoo中,tree视图的栏位宽度是自动处理的,如果栏位比较多,每个栏位的资料基本上都是竖着显示了,看起来很是费力,经了解odoo的css设置,发现tree栏位有设置一个自动换行,如果太长的话,系统会自动折行处理,如果限制其折行,就可以显示正常了,如是在自己模块中重写了折行的定义,现在显示正常,超出的部分可能通过滚动条显示。.openerp .oe_list_content > tbody
2014-12-21 11:39:03 5587 1
原创 Odoo安装Pentaho报表模块历险记
一次在odoo讨论群里看到有人用Pentaho来制作oe报表,回头搜索了一个Pentaho,发现原来是一个高大上的BI开源软件,丰富的报表功能是其特色之一,而且也有人开发了Pentaho与Odoo的集成模块,于是几经折腾,测试了一下Pentaho的安装和使用。1.模块的开源项目地址是:https://github.com/WillowIT/Pentaho-reports-for-OpenERP
2014-12-18 13:38:55 5541 4
原创 Odoo8.0安装web_pdf_preview折腾历程
Odoo的报表都是通过下载的方式来处理,不能直接在浏览器中打开查看,这样使用起来不是很方便,之前@步科有提供一个模块可以直接在浏览中显示pdf,但当初版本是在7.0下使用的,直接移到8.0是可以安装,但没有任何效果。趁着今天有空,下载了7.0的版本,进行了一些修改,终于搞定了8.0下面的正常使用。主要修改的地方有两个,一是有关url的路由定义,8.0使用了新的定义方式,二是有关js的加载方
2014-12-06 01:10:17 3785 3
原创 Odoo覆写需求计算方法问题
因公司业务需求,想在产生仓库物料调拨的时候,同时产生一笔快递单(因为公司不同的仓库不在同一个地方),调拨单是在计算物料需求时产生的,所以我就想覆写计算物料需求的方法,在执行完原来的业务逻辑以后,再根据内部需求处理后面的逻辑。开始写的方法如下:class rhwl_order(osv.osv): _inherit = "procurement.order" def run_
2014-11-27 11:47:07 1866
原创 Odoo中菜单打开时增加默认搜索条件
在公司项目开发中,针对有些菜单开启时,操作人员希望能默认有一个搜索条件,如库存调拨菜单一打开就是显示全部内容,实际操作人员可能只是想看到未处理的部分,这个部分是在菜单关联的动作上下文中设置的,在调试时,发现动作不能像普通视图一样通过继承来进行调整。后来通过群里@上海-开阖Jeff 指点,这部分也可能在自己模块中修改,但用法稍有不同。 {'search_default_futur
2014-11-26 23:31:54 4526
Odoo功能加强模块
2018-12-02
odoo10日历选择插件增强
2017-09-06
List View Fixed Table Header
2016-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人