Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

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

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

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

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

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

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

    Odoo 开发与实施交流
    9
    11
    7242
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zhong_163 最后由 编辑

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

      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
      • 卓忆
        卓忆 最后由 编辑

        感谢,

        恬淡

        1 条回复 最后回复 回复 引用 0
        • A
          ade1984 最后由 编辑

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

          1 条回复 最后回复 回复 引用 0
          • digitalsatori
            digitalsatori 管理员 最后由 编辑

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

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

            1 条回复 最后回复 回复 引用 0
            • Z
              zhong_163 最后由 编辑

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

              1 条回复 最后回复 回复 引用 0
              • L
                linuxer 最后由 编辑

                请问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
                  Pepsi 最后由 编辑

                  不是有现成的模块吗

                  1 条回复 最后回复 回复 引用 0
                  • KevinKong
                    KevinKong 最后由 编辑

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

                    1 条回复 最后回复 回复 引用 0
                    • M
                      matrowang 最后由 编辑

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

                      1 条回复 最后回复 回复 引用 0
                      • 1
                        123436172 最后由 编辑

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

                        1 条回复 最后回复 回复 引用 0
                        • First post
                          Last post