自己动手实现SAAS不同父company独立的ODOO

把每个需要独立的模型(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), ]

群组 用户类型 / 内部用户 允许“读写建”

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。