Planet ShineIT

November 15, 2011

SajolabOpenERPv6.0贸易公司的一个简单销售过程

现在来模拟一下贸易公司的一个简单销售过程 首先创建一个帐套,装了如下模块 product,sale,purchase,mrp 然后创建一个新产品而且

September 22, 2011

SajolabOpenERP V6 Scheduled Action 浅析

OpenERP里面的 Scheduled Action其实就是一个计划任务 通过Administration–>Scheduler–>Configuration–>Scheduled Action 进去Schedule Action   Interval Number 每x次执行一次,配合Interval Unit用例如这里的意思就是每一天执行一次。 Next Excution Date 是下次执行时间。 Number of calls 循环次数,就是这个计划任务循环的次数,例如:我想连续执行30天,这里就填30,如果天-1就是无限循环。 这里的就是设置要执行的任务的方法 哪个Object(对象)里面的哪个Function(方法),此Function包括了哪些Arguments(参数)关于这个方法和参数其实就是一个定义在对象里的普通方法。 例如我这样设置 [python] class object1_test1(osv.osv): _name =’object1.test1’ def fucnction1(self, cr, uid, args_1=False, args_2=False, context = None): ………….. return True … 继续阅读

May 01, 2011

SajolabOpenERP在product中增加外部网络链接图片

最近的一个项目要求在Product_Template中增加类似与HTML中<img src=”" />的形式的图片,效果如图: product_img_extra.py [python] from osv import osv, fields import urllib2 import base64 class product_template_img(osv.osv): _name = ‘product.template’ _inherit = ‘product.template’ _description = ‘Product Extra Image’   def _get_image(self, cursor, user, ids, name, arg, context=None): image = {} opener … 继续阅读

April 30, 2011

SajolabOpenERP动态view的实现

之前搞了一个OpenERP动态view的实现,有些想法: 1.首先那一个tree view 来举例(如下图)。 它的显示要经过几个方法:fields_view_get –> fields_get –> read我们需要写一个object继承原来存这些数据的object,然后这个object重写fields_view_get–>fields_get–>read等方法,自己本身不需要view xml不需要columns,因为view我们是动态生成,columns则是从别的object里读出来。通过重写fields_view_get-可以达到自定义输出的viewfield_view_get 最后返回的是这样的信息 [python] { ‘name’: ‘default’, ‘type’: ‘tree’, ‘view_id’: 0, ‘model’: ‘report.data.grid’, ‘arch’: ‘<?xml version=”1.0″?>\n <tree>\n <field name=”line_num”/>\n <field name=”column_A”/> <field name=”column_B”/> <field name=”column_D”/> <field name=”column_E”/> </tree>’, ‘toolbar’: {‘print’: [], ‘action’: … 继续阅读

April 14, 2011

SajolabOpen ERP 5.0.16 Windows 7源码运行

近日开始真正地接触Open ERP(下简称OE)的模块开发. 一开始在朋友的推荐下装了一个AllInOne版的OE. AllInOne版的OE适合直接使用者,但对于开发者来说需要Debug时就十分麻烦,也不方法对OE源码的理解. 所以这两天还是下了一个源码版的来安装,由于发现网络上对于windows下的源码运行资料并不是很完整,也比较旧,所以自己写了这篇文章来总结一下. 首先需要对些概念明确一下: 1. 所谓源码安装指的是Server端的源码运行,其它的Web端, Client端一般都还会用安装版; 2. 源码运行不一定需要在Eclipse下运行,也可以在CMD下运行,但如果在Eclipse下运行可以Debug. 接下来就是源码运行过程: 1. 整体环境配置, 其中包括:Python + Server(可以不装,但建议装上) + GTKclient + WebClient + PostgreSQL. 当然这里可以直接用Python + AllInOne, 也可以一个一个安装, 但版本需要注意, 如果分开装以下是连接: http://www.python.org/ftp/python/2.5/python-2.5.msi http://www.openerp.com/downloads/contact?param=stable/win32/openerp-server-setup-5.0.16.exe http://www.openerp.com/downloads/contact?param=stable/win32/openerp-client-setup-5.0.16.exe http://www.openerp.com/downloads/contact?param=stable/win32/openerp-web-setup-5.0.16.exe http://www.enterprisedb.com/products-services-training/pgdownload#windows 2. Eclipse环境配置, 首先至Eclipse官方下载Eclipse,理论上来说版本应该没有什么区别, 我使用的是Eclipse3.6版. 3. 安装Eclipse的Python插件,依次点击Help … 继续阅读

December 23, 2010

Tony Gu如何在Open ERP项目开发中使用bzr工具

问题说明

本文是以Open ERP项目开发来介绍bzr工具的使用,文中介绍的方法也适用于其他的软件项目开发。

Open ERP的项目开发使用了 Launchpad 项目管理平台,其代码的版本管理使用的是bzr工具。我们大概已经知道bzr是一个分布式版本控制工具。那么,对于类似Open ERP这样的大型项目,如何才能充分发挥bzr分布式的优势使代码版本历史清晰,协作开发方便呢?本文通过作者对Open ERP的服务器代码管理的实例来介绍一种较好的使用bzr工具的方法。

Open ERP服务器项目在 Launchpad 上的位置是: http://launchpad.net/openobject-server , 其目前包含三个系列:

  • 4.2版本系列,
  • 5.0版本系列,
  • Trunk版本系列(其包含即将发布的6.0版本)。

一般来说我们对其只有只读权限,就是说我们可以下载代码并修改,但是无法直接提交到其在 Launchpad 上的版本库中。当然我们可以在 Launchpad 上注册自己的修改分支,并通过申请合并的方式,将修改合并到官方分支中. 现在假设我们工作在Trunk版本上,我们可以使用以下命令来创建本地分支:

bzr branch lp:openobject-server server

这样在本地的server目录下就有了Open ERP服务器的完整本地分支了。我们可以直接在这个分支上做代码的调整改进并提交(Commit)到这个本地分支,同时还可以将上游代码的修改合并(Merge)到本地分支。但是,如果我们希望对之前的某个消除bug的代码改进合并到官方的分支中就不是很容易了,因为我们的本地版本已经混合了我们的多个修改了,下面介绍的方法可以让我们提交一个“干净”的针对某bug的代码改进分支,并请求合并到官方分支中

解决方法

创建共享版本库

因为将要使用的是多个任务分支(Task branch)或称为特性分支(Feature branch)的方法。我们希望每个分支中的信息在版本库中共享而不是在每个分支中创建单独的版本历史信息,这样做法的好处是大大的节省了磁盘的使用空间。创建的方法:

bzr init-repo --no-trees server-repo
cd server-repo

上面的命令表示创建一个版本库, --no-trees 选项表示在其中创建的分支将不包含工作树。

创建上游代码的镜像分支

创建一个与上游代码完全一致的本地分支,我们的任何修改都不会提交到该分支,保证该分支“干净”

bzr branch lp:openobject-server server

上面的命令与上一节中提到的创建本地分支的方法完全一样,但是你会发现该命令在本地只创建了一个server目录,目录中并无内容(其实包含一个隐含目录.bzr),这是因为其所在的版本库使用了 --no-trees 选项,这样在创建分支时就不会生成工作树。

如果你之前已经创建了本地分支,现在想使其使用共享版本库,可以将其拷贝到版本库目录下,并进入分支目录中,输入以下命令:

bzr reconfigure --use-shared

这样该分支就会使用共享版本库来管理历史版本信息了。

创建任务分支

现在我们可以创建之前提到的任务或特性分支了,方法是(假设我们现在在版本库目录server-repo下):

bzr branch server trunk

这样我们就基于镜像分支server创建了一个任务分支trunk。我们的修改工作可以在trunk中进行,让镜像分支保持“纯洁”,但是这个trunk分支仍然没有工作树,面对一团空气我们如何做代码修改呀?

轻型检出(lightweight checkout)

bzr checkout --lightweight trunk myserver
cd myserver
#hack hack
bzr commit -m'blah blah'

以上命令将从trunk分支中检出代码在myserver目录中创建工作树,因为使用了 lightweight 选项,所以检出的工作树中不包含任何版本信息,全部通过访问其绑定的分支来获取,这样就又进一步减少了对磁盘的占用。

轻型检出的切换(switch)

假设我们发现了一个bug,这时就可以为解决这个bug创建一个任务分支。因为我们使用了共享版本库,所以创建任务分支是很“轻型”的,很快速也很少占用磁盘空间。对解决不同的bug,或添加不同的功能特性我们都可以用这种快速创建任务分支的办法。这种分支非常的“干净”,只包含针对特定任务的代码改变,非常适合提交给官方分支要求合并。

bzr branch ../server ../bug-fix-1
bzr switch ../bug-fix-1
#hack hack
bzr commit -m'bug1 fixed'
bzr switch ../trunk

以上命令假设我们还在 myserver 这个工作树目录下,创建了 bug-fix-1 这个任务分支,并用 bzr switch ../bug-fix-1 命令切换到这个分支,工作树的内容也会随之改变,Bug解决后,提交改变,并用 switch 切换回 trunk分支。用这种方法在不同的分支切换,不必为每个分支单独创建工作树,使得磁盘空间得到有效的节约,更重要的是我们可以只在一个目录下工作,不用换来换去。

bug解决方案的提交

解决一个bug后我们希望提交给Open ERP核心开发人员,并将其合并到官方分支中。那你首先要在 Launchpad 上注册一个帐号,提交ssh公钥,并且加入 openerp-communityopenerp-chinese-team 团队(点击左边给出的链接,点击 "Join Team" 按钮加入。 注: 加入 openerp-chinese-team 就会自动加入 openerp-community 团队。)

cd ../bug-fix-1
bzr launchpad-login userid
bzr push lp:~openerp-chinese-team/openobject-server/my-bug-fix

bzr launchpad-login userid 命令只需要输入一次,以后不用输了,其中userid就是你在 Launchpad 上注册的帐号。当你输入完成上面这些命令后,就会在 openerp-chinese-team 的code页面下创建该“远端分支”(remote branch), 同时在 http://code.launchpad.net/openobject-server 下也会显示你的分支。在这个“远端分支”的页面下你可以请求合并(Propose Merge)到官方分支中。这里要注意push命令中,~openerp-chinese-team是团队名称或你注册的用户名,openobject-server是所关联的项目,my-bug-fix是你给这个分支起的名字。

代码更新

cd ../server
bzr pull

server分支更新了来自上游的代码,

cd ../myserver
bzr merge ../server
bzr commit -m'merge official branch'
bzr merge ../bug-fix-1
bzr commit -m'merge bug-fix-1'

以上命令就将上游的更新和bug-fix-1分支的更新合并到了trunk分支

June 27, 2010

prajnagardenubuntu9.10 安装openerp源码

openerp-server安装比较简单 安装所需library            sudo apt-get install python-psycopg2 python-reportlab python-egenix-mxdatetime python-tz python-pychart python-pydot python-lxml python-libxslt1 python-vobject 这里有个小问题:必须安装  python-xml_0.8.4-10.1ubuntu2_i386.deb on Ubuntu 9.10    安装 openerp web client             首先安装开发工具

May 02, 2010

OldrevSilverlight3 问题小汇总

这段时间通过搞 OpenERP 的 silverlight 客户端也算是对 Silverlight 这个技术有了点感性兼理性的认识。我直观的感受是 Silverlight 确实可以做出很炫的视觉效果,但是如果真的用来做数据库管理应用的话还是存在不少的问题,列举如下:

  1. 网络访问只支持异步的模式,如果调用类似 OpenERP 的 XML-RPC 服务这种粒度比较细的接口的代码写起来很痛苦,一层套一层的委托,用 lambda 也好不到哪里去,真真让我体验了一把函数式语言的 continuation.
  2. 不支持右键菜单,操作很麻烦。
  3. 不支持双击事件,也不知道 MS 是怎么想的,别跟我说这个是安全考虑,能响应双击事件跟安全有个屁的关系。
  4. 不支持鼠标滚轮,真需要的话要去跟浏览器通信!?

先总结这么几点,等什么时候玩够了再说。

image


January 17, 2010

Ross Wan[openERP]创建一个纯净的套帐

无论你是在客户端的文件菜单上新建一个套帐时选择“不加载演示数据”,还是在修改 openerp-server.conf 文件里的 without_demo = all,openERP 在创建新套帐时都会自动载入演示数据。要创建一个纯净的套帐,必须使用以下的命令行方式:

openerp-server.exe -d dbname -r dbusername -w dbpassword  –db_host=localhost –logfile=”C:\Program Files\OpenERP Server\openerp-server.log” –db_port=5432  -s  –stop-after-init  –without-demo=all

注:dbname 是你新建套帐的数据库名,dbusername 是数据库用户名,dbpassword 是数据库用户密码,logfile 是你指定的 openERP 的日志文件。

have fun!


Posted in Openerp Tagged: Openerp, withoutdemo, without_demo, 演示数据

January 11, 2010

Ross Wan[Openerp]修复 Openerp 客户端的日期控件错误

进入2010年后,Openerp 客户端开始出现点问题(在 Web 下无如此问题的),就是不能下采购订单等。原因是其日期控件(Calendar)在处理中文时出错。具体可看中文 Openerp 论坛的《GTK 客户端的日期控件中无法保存日期数据,导致无法保存单据》,该 Bug 已经提交到官方

中文 Openerp 论坛的版主 digitalsatori 提供了 Linux 下的补丁,具体可以到上面的帖子里下载。在 Windows 下,可先下载下面的 Python 源文件:

打开 Openerp Clinet 的安装目录,看到里面的一个library.zip 的压缩包,打开它,删除里面的widget\view\form_gtk\calendar.pyo 文件,然后将上面的 calendar.py 文件添加进去。

Have fun!


Posted in Openerp, Python Tagged: calendar, client, gtk, Openerp, Python

September 03, 2009

Oldrev -blogspotOpenERP ODT 报表测试结果

今晚经过我的测试,证实了 OpenERP 的确支持直接 odt to odt 报表模板的转换,但是还是存在不少问题:

  1. 添加 odt 的模板也要继承用 python 代码进行注册,比较麻烦。
  2. openerp/server/bin/report/report_sxw.py 的 .ODT 转化代码存在 bug,请在创建 odt 模板时把 odt 文档的"属性"中的 "Info 3", "Info 4" 之类的"自定义属性"删掉(参考图1),否则会引发异常。
  3. OpenERP 会自作多情地更改样式表,导致转换前后效果不一。


image

图1:OpenOffice Writer 的"属性"对话框

附 带的 "partner_odt_report"是一个ODT 模板测试模块,演示如何创建 ODT 模板。可以通过 OpenERP 自带的模块导入 partner_odt.report.zip 文件,模块安装完成之后在 Partner 的表单右侧即可看到 "Partner ODT" 的报表按钮。

image

图2:Partner 表单

测试模块下载:partner_odt_report.zip

May 19, 2009

May 12, 2009

Oldrev -blogspoteTiny(OpenERP Web客户端)大重构

今天从 OpenERP 的官方博客看到,OpenERP 团队已经对 trunk 中的 OpenERP Web 客户端——eTiny 进行了巨大的重构。

eTiny 如今不再需要整套 TurboGears 框架,而是成为了一个简单的、真正的 Web前台,仅仅使用 CherryPy3 来提供 HTTP 服务,这样不仅速度大大提升,据说是达到了3~5倍,也简化了部署过程,免去了频繁升级、依赖巨多的 TurboGears。

此次升级功能上已经基本迁移完成,不过在发文时 eTiny 的 win32/setup.py 安装脚本仍然没有同步更新,应该是开发团队的一个小小疏漏,还是让我们期待下一个发布版带来稳定、高效的 eTiny 吧。

Cheers!

May 09, 2009

Oldrev -blogspotOpenERP 创建的公路货运管理系统原型

我现在基本上可以用 OpenERP 进行业务不太复杂的开发了,先截几个界面图玩玩:


GTK+ 客户端:


再来两个 Web 的:

April 03, 2009

Oldrev -blogspotOpenERP PDF 报表中文支持模块:base_report_cn

模块是基于 Gábor Dukai 编写的 base_report_unicode 模块修改而来,自带了开源的文泉驿正黑体和 AR PL SungtiL GB 宋体。该模块的使用非常简单,只需要直接导入这个模块,不需要任何的 hack,OpenERP 现存的报表即可直接支持中文。当然了,内置报表的现存的文字仍然是英文的,本模块只是提供中文支持,让中文别显示成方框。

下载:
http://openerp-community-addons.googlecode.com/files/base_report_cn.zip

项目主页:
http://code.google.com/p/openerp-community-addons

March 07, 2009

Oldrev -blogspot无耻地修改 OpenERP 的 Web 客户端界面

我很无耻地把 OpenERP 的 Web 客户端界面改成了酱紫:


违反了 OpenERP Web 客户端的许可协议哦,无耻吧。

August 18, 2008

August 17, 2008