Odoo权限配置:为休假专员/经理设置不同休假记录访问规则
解决Odoo中休假记录的权限分组问题
我来帮你搞定这个权限规则的问题!你当前的规则只覆盖了普通主管(leave/Officer)查看自己和直接下属休假的场景,却没给经理组(leave/Manager)开权限,所以才会出现经理看不到任何记录的情况。
正确的权限规则写法
你需要在原规则的基础上,加入「如果用户属于leave/Manager组,则允许查看所有休假记录」的判断逻辑。修改后的Domain规则如下:
['|', user.has_group('hr_leave.group_leave_manager'), '|', ('employee_id.user_id', '=', user.id), ('employee_id.parent_id.user_id', '=', user.id)]
注意事项:
- 把
hr_leave.group_leave_manager替换成你实际的leave/Manager组的外部ID:如果是自定义组,你可以在组的编辑页面找到「外部标识」字段的值,比如你创建的组外部ID是your_module.group_leave_manager,就替换成这个。 - 逻辑解释:这条规则的意思是「要么用户是经理组(显示所有记录),要么是用户自己的休假,要么是用户直接下属的休假」,完美匹配你的需求。
操作步骤
- 打开Odoo后台,进入「设置」-「技术」-「权限」-「记录规则」
- 找到你之前创建的休假记录权限规则
- 把Domain字段的内容替换成上面的代码
- 确保这条规则的「应用于组」包含leave/Officer和leave/Manager两个组
- 保存规则,刷新页面后测试权限
测试验证
- employee1(leave/Officer组):只会看到自己和下属A、B、C的休假记录
- employee2(leave/Officer组):只会看到自己和下属X、Y、Z的休假记录
- employee3(leave/Manager组):能看到系统里所有的休假记录
如果你的需求是允许主管查看所有层级的下属(比如间接下属),可以把('employee_id.parent_id.user_id', '=', user.id)改成('employee_id.parent_id.user_id', 'child_of', user.id),这样就能匹配所有下级员工的休假记录了。
内容的提问来源于stack exchange,提问作者Hela Halloula GS
相关产品推荐
相关产品推荐

