
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
产品判断内部编号唯一处理
-
仓库/产品 输入中检查 内部编号唯一性检查
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] -
感谢,
-
好东西,期待已久,学习中.....
-
这里用_sql_constraint会比较好,_constraint可能会有性能问题
-
优先解决方案 _sql_constraint,但是画瓢没成功。。。 只好退而次之
-
请问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!'),
]
来实现的吗? -
不是有现成的模块吗
-
限制不成功的原因除了你没有更新模块外,还可能是你原来的要添加限制的列中已经有重复的数据导致的。
-
[quote author=Pepsi link=topic=12647.msg27501#msg27501 date=1393237430]
不是有现成的模块吗
[/quote]
现成模块叫什么名字? -
用_sql_constraints,在7.0版本上行得通,8.0测试好像有问题,直接进不了系统,有大大试过吗?