В современных бизнес-процессах мгновенный доступ к местоположению клиентов крайне важен, особенно для отделов продаж, служб доставки, сервисных инженеров и выездных специалистов. Записи о клиентах (партнерах) в 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 и отображает его адрес в новой вкладке браузера после нажатия кнопки Map Smart Button .

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