Контакт для отдела продаж / пользователя: собственная группа только для документов, но похоже, что группа администраторов также затронута
Я создаю модуль для 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....)
Если существует глобальная запись, препятствующая чтению записи, запрос не вернет ее.