Блог

Как добавить «умные» кнопки в Odoo 18

post-title

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

Что такое «умные кнопки»?

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

Как добавить «умные» кнопки в Odoo 18-cybrosys, изображение 1

Добавление интеллектуальной кнопки в форму.

Чтобы добавить кнопку рядом с другими «умными» кнопками, необходимо унаследовать представление формы и поместить кнопку внутрь элемента 

 с именем 'button_box'.

        res.partner.form.inherit.my.blog
        res.partner
        
        
            
 

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

Как добавить «умные» кнопки в Odoo 18-cybrosys, изображение 2

Добавление имен и данных для «умной кнопки»

Далее вы можете указать имя кнопки и отобразить количество связанных записей. Для этого расширьте модель 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-cybrosys, изображение 3

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