跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. OE7.0中,如何取产品中供应商的个数

OE7.0中,如何取产品中供应商的个数

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
7 帖子 4 发布者 4.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 1 离线
    1 离线
    18684036
    写于 最后由 编辑
    #1

    在修改产品模块中,有一个业务,就是该产品中,追加了 是否区分供应商 的字段,为bit类型,假如沟上该字段,则供应商列表则不允许为空
    添加字段及如何摆放该字段的位置,则不细说了,使用xpath定位,并追加即可
    下面讲一下如何判断该字段是否沟选 ,假如沟上,再判定一次供应商列表是否为空

    经Ccode大神教导,要做到这一步,则需要重写write(假设我们处于修改的情况下),
    此时,所有修改的内容都会在vals中,没修改的则不在该数组中

    我先定义一个
        def write(self,cr,uid,ids,vals,context=None):
            val={}      #定义一个val来接收是否区分供应商 的沟有没有打上
            supplierList=[]  #供应商列表     
            IntCount={}      #供应商列表的个数
            if 'bitSupplier' in vals:  #假如该字段存在vals中
                val=vals['bitSupplier']  #读取bitSupplier的值
                if val==True:              #假如该值被打上沟,即为 True的状态,反之则为False
                    if 'seller_ids' in vals:
                        supplierList=vals['seller_ids']
                        IntCount=len(supplierList)  #供应商列表个数,重庆-mrshelly(49812643) 提示使用len,我原来使用Count出错,这点要注意,虽然现在也没明白,先记下来先
                        if IntCount<=0:  #                     
                            warning={
                                    'title':(u'提示'),
                                    'message':val
                                    }
                            raise osv.except_osv(u'系统提示','提示内容(自己设置)')
                        else: #假如都符合条件,则调用product中的write函数,不过我没写对,                 
                               
                   
            #return super(product_template,self).write(self,cr,uid,ids,vals,context=context);  #这句我没写对,还在修正中,请注意

    1 条回复 最后回复
    0
    • mrshellyM 离线
      mrshellyM 离线
      mrshelly
      写于 最后由 编辑
      #2

      顶....

      1 条回复 最后回复
      0
      • wjfonhandW 离线
        wjfonhandW 离线
        wjfonhand
        写于 最后由 编辑
        #3

        if vals.get('bitSupplier',False) and not vals.get('seller_ids',False):
            raise something

        return super()

        GoodERP -- Odoo China fork

        1 条回复 最后回复
        0
        • 1 离线
          1 离线
          18684036
          写于 最后由 编辑
          #4

          [quote author=Jeff link=topic=5991.msg15047#msg15047 date=1366377098]
          if vals.get('bitSupplier',False) and not vals.get('seller_ids',False):
              raise something

          return super()
          [/quote]

          jeff写的就是精典,学习了

          1 条回复 最后回复
          0
          • 1 离线
            1 离线
            18684036
            写于 最后由 编辑
            #5

            顺便提一下今天的错误
            环境:本机系统:Win7  虚拟机:ubunt  服务器:ubunt 10.04桌面版

            raise osv.except_osv(u'系统提示','提示内容(自己设置)')
            如果这样写,上传到服务器中,运行时是提示错误的,
            提示:
            ascii codes can.t decode byte oxe80:ordinal not in range(128)

            我原本以为是我的本机虚拟机的是极点五笔输入法,而服务器的ubunt 中没有装有,于是就在服务器的ubunt中装了,结果问题依旧
            后来求助重庆-mrshelly(49812643) 
            总监眼神依然犀利
            指出原因是:在raise中,涉及到字符串,都要在前面加入 u
            应改为:
                raise osv.except_osv(u'错误提示',u'该产品已选择「是否区分供应商」,供应商列表不允许为空')

            重新上传,
            问题解决

            1 条回复 最后回复
            0
            • A 离线
              A 离线
              andytang18
              写于 最后由 编辑
              #6

              谢谢他享!!学习了!

              1 条回复 最后回复
              0

              • 登录

              • 没有帐号? 注册

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