«Умные кнопки» — это мощная функция Odoo, позволяющая пользователям легко получать доступ к связанным записям или выполнять определенные действия непосредственно из формы модели. Они обеспечивают быстрый доступ к важной информации и оптимизируют рабочие процессы, улучшая пользовательский опыт. В этом блоге мы шаг за шагом рассмотрим, как добавить «умные кнопки» в Odoo 18.
Что такое «умные кнопки»?
«Умные» кнопки — это визуальные индикаторы, обычно представленные в виде кликабельных значков или кнопок, размещенных в заголовке формы. Они могут отображать количество связанных записей, например, количество счетов-фактур, связанных с клиентом, или количество задач, назначенных проекту. При нажатии они перенаправляют пользователей к соответствующим записям, упрощая управление связанными данными.

Добавление интеллектуальной кнопки в форму.
Чтобы добавить кнопку рядом с другими «умными» кнопками, необходимо унаследовать представление формы и поместить кнопку внутрь элемента
res.partner.form.inherit.my.blog
res.partner
Добавив эту запись и функцию action_get_vehicles_record в класс res.partner , вы создадите новую «умную» кнопку в форме партнера с иконкой такси.

Добавление имен и данных для «умной кнопки»
Далее вы можете указать имя кнопки и отобразить количество связанных записей. Для этого расширьте модель res.partner, добавив дополнительное поле и вычислительную функцию:
from odoo import models, fields
class ResPartner(models.Model):
_inherit = "res.partner"
vehicle_count = fields.Integer(string="Vehicles", compute='compute_vehicle_count', default=0)
def compute_vehicle_count(self):
for record in self:
record.vehicle_count = self.env['fleet.vehicle'].search_count([('driver_id', '=', self.id)])
Эта настройка позволяет «умной» кнопке отображать количество транспортных средств, связанных с партнером. Теперь обновите вашу XML-запись, добавив параметр vehicle_count в определение кнопки:
from odoo import models, fields
class ResPartner(models.Model):
_inherit = "res.partner"
vehicle_count = fields.Integer(string="Vehicles", compute='compute_vehicle_count', default=0)
def compute_vehicle_count(self):
for record in self:
record.vehicle_count = self.env['fleet.vehicle'].search_count([('driver_id', '=', self.id)])
Далее определите действие для интеллектуальной кнопки, изменив функцию action_get_vehicles_record. Эта функция отфильтрует представление, чтобы отобразить транспортные средства, связанные с партнером.
def action_get_vehicles_record(self):
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Vehicles',
'view_mode': 'tree',
'res_model': 'fleet.vehicle',
'domain': [('driver_id', '=', self.id)],
'context': "{'create': False}"
}
После привязки нескольких водителей транспортных средств к текущему партнеру в модуле «Автопарк», нажатие на интеллектуальную кнопку отобразит соответствующие записи о транспортных средствах.

Следуя этим инструкциям, вы сможете успешно интегрировать «умные» кнопки в ваше приложение Odoo 18, улучшив взаимодействие с пользователем и упростив управление данными. «Умные» кнопки обеспечивают быстрый доступ к связанным записям, сохраняя при этом интерфейс лаконичным и эффективным.