关于OE7中销售员权限及默认值问题
-
刚刚接触OE7不久,对系统还不怎么熟悉,在论坛各位大婶的帮助下总算把自己的默认值问题搞定了,先分享一下,希望对大家有用
业务需求如下:
1、销售员只能创建属于自己的客户资料(包括公司),并且只能看到属于自己的客户资料
2、销售经理能创建属于其销售团队成员的客户资料,并且可以看到其销售团队下的所有客户资料
至于1和2的domain的实现(根据Joshua的指点 http://cn.openerp.cn/record_rule/ ,在原帖子上做了些完善)
1、销售员只能看见自己名下的客户资料或者自己名下公司的资料以及公司名下的客户资料(但是不包括公司名下属于其他销售员的客户资料)以及自己的资料
规则一:(user_id=user.id) #该规则表示客户被指定的销售员为登录帐号销售员
[size=14pt][b]或[/b][/size]
规则二:(user_id==False & parent_id.user_id == user.id) #该规则表示客户未指定销售员但是该客户公司的销售员被指定为当前登录帐号销售员
[size=14pt][b]或[/b][/size]
规则三:(user_id==False & parent_id.user_id==False) #该规则表示客户未指定销售员并且该客户公司的销售员也未指定(这是野人。。。)
[size=14pt][b]或[/b][/size]
规则四:(user_id==False & parent_id==False) #该规则表示客户未指定销售员并且没有公司
对于真正的客户(非OE用户)来说上述四条足够满足要求了,但是针对OE用户,我希望销售员只应该看见自己而不要看见其他销售员同事,所以需要增加一条
修改规则三(野人范畴):(user_id==False & parent_id.user_id==False & name=user.name) #该规则表示业务伙伴(包含了公司同事)未指定销售员并且该业务伙伴公司也未指定销售员并且业务伙伴名称为当前登陆账号名称(其实说了半天就是为了筛选出自己)
修改规则四 :(user_id==False & parent_id==False & name=user.name) #无销售员无公司的当前用户
完整的Domain:['|','|','|',('user_id','=',user.id),'&',('user_id','=',False),('parent_id.user_id','=',user.id),'&','&',('user_id','=',False),('parent_id.user_id','=',False),('name','=',user.name),'&','&',('user_id','=',False),('parent_id','=',False),('name','=',user.name)]
2、['|',('section_id.member_ids','in',user.id),('section_id','=',False)] #该规则使销售经理能看到其管辖下的整个销售团队的资料(需要创建销售团队,并且授予销售团队经理权限)或者是无团队的野人
OK,我们的业务要求所有销售员创建的客户资料必须都是自己的客户,那么“销售员”字段必须为必选,可以在管理视图里面修改
[attachimg=1]
这样“销售员”字段为必选,那么带来了一个麻烦事,每次用户都要做选择,所以我们应该让当前销售员创建客户资料的时候自动选择自己为“销售员”
打开openerp/addons/sale/res_partner.py文件
添加默认值
[attachimg=2]
现在就可以了,这样任何能够创建客户资料的帐号都会将自己默认设为客户资料的”销售员“
[attachimg=3]
但是有个新的问题,当admin用户创建user的时候它也会默认把partner里面的user_id字段设置为admin,会造成创建的帐号无法创建和访问自己(因为被规则过滤掉了,规则认为自己是别人的客户--admin创建,所以是admin的客户,所以不能访问),
由于res.user继承自res.partner,所以我们在res.user里面将父类(res.partner)的默认值再次覆盖掉
打开文件openerp/addons/base/res/res_user.py
在_defaults字段添加一个字段user_id,如下图:
[attachimg=4]
至此默认值问题算是完美的解决了
[color=green][b][size=12pt]在此感谢 Joshua、Pepsi、小奥[/size][/b][/color] -
[quote][font=Verdana][size=13px]至于1和2的domain很好实现[/size][/font][font=Verdana][/size][size=13px]1、['|',('user_id','=',user.id),('name','=',user.name)] #该规则使销售员只能看见自己名下的客户资料以及自己的资料[/size][/font][/quote][font=Verdana][size=13px]
刚学习就很有心得,赞一个。
这里[font=verdana, arial, helvetica, sans-serif][/size][size=78%] http://cn.openerp.cn/record_rule/ 多考虑了一点,就是客户可以有公司和联系人两层关系的情况,供你参考。[/size][size=13px][/font][/size][/font] -
[quote author=digitalsatori link=topic=7321.msg16749#msg16749 date=1372082679]
[quote][font=Verdana][size=13px]至于1和2的domain很好实现[/size][/font][font=Verdana][/size][size=13px]1、['|',('user_id','=',user.id),('name','=',user.name)] #该规则使销售员只能看见自己名下的客户资料以及自己的资料[/size][/font][/quote][font=Verdana][size=13px]
刚学习就很有心得,赞一个。
这里[font=verdana, arial, helvetica, sans-serif][/size][size=78%] http://cn.openerp.cn/record_rule/ 多考虑了一点,就是客户可以有公司和联系人两层关系的情况,供你参考。[/size][size=13px][/font][/size][/font]
[/quote]
谢谢,我学习学习 -
[quote author=digitalsatori link=topic=7321.msg16749#msg16749 date=1372082679]
[quote][font=Verdana][size=13px]至于1和2的domain很好实现[/size][/font][font=Verdana][/size][size=13px]1、['|',('user_id','=',user.id),('name','=',user.name)] #该规则使销售员只能看见自己名下的客户资料以及自己的资料[/size][/font][/quote][font=Verdana][size=13px]
刚学习就很有心得,赞一个。
这里[font=verdana, arial, helvetica, sans-serif][/size][size=78%] http://cn.openerp.cn/record_rule/ 多考虑了一点,就是客户可以有公司和联系人两层关系的情况,供你参考。[/size][size=13px][/font][/size][/font]
[/quote]
仔细看了看这篇文章,受益匪浅,再次感谢
我想是不是还应该加个条件啊,因为如果有user_id == False的条件,会让OE的系统用户也被罗列进来,这样会让销售员能看到OE里面的所有用户,这也不合适
所以我的帖子里面加了个user_id=user.id | name=user.name条件 -
谢谢分享 ;D ;D ;D ;D