Se rendre au contenu

Odoo CRM : Numérotation automatique des opportunités

0€ et 7 étapes
17 mars 2026 par
Odoo CRM : Numérotation automatique des opportunités
Transition, Antoine DEVOLDRE

En bref pour les pressés : Pour numéroter automatiquement vos opportunités CRM dans Odoo v19 (format AFF/2026/0001), combinez trois composants natifs : une séquence technique, un champ Studio en lecture seule, et deux règles d'automatisation de type "Mettre à jour l'enregistrement". Résultat : 0 € de surcoût, zéro ligne de code Python, et un compteur qui repart à 1 chaque 1er janvier — à condition d'utiliser %(range_year)s et non %(year)s dans le préfixe.

Environnement : Odoo v19 Online · Niveau : Intermédiaire · Coût additionnel : 0 €
Validé en conditions réelles. Procédure complète, scénarios de test inclus.

Le problème (que vous connaissez probablement déjà)

Vos commerciaux ont 80 opportunités dans le CRM. Chaque échange email commence par "c'est pour quel dossier déjà ?". Vos devis n'ont aucune référence commune avec votre CRM. Et quand deux prospects s'appellent Martin, tout le monde hésite.

Ce n'est pas un problème d'outil, c'est un problème de langage commun. Et la solution tient en un code affaire unique par opportunité, attribué automatiquement.

Attaquons point par point.

Pourquoi numéroter vos opportunités ?

Un numéro d'affaire, c'est comme un matricule dans votre équipe RH : ça ne change rien à la personne, mais ça change tout à la traçabilité. Concrètement, un code de type AFF/2026/0001 vous permet de :

  • Référencer l'opportunité dans vos emails, devis et contrats sans ambiguïté.
  • Faire le lien entre votre CRM et vos autres outils (ERP, comptabilité, tableur partagé).
  • Mesurer le temps de traitement par dossier.
  • Auditer l'historique commercial même quand deux prospects portent le même nom.

Pourquoi c'est gratuit ?

C'est la question que tout le monde pose en premier, et c'est légitime.

Odoo facture 16 €/mois les automatisations qui utilisent le type "Exécuter le code" (Python). Ce que nous allons construire repose uniquement sur le type "Mettre à jour l'enregistrement", qui n'est pas scanné par le moteur de comptage de lignes de code d'Odoo (cloc.py). Résultat : 0 € de surcoût.

Vue d'ensemble de la solution

Trois composants natifs, combinés sans une seule ligne de Python :

ComposantRôleOù le trouver
SéquenceGénère les numéros incrémentauxParamètres › Technique › Séquences
Champ StudioStocke le code sur l'opportunitéCRM › Studio › Formulaire
Règles d'automatisationDéclenchent la numérotationParamètres › Technique › Automatisations

Les 7 étapes de configuration

Étape 1 — Activer le mode développeur

Allez dans Paramètres › Paramètres généraux, descendez jusqu'à la section Développeur et cliquez sur Activer le mode développeur. Cette action déverrouille les menus Technique nécessaires aux étapes suivantes. Sans ça, vous ne verrez simplement pas les options.

Étape 2 — Créer la séquence "ID OPP"

Allez dans Paramètres › Technique › Séquences puis cliquez sur Nouveau.

ChampValeur
NomID OPP
Code de la séquencecrm.opportunity.seq
PréfixeAFF/%(range_year)s/
Taille de la séquence4 (→ donne 0001)
Incrément1
Numéro suivant1
Mise en œuvreSans espace


La bonne variable est %(range_year)s, couplée à l'option "Utiliser des plages de dates" sur la séquence. Ensuite, créez une plage par année :

DébutFinProchain numéro
01/01/202631/12/20261
01/01/202731/12/20271

Chaque plage possède son propre compteur. C'est la méthode standard qu'Odoo utilise en interne pour ses factures et ses commandes.

Étape 3 — Créer le champ "Code Affaire" via Studio

  1. Ouvrez n'importe quelle opportunité dans le module CRM.
  2. Cliquez sur l'icône Studio (la clé à molette en haut à droite).
  3. Dans le panneau gauche, onglet Ajouter, glissez-déposez un champ Texte sur le formulaire.
  4. Configurez-le ainsi :
ParamètreValeur
ÉtiquetteCode Affaire
Lecture seule✅ Coché
Copier✅ Coché (utile pour les exports)
  1. Notez bien le nom technique du champ dans ses propriétés ,il ressemble à x_studio_code_affaire. Vous en aurez besoin à l'étape 6.

Étape 4 — Créer l'action serveur "Update Piste"

Allez dans Paramètres › Technique › Actions › Actions Serveur, puis Nouveau :

ParamètreValeur
NomUpdate Piste
ModèlePiste (crm.lead)
Type d'actionMettre à jour l'enregistrement
Champ à mettre à jourCode Affaire (x_studio_code_affaire)
Type de valeurSéquence → sélectionner ID OPP

Si ID OPP n'apparaît pas dans la liste déroulante, utilisez "Recherche avancée…" pour la retrouver.

Étape 5 — Règle n°1 : création directe d'une opportunité

Dans Paramètres › Technique › Automatisations › Règles d'automatisation, créez une nouvelle règle :

ParamètreValeur
NomN° affaire — Création opportunité
ModèlePiste (crm.lead)
DéclencheurÀ la création
Appliquer sur (domaine)[('type', '=', 'opportunity')]
Action à effectuer→ Update Piste

Le domaine est important : il cible uniquement les enregistrements de type opportunité, pas les pistes. À saisir en mode code (</>).

Étape 6 — Règle n°2 : conversion d'une piste en opportunité

C'est la règle la plus délicate. Elle surveille le changement du champ type (de lead vers opportunity) et n'agit que si le code affaire est encore vide — ce qui évite d'écraser un numéro existant.

ParamètreValeur
NomN° affaire — Conversion piste
ModèlePiste (crm.lead)
DéclencheurLors de la mise à jour
Champs surveilléstype
Avant mise à jour (filtre)[('type', '=', 'lead')]
Appliquer sur[('type', '=', 'opportunity'), ('x_studio_code_affaire', '=', False)]
Action à effectuer→ Update Piste

Remplacez x_studio_code_affaire par le nom technique réel noté à l'étape 3.

Étape 7 — Tests de validation

Ne sautez pas cette étape. Voici les 5 scénarios à vérifier :

ScénarioRésultat attendu
Créer une opportunité directement✅ Code affaire rempli (ex : AFF/2026/0001)
Créer une piste (lead)✅ Champ vide — c'est normal
Convertir une piste en opportunité✅ Code affaire rempli automatiquement
Modifier une opportunité existante✅ Code affaire inchangé (non écrasé)
1er janvier N+1✅ Compteur repart à AFF/2027/0001

Pour aller plus loin

Cette configuration est un socle. À partir de là, plusieurs évolutions sont possibles selon vos besoins :

  • Afficher le code affaire dans la vue liste du CRM pour un accès rapide sans ouvrir chaque fiche.
  • Reporter le code sur les devis liés à l'opportunité via un champ calculé.
  • Segmenter par équipe commerciale avec des préfixes distincts (AFF-NORD/, AFF-SUD/).
  • Automatiser la création des plages annuelles via un cron si vous gérez de nombreuses séquences.

Ce que cette configuration change vraiment

Le numéro en lui-même ne vaut rien. Ce qu'il crée, c'est un langage commun entre vos équipes, vos outils et vos clients. C'est exactement ce que doit produire une digitalisation bien conduite : non pas ajouter de la complexité, mais en retirer.

Et comme souvent dans Odoo, la solution était déjà là, il suffisait de savoir où regarder.

Et vous, comment tracez-vous vos dossiers commerciaux aujourd'hui ? Partagez votre méthode en commentaire, je suis curieux de voir les différentes approches. 👇

Vous voulez adapter cette configuration à votre contexte Odoo ? → Réserver 30 minutes


Partager cet article
Étiquettes
Archive