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

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

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

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

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



  • 仓库/产品 输入中检查 内部编号唯一性检查<br /><br />oe 机制中,有两种方式来解决该问题,<br />一、使用  _sql_constraints <br />按照 saleorder 的检查 ,复制 写了一个检查项<br />放在addone/product/product.py 的product_product 类中<br /> _sql_constraints = [<br />        ('code_uniq', 'unique(default_code)', 'Code must be unique per Company!'),<br />    ]  <br /><br />测试了一下,没有成功,后来 总监提示 “可能是你没有重启服务以及更新模块所致..”  <br /><br /><br /><br /><br />二使用  _constraints<br /><br />参照  _check_ean_key 写了一个<br /><br /><br /> def _check_default_code(self, cr, uid, ids, context=None):<br />        result = 0<br />        for product in self.read(cr, uid, ids, ['default_code'], context=context):<br />            code=product['default_code']<br />            other_product_ids = self.search(cr, uid, [('default_code', '=', code), ('id', '!=', product['id'])], context=context)<br />            result=len(list(other_product_ids))<br />        if result<1:    <br />            return  True<br />        else:<br />            return False<br /><br />    _constraints = [(_check_ean_key, 'You provided an invalid "EAN13 Barcode" reference. You may use the "Internal Reference" field instead.', ['ean13']),<br />                    (_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code'])<br />]<br /><br />_check_ean_key,是原有的,<br />(_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code']) 是加上的<br /><br />经测试,输入重复的内部编号 ,提示内部单号重复  . 请重新输入. <br /><br />[img2]http://shine-it.net/index.php?action=dlattach;topic=12647.0;attach=2761;[/img2]<br /><br />



  • 仓库/产品 输入中检查 内部编号唯一性检查<br /><br />oe 机制中,有两种方式来解决该问题,<br />一、使用  _sql_constraints <br />按照 saleorder 的检查 ,复制 写了一个检查项<br />放在addone/product/product.py 的product_product 类中<br /> _sql_constraints = [<br />        ('code_uniq', 'unique(default_code)', 'Code must be unique per Company!'),<br />    ]  <br /><br />测试了一下,没有成功,后来 总监提示 “可能是你没有重启服务以及更新模块所致..”  <br /><br /><br /><br /><br />二使用  _constraints<br /><br />参照  _check_ean_key 写了一个<br /><br /><br /> def _check_default_code(self, cr, uid, ids, context=None):<br />        result = 0<br />        for product in self.read(cr, uid, ids, ['default_code'], context=context):<br />            code=product['default_code']<br />            other_product_ids = self.search(cr, uid, [('default_code', '=', code), ('id', '!=', product['id'])], context=context)<br />            result=len(list(other_product_ids))<br />        if result<1:    <br />            return  True<br />        else:<br />            return False<br /><br />    _constraints = [(_check_ean_key, 'You provided an invalid "EAN13 Barcode" reference. You may use the "Internal Reference" field instead.', ['ean13']),<br />                    (_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code'])<br />]<br /><br />_check_ean_key,是原有的,<br />(_check_default_code, ' 内部单号重复  . 请重新输入.', ['default_code']) 是加上的<br /><br />经测试,输入重复的内部编号 ,提示内部单号重复  . 请重新输入. <br /><br />[img2]http://shine-it.net/index.php?action=dlattach;topic=12647.0;attach=2761;[/img2]<br /><br />



  • 感谢,



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


  • 管理员

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



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



  • 请问addone/product/product.py,如果是linux的话,指的是这个目录吗?<br /><br />/usr/lib/pymodules/python2.7/openerp/addons/product<br /><br />如果是的话,该product.py里面的sql_constrains语句默认是这样的:<br /><br />_sql_constraints = [<br />        ('factor_gt_zero', 'CHECK (factor!=0)', 'The conversion ratio for a uni$<br />    ]<br /><br />如果要实现产品内部编号唯一性的话,请问删除掉上面这段,然后换成:<br /><br /> _sql_constraints = [<br />        ('code_uniq', 'unique(default_code)', 'Code must be unique per Company!'),<br />    ]  <br /><br />来实现的吗?<br />



  • 不是有现成的模块吗



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



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



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


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待