Documentation10 min de lecture

Listes de prix : marge visible, révisions datées et impression client

Dix-huit modules OCA du dépôt `product-attribute` rendent les listes de prix d'Odoo 18 Community exploitables : `product_pricelist_margin` affiche **le coût du produit et la marge dégagée directement dans les lignes de règles**, et `product_pricelist_revision` génère des **révisions datées** d'un tarif à prix fixe par simple augmentation en pourcentage. Les seize autres, de l'historique des prix fixes à l'impression du tarif d'un client en PDF ou en Excel.

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

Les listes de prix d'Odoo savent tout faire et ne montrent rien : on écrit une règle sans voir la marge qu'elle produit, on la modifie sans garder trace de l'ancienne, et on ne peut pas imprimer le tarif qu'un client va recevoir.

Dix-huit modules communautaires comblent ces manques — et ajoutent la révision annuelle, geste commercial que tout le monde fait dans un tableur.

Résumé

Trois modules rendent le travail visible : la marge et le coût affichés dans les lignes de règles, un écran listant toutes les règles toutes listes confondues, et la simulation du prix d'un produit pour toutes les listes de prix.

Quatre gèrent le temps : des révisions datées générées par augmentation en pourcentage, l'historique des changements de prix fixe, l'alimentation automatique du prix catalogue depuis une liste de référence, et la saisie des règles depuis la fiche produit.

Quatre affinent le calcul : des listes alternatives comparées à la liste de référence, des tranches de remise selon le prix de référence, un taux de change figé pour les règles adossées à une autre devise, et des règles calculées depuis les tarifs fournisseurs. Deux autres ciblent les destinataires : une liste de prix par contact et des règles générées depuis un assortiment.

Cinq enfin impriment : un assistant d'impression ou d'envoi par courriel du tarif, avec ses extensions Excel, groupes de sociétés et catégories publiques du site. Un dernier module est une brique technique de calcul de prix pour les développements.

L'essentiel

  • La marge affichée dans la règle de tarif — avant de l'appliquer, pas après.
  • Des révisions datées : le tarif de l'an prochain généré depuis celui de cette année.
  • L'historique des prix fixes conservé à chaque modification.
  • La simulation du prix d'un produit dans toutes les listes.
  • Un écran unique pour toutes les règles, toutes listes confondues.
  • Une liste de prix par contact, et pas seulement par client.
  • L'impression du tarif d'un client en PDF ou en Excel, ou son envoi par courriel.
  • Le prix catalogue alimenté automatiquement depuis une liste de référence.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Visibilitéproduct_pricelist_margin, product_pricelist_item_list_view, product_pricelist_simulation3
Temps et historiqueproduct_pricelist_revision, product_pricelist_product_price_history, product_list_price_from_pricelist, product_form_pricelist4
Calculproduct_pricelist_alternative, product_pricelist_discount_by_range, product_pricelist_fixed_currency_rate, product_pricelist_supplierinfo4
Destinatairesproduct_pricelist_by_contact, product_pricelist_assortment2
Impressionproduct_pricelist_direct_print et ses trois extensions (_xlsx, _company_group, _website_sale)4
Techniqueproduct_get_price_helper1

Les menus ajoutés sont tous dans Ventes ▸ Produits : impression du tarif, règles de prix, historique des tarifs, élément précédent.

Voir ce qu'une règle produit

Écrire une règle de tarif sans voir la marge, c'est décider à l'aveugle. product_pricelist_margin affiche le coût du produit et la marge dégagée directement dans les lignes de règles — on simule l'effet d'une remise avant de l'accorder, pas au bilan.

Deux modules complètent cette visibilité :

  • product_pricelist_item_list_view ajoute un écran listant toutes les règles de tarification, toutes listes de prix confondues, avec recherche. C'est la réponse à « où est la règle qui donne ce prix ? », question posée chaque fois qu'un prix surprend.
  • product_pricelist_simulation calcule le prix d'un produit pour toutes les listes de prix : on voit d'un écran ce que chaque catégorie de client paierait.

Ces trois modules transforment la liste de prix d'un mécanisme opaque en outil de décision. Sans eux, la seule façon de vérifier une règle est de créer un devis de test — ce que personne ne fait systématiquement.

La protection du coût, qui conditionne qui peut voir ces marges, est traitée dans la fiche produit.

Le temps : réviser, tracer, propager

La révision annuelle

product_pricelist_revision génère, à partir d'une règle à prix fixe existante, une copie datée dont le prix est augmenté d'un pourcentage. C'est le geste de la revalorisation tarifaire — fait partout, presque toujours dans un tableur, puis réimporté avec les erreurs que cela suppose.

product_pricelist_product_price_history conserve l'historique de chaque modification de prix fixe : l'ancien prix, la date, le contexte. Un client qui conteste une hausse obtient une réponse documentée.

Propager vers le catalogue

product_list_price_from_pricelist calcule et maintient le prix de vente catalogue du produit à partir d'une liste de prix désignée comme référence. Le prix catalogue cesse d'être une donnée saisie en double qui dérive de la liste réellement appliquée.

product_form_pricelist permet enfin de saisir et consulter les règles depuis la fiche produit, sans naviguer vers l'écran des listes de prix. Pour un gestionnaire de catalogue qui travaille produit par produit, c'est l'écran qui manque.

Affiner le calcul

ModuleCe qu'il permet
product_pricelist_alternativeRattacher des listes alternatives à une liste de référence, et comparer les prix obtenus
product_pricelist_discount_by_rangeDes tranches de remise selon le prix de référence du produit — plus le prix est élevé, plus la remise change
product_pricelist_fixed_currency_rateUn taux de change figé pour une règle adossée à une liste exprimée dans une autre devise
product_pricelist_supplierinfoUne règle de prix de vente calculée depuis les tarifs fournisseurs du produit

Le deuxième correspond à une pratique commerciale courante et mal supportée : la remise n'est pas uniforme, elle dépend du niveau de prix. Sur un catalogue mélangeant des consommables et du matériel, une remise unique est soit trop généreuse, soit intenable.

Le troisième évite une dérive désagréable : une liste de prix en devise étrangère recalculée chaque jour au taux du jour donne un prix qui bouge sans décision commerciale. Figer le taux rend le tarif stable jusqu'à la prochaine révision.

Le quatrième relie l'achat à la vente : le prix de vente suit le tarif fournisseur selon une formule. C'est la mécanique du négoce à marge fixe — et elle suppose que les tarifs fournisseurs soient tenus à jour.

Les modules qui s'en chargent sont décrits dans tarifs fournisseurs.

Cibler et imprimer

Des tarifs pour qui ?

  • product_pricelist_by_contact permet d'assigner une liste de prix à chaque contact d'un partenaire — adresse de livraison, contact enfant — et pas seulement au client principal. Dans un groupe, deux établissements peuvent avoir des conditions distinctes.
  • product_pricelist_assortment génère les lignes de liste de prix à partir d'un assortiment défini par un filtre sauvegardé. On décrit une famille de produits par un critère, et les règles se créent.

Imprimer le tarif

Un client professionnel demande son tarif. Sans module, il faut extraire les données et mettre en page à la main — ou envoyer une capture d'écran. product_pricelist_direct_print ajoute un assistant d'impression PDF et d'envoi par courriel, accessible depuis le menu Ventes, une fiche produit ou une liste de produits.

Trois extensions le complètent :

ExtensionCe qu'elle ajoute
product_pricelist_direct_print_xlsxL'export du tarif en Excel, en plus du PDF
product_pricelist_direct_print_company_groupLa prise en compte des groupes de sociétés du client
product_pricelist_direct_print_website_saleLe filtrage et le regroupement par catégories publiques du site

L'export Excel est celui que réclament les acheteurs : ils l'intègrent dans leurs propres outils. Le refuser, c'est les obliger à ressaisir — et donc à introduire des écarts que vous découvrirez à la première commande.

Reste product_get_price_helper, brique technique pure : une méthode de calcul de prix réutilisable par d'autres modules et par les développements spécifiques.

Limites connues

  • La marge affichée suppose un coût juste : sur des produits mal valorisés, elle informe mal.
  • Les révisions créent des règles supplémentaires : sans ménage, la liste de prix grossit d'année en année.
  • Le prix catalogue alimenté automatiquement devient non modifiable à la main : c'est le but, et cela surprend.
  • Un taux de change figé doit être révisé : figé et oublié, il finit par être faux.
  • Les règles générées depuis un assortiment dépendent du filtre : un filtre mal écrit produit des centaines de règles.
  • L'impression dépend de trois modules selon les besoins : Excel, groupes de sociétés, catégories du site.

Identité technique

Les dix-huit modules viennent du dépôt OCA product-attribute, branche 18.0, en licence AGPL-3 sauf product_pricelist_item_list_view (LGPL-3). Plusieurs dépendent de sale ou de account ; l'export tableur s'appuie sur le moteur du dépôt reporting-engine, et l'extension groupes de sociétés sur un module du dépôt partner-contact.

Les familles voisines : la fiche produit, emballages, poids et unités et, côté vente, remises, prix et tarifs.

Questions fréquentes

Peut-on voir la marge d'une règle de tarif avant de l'appliquer ?

Oui, avec product_pricelist_margin, qui affiche le coût du produit et la marge dégagée directement dans les lignes de règles. Sans lui, la seule façon de vérifier l'effet d'une règle est de créer un devis de test — ce que personne ne fait systématiquement.

Comment réviser un tarif chaque année ?

product_pricelist_revision génère, depuis une règle à prix fixe, une copie datée augmentée d'un pourcentage. C'est le geste de la revalorisation annuelle, habituellement fait dans un tableur puis réimporté. En complément, product_pricelist_product_price_history conserve l'historique de chaque changement de prix fixe.

Comment retrouver la règle qui donne un prix surprenant ?

product_pricelist_item_list_view ajoute un écran listant toutes les règles, toutes listes de prix confondues, avec recherche. Et product_pricelist_simulation calcule le prix d'un produit pour toutes les listes, ce qui montre d'un écran ce que chaque catégorie de client paierait.

Peut-on envoyer son tarif à un client au format Excel ?

Oui : product_pricelist_direct_print fournit l'assistant d'impression PDF et d'envoi par courriel, et son extension _xlsx ajoute l'export Excel. C'est le format que demandent les acheteurs, qui l'intègrent dans leurs outils — le refuser les oblige à ressaisir, donc à introduire des écarts.

Peut-on donner un tarif différent à deux établissements d'un même client ?

Oui, avec product_pricelist_by_contact, qui assigne une liste de prix à chaque contact d'une fiche partenaire — adresse de livraison, contact enfant — et pas seulement au client principal. C'est fréquent dans les groupes où les conditions se négocient par établissement.

Se faire accompagner

Les listes de prix sont le mécanisme le plus puissant et le plus opaque d'Odoo : elles produisent un prix que personne ne sait expliquer, et qu'on finit par corriger à la main sur le devis — ce qui annule tout l'intérêt d'avoir une politique tarifaire.

Nous rendons donc d'abord le mécanisme lisible — marge affichée, écran de toutes les règles, simulation — avant d'en ajouter. Une politique tarifaire qu'on peut vérifier est une politique qu'on peut tenir. Voir les prestations d'Atalios Consulting, notre méthode ou demander un rappel.

Pour aller plus loin

En résumé

La marge visible au moment d'écrire la règle, l'historique des prix conservé, la révision annuelle générée plutôt que tapée, et le tarif enfin imprimable — en PDF ou dans l'Excel que l'acheteur demande. Dix-huit modules pour rendre une politique tarifaire vérifiable. Parlons de vos tarifs.

Documentation OCAProduitsTarifs

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