一、问题描述
用户希望在Odoo中设置权限,使得不同分公司的用户只能查看自己分公司的数据。例如,华东地区的用户只能看到华东公司的数据,华南地区的用户只能看到华南公司的数据。
二、解决方案
通过Odoo的权限设置,可以轻松实现这一需求。权限设置主要包括以下几个方面:
- 权限组(ACL)
- 记录规则(RULE)
- 菜单和界面设置
三、具体步骤
1. 创建权限组
权限组用于定义不同用户组的权限。例如,可以创建两个组:`group_east_china` 和 `group_south_china`。
<record id="group_east_china" model="res.groups"> <field name="name">East China Users</field> <field name="category_id" ref="base.module_category_hidden"/> </record> <record id="group_south_china" model="res.groups"> <field name="name">South China Users</field> <field name="category_id" ref="base.module_category_hidden"/> </record>
2. 设置用户到权限组
将用户添加到相应的权限组中。例如,将用户A添加到`group_east_china`,用户B添加到`group_south_china`。
<record id="base.user_admin" model="res.users"> <field name="groups_id" eval="[(4, ref('group_east_china'))]"/> </record>
3. 设置菜单权限
确保不同组的用户只能访问特定的菜单。
<menuitem id="menu_east_china" name="East China Menu" groups="group_east_china"/> <menuitem id="menu_south_china" name="South China Menu" groups="group_south_china"/>
4. 设置记录规则
记录规则用于更精细化的权限控制。例如,设置规则使得`group_east_china`的用户只能查看华东公司的数据。
<record id="rule_east_china" model="ir.rule"> <field name="name">East China Data Access</field> <field name="model_id" ref="model_res_partner"/> <field name="global" eval="True"/> <field name="domain_force">[('company_id', '=', user.company_id.id)]</field> <field name="groups" eval="[(4, ref('group_east_china'))]"/> </record>
5. 设置访问控制列表(ACL)
通过`ir.model.access.csv`文件设置模型的访问权限。
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_res_partner_east,East China Partner Access,model_res_partner,group_east_china,1,0,0,0 access_res_partner_south,South China Partner Access,model_res_partner,group_south_china,1,0,0,0
四、总结
通过以上步骤,可以有效地设置Odoo中分公司之间的查看权限,确保不同分公司的用户只能查看自己分公司的数据。这种设置不仅提高了数据的安全性,还确保了用户界面的简洁性和易用性。