跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. 产品判断内部编号唯一处理

产品判断内部编号唯一处理

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

    仓库/产品 输入中检查 内部编号唯一性检查

    oe 机制中,有两种方式来解决该问题,
    一、使用  _sql_constraints
    按照 saleorder 的检查 ,复制 写了一个检查项
    放在addone/product/product.py 的product_product 类中
    _sql_constraints = [
            ('code_uniq', 'unique(default_code)', 'Code must be unique per Company!'),
        ] 

    测试了一下,没有成功,后来 总监提示 “可能是你没有重启服务以及更新模块所致..” 




    二使用  _constraints

    参照  _check_ean_key 写了一个


    def _check_default_code(self, cr, uid, ids, context=None):
            result = 0
            for product in self.read(cr, uid, ids, ['default_code'], context=context):
                code=product['default_code']
                other_product_ids = self.search(cr, uid, [('default_code', '=', code), ('id', '!=', product['id'])], context=context)
                result=len(list(other_product_ids))
            if result<1:   
                return  True
            else:
                return False

        _constraints = [(_check_ean_key, 'You provided an invalid "EAN13 Barcode" reference. You may use the "Internal Reference" field instead.', ['ean13']),
                        (_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code'])
    ]

    _check_ean_key,是原有的,
    (_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code']) 是加上的

    经测试,输入重复的内部编号 ,提示内部单号重复  . 请重新输入.

    [img2 [检测到链接无效,已移除] /img2]

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

      感谢,

      恬淡

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

        好东西,期待已久,学习中.....

        1 条回复 最后回复
        0
        • digitalsatoriD 离线
          digitalsatoriD 离线
          digitalsatori 管理员
          写于 最后由 编辑
          #4

          这里用_sql_constraint会比较好,_constraint可能会有性能问题

          【上海先安科技】(tony AT openerp.cn)

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

            优先解决方案  _sql_constraint,但是画瓢没成功。。。 只好退而次之

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

              请问addone/product/product.py,如果是linux的话,指的是这个目录吗?

              /usr/lib/pymodules/python2.7/openerp/addons/product

              如果是的话,该product.py里面的sql_constrains语句默认是这样的:

              _sql_constraints = [
                      ('factor_gt_zero', 'CHECK (factor!=0)', 'The conversion ratio for a uni$
                  ]

              如果要实现产品内部编号唯一性的话,请问删除掉上面这段,然后换成:

              _sql_constraints = [
                      ('code_uniq', 'unique(default_code)', 'Code must be unique per Company!'),
                  ] 

              来实现的吗?

              1 条回复 最后回复
              0
              • P 离线
                P 离线
                Pepsi
                写于 最后由 编辑
                #7

                不是有现成的模块吗

                1 条回复 最后回复
                0
                • KevinKongK 离线
                  KevinKongK 离线
                  KevinKong
                  写于 最后由 编辑
                  #8

                  限制不成功的原因除了你没有更新模块外,还可能是你原来的要添加限制的列中已经有重复的数据导致的。

                  1 条回复 最后回复
                  0
                  • M 离线
                    M 离线
                    matrowang
                    写于 最后由 编辑
                    #9

                    [quote author=Pepsi link=topic=12647.msg27501#msg27501 date=1393237430]
                    不是有现成的模块吗
                    [/quote]
                    现成模块叫什么名字?

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

                      用_sql_constraints,在7.0版本上行得通,8.0测试好像有问题,直接进不了系统,有大大试过吗?

                      1 条回复 最后回复
                      0

                      • 登录

                      • 没有帐号? 注册

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