Documentation10 min de lecture

Remises, devises et taxes sur la facture

Dix-huit modules OCA du dépôt `account-invoicing` traitent les montants d'une facture dans Odoo 18 Community : `account_invoice_triple_discount` applique **jusqu'à trois remises successives** sur une ligne, et `account_tax_one_vat` **interdit plus d'une taxe de TVA** par ligne — contrôle étendu aux commandes de vente et d'achat. Les seize autres, du taux de change saisi à la main aux mentions légales portées par une taxe.

Calculatrice utilisée au-dessus de documents chiffrés

Sur une facture, trois mécanismes produisent le montant final : les remises, le taux de change, et les taxes. Chacun a, dans Odoo, une limite que le commerce réel dépasse régulièrement.

Dix-huit modules communautaires lèvent ces limites — et l'un d'eux est déclaré obsolète par ses propres auteurs, ce qui mérite d'être dit.

Résumé

Cinq modules traitent les remises : jusqu'à trois remises successives par ligne, des remises globales sur la facture entière, une remise en montant fixe, l'affichage du montant remisé et du total avant remise sur le formulaire et le PDF, et le choix de la méthode d'arrondi des taxes par client ou par facture.

Cinq traitent les devises : une liste de prix sur la facture avec sa variante liée aux commandes, une devise par partenaire, le taux de change saisi manuellement en brouillon, le taux affiché sur le document, et les montants en devise d'origine dans la liste des factures.

Six traitent les taxes : l'interdiction de plus d'une TVA par ligne — sur la facture, la commande de vente et la commande d'achat —, la base de calcul affichée dans le pied de facture, des mentions légales portées par la taxe, et leur traduction. Un dernier module, de mise à jour des positions fiscales, est déclaré obsolète par ses auteurs.

L'essentiel

  • Trois remises successives par ligne — la cascade du négoce.
  • Des remises globales sur toute la facture, en plus des remises de ligne.
  • Une remise en montant fixe, et le montant remisé affiché sur le PDF.
  • Le taux de change saisi à la main tant que la facture est en brouillon.
  • Une seule TVA par ligne, contrôlée jusque sur les commandes.
  • La base de calcul visible dans le pied de facture, à côté du montant de taxe.
  • Des mentions légales portées par la taxe, et traduisibles.
  • Un module déclaré obsolète par ses auteurs : à ne pas installer.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Remisesaccount_invoice_triple_discount, account_global_discount, account_invoice_fixed_discount, account_invoice_discount_display_amount, account_invoice_custom_rounding5
Devises et tarifsaccount_invoice_pricelist, account_invoice_pricelist_sale, account_invoice_currency_by_partner, account_manual_currency, account_invoice_show_currency_rate, account_invoice_tree_currency6
Taxesaccount_tax_one_vat, account_tax_one_vat_sale, account_tax_one_vat_purchase, account_tax_group_widget_base_amount, account_invoice_tax_note, account_tax_legal_notes_translate6
Obsolèteaccount_invoice_fiscal_position_update1

Les menus ajoutés : Facturation ▸ Clients ▸ Pricelists et Facturation ▸ Configuration ▸ Gestion ▸ Remises globales.

Les remises : cascade, globale, fixe

La remise en cascade — « 10 % remise de base, moins 5 % volume, moins 2 % paiement comptant » — est la norme dans le négoce et l'industrie. Odoo ne connaît qu'une remise unique par ligne, ce qui oblige à calculer le taux composé à la main et à perdre le détail de la négociation.

  • account_invoice_triple_discount applique jusqu'à trois remises successives sur chaque ligne de facture.
  • account_global_discount applique une ou plusieurs remises globales sur toute la facture — client ou fournisseur —, en plus des remises de ligne.
  • account_invoice_fixed_discount permet une remise en montant fixe plutôt qu'en pourcentage.
  • account_invoice_discount_display_amount affiche le montant total remisé et le total avant remise, sur le formulaire et sur le PDF.

Le dernier est celui que réclament les clients : voir ce qu'ils ont économisé. C'est aussi ce que vérifie un acheteur avant de valider une facture — et, à défaut, ce qu'il recalcule à la main en appelant.

account_invoice_custom_rounding traite une question voisine et technique : la méthode d'arrondi des taxes — par ligne ou globale — choisie par client ou par facture plutôt qu'imposée par la société. Certains clients et certains pays l'exigent.

Ces modules sont les équivalents comptables de ceux décrits côté vente dans remises, prix et tarifs : la remise doit exister jusque sur la facture.

Les devises : le taux qu'on subit, et celui qu'on choisit

ModuleCe qu'il apporte
account_manual_currencyLe taux de change saisi à la main tant que la facture est en brouillon
account_invoice_show_currency_rateLe taux appliqué affiché sur le document
account_invoice_tree_currencyDes colonnes affichant les montants dans la devise de chaque facture, dans la liste
account_invoice_currency_by_partnerUne devise par défaut sur le partenaire
account_invoice_pricelistUne liste de prix sur la facture, reprise du partenaire
account_invoice_pricelist_saleLa liste de prix reprise de la commande de vente sur ses factures

Le premier répond au cas de la couverture de change : l'entreprise a bloqué un taux avec sa banque, et appliquer le taux du jour fausse la marge. Le saisir à la main, en brouillon, est la seule façon de refléter la réalité.

Les deux modules de liste de prix sur la facture corrigent une incohérence : un tarif négocié s'applique au devis, puis la facture créée manuellement l'ignore. Les prix diffèrent entre le document que le client a accepté et celui qu'il reçoit.

La colonne en devise d'origine dans la liste, enfin, est le confort d'une entreprise multi-devises : voir des montants convertis empêche de reconnaître une facture dont on se souvient du montant.

Les taxes : une seule TVA, une base visible, des mentions

Une seule TVA par ligne

account_tax_one_vat impose, quand l'option est activée au niveau de la société, qu'une seule taxe marquée TVA puisse être sélectionnée sur une ligne. Deux extensions étendent ce contrôle aux commandes de vente et aux commandes d'achat.

Deux TVA sur une même ligne ne correspond à aucune réalité fiscale, et produit des déclarations fausses. C'est aussi, rappelons-le, l'un des contrôles qu'impose la norme européenne de facturation électronique — le blocage en amont évite un rejet en aval.

Ce contrôle rejoint ceux de la chaîne Factur-X et EN 16931.

La base de calcul

account_tax_group_widget_base_amount fait apparaître, dans le pied de facture, la base de calcul à côté du montant de chaque groupe de taxes. C'est l'information que vérifie un comptable et que réclame un contrôle : à quel montant hors taxes s'applique ce taux.

Les mentions légales

  • account_invoice_tax_note permet d'attacher une mention légale ou informative à une taxe : elle apparaît sur la facture dès que la taxe est utilisée — autoliquidation, exonération, régime particulier.
  • account_tax_legal_notes_translate rend ces mentions traduisibles, ce qui compte dès qu'on facture à l'étranger.

Ces deux modules remplacent une pratique courante et fragile : écrire la mention à la main dans les conditions de la facture, en espérant que personne ne l'oublie sur la suivante.

Un module à ne pas installer

account_invoice_fiscal_position_update est déclaré obsolète et non maintenu par ses propres auteurs, dans sa documentation. Le relevé le signale, et nous le signalons à notre tour : un module non maintenu dans une chaîne fiscale est un risque sans contrepartie.

Le cas mérite d'être mentionné parce qu'il illustre une réalité du catalogue communautaire : un dépôt contient aussi des modules en fin de vie, conservés pour les migrations en cours. La présence d'un module dans une branche ne vaut pas recommandation.

C'est précisément pourquoi chaque fiche de ce corpus porte la version et la licence relevées sur le dépôt, et signale ce que la documentation du module dit de lui-même.

Limites connues

  • Remises en cascade et remise globale se cumulent : décider laquelle le client doit voir, et ne pas empiler les deux sans règle.
  • Le taux de change manuel n'est modifiable qu'en brouillon : après comptabilisation, il faut extourner.
  • La liste de prix sur la facture suppose des tarifs tenus : sinon elle recalcule sur des règles périmées.
  • Le contrôle « une seule TVA » peut bloquer des cas légitimes dans certains régimes : à vérifier avant d'activer au niveau société.
  • Les mentions de taxe s'ajoutent à chaque usage : une facture multi-taxes peut accumuler plusieurs mentions.
  • account_invoice_fiscal_position_update est obsolète selon ses auteurs : ne pas l'installer.

Identité technique

Les dix-huit modules viennent du dépôt OCA account-invoicing, branche 18.0, en licence AGPL-3 pour l'essentiel. Les remises globales s'appuient sur un socle du dépôt server-ux ; les listes de prix sur la facture dépendent de sale_management.

Les familles voisines : contrôler une facture, avoirs et compensations et remises, prix et tarifs.

Questions fréquentes

Peut-on appliquer plusieurs remises successives sur une ligne ?

Oui : account_invoice_triple_discount permet jusqu'à trois remises successives par ligne de facture — la cascade du négoce, « 10 % de base, moins 5 % volume, moins 2 % comptant ». Odoo n'en connaît qu'une, ce qui oblige à calculer le taux composé à la main et perd le détail de la négociation.

Peut-on figer un taux de change négocié sur une facture ?

Oui, avec account_manual_currency, tant que la facture est en brouillon. C'est le cas de la couverture de change : l'entreprise a bloqué un taux avec sa banque, et appliquer le taux du jour fausserait la marge. Après comptabilisation, il faut extourner.

Pourquoi interdire deux TVA sur une même ligne ?

Parce que cela ne correspond à aucune réalité fiscale et produit des déclarations fausses — c'est aussi l'un des contrôles qu'impose la norme européenne de facturation électronique. account_tax_one_vat l'empêche sur les factures, et deux extensions étendent le contrôle aux commandes de vente et d'achat.

Comment faire apparaître une mention légale liée à une taxe ?

account_invoice_tax_note attache une mention à la taxe elle-même : elle apparaît sur la facture dès que la taxe est utilisée — autoliquidation, exonération, régime particulier. account_tax_legal_notes_translate la rend traduisible. Cela remplace la mention écrite à la main, qu'on oublie sur la facture suivante.

Tous les modules d'un dépôt OCA sont-ils recommandables ?

Non. account_invoice_fiscal_position_update est déclaré obsolète et non maintenu par ses propres auteurs dans sa documentation. Un dépôt contient aussi des modules en fin de vie, conservés pour les migrations en cours : la présence d'un module dans une branche ne vaut pas recommandation.

Se faire accompagner

Les remises et les taxes sont les deux endroits où une facture devient contestable : un client qui ne reconnaît pas le montant remisé appelle, un contrôle qui ne retrouve pas la base de calcul demande des justificatifs.

Nous rendons donc d'abord lisible ce qui est calculé — montant remisé, base de taxe, taux de change appliqué — avant d'ajouter des mécanismes. Une facture qu'on peut expliquer au téléphone se paie plus vite. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Trois remises successives au lieu d'une, le taux de change négocié saisi plutôt que subi, une seule TVA par ligne contrôlée jusque sur les commandes, et les mentions légales portées par la taxe. Avec un module signalé comme obsolète par ses propres auteurs — la présence dans un dépôt ne vaut pas recommandation. Parlons de vos factures.

Documentation OCAComptabilitéTarifs

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
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