Documentation11 min de lecture

Les quatre contrôles qui empêchent une erreur de saisie comptable

Quatre modules OCA du socle Atalios bloquent les erreurs de saisie comptable avant la comptabilisation : la numérotation par séquence (`account_move_name_sequence`, 18.0.2.0.2), la chronologie des factures, l'unicité du numéro de facture fournisseur et le total de vérification — tous sous licence AGPL-3. Ce que chacun bloque, comment l'activer, et celui qui doit être réglé avant la première écriture.

Contrôle d'une facture fournisseur avant comptabilisation

Les erreurs comptables coûteuses ne sont presque jamais des erreurs de raisonnement : ce sont des erreurs de saisie. Une facture fournisseur payée deux fois, un numéro d'écriture qui saute, une facture validée hors ordre chronologique.

Quatre modules communautaires les empêchent, chacun par un contrôle bloquant au moment de la comptabilisation. Trois s'activent par une case ; le quatrième doit être réglé avant la première écriture, et c'est celui qui demande le plus d'attention.

Résumé

Quatre modules bloquent les erreurs de saisie avant comptabilisation : la numérotation par séquence, la chronologie des factures, l'unicité du numéro de facture fournisseur et le total de vérification.

L'ordre d'activation n'est pas indifférent. La numérotation se règle avant la première écriture — sinon la rupture se corrige journal par journal. Les trois autres sont désactivés par défaut, et la chronologie activée trop tôt produit des blocages que l'équipe vit mal.

L'essentiel

  • account_move_name_sequence : la numérotation des écritures par séquence rattachée au journal, comme avant Odoo 14. À régler avant les premières écritures.
  • account_invoice_constraint_chronology : bloque la validation d'une facture qui romprait l'ordre chronologique du journal.
  • account_invoice_supplier_ref_unique : refuse un numéro de facture fournisseur déjà enregistré pour ce fournisseur.
  • account_invoice_check_total : bloque la validation si le total saisi d'après le document papier ne correspond pas au calcul d'Odoo.
  • Les trois derniers sont désactivés par défaut : ils ne font rien tant qu'on ne les active pas.

Ce que les quatre modules ajoutent à l'instance

_name_sequence_chronology_ref_unique_check_total
Modèles créés0000
Modèles étendus3232
Champs ajoutés14545
Menus0000
Groupes de droits0001
Version18.0.2.0.218.0.1.0.118.0.1.0.018.0.1.0.0
Dépôtaccount-financial-toolsaccount-financial-toolsaccount-invoicingaccount-invoicing

Aucun modèle créé, aucun menu : ce sont des contrôles, pas des fonctionnalités. Ils s'insèrent dans des écrans que vous connaissez déjà, et leur effet se constate au moment où ils refusent une validation.

C'est aussi ce qui les rend peu risqués à installer et faciles à retirer — à une exception près, la numérotation, qui laisse une trace dans vos séquences.

La numérotation : à régler avant la première écriture

Odoo 14 a changé la façon de numéroter les écritures comptables : au lieu d'une séquence configurée, le numéro suivant est déduit du dernier numéro saisi. Le résultat est ambigu, mal géré en concurrence, et impossible à configurer à l'avance.

account_move_name_sequence rétablit le mécanisme antérieur : une séquence Odoo classique (ir.sequence) rattachée explicitement à chaque journal.

Ce que le module ajouteOù
Entry Sequence (obligatoire)Sur chaque fiche de journal
Dedicated Credit Note Sequence (case)Journaux de vente et d'achat
Credit Note Entry SequenceSi la case ci-dessus est cochée
Numéro d'écriture calculé, non éditableSur la pièce, une fois attribué

À l'installation, un hook attribue automatiquement une séquence à tous les journaux qui n'en ont pas, en tenant compte des écritures déjà présentes pour éviter une rupture de numérotation. C'est bien fait, et cela ne dispense pas de vérifier.

  1. Facturation ▸ Configuration ▸ Journaux, ouvrir chaque journal utilisé.
  2. Vérifier l'Entry Sequence générée : préfixe, remplissage (padding), et surtout numéro de départ.
  3. Pour un journal de vente ou d'achat, vérifier la séquence d'avoir si la case dédiée est cochée.

Le numéro de départ est le point critique sur une instance déjà utilisée : s'il ne correspond pas à la numérotation existante, vous créez une rupture — et une rupture de numérotation dans un journal de vente est exactement ce qu'un contrôle fiscal regarde.

Le module retire par ailleurs l'accès à l'assistant de reséquencement d'Odoo. C'est cohérent — on ne reséquence pas une séquence — mais il faut le savoir si vous vous appuyiez dessus.

La chronologie : un contrôle par journal

account_invoice_constraint_chronology répond à une exigence comptable classique : la numérotation des factures doit suivre l'ordre chronologique des dates.

Il ajoute un champ Check Chronology sur la fiche du journal, visible uniquement pour les types Ventes et Achats, et automatiquement remis à faux si on change le type du journal.

Quand il est coché, la comptabilisation d'une facture ou d'un avoir est bloquée si une autre pièce du même journal, encore en brouillon, porte une date antérieure à celle qu'on tente de valider. Il faut valider les brouillons plus anciens d'abord.

  1. Facturation ▸ Configuration ▸ Comptabilité ▸ Journaux.
  2. Ouvrir un journal de type Ventes ou Achats.
  3. Cocher Check Chronology, juste après le champ Code.
  4. Enregistrer.

Une précision documentaire qui évite une fausse certitude : le fichier de configuration du module indique que cette option serait déjà active par défaut sur les journaux de vente et d'avoir de vente après installation. Nous n'avons pas pu le confirmer dans le code source relevé pour cette version — aucune valeur par défaut sur le champ, aucun hook d'installation, aucun fichier de données en ce sens.

Conclusion pratique : vérifiez la case journal par journal plutôt que de supposer qu'elle est cochée.

L'unicité du numéro fournisseur, et le total de vérification

Ces deux-là visent le même risque — payer deux fois, ou payer le mauvais montant — par deux mécanismes différents.

Unicité du numéro de facture fournisseur

account_invoice_supplier_ref_unique ajoute un champ Vendor invoice number, distinct du champ Reference standard, et refuse l'enregistrement si un autre document porte le même numéro pour le même fournisseur.

  • Le contrôle est insensible à la casse.
  • Il ignore les copies et les contre-passations, pour éviter les faux doublons.
  • Il s'active par société, dans Facturation ▸ Configuration ▸ Paramètres, section « Factures fournisseurs » : Check Unicity on Supplier Invoice Number.
  • Il est décoché par défaut — sans cette case, le comportement standard d'Odoo s'applique, sans aucun contrôle.

Une fois actif, il faut saisir systématiquement le Vendor invoice number : le contrôle ne porte pas sur le champ Reference. C'est une habitude à installer dans l'équipe, et la seule contrainte réelle de ce module.

Total de vérification

account_invoice_check_total prend le problème par l'autre bout : on saisit d'abord le total TTC tel qu'imprimé sur le document reçu, avant même de détailler les lignes.

  1. Activer Check Total on Vendor Bills dans Facturation ▸ Configuration ▸ Paramètres, section « Vendor Payments » — ou attribuer directement le groupe account_invoice_check_total.group_supplier_inv_check_total.
  2. Sur une facture fournisseur en brouillon, saisir le champ Verification Total.
  3. Saisir les lignes : le champ Total Difference affiche en continu l'écart avec le total calculé par Odoo.
  4. À la validation, un écart au-delà de la précision d'arrondi de la devise bloque la comptabilisation.

Le champ Total Difference n'apparaît que si un montant de vérification a été saisi, et son remplissage n'est pas obligatoire : le contrôle ne s'applique qu'aux factures où quelqu'un a pris la peine de saisir le total. C'est un choix raisonnable, qui laisse passer les factures saisies sans vérification.

Dans quel ordre les activer

OrdreModuleQuandRisque si on attend
1account_move_name_sequenceAvant la première écritureRupture de numérotation à corriger journal par journal
2account_invoice_supplier_ref_uniqueDès le démarrageDoublons déjà en base, à repérer à la main
3account_invoice_check_totalQuand l'équipe est forméeAucun — le contrôle est volontaire
4account_invoice_constraint_chronologyAprès une période d'observationAucun, mais blocages surprenants si activé trop tôt

Le quatrième mérite son rang : activer la chronologie sur une équipe qui laisse traîner des brouillons produit des blocages incompréhensibles — « pourquoi ne puis-je pas valider cette facture ? » Il faut d'abord installer l'habitude de ne pas accumuler les brouillons, puis cocher la case.

Les quatre font partie de notre socle commun : installés partout, mais pas tous activés par défaut.

Limites connues

Aucun des quatre dépôts ne répertorie de défaut sur ces modules. Quatre limites d'usage, en revanche, méritent d'être connues.

  • La numérotation laisse une trace : les séquences créées restent après désinstallation. C'est le seul des quatre qui ne se retire pas sans conséquence.
  • La chronologie ne contrôle que les brouillons du même journal. Elle ne dit rien d'une pièce d'un autre journal, ni d'une date de comptabilisation différente de la date de facture.
  • L'unicité porte sur un champ dédié, pas sur la Reference standard. Une équipe qui continue de saisir dans Reference n'est pas protégée, et rien ne le signale.
  • Le total de vérification est volontaire. Une facture saisie sans total de vérification passe sans contrôle : le module réduit les erreurs, il ne les supprime pas.

La troisième est celle que nous rencontrons le plus : le module est installé, la case est cochée, et personne n'utilise le bon champ. Un contrôle qu'on croit actif et qui ne l'est pas est plus dangereux qu'un contrôle absent.

Identité technique

ModuleDépôt OCAVersionLicence
account_move_name_sequenceaccount-financial-tools18.0.2.0.2AGPL-3
account_invoice_constraint_chronologyaccount-financial-tools18.0.1.0.1AGPL-3
account_invoice_supplier_ref_uniqueaccount-invoicing18.0.1.0.0AGPL-3
account_invoice_check_totalaccount-invoicing18.0.1.0.0AGPL-3

Les quatre ne dépendent que d'account, branche 18.0.

Questions fréquentes

Pourquoi remplacer la numérotation standard d'Odoo ?

Parce que depuis Odoo 14, le numéro suivant est déduit du dernier numéro saisi plutôt que tiré d'une séquence : c'est ambigu, mal géré quand plusieurs personnes valident en même temps, et impossible à configurer à l'avance. account_move_name_sequence rétablit une séquence rattachée au journal.

Puis-je installer le module de numérotation sur une instance déjà utilisée ?

Oui, un hook d'installation attribue une séquence à chaque journal en tenant compte des écritures déjà présentes. Mais vérifiez le numéro de départ journal par journal : s'il ne correspond pas à la numérotation existante, vous créez une rupture — et c'est précisément ce qu'un contrôle fiscal regarde.

Le contrôle de chronologie est-il actif par défaut ?

Le fichier de configuration du module l'affirme pour les journaux de vente, mais nous n'avons pas pu le confirmer dans le code source de cette version : aucune valeur par défaut, aucun hook, aucun fichier de données en ce sens. Vérifiez la case Check Chronology journal par journal plutôt que de le supposer.

Pourquoi le contrôle d'unicité ne détecte-t-il pas mes doublons ?

Probablement parce que l'équipe saisit le numéro du fournisseur dans le champ Reference standard, alors que le contrôle porte sur le champ dédié Vendor invoice number. C'est l'erreur la plus fréquente, et rien ne la signale : le contrôle paraît actif et ne protège rien.

Ces contrôles ralentissent-ils la saisie ?

Marginalement, et ils la ralentissent là où c'est utile : le total de vérification ajoute un champ à remplir avant les lignes, et la chronologie impose de traiter les brouillons dans l'ordre. En échange, une facture payée deux fois coûte bien plus que les secondes gagnées.

Se faire accompagner

Trois de ces quatre contrôles sont désactivés par défaut, et le quatrième — la numérotation — doit être réglé avant la première écriture. L'ordre d'activation n'est pas indifférent : la chronologie activée trop tôt produit des blocages que l'équipe vit mal.

Nous posons ces contrôles au paramétrage comptable, dans le bon ordre, avec votre expert-comptable pour les séquences — et nous formons l'équipe au champ Vendor invoice number, sans quoi le contrôle d'unicité ne protège rien. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Quatre contrôles bloquants, zéro menu, zéro modèle créé. Réglez la numérotation avant la première écriture, activez l'unicité du numéro fournisseur dès le démarrage, le total de vérification quand l'équipe est prête, et la chronologie en dernier. Et vérifiez que l'équipe saisit dans le bon champ. Parlons de votre paramétrage comptable.

Documentation OCAComptabilitéConformité

Partager

Fiches connexes

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é
Relevé bancaire et suivi des opérations sur un bureau
Odoo a retiré l'import de relevés bancaires de son édition Community à partir de la version 14 : les 3 modules OCA `account_statement_import_file` (18.0.1.0.3, LGPL-3), `_camt` et `_ofx` le rétablissent, avec la détection des transactions déjà importées. Comment ils s'articulent, ce que CAMT apporte de plus qu'OFX, et le piège du fichier sans IBAN.
Lire la suite
Documentation OCA, Comptabilité