mail.message

** Подтипы сообщений в Odoo **

Большую часть времени в Odoo несколько пользователей работают над одной конкретной записью или документом, таким как заказ на продажу, счет-фактура, задачи и т. Д. В таких сценариях становится чрезвычайно важно отслеживать изменения, внесенные каждым лицом в этот документ. Это помогает руководству найти любую возможную причину в случае возникновения любой проблемы. Odoo предоставляет эту функцию в значительной степени с помощью интеграции OpenChatter.

Рассмотрим сценарий, в котором несколько пользователей работают в одном проекте. Различные параметры для этого проекта уже настроены, например, крайний срок, изначально запланированные часы и т. Д. Теперь один из пользователей изменяет значение запланированных часов. Поэтому теперь важно знать, какой пользователь изменил его и какое значение было предыдущим. Мы можем отследить это, создав подтипы сообщений в Odoo следующим образом.

Это должно быть определено в XML, который будет иметь следующий синтаксис.

<record id="mt_task_planned_hours" model="mail.message.subtype">
    <field name="name">Task planned hours changed</field>
    <field name="res_model">project.task</field>
    <field name="default" eval="True"/>
    <field name="description">Task planned hours changed</field>
</record>

Пользователи также могут иметь тип mail.message.subtype, который зависит от другого, чтобы действовать через поле отношения. Для запланированных часов у нас может быть следующий синтаксис для него.

<record id="mt_task_planned_hours_change" model="mail.message.subtype">
    <field name="name">Task planned hours changed</field>
    <field name="sequence">10</field>
    <field name="res_model">project.project</field>
    <field name="parent_id" eval="ref('mt_task_planned_hours')"/>
    <field name="relation_field">project_id</field>
</record>

Odoo предоставляет возможность отслеживать различные события, связанные с одним конкретным документом, с помощью атрибута _track. Если мы наследуем объект mail.thread, то с помощью атрибута _track пользователь может также отправлять уведомления, чтобы информировать других об изменениях, происходящих в этом конкретном документе. Синтаксис может быть следующим.

_track = {
    'planned_hours': {
    'project.mt_task_planned_hours': lambda self, cr, uid, obj, ctx=None: obj.planned_hours,
},

Чтобы отслеживать изменения, связанные с любым полем, Odoo предоставляет атрибут с именем track_visibility. Он должен быть определен на уровне поля, который имеет синтаксис ниже.

planned_hours = fields.Float(string = 'Initially Planned Hours', track_visibility='onchange', help='Estimated time to do the task, it is project manager when the task is in draft state.')

Следовательно, легко отслеживать изменения, сделанные до сих пор в отношении любого конкретного документа различными пользователями.