Блог

Как открыть адрес клиента в Google Maps из Odoo 19

post-title

В современных бизнес-процессах мгновенный доступ к местоположению клиентов крайне важен, особенно для отделов продаж, служб доставки, сервисных инженеров и выездных специалистов. Записи о клиентах (партнерах) в Odoo 19 уже содержат исчерпывающие данные об адресах, включая улицу, город, штат, почтовый индекс и страну. Тем не менее, Odoo по умолчанию не предлагает прямого способа открытия этих адресов в картографической программе. Из-за этого пользователи часто вручную копируют и вставляют адрес в браузер или картографическое приложение. Хотя это может показаться незначительным, частое выполнение этой операции в течение дня делает ее неэффективной. Простое решение в один клик может существенно повысить производительность и удобство использования.

В этом блоге мы обсудим, как интегрировать Google Maps с Odoo 19, чтобы пользователи могли использовать «умную кнопку» в форме клиента для прямого доступа к адресу клиента в Google Maps. Это решение работает даже при частичном заполнении адреса, является легковесным и не требует внешнего ключа API .

Это простой пример того, как добавить интеллектуальную кнопку Google Maps в форму клиента Odoo 19. Адрес клиента откроется в новой вкладке браузера в Google Maps, как только пользователь нажмет кнопку.

Шаг 1: Код на Python для открытия Google Maps

Добавьте следующий код в созданный или обновленный вами пользовательский модуль.

Файл: models/res_partner.py

# -*- coding: utf-8 -*-
from odoo import models
from urllib.parse import quote_plus

class ResPartner(models.Model):
    _inherit = 'res.partner'
    def action_open_google_map(self):
        """
        Opens Google Maps using the partner's address.
        Triggered from Smart Button.
        """
        self.ensure_one()
        address_parts = filter(None, [
            self.street,
            self.city,
            self.state_id.name if self.state_id else None,
            self.zip,
            self.country_id.name if self.country_id else None,
        ])
        address = quote_plus(', '.join(address_parts))
        url = f"https://www.google.com/maps/search/?api=1&query={address}"
        return {
            'type': 'ir.actions.act_url',
            'url': url,
            'target': 'new',
        }

Как это работает

  • Функция ensure_one() гарантирует, что действие будет выполнено для одной записи клиента.
  • Функция Filter(None,...) автоматически игнорирует пустые адресные записи. Функция quote_plus() надежно шифрует адрес для использования в URL-адресе.
  • Карта открывается в новой вкладке браузера при нажатии на ir.actions.act_url , динамически генерируемый URL-адрес поиска Google Maps.

Этот метод предотвращает ошибки, вызванные специальными символами или пробелами, и гарантирует точный поиск местоположения.

Шаг 2: Добавьте интеллектуальную кнопку в форму для клиента.

Затем форма для партнера обновляется с помощью интеллектуальной кнопки. XML-код выглядит следующим образом:

Файл: views/res_partner_view.xml



    
        res.partner.form.inherit.google.map
        res.partner
        
        
            
            
                
            
        
    

Этот XML-файл добавляет «умную кнопку» в раздел button_box и наследует базовый интерфейс формы клиента. Элемент type="object" связывает кнопку с методом Python, гарантируя, что операция с Google Maps будет выполнена при каждом нажатии на кнопку. Используя класс oe_stat_button и иконку карты Font Awesome, кнопка сохраняет внешний вид стандартной «умной кнопки» Odoo.

На этом изображении показана форма обратной связи с клиентами Odoo 19 , где кнопка Map Smart Button расположена в заголовке для удобного доступа.

Как открыть адрес клиента в Google Maps из Odoo 19-cybrosys, изображение 1

Система перенаправляет пользователя на Google Maps и отображает его адрес в новой вкладке браузера после нажатия кнопки Map Smart Button .

Как открыть адрес клиента в Google Maps из Odoo 19-cybrosys, изображение 2

Возможность напрямую получить адрес клиента из Odoo 19 через Google Maps — это небольшое, но значительное улучшение. Добавив простую «умную кнопку» в форму клиента, пользователи могут мгновенно проложить маршрут до местоположения клиента, не копируя и не ища адреса вручную. Такой подход повышает производительность, упрощает полевые операции и идеально дополняет встроенный пользовательский интерфейс Odoo. Поскольку этот метод является легковесным, простым в обслуживании и не требует внешних API-ключей, он подходит для реальных внедрений Odoo. С минимальной настройкой на Python и XML компании могут ускорить ежедневные задачи навигации и повысить общую удобность использования Odoo 19.