跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

J

jjx

@jjx
关于
帖子
10
主题
3
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 想用OE7开发一套餐饮管理系统
    J jjx

    [quote author=javic link=topic=9207.msg19013#msg19013 date=1376134998]
    想用OE7开发一套餐饮管理系统,可行否?
    [/quote]
    用合适的工具做合适的事情

    openerp虽有二次开发功能,但他并非是个合适的开发工具


  • 请教数据纪录实时保存的问题
    J jjx

    [quote author=digitalsatori link=topic=2800.msg9443#msg9443 date=1331214475]
    @jjx 终于又看到你的身影了,真是久违了
    要寻找大牛的弟兄们,大牛现身了,别再让他跑了 😉
    [/quote]

    绝不敢当啊,比在座各位对openerp的理解差远了,现在正在每天看贴子学习呢


  • 请教数据纪录实时保存的问题
    J jjx

    订单确认执行的是工作流 转换

    你这个需求应该在sale_order 的create 中进行

    判断vals的order_line是否是[] 无明细或对其中的记录进行判断来确定


  • Openerp 增加明细行时更新主表的汇总字段
    J jjx

    通常,这任务可以覆盖主表 objects 的create或 write方法来达成,但为了给操作者一个实时的观感,最好在用户更新或增加明细行时更新界面上的汇总字段

    这 需要了解一对多的数值格式
    <A href="http://openerp.com/wiki/index.php/Developers:Developper's_Book/Objects/ObjectsAccess/ObjectsWritingValues" target="_blank"> openerp.com/wiki/index.php/Developers :Developper%27s_Book/Objects/ObjectsAccess/ObjectsWritingValues
    如:
    [(1,1,{'item_id':1,'price':30,'cost':20,'quantity':1}),(0,0,{'item_id':3,'price';20,'cost':20,'quantity':10}]

    可以明确的有以下几点

    1. 这是一个列表
    2. 列表元素是一个tuple
    3. 每个tuple有三个元素,op,id,values ,其中op 表示动作,有0 -create ,1- write ,2 unlink(删除) ,6- values 是一个记录id值的列表,表示将这些id值的记录作为多方保存,id 是具体记录的编号,当op为0时,为0,values 在op是0,1,2的情况下是一个字段名:值的词典

    为一对多字段增加on_change属性
    <field name='line_ids' noable='1' colspan='4' on_change='line_ids_changed(line_ids)'/>
    在objects中写方法

    def line_ids_changed(self,cr,uid,ids,line_ids):
    amount=0
    for row in line_ids:
    if row[0] in (0,1):
    amount += row[2]['quantity']*row[2]['price']
    return {'value':{'total_amount':amount}}

    [b]问题,如果在view中将total_amount的reaonly 为1(在objects定义中设置字段的readonly=True效果相同),则在保存时该汇总字段不会被保存. 这个举止是有问题的,因为通常readonly只是意味着阻止用户手动更新 . 并不意味着阻止程序更新[/b]

    [[i] 本帖最后由 jjx 于 2008-8-18 11:12 编辑 [/i]]


  • Etiny 本地化方法
    J jjx

    etiny 的本地化其实就是turbogears 的本地化,同大部分python应用一样.本质上都是在用gettext.鉴于我本身不使用turbogears ,摘录这些步骤备忘

    进入etiny目录,通常是c:python25libsite-packageseTiny-xxxxx

    1. 运行tg-admin --config=config/default.cfg i18n collect

    该命令会在locales 生成messages.pot文件

    1. 添加中文

    默认的,在locales 目录只有fr,你可以通过如下命令增加中文支持

    tg-admin --config=config/default.cfg i18n add zh

    zh也可以是zh-CN 添加繁体可以是zh-TW

    该命令会在locales 目录创建zhLC_MESSAGES 目录并将messages.pot文件复制到该目录并更名为messages.po

    注意,该过程只需要做一次

    1. 修改messages.po文件中的msgstr部分,并编译

    tg-admin --config=config/default.cfg i18n compile

    以后只需要重复1和3

    turboGears 使用的模板是kid www.kid-templating.org/language.html ,在kid模板中,对需要本地化的词汇使用_("") 进行标识, tg-admin i18n collect命令会收集这些字符串. 在kid 模板中用${} 进行表达式置换,所以,通常的用法是

    例子:

    etinyxxx/tinyep/templaes/master.kid

    原来的<a href="/about">About</a>

    可替换为 <a hrer="/about">${_('About')}</a> 进行本地化

    执行1和3,然后重新启动start-tinyerp 登录后就能看到效果


  • 运行后有几个问题
    J jjx

    你客气了,呵呵. 像视图,如果在客户端的系统管理-自定义-界面-视图中修改, 是立即反映变化的,你可能是指这个.我的意思是说修改view的xml文件,在客户端是没有反应变化,只有更新模板才行
    因为tiny会将view等的定义装载到数据库中去,更新这个动作就应该,将视图定义写入或更新数据库过程. 在自定义-界面-视图中修改的是数据库的东西

    其实如果两者是双向的就行,比方修改数据库时同步到xml文件或是监视文件的变化,将文件同步到数据库中. 这个实现起来不难,就看tinyerp的团队如何考虑的了


  • 运行后有几个问题
    J jjx

    tinyerp 采用了类似eclipse的插件机制, base account这两个模块是基本模块,大部分模块都依赖他们, 从编程角度而言,依赖就意味着重用,这是一种双刃剑,过多的依赖也不好,如果没有 依赖,通常也就意味着没有重用

    这种东西要用,肯定是要开发人员介入的, 不用说这个开源的,连商业的100%都不能够拿来就用的. 因为这个毕竟不是有针对性的财务软件或是进销存,更何况是老外做的.我现在在做一个axapta项目,ui基本都是重新构造,原来的那种ui,给那些一线用户,一打开他们就晕掉了

    tinyerp 现在的思路是好的,比方说把基础架构单独出openobject ,但这部分还需要加强,现在wiki 上文档很多都是todo, 另外,这两天我试了一下,开发还是有点麻烦,没有利用python的一些特点,比方说在开发时即修改即生效,开发时用shell交互的调式.(可以举例的是django的开发时是即修改即生效的,还有就可以用manage.py shell 进入python提示符做些交互性的测试)

    现在修改一个模块必须要更新模块才能反应变化,效率太低

    [[i] 本帖最后由 jjx 于 2008-8-12 17:22 编辑 [/i]]


  • 下载codegen_openerp.py下载
    J jjx

    可以下载 安装 Bazaar.
    然后从Launchpad 下载

    bzr clone lp:~openerp-commiter/openobject-addons/trunk-extra-addons extra-addons

    可参考这个blog
    stephane-wirtel-at-tiny.blogspot.com/2008/08/how-to-get-trunk-version-from-launchpad.html


  • Etiny 启动问题
    J jjx

    过奖,我这个是今天早上用 easy_install etiny 安装的, 查看了一下调用链,会调用etinyxxtinyerpcommands.py . 这里有
    if len(sys.argv) > 1:
    configfile = sys.argv[1]
    elif exists(join(setupdir, "setup.py")):
    configfile = join(setupdir, "dev.cfg")
    elif exists(join(curdir, "prod.cfg")):
    configfile = join(curdir, "prod.cfg")
    else:
    try:
    configfile = pkg_resources.resource_filename(
    pkg_resources.Requirement.parse("eTiny"),
    "config/default.cfg")
    except pkg_resources.DistributionNotFound:
    raise ConfigurationError(_("Could not find default configuration."))

    说明是先取命令行参数,然后依次是有setup.py取dev.cfg,否则取prod.cfg,都没有,则取config/default.cfg,第一个取绝对路径,后二个都在etiny的根目录,后一个在config/default.cfg

    晚上我想了一下,既然报错是出在
    File "c:python25libsite-packagescherrypy-2.3.0-py2.5.eggcherrypy_cpserve
    r.py", line 253, in wait_for_free_port
    这里,而我又确认端口是可用的 ,所以,就干脆在该文件这个函数后直接加了个return
    def wait_for_free_port(host, port):
    """Wait for the specified port to become free (drop requests)."""
    return

    这样,etiny就跑起来了

    真是奇怪

    [[i] 本帖最后由 jjx 于 2008-8-8 19:43 编辑 [/i]]


  • Etiny 启动问题
    J jjx

    按说明安装完毕后
    start-tinyerp
    出现cherrypy._cperror.NotReady: Port not free

    好,去 修改
    server.socket_port=8000
    试了无数个端口,这些端口应该是没有占用的
    都是

    cherrypy._cperror.NotReady: Port not free

    最后都直接到turbogearsstartup.py中了

    加了tg.fancy_exception=True的设置,直接使用SimpleWSGIServer
    在 都直接写port 了

        CherryPyWSGIServer.__init__(self, ('192.168.1.169',8999), wsgi_app,
                                    1,
                                    '192.168.1.169',
                                    request_queue_size = conf(
                                        "server.socket_queue_size"),
                                    )
    

    包括直接更新cherrypy的配置
    cherrypy.config.update({'server.socket_port':8999,'server.socket_host':'192.168.1.169'})

    最后还是提示
    cherrypy._cperror.NotReady: Port not free

    看来只好归结人品问题了

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组