Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Vendre en B2B : tarifs par client, devis et encours

Une boutique destinée à des professionnels ressemble à une boutique grand public jusqu’au moment où l’on regarde le prix. À partir de là presque tout diverge : qui voit quel tarif, à partir de quelle quantité, hors taxes ou toutes taxes, et payé quand.

Décrire mon problème Discuter sur WhatsApp

Le prix n’est pas une propriété du produit

En vente professionnelle, le prix appartient au triplet client × produit × quantité. Dans PrestaShop, cela passe par la table specific_price, qui accepte un id_group, un id_customer, un id_product_attribute et un from_quantity, avec une règle de priorité qui décide laquelle de ces lignes l’emporte. C’est la première chose à regarder le jour où un acheteur jure voir un tarif que personne ne lui a jamais accordé : il existe presque toujours une ligne plus spécifique que celle à laquelle on pensait.

Vient ensuite l’affichage. Hors taxes ou toutes taxes selon le groupe, mais surtout l’arrondi : arrondir chaque ligne ou arrondir le total ne donne pas le même montant, et sur une commande de plusieurs dizaines de lignes l’écart finit par se voir sur la facture. Un acheteur professionnel rapproche ses factures ; il signalera le centime.

Ce qu’aucun CMS ne sait faire seul en vente professionnelle

  • Numéro de TVA intracommunautaire : contrôle du format, validation auprès du service européen VIES, exonération automatique quand la validation réussit, et surtout un comportement défini quand le service est indisponible — ce qui arrive.
  • Cycle devis complet : panier, demande de devis, validation par le commercial, transformation en commande. Aucun des trois CMS ne le propose en natif, et c’est le développement le plus souvent demandé sur ce type de boutique.
  • Édition du document et suivi des révisions : un devis se discute et se corrige, chaque version doit rester consultable et la transformation doit reprendre les prix acceptés, pas les prix courants du jour.
  • Paiement différé et encours : commande validée sans débit immédiat, facture à échéance, plafond d’encours par compte, blocage automatique au-delà. Le tunnel doit accepter un moyen de paiement qui n’encaisse rien mais engage.
  • Conditionnement : l’unité de vente n’est pas l’unité de stock. Un article se commande par colis de douze ou par palette, avec des multiples imposés et un pas de quantité appliqué côté serveur, pas seulement dans l’attribut du champ de saisie.
  • Commande rapide par référence et reprise d’un panier depuis un fichier : un acheteur qui connaît son catalogue ne navigue pas dans les catégories, il saisit des codes article à la chaîne.
  • Cloisonnement : certaines gammes ne doivent apparaître qu’à certains comptes, et un tarif négocié ne doit jamais s’afficher pour un visiteur non connecté ni fuiter dans un flux produit.

Ma façon de reprendre une boutique professionnelle

  1. Cartographier les règles de prix existantes

    Avant de toucher au code, j’inventorie ce qui s’applique déjà : groupes, règles panier, prix spécifiques par client, paliers de quantité, dates de validité oubliées. Sur une boutique en service depuis plusieurs années, cette cartographie explique à elle seule une bonne part des tarifs jugés incohérents.

  2. Trancher l’arrondi une fois pour toutes

    Je fixe le mode d’arrondi et le nombre de décimales, je les applique du panier jusqu’au document comptable, puis je contrôle sur une commande volontairement longue que le montant affiché, le montant enregistré et le montant imprimé coïncident au centime.

  3. Fiabiliser la vérification du numéro de TVA

    Le contrôle s’appuie sur le service européen, avec mise en cache du résultat et statut explicite en cas d’indisponibilité. Une commande ne doit ni rester bloquée sans explication, ni être exonérée par défaut alors que la vérification n’a pas pu aboutir.

  4. Modéliser le devis comme un objet distinct

    Le devis obtient ses propres états, sa numérotation, ses révisions, sa date de validité et son document. La transformation en commande recopie les montants acceptés et verrouille les lignes, pour qu’une évolution du tarif public ne modifie jamais un devis déjà signé.

  5. Faire respecter les conditionnements côté serveur

    Le pas de quantité, le minimum de commande et le multiple imposé sont revalidés à l’ajout au panier puis à la validation. Un champ de saisie se contourne, et un panier repris depuis un fichier ne passe jamais par l’interface.

Sujets connexes traités ailleurs sur le site

Questions fréquentes

Pourquoi un client voit-il un prix que je ne lui ai pas donné ?
Parce qu’une règle plus spécifique s’applique avant celle à laquelle vous pensez. Un prix attaché au compte l’emporte sur un prix attaché au groupe, une remise par quantité peut s’ajouter à une règle panier, et une règle expirée reste parfois active faute de date de fin. Le diagnostic consiste à lister toutes les lignes qui concernent ce couple, pas seulement celle que vous avez créée.
Faut-il afficher les prix hors taxes ou toutes taxes ?
Cela se pilote par groupe client, pas globalement. Un même catalogue peut afficher des montants hors taxes à des comptes professionnels et des montants toutes taxes à des particuliers, à condition que le panier, les frais de port et les documents suivent la même convention de bout en bout.
Le cycle devis existe-t-il en standard ?
Non, ni sur PrestaShop, ni sur WooCommerce, ni sur Shopify. Des extensions couvrent une partie du parcours, généralement la demande. La validation commerciale, les révisions successives et la transformation en commande avec verrouillage des montants relèvent du développement.
Comment gérer un plafond d’encours ?
En calculant l’encours réel du compte au moment de la validation — factures émises et non réglées, commandes en cours — puis en autorisant ou refusant le moyen de paiement différé selon ce résultat. Le message affiché doit être compréhensible, sinon le service commercial reçoit l’appel à votre place.
Que se passe-t-il si le service de vérification de TVA ne répond pas ?
Il faut l’avoir décidé à l’avance. Les deux options défendables sont d’accepter la commande en la marquant pour vérification différée, ou de la traiter comme non exonérée et de régulariser ensuite. Ce qu’il ne faut pas faire, c’est exonérer sans preuve ou bloquer sans message.
Comment permettre une commande par référence ?
Par un formulaire de saisie multiligne acceptant code article et quantité, doublé d’une reprise de fichier. Les deux entrées passent par la même validation que le tunnel classique : existence de la référence, droit d’accès du compte, multiple de conditionnement et disponibilité.

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

De quel type de développement s’agit-il ?
Partez-vous de zéro ou faut-il faire évoluer un existant ?

Reprendre un code existant non maîtrisé demande souvent un audit avant même de commencer à développer.

Une stack technique est-elle imposée ? (facultatif)
Combien de personnes utiliseront l’outil ? (facultatif)
Quelle est votre échéance ? (facultatif)
Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.