Skip to Content

Odooo权限管理的4个层次

Odoo权限管理的四个层次

一、菜单级别

  • 定义:不属于指定菜单所包含组的用户看不到该菜单。
  • 特点:不安全,只是隐藏菜单。若用户知道菜单ID,仍然可以通过指定URL访问。

二、对象级别

  • 定义:对某个对象是否有“创建、读取、修改、删除”的权限。
  • 特点:Odoo中的对象可以理解为表对象,如“客户”、“产品”、“销售订单”等。

三、记录级别

  • 定义:对对象表中的数据的访问权限。
  • 特点:例如,业务员只能对自己创建的客户有访问权限,而经理可以访问其所辖业务员的所有客户。访问权限可进一步细分为“创建、读取、修改、删除”。

四、字段级别

  • 定义:一个对象或表上的某些字段的访问权限。
  • 特点:例如,产品的成本字段只有经理有读权限,订单上的单价字段只有经理才有修改权限。

记录规则设置示例

测试环境创建

  1. 创建用户:创建三个用户,分别是`manager`、`sale1`、`sale2`。
    • `manager`的“销售”应用的访问权限为:查看所有线索。
    • `sale1`和`sale2`的访问权限为:查看自己的线索。
    • 这两个权限对应两个不同的组:`See Own Leads`(group_sale_salesman)和`See All Leads`(group_sale_salesman_all_lead)。
  2. 创建客户和联系人
    • 创建两个客户:`Company ABC`和`Company XYZ`。
    • 每个客户下分别创建两个联系人:`ABC Contact 1`、`ABC Contact 2`、`XYZ Contact 1`、`XYZ Contact 2`。

注意事项

在客户或联系人表单的“销售与采购”选项卡中有“销售员”选项(`user_id`),默认值为空。若希望默认值为创建用户的ID,可修改代码。

记录规则设置

  1. 赋予技术特性权限
    • 给予Administrator用户“技术特性”(Technical Features)权限,并刷新页面。
  2. 创建记录规则
    • 点击`设置 -> 技术 -> 安全设定 -> 记录规则`。
    • 创建两条记录规则,分别适用于`See Own Leads`组和`See All Leads`组。

记录规则示例

适用于`See Own Leads`组的记录规则

  • Domain设置
    ['|', '|', '|', ('user_id','=',user.id), '&', ('user_id','=', False), ('parent_id.user_id', '=', user.id), '&', ('user_id', '=', False), ('parent_id.user_id', '=', False), '&', ('user_id', '=', False), ('parent_id', '=', False)]
                
  • 解释
    • `user_id == user.id`:客户的销售员ID与登录用户ID相同。
    • `user_id == False` 并且 `parent_id.user_id == user.id`:客户的销售员未定义,但其父公司的销售员与登录用户相符。
    • `user_id == False` 并且 `parent_id.user_id == False`:客户及其父公司都没有设置销售员。
    • `user_id == False` 并且 `parent_id == False`:客户没有设置销售员且没有父公司。

适用于`See All Leads`组的记录规则

  • Domain设置
    [(1, '=', 1)]
                
  • 解释:此规则永远为真,绕过`See Own Leads`组的过滤条件。

总结

通过以上设置,可以实现“业务员只能看到自己创建的客户,而经理可以看到所有客户”的需求。此外,还可以利用记录规则中对“创建、读取、修改、删除”权限的控制,满足更复杂的需求,如“销售员可以编辑自己客户,但对不属于自己的客户仅有查看权限,经理可以查看、编辑、删除所有客户”。

Odooo权限管理的4个层次
6776, Administrator January 30, 2015
Tags
Archive