Wprowadzenie
W Odoo modele określają strukturę danych i sposób ich zapisu w bazie. Każdy element biznesowy — zamówienie sprzedaży, faktura czy lead — ma swoją reprezentację w modelu, który decyduje o polach, relacjach i przechowywanych informacjach.
Znajomość modeli jest kluczowa zarówno dla konsultantów funkcjonalnych, jak i programistów. To od nich zależy logika biznesowa, spójność danych i to, jakie możliwości raportowe oraz automatyzacje będą dostępne w systemie.
Ten tekst koncentruje się na modelu crm.lead, który napędza pipeline sprzedażowy w CRM Odoo. Bez względu na to, czy tworzysz moduły niestandardowe, łączysz systemy zewnętrzne czy konfigurujesz proces sprzedaży — prędzej czy później trafisz na ten model.
Czym jest model crm.lead
Model crm.lead reprezentuje zarówno wstępne zapytania (leady), jak i kwalifikowane okazje sprzedażowe. To jednolite miejsce przechowywania danych pipeline'u — od pierwszego kontaktu aż po konwersję klienta.
Model jest używany przede wszystkim przez moduł CRM, ale korzystają z niego też moduły marketingowe i te odpowiedzialne za stronę WWW. Gdy ktoś wypełni formularz kontaktowy albo sprzedawca utworzy okazję, rekord crm.lead pojawia się w systemie.
Funkcjonalność modelu rozszerzana jest przez mechanizm dziedziczenia modeli Odoo. Podstawowy moduł CRM definiuje szkielet, a dodatkowe moduły dopinają nowe pola i zachowania bez duplikowania logiki.
Kluczowe pola w modelu
Poniżej znajdziesz najważniejsze pola modelu crm.lead — to one decydują o tym, jak prowadzić i raportować proces sprzedaży.
1. name
Typ: Char. Nazwa rekordu — tytuł leadu lub okazji. To główny identyfikator wyświetlany w listach i kanbanach. Może to być np. „Zapytanie ze strony” lub „Kontrakt z Firma X”.
2. contact_name
Typ: Char. Imię i nazwisko osoby kontaktowej, gdy lead nie jest jeszcze powiązany z res.partner. Przy konwersji pole to zwykle trafia do utworzonego partnera.
3. email_from
Typ: Char. Główny adres e‑mail kontaktu. Wykorzystywany do komunikacji i deduplikacji leadów — często pierwszy punkt identyfikacji.
4. phone
Typ: Char. Numer telefonu stacjonarnego lub główny numer kontaktowy, widoczny na formularzu i używany przy logowaniu połączeń.
5. mobile
Typ: Char. Numer telefonu komórkowego — przydatny do SMS-ów lub pilnych powiadomień, gdy różni się od telefonu stacjonarnego.
6. partner_id
Typ: Many2one (res.partner). Powiązanie z kontaktem lub firmą po kwalifikacji. Przed konwersją pole jest puste; po konwersji wskazuje utworzonego lub dopasowanego partnera.
7. user_id
Typ: Many2one (res.users). Opiekun sprzedaży przypisany do leadu. Potrzebny do raportów, planowania aktywności i wyświetlania „Moich okazji”.
8. team_id
Typ: Many2one (crm.team). Zespół sprzedażowy odpowiedzialny za lead. Umożliwia rotację przydziałów i raportowanie po zespołach.
9. stage_id
Typ: Many2one (crm.stage). Aktualny etap w lejku sprzedażowym — np. Nowy, Kwalifikacja, Oferta, Negocjacje, Wygrany, Przegrany. Zmiany etapów uruchamiają automatyzacje i wpływają na raporty.
10. type
Typ: Selection. Określa czy rekord jest Leadem czy Opportunity. Lead to etap wstępny, Opportunity to kwalifikowana szansa z przewidywanym przychodem — to wpływa na dostępne widoki i etapy.
11. expected_revenue
Typ: Float. Szacowany przychód przy wygranej okazji. Służy do prognozowania wartości pipeline’u i raportów finansowych; często wyliczany z kwoty i prawdopodobieństwa.
12. probability
Typ: Float. Prawdopodobieństwo wygranej w procentach (0–100). Używane przy ważonych kalkulacjach pipeline’u — może być ustawiane ręcznie lub zależeć od etapu.
13. company_id
Typ: Many2one (res.company). W konfiguracjach wielofirmowych wskazuje właściciela rekordu. Ma wpływ na widoczność i walutę.
14. description
Typ: Text. Miejsce na notatki — kontekst rozmów, podsumowania spotkań, ważne informacje dla handlowców.
15. create_date
Typ: Datetime. Data i czas utworzenia rekordu, zarządzane automatycznie. Przydatne do analiz wieku leada i czasu do konwersji.
16. write_date
Typ: Datetime. Data ostatniej modyfikacji, również ustawiana automatycznie — pomocna przy śledzeniu aktualizacji.
17. date_open
Typ: Datetime. Kiedy lead został przypisany do użytkownika — używane do mierzenia czasu pierwszego kontaktu i szybkości reakcji.
18. date_closed
Typ: Datetime. Data zamknięcia (wygrana/przegrana). Ustawiana przy przeniesieniu do zamkniętego etapu; ważna dla analizy długości cyklu sprzedażowego.
19. date_deadline
Typ: Date. Oczekiwana data zamknięcia transakcji — pomaga w prognozach i planowaniu działań.
20. active
Typ: Boolean. Flaga archiwizacji. Gdy False, rekord jest ukrywany zamiast usuwany — często stosowane przy leadach odrzuconych lub scalonych.
21. street, street2, city, zip
Typ: Char. Pola adresowe używane przed konwersją i kopiowane do partnera po zamianie leada w kontakt.
22. country_id
Typ: Many2one (res.country). Kraj kontaktu — przydatne do raportów regionalnych i formatowania adresów.
23. state_id
Typ: Many2one (res.country.state). Województwo/region; domena filtrowana przez kraj, użyteczne przy segmentacji terytorialnej.
24. source_id
Typ: Many2one (utm.source). Źródło leada — strona WWW, polecenie, kampania itp. Kluczowe dla atrybucji marketingowej.
25. campaign_id
Typ: Many2one (utm.campaign). Powiązana kampania marketingowa — niezbędne do liczenia ROI i śledzenia efektywności akcji email/ads.
26. activity_ids
Typ: One2many (mail.activity). Zaplanowane działania — zadania, połączenia i spotkania przypisane do leada. Napędza widget aktywności i przypomnienia.
27. color
Typ: Integer. Indeks koloru widoczny w kanbanie/listach — prosty sposób na wizualne grupowanie priorytetów lub źródeł.
28. message_ids
Typ: One2many (mail.message). Chatter — notatki wewnętrzne, emaile i historia aktywności, dzięki czemu każdy ma pełny kontekst komunikacji.
Jak model wykorzystuje się w procesach biznesowych
1. Przechwytywanie leadów z formularza WWW
Gdy ktoś w formularzu na stronie firmowej wyśle zapytanie, Odoo tworzy crm.lead, wypełniając pola typu email_from, contact_name i description. Rekord trafia potem do pipeline’u, skąd zespół sprzedaży podejmuje działania.
2. Kwalifikacja i konwersja leada
Handlowcy przesuwają leady przez etapy lejka. Po kwalifikacji zmieniają typ na Opportunity i uzupełniają oczekiwany przychód. Przy zamknięciu system tworzy lub łączy partnera i opcjonalnie zamówienie sprzedaży.
3. Raportowanie pipeline'u
Kierownicy analizują dane crm.lead, aby ocenić wartość lejka. Oczekiwany przychód, prawdopodobieństwo i etapy służą do wyliczeń ważonego pipeline’u; filtrowanie po user_id czy team_id pokazuje wyniki poszczególnych sprzedawców i zespołów.
4. Atrybucja działań marketingowych
Pol pola source_id i campaign_id łączą leady z kampaniami marketingowymi. UTM-y z formularzy wypełniają te pola, co pozwala na ocenę skuteczności poszczególnych kanałów.
5. Zarządzanie aktywnościami i follow‑up
Sprzedawcy planują zadania i spotkania powiązane z leadami. Pola activity_ids i activity_date_deadline sterują widocznym „następnym zadaniem” i przypomnieniami, co pomaga utrzymać dyscyplinę follow‑up.
Jak programiści rozszerzają ten model
Programiści mają kilka wzorców rozszerzania crm.lead; podstawowym narzędziem jest dziedziczenie modeli Odoo.
Dziedziczenie modelu
W module użyj _inherit = 'crm.lead', by dodać pola, nadpisać metody lub wprowadzić ograniczenia. Dzięki temu zmiany pozostają w osobnym module, ułatwiając aktualizacje i utrzymanie.
Dodawanie pól
Nowe pola definiuje się w modelu dziedziczącym — wybieraj właściwy typ (Char, Many2one, Boolean, Integer, Text, Selection). Częste rozszerzenia to dodatkowe źródła leadów, zainteresowanie produktami czy branża. W środowisku wielofirmowym warto rozważyć pola zależne od company_id.
Rozszerzenia w Pythonie
Możesz nadpisać metody takie jak create, write czy action_convert, pamiętając o wywołaniu super(). Dekoratory Odoo (@api.depends, @api.onchange) ułatwiają pola obliczane i zachowanie UI. Uważaj przy logice zmiany etapów i konwersji.
Odoo Studio
Odoo Studio pozwala dodać pola bez kodu — dobre na szybkie modyfikacje. Jeśli jednak potrzebujesz skomplikowanej logiki, automatyzacji etapów lub przyszłych aktualizacji, moduł pisany ręcznie jest bardziej przewidywalny.
Dobre praktyki
- Dopasuj etapy do procesu sprzedaży — możesz mieć oddzielne sekwencje etapów dla leadów i dla okazji, jeśli to uzasadnione.
- Przechwytywanie UTM-ów: ustaw source_id i campaign_id z parametrów UTM z formularza WWW, aby atrybucja marketingowa działała poprawnie.
- Wykorzystaj team_id do rotacji przypisań (round-robin) i zarządzania terytoriami; reguły przydziału definiuj w crm.team.
- Przy integracjach API korzystaj z XML-RPC lub JSON-RPC — model crm.lead jest dostępny i warto mapować identyfikatory zewnętrzne na własne pole referencyjne (np. ref) dla synchronizacji.
- Dla pól niestandardowych stosuj prefiks
x_lub prefiks modułu, aby uniknąć konfliktów z przyszłymi wersjami Odoo.
Najczęstsze błędy
- Tworzenie duplikatów zamiast sprawdzenia email_from — przed tworzeniem sprawdź znormalizowany email (email_normalized) lub zastosuj logikę deduplikacji.
- Mylenie typu (Lead vs Opportunity) z stage_id — typ mówi o naturze rekordu, a stage_id o miejscu w lejku; oba wpływają na raporty i zachowanie.
- Zapominanie o user_id lub team_id — nieprzypisane leady łatwo się gubią. Konfiguruj automatyczne przypisania albo wymuszaj przypisanie ręczne.
- Nadpisywanie logiki konwersji bez wywołania super() — metoda action_convert wykonuje istotne operacje; rozszerzaj ją zamiast całkowicie zastępować.
- Dodawanie wymaganych pól bez wartości domyślnych — przy instalacji modułu istniejące rekordy mogą przejść walidację i spowodować błędy.
Podsumowanie
Model crm.lead to serce CRM w Odoo — przechowuje leady i okazje oraz steruje pipeline’em sprzedażowym. Dobra znajomość jego pól i sposobu rozszerzania ułatwi konfigurację, integrację i personalizację systemu.
Zarówno konsultant, jak i programista zyskują na opanowaniu crm.lead: szybciej wdrożą procesy sprzedażowe, unikną błędów i przygotują system na skalowanie.
Potrzebujesz pomocy przy wdrożeniu Odoo?
Dasolo wspiera firmy we wdrożeniach, dostosowaniach i optymalizacji Odoo. Specjalizujemy się w integracjach API i rozwoju modułów, a nasze doświadczenie obejmuje architekturę danych i kluczowe modele, takie jak crm.lead.
Jeśli potrzebujesz wsparcia przy wdrożeniu Odoo, tworzeniu modułów CRM lub integracjach — chętnie pomożemy. Umów demo by omówić Twój projekt.