Контакт для отдела продаж / пользователя: собственная группа только для документов, но похоже, что группа администраторов также затронута

Я создаю модуль для odoo, и я хочу, чтобы продавец видел только клиента, который был назначен ему / ей в контакте, поэтому я создал правило записи с фильтром домена [('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>

Теперь проблема в том, что на группы администраторов действует правило записи. При создании нового пользователя выдает ошибку:

Запрошенная операция ("создать" в "Контакт" (res.partner)) была отклонена из-за следующих правил: - Правило просмотра продавца

Записи: пример кода {id=18), пользователь: администратор (id=2)}

Я действительно был сбит с толку, потому что не добавил группу администраторов в только что созданное правило записи. И если я удалю правило записи, оно вернется в норму.

Надеюсь, кто-нибудь сможет мне с этим помочь. Я уже искал в Интернете и все еще не могу найти решение для этого.

1 ответ

Решение

Вам нужно отменить это для группы администраторов или любой другой группы:

<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....) 

Если существует глобальная запись, препятствующая чтению записи, запрос не вернет ее.

Другие вопросы по тегам