Odoo ir.rule domain_force для роли группы зависит от состояния
У меня есть 3 групповые роли: пользователь, менеджер и логист. И нужно, чтобы пользователь и менеджер в состояниях "утверждено" и "to_approve_second" не имели права на запись.
все пользователи имеют право писать и есть ir.rules:
<field name="name">Follow Purchase Request</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">['|',('requested_by','=',user.id),
('message_partner_ids', 'in', [user.partner_id.id])]</field>
</record>
<record id="purchase_request_rule" model="ir.rule">
<field name="name">Purchase Request User</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
<field name="domain_force">[('requested_by','=',user.id)]</field>
</record>
<record id="purchase_request_manager_rule" model="ir.rule">
<field name="name">Purchase Request Manager</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
Я пытался добавить:
<field name="name">Purchase Request User Rule</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('state','in',('approved', 'to_approve_second'))]</field>
</record>
<field name="name">Purchase Request Manager Rule</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('state','in',('approved', 'to_approve_second'))]</field>
</record>
Но ничего не происходит. Пользователь и менеджер могут редактировать документ в состоянии "утверждено" и "to_approve_second". Что может быть не так?
1 ответ
Решение
Я нашел решение, которое работает!
<record id="purchase_request_followers_rule" model="ir.rule">
<field name="name">Follow Purchase Request</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">['|',('requested_by','=',user.id),
('message_partner_ids', 'in', [user.partner_id.id])]</field>
</record>
<record id="purchase_request_rule" model="ir.rule">
<field name="name">Purchase Request User</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('requested_by','=',user.id)]</field>
</record>
<record id="no_edit_rule" model="ir.rule">
<field name="name">No Edit Rule</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_user')])]"/>
<field name="perm_read" eval="False"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('requested_by','=',user.id),('state','not in',('approved', 'to_approve_second'))]
<record id="purchase_request_manager_rule" model="ir.rule">
<field name="name">Purchase Request Manager</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
<field name="perm_read" eval="False"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('assigned_to','=',user.id),('state','in',('to_approve_first', 'create_order'))]
<record id="manager_manager_rule" model="ir.rule">
<field name="name">Manager manager</field>
<field name="model_id" ref="model_purchase_request"/>
<field name="groups" eval="[(6,0, [ref('group_purchase_request_manager')])]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="domain_force">[('assigned_to','=',user.id)]</field>
</record>