Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组
    1. 主页
    2. 18684036
    3. 帖子

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    1
    • 资料
    • 关注 0
    • 粉丝 0
    • 主题 10
    • 帖子 40
    • 最佳 0
    • 有争议的 0
    • 群组 0

    18684036 发布的帖子

    • RE: Oecn_base_fonts在可安装模块里不能找到

      楼主采用的是deb安装吧,发现不了是因为你投放oecn的目标不对

      发布在 Odoo 安装指南
      1
      18684036
    • RE: 关于订单取消后,计划运行仍然计算物料的问题

      效果图如下:[attachimg=1]

      发布在 Odoo 开发与实施交流
      1
      18684036
    • 关于订单取消后,计划运行仍然计算物料的问题

      今天在测试生产时,订单因输入不合格,所以取消了一下,发现了以下情况
      操作:录入订单-----》确认订单
      然后我想取消掉它,于是我去出货单中删除掉出货单
      回到订单中点击 取消订单

      发现在 需求异常中  订单的状态 仍是已确认
      此时我再建一个订单,进行MRP计算,则MRP就会计算错误,会计算出两个订单的物料 ,含我刚才取消的订单的物料

      鉴于该种情况,我向总监大神请教了是否是我这边的问题
      经确认非本人的问题

      于是我就将sale.py中的cancel_order函数修改了一下,修改如下:

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: OPENERP demo 测试数据分析及源码分析

      这个,非常不错,我现在也在看这个的代码

      发布在 Odoo 开发与实施交流
      1
      18684036
    • 如何点击一个按钮,更改某个字段的值

      今天在做采购单中,想加入一个功能,就是 采购员在递交 采购申请单给 领导签时,领导会想了解一下,这款材料,以往买是多少价钱
      于是我便将采购单进行更改,
      1.在notes下面加入了一个按钮
       为了效果更好看些,我模仿了Total  (update)的做法,即编辑可见,其他状态不可见
      2。按钮事件中,直接返回一个测试数据,如:最近三次报表分别为:80.00  98.67
       代码如下:
        return
        {values:{'notes':'最近三次报表分别为:80.00  98.67'}}
       发现该写法不起效果
      假如是在onchange下,该种写法是可以正常执行的

      于是请教了上海-Joshua 大神
      经大神指导,OE不能直接返回一个value值,需要Write进数据库

      故改成
          def buyprice_scrap(self, cr, uid, ids, context=None):
              vals={}
              vals['notes']='最近三次报表分别为:80.00  98.67'
              return super(purchase_order, self).write(cr, uid, ids,vals, context=context)
      测试成功




      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: 生产订单添加物料目标库位改为生产

      实在不行,就添加一个按钮,点击批量更改 从表的物料库位,
      我之前也想过设置生成的采购单对准 进料区 库位
      但发现测试了N次后,做法是行不通的,
      生成的时候就对准 库位,
      仓库计算MRP时是判断stock库位,导致不停的生成新的采购单

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: CentOS6.4下源代码安装以及nginx配置

      写得灰常不错,攒一个

      发布在 Odoo 安装指南
      1
      18684036
    • RE: 如何控制many2one多对一的字段下拉框显示自己所想要的数据问题

      我其实是想用context传值的,但水平有限,于是我在模块用使用了全局变量
      惭愧啊

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: 如何控制many2one多对一的字段下拉框显示自己所想要的数据问题

      具体代码如下
          def fields_get(self,cr,uid,fields=None,context=None):
              res=super(bom_supplierinfo,self).fields_get(cr,uid,fields,context)
              global conset_product_id
              global supplier_bom_ids 
              if 'name' in res:
                  res['name']['domain']=[('id','in',supplier_bom_ids)]     
              return res
          def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
              self.fields_get(cr,uid,'name',context=context)
              res = super(bom_supplierinfo,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
              if view_type!='form':
                  return res
              if context is None:
                  context = {}
              fields=res.get('fields',{})
              if fields:
                  if fields.get('name'):
                      results=self.pool.get('res.partner').read(cr,uid,supplier_bom_ids,['name'],context)
                      print 'show the Name value'
                      for r in results:
                          print r['id']
                      #res['name']=results
                      self.fields_get(cr,uid,'name',context=context)
                      res['name']=results
                     
                      #res['fields']=self.fields_get(cr,uid,'name',context=context)
              return res 

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: 如何控制many2one多对一的字段下拉框显示自己所想要的数据问题

      最终答案测试出来了,
      1:fields_view_get 中判断相应的view_type=你想要控制的view,比如tree or form
          判断fields中是否含有你想要控制的字段,如我上面所说的name字段
          调用 fields_get 函数,更改该字段的domain值 
        注:被控制下拉的字段,在xml中的视图中,不能含有 widget="selection" 否则不生效
        我测试是这样的,具体是什么原因不知道,实在很抱歉
        
        我用的是该方法,并测试成功
      2:最简单的就是many2one加上related  (jeff 提示,我有做过,方法可行)
      3:用selection类型 再用method 填充  (jeff 提示,我没有测试过)

      在此,再次感谢jeff ,步科,ccods,海飞众人的帮助

      发布在 Odoo 开发与实施交流
      1
      18684036
    • 如何控制many2one多对一的字段下拉框显示自己所想要的数据问题

      问题点:
      在实际的开发过程中,有碰到这样的一个问题
      customer and supplier and user 都是在res.partner表中
      产品也有一个product.supplierinfo 表用来装载该产品的供应商
      而我定义了一个字段
              'name' : fields.many2one('res.partner', 'supplier',                      domain=[('supplier','=',True)],
                                      ondelete='cascade',required=True,  help="Supplier of this product"), 
      想显示 product.supplierinfo 中的供应商

      解决办法:
      1.我想通过domain来完成,于是使用了 domain=[('supplier','in',func)]
        但是测试时一直没通过
       经jeff 与步科,ccods,海飞等众多大神们,佛祖们指导,最终得出的解决办法是,该写法不符合规范,
       正确写法应该为:domain=my_domain()

        然后再定义一个函数
        def my_domain()
        return "[('id','in',["+','.join(map(str,ids))+"])]"  #假如ids=[1,2,3]
        该函数的作用是返回一个字符串
       则回到原字段定义中为:
              'name' : fields.many2one('res.partner', 'supplier', domain=[color=limegreen]"[('supplier','in',[1,2,3])]"[/color],
                                      ondelete='cascade',required=True,  help="Supplier of this product"),
        对此我进行了domain="[]" 与 domain=[] 测试
       发现只有 domain=[
      ] 才起作用,对此疑问我向jeff咨询中得出答案:该两种都是一样的效果,
       海飞兄说,官方写法为:domain=[
      ] ,
       同时我自己测试了,并找了ccods与东莞-老马 进行帮忙测试这个“”问题,结果是,ccods的两种写法效果一样,东莞-老马的跟我的一样,只有domain=[
      ****] 才起作用
       
       对此疑问只能归为版本问题,进行保留处理
       
       2:因为my_domain()返回的是字符串,所以导致了虽然字段的domain=“可变值” 但却起不到作用
       对此我又进行进一步的测试
       海飞兄提示说:domain实际是一个list,所以不应该用字符串,应该用数组
       我也有跟踪仔细观察过,domain=[('supplier','in',[1,2,3])] 
        在此,进行一下数组及元组的解析,
       数组=[]
       元组=()
       于是我猜测,domian=[元组1,元组2,元组3] 这种写法
       于是我将my_domain()函数改成:
           def my_domain():
         ids=[1,2,3,4]    #为方便测试我直接给它设置了一个固定数组
              reval=[]
              reval=['id','in']
              reval.append(supplier_bom_ids)
             
              stuple=tuple(reval)
             
              returlist=[]
              returlist.append(stuple)
              #reval="domain=[('id','in',["+','.join(map(str,ids))+"])]"
              #reval="[('id','in',["+','.join(map(str,ids))+"])]"
              print conset_product_id
              print "以下是reval的值"
              print returlist 
              return returlist

        则返回的是一个带元组的数组,此时,测试成功,该my_domain()返回的结果  起作用了,
        于是我想将ids转成一个可变值,但此时就不成功了
        我再进行跟踪观察,发现_columns在初使化时就已经运行了,此时context或者全局参数根据还没能产生
       
        所以使用domain=my_domain() 方法宣告失败

      方法2:
        fields_view_get –> fields_get –> read
        该方法我测试过,但因为能力有限,这些函数的原理我也没搞得怎么明白,不敢发表评论,
        fields_view_get 在模块show之前,会进行加载
        fields_get 可以更改_columns里的值,但是即使更改后,也不见起作用,所以我估计在运行fields_get时,该many2one已经加载完数据了
        
       
      最终结果:问题还是没解决得,实在辜负了群里众位大神们的帮助

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: Name 'method' is not defined 的错误提示检查结果

      是的,如果定义一个方法即可,只是我用不上,所以就删除掉了

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: 学习OE 如何定义视图的类型

      除开这个方法,我还是依然认为 def view_header_get() 这个函数可以 根据用户的uid 来指向 某个view_id
      虽然我还没做得出来,但我相信这个方法肯定行

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: MRP_BOM 的主从定义

      测试结果,合计14天,失败

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: 如何实现下拉列表onchange的时候对另一个控件清零设为只读

      不错不错

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: Name 'method' is not defined 的错误提示检查结果

      本来是想在文档中,图文并貌的,结果没弄得出来,对不起jeff,对不起总监的期望啊,还有上海-Joshua(470534800) 0:01:13 的指导

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: MRP_BOM 的主从定义

      我现在还在研究这个,还没跑得顺,昨天晚上多亏jeff解答了Name 方法错误的问题,现在继续仿Mrp做一个模块,主从表放同一个表中,希望能尽快解决

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: Name 'method' is not defined 的错误提示检查结果

      问题点这里[attachimg=1]

      发布在 Odoo 开发与实施交流
      1
      18684036
    • Name 'method' is not defined 的错误提示检查结果

      今天在测试向导时,发现保存时总是出问题
      于是为了测试向导的字段没有问题,于是我用该向导的字段及view来创建一个新模块

      在测试保存时都正常,但回到tree视图时,就提示如下:
      [attachimg=2]
      OpenERP Client error
      Uncaught Error: QWeb2 - template['ListView.rows']: Runtime Error: Error: QWeb2 - template['ListView.row']: Runtime Error: Error: NameError: name 'method' is not defined<br / [检测到链接无效,已移除] br />
      解决流程(个人尝试方法,仅供参考,避免别人走相同的路线):
      1.由于该错误是数据库表存在数据才会出错,于是我认为是数据不完整导致,我将数据库中的字段缺省的全部手工填写上
      [img2][attachimg=2][/img2]
      检查字段是否定义错误,如图
      [attach=3][attachimg=3]
      再检查数据库表
      [attach=3][attachimg=3]
      结果:失败
      2:经与大神讨论,认为OE 7版本中,有几个版本是存在这个错误,于是我将本机的2013-03-30号的版本删除,替换成2013-05-11版
      结果:失败
      3:Ccdos提议:可能是字段中必须有 Name 字段
      结果:失败
      4:海飞大神提议:追加_rec_name="字段"
      结果:失败
      5:后经Jeff大神检查
      流程:
      5.1:先检查search_view 视图是否有问题
      5.2:检查tree_view视图,发现在视图中多了一个Color方法
      结果:成功


      在此,十分感谢群里各位大神们的帮助与支持,谢谢
      [attach=3][attachimg=3]

      发布在 Odoo 开发与实施交流
      1
      18684036
    • RE: Openerp 中的 readonly

      我觉得最大的可能性就是 readonly字段,OE不写入vals中,而在onchange中,又不能控制vals,所以导致了这个字段无法保存

      发布在 Odoo 开发与实施交流
      1
      18684036