把每个需要独立的模型(Model),都添加一个新的域sequence和company_id
如果已经存在就不用重复添加了。sequence主要用于记录级的权限管理中定义[('sequence','=',0),('sequence','=',1)]这样的表达方式,表示都不允许。
sequence = fields.Integer(string='Sequence',default=10)
company_id = fields.Many2one('res.company','Company',index=True,default=lambdaself:self.env.user.company_id.id)
更改记录规则的权限设置,让不同的用户看到不同的company_id对应的设置数据和单据。
首先需要激活开发者模式
主要分两个数据的权限进行设置
一、是配置数据(一般定义为同一个company_id的,允许“读写删建”,超级用户“系统管理 / 参数设置”都允许,其余不允许)
规则1、超级权限 规则定义 [(1, "=", 1)] 群组 系统管理 / 参数设置 允许“读写删建”
规则2、都不允许 规则定义 [('active','=',True),('active','=',False)] 群组 用户类型 / 内部用户 勾选允许“读写删建”
规则3、同一个公司
规则定义
[ '|', ('company_id.child_ids','child_of',[user.company_id.id]), ('company_id','child_of',[user.company_id.id]), ]
群组 用户类型 / 内部用户 允许“读写删建”
二、单据数据(一般定义为草稿时同一个company_id的允许“读写删建”,其他状态并且是同一个company_id的允许读写和建,但不允许删除,超级用户“系统管理 / 参数设置”都允许)
规则1、超级权限 规则定义 [(1, "=", 1)] 群组 系统管理 / 参数设置 允许“读写删建”
规则2、都不允许 规则定义 [('sequence','=',0),('sequence','=',1)] 群组 用户类型 / 内部用户 允许“读写删建”
规则3、草稿
规则定义
[ '&', ('state', '=', 'draft'), '|', '|', ('company_id.child_ids','child_of',[user.company_id.id]), ('company_id','child_of',user.company_ids and user.company_ids.ids or [user.company_id.id]), ('company_id','=',False), ]
群组 用户类型 / 内部用户 允许“读写删建”
规则4、其他状态
规则定义
[ '|', '|', ('company_id.child_ids','child_of',[user.company_id.id]), ('company_id','child_of',user.company_ids and user.company_ids.ids or [user.company_id.id]), ('company_id','=',False), ]
群组 用户类型 / 内部用户 允许“读写建”