Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

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

    Odoo 新手求助
    2
    5
    412
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • E
      Etren 最后由 Etren 编辑

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

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

      我想实现的访问权限是:

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

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

      按照 @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
        Etren 最后由 Etren 编辑

        参考: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
          Etren @Etren 最后由 Etren 编辑

          上面的权限还有一点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
            Etren @Etren 最后由 Etren 编辑

            业务经理的联系人权限还有一点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]

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

            digitalsatori 1 条回复 最后回复 回复 引用 0
            • digitalsatori
              digitalsatori 管理员 @Etren 最后由 digitalsatori 编辑

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

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

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

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

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

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

              1 条回复 最后回复 回复 引用 0
              • First post
                Last post