Documentation9 min de lecture

E-commerce B2B : masquer les prix, exiger la TVA, sauter le paiement

Le module OCA `website_sale_hide_price` (dépôt `e-commerce`, version 18.0.1.0.0, licence AGPL-3) permet de **masquer les prix de la boutique en ligne** à trois niveaux — pour tout le site, pour un produit, ou pour un client précis — avec un message de remplacement paramétrable à chaque niveau. Dix-huit autres modules traitent la bascule HT/TTC, la TVA obligatoire et le tunnel de commande professionnel.

Commande en ligne passée depuis un ordinateur portable

La boutique en ligne d'Odoo est conçue pour le grand public : prix affichés, paiement obligatoire, compte facultatif. Un site professionnel fonctionne à l'inverse — prix sur devis ou réservés aux clients en compte, numéro de TVA exigé, et règlement sur facture.

Dix-neuf modules communautaires font basculer la boutique en mode professionnel.

Résumé

Cinq modules traitent le masquage des prix : à trois niveaux — site, produit, client — avec message de remplacement, et ses extensions aux écrans de comparaison et de liste de souhaits, plus l'affichage d'un prix minimum « à partir de » pour les produits à variantes.

Cinq modules traitent les taxes : un prix alternatif affichant l'autre mode de taxation, une bascule HT/TTC à la main du visiteur, le numéro de TVA obligatoire à la facturation, un champ de TVA adapté au pays choisi, et des frais associés à un moyen de paiement.

Cinq modules traitent le tunnel de commande : la proposition — non l'obligation — de créer un compte au panier, la possibilité de sauter l'étape de paiement pour certains clients, la confirmation automatique d'une commande payée par un moyen à validation manuelle, le type de commande repris depuis le site, et la modification de la livraison après commande.

Quatre modules enfin traitent l'assortiment et le panier : un assortiment limitant le catalogue visible par client, l'expiration des paniers abandonnés, le vidage du panier, et la quantité personnalisée ajoutée depuis la liste de produits.

L'essentiel

  • Les prix masqués par site, par produit ou par client.
  • Un prix « à partir de » pour les produits à variantes.
  • Une bascule HT/TTC à la main du visiteur.
  • Le numéro de TVA obligatoire à la facturation.
  • Des frais associés à un moyen de paiement.
  • L'étape de paiement sautable pour les clients en compte.
  • Un assortiment limitant le catalogue visible par client.
  • L'expiration des paniers abandonnés.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Prix masquéswebsite_sale_hide_price, website_sale_comparison_hide_price, website_sale_wishlist_hide_price, website_sale_product_minimal_price, website_sale_b2x_alt_price5
Taxes et fraiswebsite_sale_tax_toggle, website_sale_vat_required, website_sale_checkout_country_vat, website_sale_charge_payment_fee4
Tunnel de commandewebsite_sale_suggest_create_account, website_sale_checkout_skip_payment, website_sale_acquirer_confirm_order, website_sale_order_type, website_sale_order_shipping_modification5
Assortiment et panierwebsite_sale_product_assortment, website_sale_cart_expire, website_sale_empty_cart, website_sale_product_item_cart_custom_qty4

Les réglages se trouvent dans Site Web ▸ Configuration ▸ Paramètres et sur les fiches client (Ventes ▸ Clients, onglet Ventes et Achats) et produit (Site Web ▸ eCommerce ▸ Produits, onglet Ventes).

Masquer les prix : la base du B2B

Un catalogue professionnel sans prix affiché n'est pas une coquetterie : les tarifs sont négociés client par client, et les afficher publiquement revient à donner son barème à ses concurrents — et à ses propres clients, qui découvrent le tarif public.

website_sale_hide_price masque les prix à trois niveaux : tout le site, un produit précis, ou un client précis. Chaque niveau a son message de remplacement — « Prix sur demande », « Nous consulter ».

Le niveau client est le plus utile : le catalogue est muet pour un visiteur anonyme et chiffré pour un client connecté, avec son propre tarif.

  • website_sale_comparison_hide_price et website_sale_wishlist_hide_price étendent ce masquage aux écrans de comparaison et de liste de souhaits. Le premier s'installe automatiquement.
  • website_sale_product_minimal_price affiche « à partir de » sur les produits à variantes de prix différents, au lieu d'un prix unique trompeur.
  • website_sale_b2x_alt_price affiche un prix alternatif — l'autre mode de taxation, avec ou sans taxes — en complément du prix principal.

Sans les deux premières extensions, le masquage fuit : le prix masqué sur la fiche produit réapparaît dans le comparateur.

Les taxes et les frais

website_sale_tax_toggle (version 18.0.1.0.0) ajoute un interrupteur permettant au visiteur de voir les prix hors taxes ou toutes taxes comprises, à la volée.

La bascule HT/TTC répond à un problème de conversion mesurable : un acheteur professionnel qui voit des prix TTC les recalcule mentalement et abandonne plus souvent ; un particulier qui voit des prix HT a une surprise au panier.

  • website_sale_vat_required rend le numéro de TVA obligatoire sur le formulaire d'adresse de facturation du tunnel d'achat.
  • website_sale_checkout_country_vat adapte le champ de TVA au pays choisi dans le formulaire professionnel, en s'appuyant sur un module de liste déroulante de pays.
  • website_sale_charge_payment_fee (LGPL-3) associe des frais — fixes ou en pourcentage — à un moyen de paiement. Le client qui choisit ce moyen voit les frais s'ajouter.

Les frais par moyen de paiement correspondent à une pratique courante : absorber le coût de la carte bancaire sur les petits montants, ou facturer le traitement d'un chèque.

Le tunnel de commande professionnel

website_sale_checkout_skip_payment permet à certains clients connectés de finaliser une commande sans passer par le paiement en ligne : la commande est confirmée et un courriel part. Le réglage se fait sur la fiche contact et dans les paramètres du site.

C'est le module qui rend un site utilisable en B2B : un client en compte ne paie pas par carte, il reçoit une facture à trente jours. Lui imposer un paiement en ligne revient à lui demander d'appeler pour commander — ce qu'il fera.

  • website_sale_acquirer_confirm_order confirme automatiquement une commande payée par un moyen à validation manuelle — virement, mandat.
  • website_sale_suggest_create_account propose à l'acheteur non connecté de créer un compte ou de se connecter, sans l'y obliger.
  • website_sale_order_type reprend le type de commande depuis le site, en s'appuyant sur le module de types de commande de vente. Réglage dans Site Web ▸ Configuration ▸ Paramètres, section d'affectation des commandes.
  • website_sale_order_shipping_modification permet la modification de la livraison après commande.

Les types de commande sont traités dans ventes : types, workflows et blocages.

L'assortiment et le panier

website_sale_product_assortment (version 18.0.1.1.1) limite le catalogue visible par client : un assortiment par client ou par groupe de clients.

C'est le besoin du négoce : tous les clients ne voient pas toute la gamme, soit par accord de distribution, soit parce que certaines références sont réservées à un segment.

  • website_sale_cart_expire (version 18.0.1.0.1) fait expirer les paniers abandonnés après un délai. Sans cela, les paniers s'accumulent indéfiniment et réservent éventuellement du stock.
  • website_sale_empty_cart ajoute une action de vidage du panier.
  • website_sale_product_item_cart_custom_qty permet d'ajouter une quantité personnalisée directement depuis la liste de produits, sans ouvrir la fiche.

La quantité personnalisée depuis la liste est l'ajout qui change le plus le réapprovisionnement professionnel : un client qui commande quarante références n'ouvre pas quarante fiches produit.

Limites connues

  • Les READMEs de ce dépôt ne portent pas de section d'origine : les versions citées ici sont relevées depuis les manifestes GitHub de la branche 18.0.
  • Le dépôt existe en double : e-commerce (42 modules) et ecommerce (41) partagent le même contenu, l'un étant le renommage de l'autre. Vérifier lequel votre installation suit.
  • Masquer les prix sans les deux extensions fuit : comparateur et liste de souhaits les réaffichent.
  • website_sale_checkout_skip_payment confirme des commandes sans paiement : à restreindre strictement aux clients en compte, et à croiser avec un encours.
  • L'expiration des paniers supprime des données de visiteurs : le délai se choisit en connaissance des usages, un acheteur professionnel pouvant revenir une semaine plus tard.
  • La bascule HT/TTC ne change pas la facture : elle change l'affichage. Les mentions légales d'affichage des prix restent à respecter.
  • Le numéro de TVA obligatoire bloque les particuliers : à n'activer que sur un site strictement professionnel.

Identité technique

Les dix-neuf modules viennent du dépôt OCA e-commerce, branche 18.0 — présent en double sous le nom ecommerce. Ils sont majoritairement en AGPL-3 ; website_sale_charge_payment_fee est en LGPL-3. Les dépendances : website_sale pour tous, base_vat pour les contrôles de TVA, payment pour les frais et la confirmation, sale_order_type pour les types de commande, website_sale_comparison et website_sale_wishlist pour les extensions de masquage.

Voir aussi le catalogue en ligne : filtres, tri, stock et liens produits pour le reste du dépôt.

Questions fréquentes

Peut-on masquer les prix sur une boutique Odoo ?

Oui, à trois niveaux avec website_sale_hide_price : tout le site, un produit, ou un client précis — chacun avec son message de remplacement. Installez aussi les extensions pour le comparateur et la liste de souhaits, sans lesquelles le prix masqué réapparaît.

Peut-on laisser un client en compte commander sans payer en ligne ?

Oui : website_sale_checkout_skip_payment permet à certains clients connectés de finaliser sans passer par le paiement, la commande étant confirmée et un courriel envoyé. C'est le module qui rend un site utilisable en B2B — sinon le client appellera pour commander.

Peut-on afficher les prix hors taxes sur une boutique Odoo ?

website_sale_tax_toggle ajoute un interrupteur laissant le visiteur choisir HT ou TTC. Un acheteur professionnel qui voit des prix TTC les recalcule et abandonne plus souvent ; un particulier qui voit des prix HT a une surprise au panier. Les mentions légales d'affichage restent à respecter.

Peut-on limiter le catalogue visible à certains clients ?

Oui, avec website_sale_product_assortment : un assortiment par client ou par groupe. C'est le besoin du négoce — accords de distribution, références réservées à un segment — et il ne se traite pas par les droits d'accès.

Peut-on facturer des frais selon le moyen de paiement choisi ?

Oui : website_sale_charge_payment_fee associe des frais fixes ou en pourcentage à un moyen de paiement, ajoutés quand le client le choisit. Pratique courante : absorber le coût de la carte sur les petits montants, ou facturer le traitement d'un chèque.

Se faire accompagner

Une boutique Odoo installée telle quelle est une boutique grand public : prix affichés, paiement obligatoire, catalogue complet. Un site professionnel demande l'inverse sur chacun de ces trois points, et les trois se règlent par des modules — pas par du développement.

Nous partons donc de votre politique tarifaire réelle — qui voit quels prix, qui paie comment, qui voit quelles références — et nous configurons la boutique en conséquence, en vérifiant chaque fuite de prix sur le site réel. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

La boutique en ligne d'Odoo est conçue pour le grand public : prix affichés, paiement obligatoire, compte facultatif. Un site professionnel fonctionne à l'inverse sur chacun de ces trois points — et dix-neuf modules l'y amènent. Parlons de votre boutique B2B.

Documentation OCAE-commerceOdoo Community

Partager

Fiches connexes

Baies de serveurs dans une salle machine
Le module OCA `queue_job` (dépôt `queue`, version 18.0.3.4.1, licence LGPL-3) ajoute à Odoo une **file de travaux de fond** avec ses canaux, ses fonctions et ses tâches, sous le menu **File d'attente des tâches** : c'est la brique dont dépendent plus de quarante modules communautaires, et la première à surveiller en exploitation. Vingt-six autres modules traitent les composants, la configuration hors base, l'impression serveur et l'IoT.
Lire la suite
Documentation OCA, Exploitation
Câbles réseau branchés sur un commutateur
Le module OCA `endpoint` (dépôt `web-api`, version 18.0.1.1.4, licence LGPL-3) permet de **déclarer un point d'entrée HTTP depuis l'interface**, sous **Paramètres ▸ Technique ▸ Endpoints** : une adresse, une méthode, un traitement — sans écrire de module. Vingt-trois autres modules traitent le cache, les imports par sessions, les échanges de factures et l'agenda.
Lire la suite
Documentation OCA, Intégration