Skip to Content

Odoo 多公司权限设置实例

一、问题描述

用户希望在Odoo中设置权限,使得不同分公司的用户只能查看自己分公司的数据。例如,华东地区的用户只能看到华东公司的数据,华南地区的用户只能看到华南公司的数据。

二、解决方案

通过Odoo的权限设置,可以轻松实现这一需求。权限设置主要包括以下几个方面:

  1. 权限组(ACL)
  2. 记录规则(RULE)
  3. 菜单和界面设置

三、具体步骤

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中分公司之间的查看权限,确保不同分公司的用户只能查看自己分公司的数据。这种设置不仅提高了数据的安全性,还确保了用户界面的简洁性和易用性。

Odoo 多公司权限设置实例
6776, Administrator November 20, 2019
Tags
Archive