Introduction
Dans Odoo, les modèles déterminent la façon dont les données sont organisées et conservées. Chaque élément métier — commande, facture, prospect — est représenté par un modèle qui structure, valide et relie ces informations dans la base de données.
Maîtriser les modèles Odoo est indispensable pour les consultants fonctionnels comme pour les développeurs. Ce sont eux qui définissent les champs, les liens entre objets et la logique métier sur laquelle reposent les rapports et les automatisations.
Ici, nous nous concentrons sur crm.lead, le modèle qui alimente le pipeline commercial dans le module CRM. Que vous développiez des modules sur mesure, synchronisiez un CRM externe ou configuriez vos processus de vente, vous rencontrerez ce modèle.
Qu’est-ce que le modèle crm.lead
Le modèle crm.lead représente les prospects et les opportunités. C’est le point central où sont consignées les informations du pipeline, couvrant aussi bien les premiers contacts que les affaires qualifiées.
Le CRM l’utilise directement, et plusieurs autres apps (marketing, site web, modules tiers) viennent étendre ou référencer crm.lead. Remplissage de formulaire, création d’opportunité par un commercial ou transformation d’un prospect en client : tout passe par ce modèle.
Fonctionnellement, crm.lead s’appuie sur l’héritage de modèles d’Odoo : le module CRM apporte la structure de base et des modules complémentaires ajoutent champs et comportements (enrichissement, intégration web, etc.) sans réinventer le cœur.
Champs clés du modèle
Voici les champs principaux à connaître pour manipuler correctement des prospects et opportunités dans Odoo.
1. name
Type : Char. Libellé du prospect/opportunité affiché dans les vues liste et kanban. Sert d’identifiant lisible pour l’équipe commerciale (ex. « Demande site web », « Affaire X - Société Y »).
2. contact_name
Type : Char. Nom de la personne de contact quand aucun partenaire n’est encore lié. Lors de la conversion, cette information est généralement reportée vers res.partner.
3. email_from
Type : Char. Adresse e‑mail principale du prospect, utilisée pour les échanges pré‑conversion et comme critère de déduplication.
4. phone
Type : Char. Téléphone principal affiché sur le formulaire pour journaliser les appels et planifier des relances.
5. mobile
Type : Char. Portable du contact, utile pour SMS ou actions urgentes distinctes du numéro fixe.
6. partner_id
Type : Many2one (res.partner). Lien vers le contact ou la société une fois le prospect qualifié/converti. Avant conversion, champ vide ; après, il référence le partenaire créé ou retrouvé.
7. user_id
Type : Many2one (res.users). Commercial responsable du lead, impactant l’assignation, les rapports et la planification d’activités.
8. team_id
Type : Many2one (crm.team). Équipe commerciale en charge, utilisée pour la distribution en round‑robin et les analytics par équipe.
9. stage_id
Type : Many2one (crm.stage). Stade actuel du pipeline (Nouveau, Qualifié, Proposition, Négociation, Gagné, Perdu). Les transitions déclenchent des actions et alimentent les rapports.
10. type
Type : Selection. Indique si l’enregistrement est un lead ou une opportunité — les leads représentent les premiers contacts, les opportunités sont qualifiées et portent un montant attendu.
11. expected_revenue
Type : Float. Chiffre d’affaires anticipé en cas de gain, utilisé pour les prévisions et le calcul de la valeur du pipeline pondéré.
12. probability
Type : Float. Pourcentage de probabilité de réussite (0–100) servant aux calculs pondérés ; peut être manuel ou dérivé du stage.
13. company_id
Type : Many2one (res.company). En environnement multi‑sociétés, indique la société propriétaire du lead, influençant visibilité et devise.
14. description
Type : Text. Notes internes, compte‑rendu d’échanges ou contexte utile pour le suivi commercial.
15. create_date
Type : Datetime. Date/heure de création automatique — utile pour analyser l’ancienneté des leads et les délais de traitement.
16. write_date
Type : Datetime. Date/heure de dernière modification, pour savoir quand le lead a été mis à jour pour la dernière fois.
17. date_open
Type : Datetime. Moment où le lead a été assigné à un utilisateur ; indicateur de réactivité pour le premier contact.
18. date_closed
Type : Datetime. Date de clôture (gagné/perdu) utilisée pour mesurer la durée du cycle de vente.
19. date_deadline
Type : Date. Date prévue de clôture, pratique pour organiser le plan d’actions et les prévisions.
20. active
Type : Boolean. Drapeau d’archivage : false masque l’enregistrement sans le supprimer — pratique pour conserver l’historique.
21. street, street2, city, zip
Type : Char. Champs d’adresse, copiés vers le partenaire lors de la conversion si nécessaires.
22. country_id
Type : Many2one (res.country). Pays du contact, utile pour segmenter les territoires et format d’adresse.
23. state_id
Type : Many2one (res.country.state). Région/province ; la liste est filtrée par pays pour cohérence.
24. source_id
Type : Many2one (utm.source). Origine du lead (site web, parrainage, campagne…), essentiel pour l’attribution marketing.
25. campaign_id
Type : Many2one (utm.campaign). Campagne marketing associée pour analyser le ROI des actions publicitaires ou emailing.
26. activity_ids
Type : One2many (mail.activity). Activités planifiées (appels, tâches, réunions) attachées au lead pour piloter le suivi.
27. color
Type : Integer. Index de couleur affiché en kanban/listes pour repérer visuellement priorités ou segments.
28. message_ids
Type : One2many (mail.message). Fil de discussion (chatter) regroupant emails, notes et historique des interactions.
Usage du modèle dans les processus métier
1. Capture des leads depuis le site web
Un formulaire de contact sur votre site Odoo crée automatiquement un crm.lead : nom, e‑mail et message alimentent les champs correspondants, puis le prospect apparaît dans le pipeline pour que l’équipe commerciale le traite.
2. Qualification et conversion des leads
Les commerciaux font évoluer le lead dans les étapes du pipeline. À la qualification on bascule le type en Opportunité et on renseigne le chiffre attendu ; à la conclusion, le prospect est converti en res.partner et, si besoin, une commande peut être créée.
3. Reporting du pipeline commercial
Les managers s’appuient sur les données crm.lead pour suivre la valeur du pipeline (expected_revenue, probability, stage), avec des vues filtrées par commercial et équipe pour mesurer la performance.
4. Attribution marketing
Les champs source_id et campaign_id relient les leads aux campagnes (UTM, emailings, pubs). Le marketing se sert de ces données pour mesurer l’efficacité et le retour sur investissement.
5. Gestion des activités et relances
Les commerciaux planifient tâches, appels et rendez‑vous via activity_ids. Les échéances d’activité alimentent les colonnes « Prochaine activité » et aident à ne pas laisser de lead sans suivi.
Comment les développeurs étendent ce modèle
Les développeurs disposent de plusieurs méthodes pour étendre crm.lead, l’héritage de modèles étant la technique principale.
Héritage de modèle
Déclarez _inherit = 'crm.lead' dans votre module pour ajouter champs, redéfinir des méthodes ou ajouter des contraintes. Ce mécanisme permet d’empiler des extensions sans toucher au cœur, facilitant les mises à jour.
Ajout de champs
Définissez de nouveaux champs dans le modèle hérité en choisissant le type adapté (Char, Many2one, Boolean, Integer, Text, Selection). Exemples fréquents : source commerciale interne, produit d’intérêt, secteur d’activité. Pensez aux champs dépendant de la société en multi‑company.
Extensions en Python
Surchagez les méthodes create, write ou action_convert pour intégrer de la logique métier, en appelant super() pour préserver le comportement standard. Utilisez les décorateurs Odoo (@api.depends, @api.onchange) pour champs calculés et interactions UI.
Odoo Studio
Odoo Studio permet d’ajouter rapidement des champs sans coder — pratique pour des personnalisations légères. Pour des workflows complexes ou des évolutions pérennes, préférer un module sur mesure pour une maintenance maîtrisée.
Bonnes pratiques
- Adaptez les étapes (stages) à votre processus commercial. Vous pouvez séparer les séquences pour les leads et les opportunités si nécessaire.
- Capturez source_id et campaign_id via les paramètres UTM des formulaires web pour assurer une attribution marketing fiable.
- Utilisez team_id pour organiser l’assignation automatique (round‑robin) et gérer les territoires depuis crm.team.
- Pour les intégrations API, privilégiez XML‑RPC ou JSON‑RPC : crm.lead est accessible et vous permettra de mapper les identifiants externes vers un champ dédié (ex. ref) pour synchronisation.
- Préfixez vos champs personnalisés (x_ ou with module prefix) pour éviter les collisions lors de mises à jour ultérieures d’Odoo.
Erreurs courantes
- Créer des doublons sans vérifier l’e‑mail. Avant de créer un lead, normalisez et vérifiez
email_from(ou utilisezemail_normalized) pour éviter les enregistrements en double. - Confondre type et stage_id. Le type (Lead vs Opportunity) détermine le statut global du record, tandis que stage_id positionne l’affaire dans l’entonnoir ; les deux sont importants pour le suivi et les rapports.
- Ne pas renseigner user_id ou team_id. Les leads non assignés tombent souvent entre les mailles du filet : configurez des règles d’assignation automatiques ou imposez une affectation manuelle.
- Redéfinir la logique de conversion sans appeler super(). L’action de conversion réalise plusieurs opérations cruciales ; étendez‑la, mais conservez l’appel au parent pour éviter les régressions.
- Ajouter des champs requis sans valeur par défaut. Lors d’un déploiement, les enregistrements existants risquent d’échouer la validation si un champ obligatoire n’est pas initialisé.
Conclusion
Le modèle crm.lead est le pilier du module CRM d’Odoo : il centralise prospects et opportunités et pilote le pipeline commercial. Bien le comprendre facilite la configuration, la personnalisation et les intégrations.
Que vous cartographiez des processus commerciaux comme consultant ou développiez des modules CRM, une bonne connaissance de crm.lead évite des heures perdues et des erreurs courantes.
Besoin d’aide pour votre implémentation Odoo ?
Dasolo accompagne les entreprises dans l’implémentation, la personnalisation et l’optimisation d’Odoo. Nous sommes spécialisés en intégrations API et en développement, avec une solide expérience des modèles Odoo comme crm.lead.
Si vous avez besoin d’aide pour votre implémentation Odoo, la création de modules CRM sur mesure ou la synchronisation avec d’autres systèmes, nous pouvons vous accompagner. Demandez une démo pour discuter de votre projet.