Dans les notes de version d'Odoo 20, les changements qui touchent la marge sont dispersés entre les sections Ventes, Projet et Comptabilité1. Pris un par un, ils ressemblent à des améliorations d'ergonomie. Mis bout à bout, ils modifient l'endroit où une PME calcule sa rentabilité, et la personne qui la produit. Un dirigeant qui pilote ses marges depuis Odoo a donc intérêt à les lire ensemble avant de planifier la migration.
Nous nous appuyons ici uniquement sur les notes de version publiées par Odoo. Elles décrivent les fonctions, pas leur comportement détaillé : chaque fois qu'un point reste ouvert, nous le signalons comme une question à tester.
Une ligne de vente n'exige plus de produit
C'est le changement le plus visible pour un commercial. Selon les notes de version, « les lignes de commande client ne nécessitent plus de produit lié par défaut » et peuvent être créées à partir d'une simple description. Un nouveau réglage, « Mandatory Product », permet de rétablir l'obligation1.
Pour une entreprise de services ou un fabricant à la commande, la demande était ancienne. Créer un article « Divers » pour chaque prestation ponctuelle encombre le catalogue, et beaucoup d'équipes finissaient par tout facturer sur un produit générique. La nouvelle option assume cette pratique au lieu de la contourner.
Le revers concerne tout ce qui s'appuie sur le produit. Dans Odoo, le produit porte le coût, la catégorie, les taxes par défaut et, historiquement, le compte de revenu. La logique décrite sur le forum Odoo est la suivante : le compte de la ligne de facture vient d'abord du produit, puis de sa catégorie, puis du journal2. Une ligne sans produit saute les deux premiers niveaux. Les notes de version ne disent pas quel compte de revenu ni quel coût Odoo 20 retient dans ce cas, et c'est le premier test que nous ferions sur une base de recette.
Le même raisonnement s'applique au reporting. Une analyse des ventes par catégorie de produit ignorera, par construction, tout le chiffre saisi en texte libre. Si vos commerciaux adoptent la ligne descriptive pour aller plus vite, la part « non classée » de votre chiffre d'affaires grossira sans que personne ne l'ait décidé.
La marge se saisit directement sur la ligne
Deuxième nouveauté côté Ventes : la marge devient éditable sur la ligne de commande, et Odoo recalcule le prix de vente à partir d'elle1. Les colonnes « Margin », « Margin (%) », « Delivered (%) » et les montants HT et TTC sont désormais empilés verticalement dans la ligne au lieu d'occuper chacun une colonne1.
Pour un commercial qui raisonne en taux de marge, le gain de temps est réel. Il pose pourtant une question de gouvernance. Jusqu'ici, le prix découlait d'une liste de prix que la direction commerciale maîtrisait. Avec une marge saisie à la main, le prix découle du coût connu au moment du devis. Si ce coût est faux ou daté, la marge affichée sera juste en apparence et fausse dans les faits.
Odoo 20 ajoute aussi un calcul des commissions sur le montant encaissé, et non plus seulement facturé1. Les entreprises qui rémunèrent leurs vendeurs à la marge devront vérifier comment ces deux mécanismes se combinent, car les notes de version ne le précisent pas.
Le rapport de rentabilité projet disparaît
Côté Projet, la formulation est sans ambiguïté : « le rapport de rentabilité du tableau de bord projet a été supprimé ». Odoo annonce qu'on peut désormais analyser le budget du projet ainsi que les marges réelles et prévisionnelles « à l'aide des nouveaux rapports dédiés »1.
Ce rapport était souvent le seul écran de pilotage des sociétés de conseil, des intégrateurs et des bureaux d'études qui utilisent Odoo. Les chefs de projet le consultaient sans passer par la comptabilité analytique. Les notes de version ne détaillent ni la structure des nouveaux rapports ni leurs prérequis. Nous ne savons donc pas encore si un projet sans budget saisi affichera une marge exploitable.
Ce changement s'ajoute à deux autres mouvements du même cycle. L'application Field Service est abandonnée et ses fonctions rejoignent Planning1. Les intégrations entre Planning et Paie, ainsi que les « work entries », sont supprimées1. Une PME de services qui facturait ses interventions terrain et suivait leur rentabilité par projet verra donc trois écrans changer en même temps.
Le coût des ventes se corrige après coup
Le dernier changement concerne les entreprises qui gèrent du stock. Quand le coût d'un produit évolue après sa livraison, par exemple à cause d'un coût d'approche3 ou d'une facture fournisseur différente du bon de commande, Odoo 20 met à jour la valeur de la livraison de façon rétroactive. En inventaire permanent, le coût porté sur la facture est lui aussi corrigé1. Un menu « Valuation Adjustments », disponible en mode développeur, liste ces ajustements et leurs écritures1.
Sur le fond, c'est une bonne nouvelle : la marge reflète enfin le coût réel. En pratique, la marge d'une commande clôturée peut changer après coup. Un contrôleur de gestion qui exporte ses marges mensuelles le 5 du mois suivant doit savoir qu'un coût d'approche saisi le 20 modifiera les chiffres déjà transmis.
Ce que nous vérifierions avant de migrer
| Changement Odoo 20 | Risque pour le pilotage | Test à mener en recette |
|---|---|---|
| Lignes de vente sans produit | Compte de revenu et coût indéterminés, reporting par catégorie incomplet | Facturer une ligne descriptive et contrôler compte, taxe et marge |
| Marge éditable sur la ligne | Prix calculé sur un coût potentiellement daté | Comparer marge saisie et marge constatée après facture fournisseur |
| Rapport de rentabilité projet supprimé | Perte de l'écran de suivi des chefs de projet | Reproduire un projet type et rapprocher les nouveaux rapports de l'ancien |
| Correction rétroactive du coût des ventes | Marges déjà communiquées qui bougent | Saisir un coût d'approche après livraison et suivre l'écriture générée |
À cette liste, nous ajoutons un réflexe simple : activer « Mandatory Product » par défaut pendant la migration, puis l'assouplir une fois les règles comptables testées. Revenir en arrière sur des centaines de lignes saisies en texte libre coûte beaucoup plus cher que de retarder une option de quelques semaines.
Notre lecture
Pris ensemble, ces changements vont dans une direction cohérente. Odoo rapproche la marge du terrain : le commercial la saisit, le chef de projet dispose de rapports dédiés, et le coût réel remonte dans les livraisons passées. Pour une PME, c'est plutôt sain, à condition que quelqu'un continue de garantir la cohérence de l'ensemble.
Le risque principal tient au calendrier. Ces nouveautés arrivent dans la même version que le renommage des statuts de paiement, dont nous avons parlé dans notre article sur « payé » qui change de sens. Une équipe finance qui découvre tout cela le jour de la bascule passera son premier mois à expliquer des écarts au lieu de les analyser.
Notre conseil de praticien tient en une phrase : faites relire les notes de version Ventes, Projet et Comptabilité par la personne qui produit vos tableaux de marge, et pas seulement par l'intégrateur. Elle seule sait quels chiffres elle envoie chaque mois, et lesquels changeront.
Sources
- Odoo, Odoo 20 Release Notes : https://www.odoo.com/odoo-20-release-notes
- Forum Odoo, Default income account does not apply correctly : https://www.odoo.com/forum/help-1/default-income-account-does-not-apply-correctly-194309
Footnotes
-
Odoo, « Odoo 20 Release Notes », sections Sales, Project, Accounting et Field Service. Citations traduites par nos soins. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Forum Odoo, fil « Default income account does not apply correctly ». Ce fonctionnement concerne les versions antérieures ; il reste à vérifier en Odoo 20 pour les lignes sans produit. ↩
-
Coût d'approche (landed cost) : frais de transport, de douane ou de manutention ajoutés au prix d'achat pour obtenir le coût de revient réel d'un article. ↩