跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. 设置联系人查看权限后,无法进入员工模块查看员工信息。

设置联系人查看权限后,无法进入员工模块查看员工信息。

已定时 已固定 已锁定 已移动 未解决 Odoo 新手求助
5 帖子 2 发布者 1.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • E 离线
    E 离线
    Etren
    写于 最后由 Etren 编辑
    #1

    回复: 关于联系人权限的新手问题,还请各位大大不吝赐教。

    在此之前想请教一下:记录权限中用到的字段名称该如何填写?
    在技术/模型能看到模型的字段名称,记录权限中用到的字段名称结构是不是模型名称.字段名称

    我想实现的访问权限是:

    权限组 模块 记录权限
    从“用户类型/内部用户”继承 员工 系统默认权限:只能查看公司内部员工基本信息
    用户类型/内部用户 联系人 仅能查看公司内部人员的联系人信息
    销售/用户:仅自己单据 联系人 仅能查看公司内部人员和负责客户的联系人信息
    销售/用户:业务经理 联系人 仅能查看公司内部人员、负责客户、下属业务员负责客户的联系人信息
    销售/用户:全部单据 联系人 可以查看所有业务信息

    业务部门有多个业务小组,业务经理是小组负责人,不同小组之间不能互相查看业务数据,除非设置为关注人。

    按照 @digitalsatori 和 @犟爆骨头 两位的建议设置联系人权限后,联系人权限生效后无法进入“员工”模块以及查看员工信息。
    界面提示:

    访问错误
    
    由于安全限制,您不得访问"联系人"(res.partner) 记录.
    
    记录: Administrator (id=3)
    User: 联系人权限测试用户 (id=9)
    
    此限制是由于以下规则: 
    - res.partner.rule.private.group
    - res.partner.rule.private.salesperson
    
    如有必要,请联系您的管理员以请求访问.
    

    res.partner.rule.private.employee 设置为销售/用户:所有单据的情况下,联系人筛选生效,但是无销售权限的内部用户无法访问联系人。
    res.partner.rule.private.employee 设置为用户类型/内部用户的情况下,联系人筛选不生效;取消“读取”权限的情况下联系人筛选生效,但是无销售权限的内部用户无法访问联系人。

    以下是当前模型/联系人/记录规则的设置

    模型/联系人/记录规则
    名称 群组 域 读 写 增 删
    res.partner company ['|', '|', ('partner_share', '=', False), ('company_id', 'in', company_ids), ('company_id', '=', False)] [x] [x] [x] [x]
    res.partner.rule.private.employee 用户类型/公共
    用户类型\网站入口
    [('id', 'child_of', user.commercial_partner_id.id)] [x] [ ] [ ] [ ]
    res.partner.rule.private.employee 用户类型/内部用户 ['|', ('type', '!=', 'private'), ('type', '=', False)] [ ] [x] [x] [x]
    res.partner.rule.private.group 技术/访问私人地址 [('type', '=', 'private')] [x] [x] [x] [x]
    res.partner.rule.private.salesperson 销售/用户:仅自己的单据 ['|', ('create_uid', '=', user.id), ('user_ids', 'in', user.id)] [x] [x] [x] [x]
    res.partner.rule.private.manager 销售/用户:业务经理 [('user_id.employee_id.parent_id.user_id', '=', user.id)] [x] [x] [x] [x]
    1 条回复 最后回复
    0
    • E 离线
      E 离线
      Etren
      写于 最后由 Etren 编辑
      #2

      参考:odoo 权限问题
      以及
      Odoo应用手册(上)09.05.04记录规则的设置
      记录规则 – 销售只能看到自己的客户,经理可以看到全部

      确认:是因为“联系人”模块中用户类型/内部用户的基础权限限制,导致继承权限无效

      修改“联系人”相应记录权限后,一切恢复正常,并实现联系人多级查看权限。

      以下是当前可正常实现联系人隔离的模型/联系人/记录规则设置

      模型/联系人/记录规则
      名称 群组 域 读 写 增 删
      res.partner company ['|', '|', ('partner_share', '=', False), ('company_id', 'in', company_ids), ('company_id', '=', False)] [x] [x] [x] [x]
      res_partner: portal/public: read access on my commercial partner 用户类型/公共
      用户类型\网站入口
      [('id', 'child_of', user.commercial_partner_id.id)] [x] [ ] [ ] [ ]
      res.partner.rule.private.employee 用户类型/内部用户 ['&','|','|','|',('id','=',user.partner_id.id),('user_id','=',user.id),('parent_id.user_id','=',user.id),('user_id','=',False),'|',('type','!=','private'),('type','=',False)] [x] [x] [x] [x]
      res.partner.rule.private.group 技术/访问私人地址 [('type', '=', 'private')] [x] [x] [x] [x]
      res.partner.rule.private.salesperson 销售/用户:仅自己的单据 ['|', '|', '|', ('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)] [x] [x] [x] [x]
      res.partner.rule.private.manager 销售/用户:业务经理 [('user_id.employee_id.parent_id.user_id', '=', user.id)] [x] [x] [x] [x]
      res.partner.rule.private.admin 系统管理/设置 [(1,'=',1)] [x] [x] [x] [x]
      res.partner.rule.private.salesadmin 销售/管理员 [('customer_rank','>',0)] [x] [x] [x] [x]
      E 1 条回复 最后回复
      0
      • E 离线
        E 离线
        Etren
        在 回复了 Etren 最后由 Etren 编辑
        #3

        上面的权限还有一点BUG,修正如下

        名称 群组 域 读 写 增 删
        res.partner.rule.private.employee 用户类型/内部用户 ['|', '|', '|', ('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),'|',('type','!=','private'),('type','=',False)] [x] [x] [x] [x]

        在“员工”模块内设置所属经理后,经理能查看下级业务员负责联系人。
        联系人内以公司/销售员可见权限覆盖公司/联系人/销售员可见权限。

        E 1 条回复 最后回复
        0
        • E 离线
          E 离线
          Etren
          在 回复了 Etren 最后由 Etren 编辑
          #4

          业务经理的联系人权限还有一点BUG:
          业务经理看不到自己下属业务人员为销售员的公司下,销售员为空的联系人。

          修正如下

          名称 群组 域 读 写 增 删
          res.partner.rule.private.manager 销售/用户:业务经理 ['|',('user_id.employee_id.parent_id.user_id', '=', user.id),'&',('user_id','=', False),('parent_id.user_id.employee_id.parent_id.user_id', '=', user.id)] [x] [x] [x] [x]

          实现:
          当前用户为业务经理的情况下,能看到销售员为空,但是联系人所属公司的销售员为自己下属业务人员的联系人。

          digitalsatoriD 1 条回复 最后回复
          0
          • digitalsatoriD 离线
            digitalsatoriD 离线
            digitalsatori 管理员
            在 回复了 Etren 最后由 digitalsatori 编辑
            #5

            @Etren 问题写得非常仔细用心,排版也是本论坛第一名。非常想帮你解决问题,无奈看到我大脑爆炸:exploding_head: 。

            我只能回答你里面的一个小问题:

            @Etren 在 设置联系人查看权限后,无法进入员工模块查看员工信息。 中说:

            在技术/模型能看到模型的字段名称,记录权限中用到的字段名称结构是不是模型名称.字段名称

            不是的。就是字段名。如果你引用的是关系字段的关联对象中的字段,可以应用关系字段.关联对象字段名。 比如,我们要按客户名称来过滤销售订单,我们可以用 [('partner_id.name', 'like', 'xxxx')]形式, partner_id.name 表示订单上的客户名称

            【上海先安科技】(tony AT openerp.cn)

            1 条回复 最后回复
            0

            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 标签
            • 热门
            • 用户
            • 群组