Введение
В Odoo модель — это схема для хранения бизнес‑данных в базе: каждая сущность — от заказов до счетов и лидов — описывается моделью, которая определяет поля, типы и взаимосвязи записей.
Понимание моделей важно и для разработчиков, и для функциональных консультантов: именно модели формируют каркас данных Odoo, задают поля, связи и встроенную бизнес‑логику, на которой строятся все приложения.
В этой заметке мы разбираем модель crm.lead — ту, которая отвечает за воронку продаж в CRM. Если вы настраиваете процессы продаж, пишете интеграции или делаете собственные модули, вы неизбежно столкнётесь с ней.
Что такое модель crm.lead
Модель crm.lead хранит лиды и возможности — одну общую структуру для заявок на ранней стадии и квалифицированных сделок. Она служит «центром учета» для всех записей, связанных с продажами в CRM.
Модель используется главным образом модулем CRM, но на неё ссылаются и расширяют другие компоненты: продажи, маркетинг, сайт. Любая форма на сайте, ручная заявка от менеджера или конвертация лида в клиента — все эти действия отражаются в crm.lead.
В Odoo функциональность часто добавляют через наследование моделей: базовый crm.lead задаёт ядро, а дополнительные модули (например, enrichment или веб‑интеграции) дополняют поля и поведение, не дублируя основную логику.
Ключевые поля модели
Ниже перечислены ключевые поля crm.lead — знание их назначения поможет управлять лидами и строить корректные отчёты и процессы.
1. name
Тип: Char. Заголовок записи — основное название, которое видно в списках и канбан‑картах. Для входящего запроса это может быть «Заявка с формы», для сделки — конкретное наименование сделки или клиента.
2. contact_name
Тип: Char. Имя контактного лица, когда лид ещё не привязан к сущности res.partner. При конвертации часто копируется в создаваемый партнёр.
3. email_from
Тип: Char. Основной электронный адрес лида — ключ для переписки, идентификации и дедупликации записей до конвертации.
4. phone
Тип: Char. Основной телефон для звонков, логирования вызовов и планирования контактов.
5. mobile
Тип: Char. Мобильный номер — удобно для SMS‑уведомлений или срочных звонков, если отличается от основного телефона.
6. partner_id
Тип: Many2one (res.partner). Ссылка на контакт/компанию после квалификации. До конвертации поле пустое, после — указывает на созданную или найденную запись партнёра.
7. user_id
Тип: Many2one (res.users). Менеджер, ответственный за лид — влияет на назначение, отчётность и расписание активностей (вид «Мои возможности» и дашборды).
8. team_id
Тип: Many2one (crm.team). Команда продаж — служит для распределения по командах, круговой раздачи лидов и групповой отчетности.
9. stage_id
Тип: Many2one (crm.stage). Текущая стадия воронки: New, Qualified, Proposal, Negotiation, Won, Lost и т.д. Переходы по стадиям активируют автоматизации и меняют отчёты.
10. type
Тип: Selection. Показывает, является ли запись лидом или возможностью. Лид — ранняя стадия, возможность — квалифицированная сделка с ожидаемым доходом; от этого зависят доступные представления и стадии.
11. expected_revenue
Тип: Float. Ожидаемый доход при закрытии сделки — основной показатель для прогноза и сводной стоимости воронки; часто рассчитывается через вероятность и сумму сделки.
12. probability
Тип: Float. Вероятность выигрыша в процентах (0–100) — используется для взвешенных расчётов в прогнозах; может заполняться вручную или браться из стадии.
13. company_id
Тип: Many2one (res.company). В многокомпанентных системах указывает, к какой компании относится лид — влияет на видимость записей и валюту.
14. description
Тип: Text. Описание и заметки по лиду: стенограмма разговоров, контекст для менеджера, резюме встреч и внутренняя информация.
15. create_date
Тип: Datetime. Дата и время создания записи — автоматически ведётся системой, полезно для анализа «возраста» лида и времени до конверсии.
16. write_date
Тип: Datetime. Дата и время последнего изменения — помогает понять, когда последний раз обновляли лид.
17. date_open
Тип: Datetime. Время первого назначения менеджеру (заполнения user_id) — используется для оценки скорости первого контакта.
18. date_closed
Тип: Datetime. Когда лид был закрыт (выигран или потерян). Служит для расчёта длительности цикла продаж и анализа конверсий.
19. date_deadline
Тип: Date. Ожидаемая дата закрытия сделки — пригодна для планирования, прогнозов и приоритизации задач продавца.
20. active
Тип: Boolean. Флаг «архивирован/активен». При false запись скрывается по умолчанию — потерянные или объединённые лиды обычно архивируют, а не удаляют.
21. street, street2, city, zip
Тип: Char. Поля адреса — сохраняются до конвертации и копируются в партнёра при создании клиента.
22. country_id
Тип: Many2one (res.country). Страна — важна для региональной отчётности и форматирования адресов; фильтрация по странам помогает управлять территориями.
23. state_id
Тип: Many2one (res.country.state). Штат/регион — обычно ограничивается доменом страны и служит для сегментации по регионам.
24. source_id
Тип: Many2one (utm.source). Источник лида — сайт, рекомендация, кампания и т.п.; ключевой элемент для атрибуции маркетинга.
25. campaign_id
Тип: Many2one (utm.campaign). Маркетинговая кампания — связывает лид с конкретной рассылкой или рекламой для подсчёта ROI.
26. activity_ids
Тип: One2many (mail.activity). Запланированные активности — задачи, звонки, встречи; движок напоминаний и виджет активности опираются на эти записи.
27. color
Тип: Integer. Индекс цвета для канбана и списков — визуальная подсказка при сортировке по приоритету или кастомным критериям.
28. message_ids
Тип: One2many (mail.message). Чат/история коммуникаций — внутренние заметки, письма и история активности хранятся здесь, чтобы у менеджеров был полный контекст.
Как модель применяется в бизнес-процессах
1. Захват лидов с сайта
Когда посетитель отправляет форму на сайте, система создаёт crm.lead: в поля email_from, contact_name и description записываются данные формы, и лид попадает в воронку для обработки командой продаж.
2. Квалификация и конвертация лидов
Менеджеры переводят лиды по стадиям: при квалификации тип меняется на Opportunity и указывают expected_revenue; при выигрыше лид конвертируется — создаётся или связывается res.partner и при необходимости создаётся продажа.
3. Отчёты по воронке
Руководители используют данные crm.lead для отчётов: expected_revenue, probability и stage формируют взвешенную картину воронки; фильтры по user_id и team_id позволяют оценить результаты менеджеров и команд.
4. Атрибуция маркетинга
Поля source_id и campaign_id связывают лиды с маркетинговыми активностями. UTM‑метки из рекламных кампаний или рассылок автоматически заполняют эти поля — маркетинг получает метрики эффективности кампаний.
5. Управление активностями и follow‑up
Менеджеры планируют задачи на лидах: activity_ids хранит звонки, встречи и задачи, а activity_date_deadline показывает «следующую активность» в списке и напоминает вовремя связаться с клиентом.
Как разработчики расширяют эту модель
Разработчики расширяют crm.lead несколькими способами, главное — наследование моделей в Odoo.
Наследование модели
В коде используют _inherit = 'crm.lead' чтобы дополнять модель: добавлять поля, переопределять методы и вводить ограничения. Наследующий модуль хранит изменения отдельно, что облегчает обновления.
Добавление полей
В наследнике объявляют новые поля нужного типа: Char, Many2one, Boolean, Integer, Text, Selection. Частые расширения — дополнительные источники лида, интересующие продукты или отрасль; для мультикомпаний учитывайте company_dependent поля.
Python‑расширения
Переопределяйте create, write или action_convert, чтобы внедрить логику, вызывая super() для базовых операций. Будьте внимательны со сменой стадий и логикой конвертации; декораторы Odoo (@api.depends, @api.onchange) помогают с вычисляемыми полями и поведением в интерфейсе.
Odoo Studio
Odoo Studio позволяет добавить поля без кода — удобно для простых кастомизаций типа выпадающего списка или текстового поля. Для сложной логики, автоматики стадий или долгосрочной поддержки лучше писать модуль.
Рекомендуемые практики
- Приведите стадии в соответствие с вашим процессом продаж: при необходимости используйте разные последовательности стадий для лидов и возможностей.
- Настраивайте заполнение source_id и campaign_id из UTM‑меток форм сайта — это даёт корректную атрибуцию маркетинга.
- Используйте team_id для круговой раздачи лидов или территориального распределения — правила назначения можно задать в crm.team.
- При интеграции по API используйте XML‑RPC или JSON‑RPC: модель crm.lead доступна полностью. Для синхронизации внешних CRM храните внешний ID в отдельном поле, например ref, чтобы корректно маппить записи.
- Для пользовательских полей используйте префикс x_ или свой модульный префикс, чтобы избежать конфликтов с будущими обновлениями Odoo.
Типичные ошибки
- Создание дубликатов лидов вместо поиска по email_from. Перед созданием проверяйте email (например, email_normalized) или выполняйте дедупликацию.
- Путаница между type (Lead vs Opportunity) и stage_id. type определяет категорию записи, а stage — позицию в воронке — оба параметра важны для корректных отчётов.
- Забывчивость при назначении user_id или team_id. Неназначенные лиды теряются — настраивайте автоматическое распределение или контролируйте ручное присвоение.
- Переопределение логики конвертации без вызова super(). action_convert выполняет важные операции — расширяйте её, но не заменяйте целиком, иначе потеряете базовую функциональность.
- Добавление обязательных пользовательских полей без значений по умолчанию. При обновлении модуля существующие записи могут не пройти валидацию — задавайте разумные дефолты или делайте поле необязательным.
Вывод
Модель crm.lead — ядро CRM в Odoo: она хранит лиды и возможности и управляет воронкой продаж. Знание её полей и способов расширения позволит правильно настраивать, дорабатывать и интегрировать CRM‑функциональность.
Будь вы функциональным консультантом, который транслирует процесс продаж в систему, или разработчиком, создающим кастомные модули, хорошее понимание crm.lead сэкономит время и убережёт от типичных ошибок.
Нужна помощь с внедрением Odoo?
Компания Dasolo помогает внедрять, дорабатывать и оптимизировать Odoo: мы специализируемся на интеграциях по API и разработке модулей, глубоко знаем архитектуру данных Odoo и модели вроде crm.lead.
Если вам нужна помощь с внедрением Odoo, разработкой CRM‑модулей или интеграциями — напишите нам, мы поможем спроектировать и реализовать решение. Записаться на демонстрацию чтобы обсудить ваш проект.