OpenERP
vnsoft
從2001年開始PB Oracle程式開發,
在公司主要負責PB技術研發以及程式開發框架的建立.
后學習Oracle管理,了解有關DBA作業內容.
喜歡IT新技術,對腳本語言有一定的了解,
目前专职于Odoo项目实施、开发。
展开
-
Odoo12功能增强模块
该模块是之前帮一群友在odoo10环境下开发的,因为现在需要升级到odoo12,但odoo12版本的js模块变化比较大,基本上相当于重写了,为了升级此功能,花时间大概看了一个odoo12的js源码,经过三日的连续苦战,基本把框架的逻辑理顺,对该模块进行了升级,主要增强的功能有三个。一是如果某个字段有onchange设置,可以在xml定义中设置定时执行间隔,这样不需要用户变动该字段就可以自动执行...原创 2018-12-02 20:55:12 · 3519 阅读 · 0 评论 -
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 评论 -
Odoo Export for Admin
odoo原创 2015-10-21 11:38:07 · 1334 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Odoo8在TreeView左上角增加自定义按钮以及通过继承生成自定义的View_Mode
今天有网友在问怎么在TreeView左上角增加一个自定义的按钮,在查询Odoo 自带的模块,发现在purchase_requisition中有使用,并且此模块还应用到了自定义View_Mode的情况,所以今天拿出来分析一下,有兴趣的童鞋可以参考说明去模块中查看详细内容。首先模块显示的效果如下图:这个是在招标单中,如果一个产品有多个询价单,则在完成招标单时,系统会显示此界面,需要你确原创 2015-11-03 20:58:10 · 5294 阅读 · 3 评论 -
Odoo环境下Ubuntu服务器性能优化--参数调整
公司在使用Odoo进行内部信息化管理,随着业务增长,服务器性能问题变成了瓶颈,为了解决这些问题,最近的工作重点将移到性能调整上来,同时也会在此记录整个处理过程,以便日后回顾。1.根据相关资料建议,在linux文件系统有一个预读的参数,可以通过如下命令查看:blockdev --getra /dev/sda一般的默认值为256,我们可以将此数据改大一点,建议的范围是在4096-16384原创 2015-06-24 16:50:37 · 3423 阅读 · 0 评论 -
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中使用多进程
因为用户业务量增加,在使用Odoo时开始有出现性能问题,暂时还没有进行其它方面的性能诊断和调优,先了解一下odoo的处理机制,根据网上的说明,odoo有一个workers的参数来开启多进程作业模式,查网上说开了多进程以后,系统的cron job会停止启动,这样子也会影响一些自动化任务处理。后来找谷歌了解了一下有关workers和cron的问题,其中有一遍文章进行了一些说明,并且给出了一个修改建转载 2015-04-14 16:29:38 · 2539 阅读 · 0 评论 -
odoo8.0条形码改为js方式处理
群里网友@上海-gavin 提供的odoo条形码处理,将原来的图片生成方式改为js处理方式。为了方便各位复制,如下特将图片文字输出一遍。 --> $(function(){ $("#barcode_").barcode('',"code128",{barWidth:"2",barHeight:"50",fontSize:"16"}); })转载 2015-04-14 20:26:23 · 2601 阅读 · 1 评论 -
odoo8登录时,同帐号在其它客户端的连接自动退出
odoo跟大多数B/S系统一样,同一个帐号可以在不同的电脑上登录,并且可以同时操作,这样子会带来一些权限上的漏洞。为了解决这个问题,经过分析odoo的session处理机制,开发了一个模块,安装此模块后,用户登录时,相同帐号的其它session会自动清除,其它session再进行操作时,会提示session已经过期。原创 2015-04-14 16:49:38 · 2200 阅读 · 1 评论 -
Odoo8.0的弹窗通过标题栏进行移动
在Odoo8.0中,所有弹窗位置都是固定的,不可以移动,因实际业务需求,用户在操作弹窗时,需要看到底下的原来浏览出来的数据,如果弹窗不能移动,就会挡住这些数据。经过分析odoo的弹窗处理代码,并参考bootstrap处理机制,我在弹窗的js处理中增加一个指令来实现可移动功能。原创 2015-04-02 16:35:48 · 2084 阅读 · 0 评论 -
Odoo8模块中增加延时自动消失的提示
在odoo中,如果必要栏位没有值,在保存时右上角会有如下图的提示,该提示会延时并自动关闭。有网友问如何在自己的模块中增加这样的提示,以方便用户在操作时,能提示一些必要的信息。下面例出大致的步骤以供参考:1.一般来说我们是在py中执行到一些业务逻辑的时候需要提示,所以先看在py脚本中怎么来写,格式如下:def get_express_list(self, cr, uid, ids原创 2015-10-29 10:12:46 · 2169 阅读 · 3 评论 -
Odoo8.0中允许用户动态调整TreeView栏位宽度
现有的Odoo8.0中TreeView的栏位宽度是固定的,不可以手动调整,通过安装第三方插件后,可以实现手工动态调整。下载模块安装即可。http://download.csdn.net/detail/vnsoft/9223407原创 2015-10-29 14:11:34 · 2122 阅读 · 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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
odoo10下设置onchange方法定时执行
因圈内朋友需求,某个字段的值是通过后台py方法获取,业务逻辑是写在该字段的onchange方法中,前台操作时,默认只有该字段值发生改变时才会触发后台方法,现在他希望前台js能定时触发该字段的onchange事件,调用后台方法返回值。经过分析odoo的onchange触发机制及工作流程,写了一个模块,可以方便开发人员处理该类型的业务需求。安装该模块后,针对需处理的字段定义一个onchange方法,如...原创 2018-03-22 11:57:23 · 1817 阅读 · 0 评论 -
odoo10日历控件功能增强
在odoo开发中,经常会用到日期栏位,一般是由用户输入日期以后,再在后台进行判断日期是否在有效范围以内,这样效率比较低。这个模块可以在定义xml时指定日期的可用范围,对于不在范围的日期,日历控件弹出时显示为灰色,并不可选择。这样就保证用户输入的日期在有效范围以内。举个栗子: 最小日期为当天 最小日期为前一天(-2为前天,依次类推) 最小日期为后一天(2为后两天,依次类推) 最小日期以s原创 2017-09-06 11:55:29 · 2186 阅读 · 0 评论 -
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 · 3026 阅读 · 4 评论 -
odoo8 FormView的one2many中many记录删除权限精细控制
在目前的Odoo8.0版本中,如果FormView有one2many的字段,many记录在编辑时,都会在后面显示一个删除的小图标,这个图标的显示与否是由统一的权限管控的,要么所有明细记录都显示,要么所有明细记录都不显示。在实际的业务需求中,可能需要针对明细记录作精细控制,比如领料申请单,如果已经出库的记录就不允许删除,没有出库的记录可以删除。本来在删除的py源码中也可以实现,但那样的处理方式中原创 2016-05-22 11:46:24 · 2184 阅读 · 0 评论 -
Odoo8.0根据资料的条件来控制画面上的修改按钮显示
今天有网友在问,当达到某个条件的时候,资料的所有字段都变为只读,传统的方法是在view或model中,逐一对每个字段进行属性设置,这样比较麻烦。后来我在考虑,如果是把所有字段都变为只读,是不是只要屏蔽form界面上的修改按钮就可以了呢?只要用户不能点修改按钮,那相当于就是所有字段为只读了。经过测试和阅读源码,我们通过如下方法来实现。在自己的model中,重载框架函数fields_view_原创 2015-07-29 21:12:07 · 4085 阅读 · 6 评论 -
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 阅读 · 0 评论 -
Odoo8中“更多”下拉菜单选项指定后台执行代码
在Odoo8中的仓库模块,根据每日最小安全库存数量,系统会自动生成一些补货单,而且是一个产品会生成一笔,如果产品比较多,这里生成的补货单也会很多。如果这里的补货单没有即时处理,那相同产品后续不会再生成新的补货单。所以采购人员要求不处理的补货单可以手动来取消,这样方便第二天能产生出新的补货单。现在取消补货单的功能是放在form视图中,需要逐张单据点开,再去点取消按钮,不方便操作。采购人员原创 2015-12-15 15:30:21 · 3872 阅读 · 2 评论 -
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 阅读 · 0 评论 -
odoo8下新增时初始化明细项目的新增
最近听到有人在讨论一个开发问题,就是在新增一笔资料时,在明细字段需要初始化新增一些资料,找了odoo下面的一个实例看了一下,功能面上是可以做到的。例如项目模块,在新增一个项目时,系统会自动带入阶段的明细定义。看了一下源码,大概是这样子实现的,在定义项目的源码中,加了一个default的定义,返回的是一个明细的列表:_defaults = { 'type_ids': _get原创 2015-02-07 15:35:47 · 1715 阅读 · 0 评论 -
odoo8.0加载静态css,js问题
在odoo8.0中,对于css,js静态文件的加载方法有所改变,之前在7.0中只要g转载 2014-09-24 17:54:52 · 3880 阅读 · 0 评论 -
Ubuntu12.04+OpenERP6.1更改HTTP端口号为80
在Ubuntu12.04中安装好OpenERP6.1以后,默认的端口号为8069,如果我们想改变为默认的80端口,可以通过如下方式处理。1.首先通过iptables进行端口映射转换:sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 80692.通过如下方式,将设置的规则保存起原创 2013-01-29 20:48:07 · 3660 阅读 · 0 评论 -
OpenERP7.0安装后提示“not supported"
下载了新版本的OpenERP7.0安装测试,发现在登录后会提示如图的内容。经过测试发现找到\addons\mail\static\src\js目录,将announcement.js文件删除即可。原创 2013-12-26 14:05:00 · 4580 阅读 · 1 评论 -
OE模块中js方法初始化
OE模块中都可以自定义js或修改官方的js内容,之前一直不明白自定义的js方法是在哪里进行初始化的。昨天为了追踪一个问题,仔细阅读了oe的js核心处理脚本,对自定义模块js的初始化有了一个初步了解,现记录如下,以供参考。假设自定义模块名为“vnsoft”,如果模块需要有js,则在模块中需要定义如下目录结构:addons/vnsoft/static/src/js/,js文件名随便取,假设为d原创 2014-01-07 10:26:14 · 2238 阅读 · 4 评论 -
OpenERP QWeb模板标签笔记
在OpenERP中,通过QWeb来对模板进行渲染后加载到浏览器中,而模板中有许多的标签来定制各种需求变化,在这里记录学习过程中碰到的标签定义,以方便查询。模板中的标签统一都是以"t-"开始的。t-name 用于指明模板的名称t-extend 用于指明该模板是继承自另外哪一个模板,后面会带父模板的名称,如:t-extend=“Login"t-jquery 一个jQuery的选原创 2014-01-01 21:25:31 · 6521 阅读 · 0 评论 -
OpenERP登录页面调整
在OpenERP的登录页面中,有针对数据库管理的链接,为了安全起见,一般都会通过修改原始的XML来实现隐藏的目的。但这样每次重新安装以后,都要重新修改,很不方便,所以我们可以通过建立一个新模块的方式来达到目的。1.建立一个新的模块,如loginedit,建立文件夹: static/src/xml/data.xml2.在新增的xml文件中增加如下代码:Custom code原创 2014-01-01 21:43:55 · 4158 阅读 · 2 评论 -
OpenERP Web Client设置闲置有效时间
在Web Client端使用OpenERP时,默认的cookie有效时间是浏览器的当前作业窗口,这样就是说只要你不关闭浏览器,不管闲置多长时间,当前的连线都是有效的。这样就会有安全问题,如果你忘了登出OpenERP而离开了座位,别人就可以继续使用你的权限来作业。通过对系统进行一些调试,可能过如下步骤来设置闲置的有效时间。1.找到/addons/web/common/http.py文件进行编原创 2013-02-28 23:58:27 · 2155 阅读 · 1 评论 -
OpenERP7.0中非admin帐号新增其它用户问题
在OpenERP7.0中,通过admin新增了一个管理员帐号,然后登录管理员帐号,再新增其它用户时提示错误,系统提示对users没有create权限。经测试了解,是因为安装了多公司模块后,在记录规则中增加了一条规则“('company_ids','child_of',[user.company_id.id])”,这条规则造成非admin帐号新增用户时不能通过验证,我们对此规则进行一些修改就可以原创 2013-03-06 23:37:31 · 2578 阅读 · 1 评论 -
OpenERP Login窗口显示资料库下拉的中文说明
在OpenERP中,如果有建立多个资料库,则在登入时就会显示一下select清单,可以让用户选择登入的作业资料库。但目前下拉清单中显示的都是资料库的代号,对于有些使用者来讲,很难根据代号知道不同资料库的意义,所以如果能显示中文说明则是最好了。经过一些调试,通过更改两个位置的脚本即可实现此功能。1.先修改python脚本中,取得资料库清单的部分,脚本在/usr/lib/pymodules原创 2013-02-21 02:07:56 · 1892 阅读 · 0 评论 -
Ubuntu12.04安裝PostgreSQL9.1問題
今天在一臺已經安裝Ubuntu12.04的機器上安裝PostgreSQL9.1時,出現如下錯誤提示:locale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directo原创 2013-02-16 19:24:09 · 1433 阅读 · 0 评论 -
OpenERP7.0中屏蔽即时搜索功能
在最新版的OpenERP7.0中,作业窗口上的查询内容有任何改变时,系统都要即时查询后台资料库,根据现有的资料,显示进一步的快捷查询条件。这个功能虽然方便,但也影响性能,通过对client端代码调试,可以找出屏蔽此功能的方法.1.找到输入控件在WEB页面上的节点信息,此版本的节点内容为2.在服务器上修改JQuery语法,碰到此节点时,不注册client事件响应。 服务器上的脚原创 2013-02-06 01:55:45 · 1933 阅读 · 1 评论 -
win7安装odoo8错误
今天在win7下面通过源码运行odoo8.0时原创 2014-10-24 23:29:40 · 2614 阅读 · 0 评论