sales/user 的联系人:仅自己的文档组,但管理员组似乎也受到影响

Contact for sales/user: own document only group, but it seems like the administrator group also is affected

我正在为 odoo 创建一个模块,我只希望销售人员在联系人中看到分配给 him/her 的客户,所以我创建了一个带有域过滤器的记录规则 [('user_id,'=' user.id)]:

<record model="ir.rule" id="partner_view_rule_salesperson">
    <field name="name">Sales Person View Rule</field>
    <field name="model_id" ref="base.model_res_partner"/>
    <field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]" />
    <field name="domain_force">[('user_id', '=', user.id)]</field>
</record>

现在的问题是,管理员组似乎受到了记录规则的影响。当我创建一个新用户时它抛出一个错误:

The requested operation ("create” on “Contact” (res.partner)) was rejected because of the following rules: - Sales Person View Rule

Records: Sample code {id=18), User: Administrator (id=2)}

我真的很困惑,因为我没有在我刚刚创建的记录规则中添加管理员组。如果我删除记录规则,它 returns 正常。

我希望任何人都可以帮助我解决这个问题。我已经在网上搜索过了,还是没找到解决方法。

您需要为管理员组或任何其他组撤消此操作:

<record model="ir.rule" id="partner_view_rule_salesmanager">
    <field name="name">Sales manager View Rule</field>
   <field name="model_id" ref="base.model_res_partner"/>
   <field name="groups" eval="[(4, ref('sales_team.group_sale_manager'))]" />
   <field name="domain_force">[(1, '=', 1)]</field>
</record>

组规则在查询中应用时,它们适用于管理员 ( RULE1 or RULE2 or RULE3 .....) 现在他有两条规则,其中一条始终为真,这就是他可以看到所有合作伙伴的原因。并确保阅读全局规则(没有安全组的规则),因为它们适用于每个规则并且不能被其他规则取消。

    GLOBALRULE and GLOBALRULE2 and GLOBALRULE3 .... AND (GROUPRULE1 or GROUPRULE2 or GROUPRULE3....) 

如果存在阻止读取记录的全局记录,则查询将不会 return 它。