Documentation11 min de lecture

mis_builder : construire ses propres états financiers dans Odoo

Relevé sur une instance Odoo 18 Community, le module OCA `mis_builder` (dépôt `mis-builder`, version 18.0.1.10.0, licence AGPL-3) crée 11 modèles et 253 champs : il permet de construire ses propres états financiers, indicateurs en lignes et périodes en colonnes, exportables en PDF et en Excel. Les deux niveaux d'objets à comprendre, la syntaxe des expressions, et la limite analytique depuis la version 16.

Tableau de bord financier et calculs de gestion sur un bureau

Les états financiers standard d'Odoo répondent aux obligations ; ils ne répondent pas à « montre-moi ma marge brute par trimestre comparée à l'an dernier ». mis_builder est le module qui permet de construire ces états-là, soi-même, sans développement.

Le principe est celui d'un tableur piloté par la comptabilité : des indicateurs en lignes, des périodes en colonnes, et des expressions qui interrogent les comptes. C'est le module cœur de son dépôt, marqué comme application, et les autres modules du lot — budget, démonstration — l'étendent.

L'essentiel

  • Deux niveaux d'objets : le modèle de rapport (mis.report, indépendant du temps) et l'instance (mis.report.instance, qui porte les périodes et les filtres).
  • Les KPI sont des expressions : balp[70%] donne la variation de balance des comptes commençant par 70.
  • Sorties : aperçu interactif, PDF, Excel, et ajout à un tableau de bord Odoo.
  • Annotations de cellules depuis la version 18.0.1.5.0, reprises en notes de bas de page dans les exports.
  • Limite majeure : les fonctions analytiques ont été retirées en version 16 — incompatibilité avec le mécanisme analytic_distribution d'Odoo.
  • Quatre dépendances OCA et Odoo, plus une bibliothèque Python externe.

Ce que le module ajoute à l'instance

ÉlémentNombre
Modèles créés11
Modèles étendus5
Champs ajoutés253
Menus6
Vues12
Actions de fenêtre5
Groupes de droits2

253 champs : c'est le module le plus lourd de cette première série, et cela traduit sa nature — un constructeur, pas une fonctionnalité. Les objets qui comptent au quotidien sont au nombre de six.

ObjetCe qu'il est
mis.reportLe modèle de rapport : les KPI, les requêtes, les sous-KPI. Indépendant du temps
mis.report.kpiUn indicateur, avec son expression et son type de valeur
mis.report.instanceUne instance : le modèle appliqué à des périodes, des filtres, une mise en page
mis.report.styleUn style : couleurs, polices, arrondis, préfixes, facteurs d'échelle
mis.report.queryUne requête vers un modèle Odoo arbitraire, au-delà des écritures
mis.report.instance.annotationUne note attachée à une cellule du rapport

La distinction entre modèle et instance est celle qu'il faut saisir avant tout le reste : on écrit ses indicateurs une fois dans un modèle, puis on crée autant d'instances que de façons de les regarder — mensuel, trimestriel, comparé à N-1, par société.

Deux autres modèles méritent d'être signalés : mis.report.subreport, qui permet de composer un rapport à partir d'autres rapports, et mis.report.query, qui ouvre les rapports à des données hors comptabilité.

Où le trouver dans Odoo

MenuCe qu'on y fait
Facturation ▸ Analyse ▸ MIS Reporting ▸ MIS ReportsLes instances : créer, prévisualiser, imprimer, exporter
… ▸ Derniers rapports générésLes rapports produits récemment
Facturation ▸ Configuration ▸ MIS Reporting ▸ Modèles MIS ReportLes modèles de rapport et leurs KPI
… ▸ Styles MIS ReportLes styles de mise en forme

La séparation des menus suit la séparation des objets : la configuration porte les modèles et les styles, l'analyse porte les instances et leurs résultats. Un utilisateur qui consulte n'a besoin que du second.

Modèle de rapport MIS : l'onglet KPI's liste les indicateurs avec leur description, leur nom technique et leur type de valeur
Modèle de rapport MIS : l'onglet KPI's liste les indicateurs avec leur description, leur nom technique et leur type de valeur

Cas d'usage

Créer un modèle de rapport et ses indicateurs

  1. Comptabilité ▸ Configuration ▸ MIS Reporting ▸ MIS Report Templates, puis Nouveau.
  2. Renseigner Name et Description, choisir éventuellement un Style, et vérifier le Move Lines Source (par défaut account.move.line).
  3. Onglet KPI's : ajouter une ligne, renseigner Description, Name et Value type.
  4. Dans la fiche du KPI, saisir l'Expression — par exemple balp[70%] pour la variation de balance des comptes commençant par 70.
  5. Régler Comparison Method et Accumulation Method selon la nature de l'indicateur.
  6. Enregistrer le modèle.

L'étape 5 est celle qui distingue un rapport juste d'un rapport faux. Un compte de résultat s'accumule sur la période ; un poste de bilan ne s'accumule pas, il se lit à une date. Se tromper d'Accumulation Method produit des chiffres plausibles et inexacts — le pire des deux mondes.

Créer une instance et la prévisualiser

  1. Comptabilité ▸ Rapports ▸ MIS Reporting ▸ MIS Reports, puis Nouveau.
  2. Renseigner Name et sélectionner le Template créé précédemment.
  3. Pour une période unique : laisser Comparison Mode décoché et renseigner From et To. Pour plusieurs colonnes : cocher Comparison Mode et définir les colonnes dans l'onglet Columns.
  4. Onglet Columns : ajouter une colonne avec Label, Source = « Actuals », Mode = « Relative to report base date », Period type, Offset et Duration.
  5. Onglet Filters : ajuster Target Moves et les sociétés. Onglet Layout : la mise en page.
  6. Preview pour l'affichage à l'écran, ou Print / Export pour le PDF et l'Excel.

Onglet Columns d'une instance de rapport : chaque colonne porte son libellé, sa source, son type de période, son décalage et sa durée
Onglet Columns d'une instance de rapport : chaque colonne porte son libellé, sa source, son type de période, son décalage et sa durée

Le mode Relative to report base date avec un Offset est le réglage qui rend un rapport réutilisable : la colonne « mois précédent » reste le mois précédent, quelle que soit la date à laquelle on ouvre le rapport. Des dates fixes obligent à recréer l'instance chaque mois.

Aperçu d'un rapport MIS : les indicateurs en lignes, les périodes en colonnes, et les totaux mis en forme par le style
Aperçu d'un rapport MIS : les indicateurs en lignes, les périodes en colonnes, et les totaux mis en forme par le style

Ajouter un rapport à un tableau de bord

  1. Depuis la fiche de l'instance — non temporaire — cliquer sur Add to dashboard.
  2. Vérifier ou modifier le Name proposé, choisir le Dashboard cible.
  3. Cliquer sur Add to dashboard.

C'est ce qui transforme un rapport qu'il faut aller chercher en un chiffre qu'on voit le lundi matin — et la différence entre un indicateur lu et un indicateur abandonné tient souvent à cela.

Annoter une cellule

Disponible depuis la version 18.0.1.5.0, et beaucoup plus utile qu'il n'y paraît : la note explique l'écart, et elle survit à l'export.

  1. Depuis l'aperçu du rapport, ouvrir le menu déroulant de la cellule concernée.
  2. Cliquer sur Annotate, saisir le texte, puis Confirm.
  3. La note apparaît en renvoi numéroté sur la cellule, et en note de bas de page dans les exports PDF et Excel.

Attention : les deux groupes de droits dédiés aux annotations ne sont attribués par défaut qu'aux comptes techniques. Sans attribution explicite, vos utilisateurs ne verront ni ne pourront créer d'annotations.

Configuration et droits

Les dépendances sont plus nombreuses que pour la plupart des modules, et deux d'entre elles viennent d'autres dépôts OCA.

DépendanceOriginePourquoi
accountOdoo standardLa source des écritures
boardOdoo standardLes tableaux de bord
report_xlsxOCA reporting-engineL'export Excel
date_rangeOCA server-uxLes plages de dates réutilisables
openupgradelibBibliothèque PythonDoit être disponible sur le serveur

La dernière ligne est un point d'exploitation à vérifier avant l'installation : c'est une dépendance Python externe, pas un module Odoo. Sur un hébergement que vous ne maîtrisez pas, elle peut manquer.

Les droits sont restrictifs, et cohérents avec un outil qui donne accès aux chiffres de l'entreprise :

ActionGroupe requis
Lire les modèles, KPI, instances, stylesTout utilisateur interne (base.group_user)
Créer, modifier, supprimerComptabilité : Conseiller (account.group_account_manager)
Voir le menu MIS Reporting côté Rapportsaccount.group_account_manager
Voir les annotations« MIS Report: view annotations »
Créer des annotations« MIS Report: add annotations »

Et une évidence qui fait perdre du temps : il faut un modèle de rapport avant de pouvoir créer une instance. Le menu des instances est accessible dès l'installation, et il ne sert à rien tant que la configuration est vide.

Limites connues

Le dépôt renvoie sa feuille de route et ses défauts ouverts à GitHub plutôt que de les lister dans le module. Trois points ressortent de son historique et méritent d'être connus avant de bâtir ses rapports dessus.

  • Les fonctions analytiques ont été retirées en version 16. Le motif est explicite : le mécanisme analytic_distribution d'Odoo n'était pas compatible. Un support pourrait revenir dans un module séparé, selon les cas d'usage. En attendant, un filtre analytique passe par une clé de contexte mis_analytic_domain, combinée aux filtres du rapport — ce n'est pas une interface utilisateur.
  • Les taux de conversion de devises ont fait l'objet d'un correctif en version 18.0.1.7.2. Si vous bâtissez des rapports multidevises, vérifiez que votre instance est au moins à cette version.
  • Les sociétés de type « branche » ne sont prises en charge que depuis la version 17.0.1.0.2. Un point à vérifier sur une structure multi-sociétés complexe.

La première limite est la plus structurante : si votre besoin est un compte de résultat par axe analytique — par chantier, par mission, par site — mis_builder n'est pas l'outil, du moins pas par son interface. C'est une information qui vaut d'être donnée avant trois jours de paramétrage, pas après.

Pour ce besoin-là, les vues pivot et les rapports analytiques d'Odoo répondent souvent mieux. Voir les trois indicateurs qui comptent, par métier.

Identité technique

Nom techniquemis_builder
Dépôt OCAmis-builder, branche 18.0
Version du module18.0.1.10.0
LicenceAGPL-3
Dépendances Odoo et OCAaccount, board, date_range, report_xlsx
Dépendance Pythonopenupgradelib
Version Odoo18.0 Community

Un conseil de mise en service : commencez par trois indicateurs et une seule instance mensuelle. Un modèle de rapport à quarante KPI construit le premier jour n'est jamais relu, et ses erreurs d'Accumulation Method passent inaperçues. Voir les sept erreurs d'un projet ERP.

Questions fréquentes

mis_builder remplace-t-il les états financiers standard d'Odoo ?

Non, il les complète. Les états standard répondent aux obligations — balance, grand livre, journaux. mis_builder sert à construire les états de pilotage que l'entreprise se définit elle-même : marge par trimestre, comparaison avec l'exercice précédent, soldes intermédiaires de gestion présentés à sa façon.

Que signifie une expression comme balp[70%] ?

C'est la syntaxe d'interrogation des comptes propre au module : balp désigne la variation de balance sur la période, et [70%] sélectionne les comptes dont le numéro commence par 70. Chaque KPI est défini par une expression de ce type, éventuellement combinée à un domaine d'écritures.

Peut-on faire un compte de résultat par axe analytique ?

Pas par l'interface : les fonctions analytiques ont été retirées en version 16, le mécanisme analytic_distribution d'Odoo n'étant pas compatible. Un filtre reste possible par une clé de contexte technique, mais ce n'est pas une fonctionnalité utilisateur. Pour ce besoin, les vues pivot d'Odoo répondent souvent mieux.

Peut-on exporter les rapports en Excel ?

Oui, à condition que le module OCA report_xlsx (dépôt reporting-engine) soit installé — c'est une dépendance déclarée. Les annotations de cellules sont reprises en notes de bas de page dans les exports PDF comme Excel.

Pourquoi mes utilisateurs ne voient-ils pas les annotations ?

Parce que les deux groupes dédiés — « MIS Report: view annotations » et « MIS Report: add annotations » — ne sont attribués par défaut qu'aux comptes techniques. Il faut les attribuer explicitement aux personnes concernées, ce qui est facile à oublier après avoir créé la première annotation en administrateur.

Pour aller plus loin

En résumé

mis_builder est un constructeur d'états financiers : KPI en lignes, périodes en colonnes, export PDF et Excel, annotations de cellules. Deux choses à savoir avant de s'y mettre : l'Accumulation Method décide de la justesse de vos chiffres, et les fonctions analytiques ont été retirées en version 16. Parlons de vos états de pilotage.

Documentation OCAComptabilitéPilotage

Partager

Fiches connexes

Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo
Relevés bancaires et pièces comptables sur un bureau
Relevé sur une instance Odoo 18 Community, le module OCA `account_reconcile_oca` (dépôt `account-reconcile`, version 18.0.1.1.14, licence AGPL-3) ajoute 2 modèles, 87 champs et 17 vues : il remplace le lettrage limité de la Community par deux écrans dédiés, bancaire et par compte. Ce qu'il ajoute à l'instance, où le trouver, ses quatre cas d'usage et ses limites connues.
Lire la suite
Documentation OCA, Comptabilité