Demande de Devis B2B — Guide complet
Installer, configurer et exploiter la demande de devis B2B : bouton Devis, panier de devis, négociation des prix ligne par ligne, remise, PDF natif, acceptation client et conversion en commande pour PrestaShop 8 et 9.
Présentation
Le module Demande de Devis B2B (dfb2bquote) ajoute un véritable circuit de vente sur devis à votre boutique PrestaShop. Un bouton « Devis » remplace ou complète l’ajout au panier : vos clients professionnels composent leur demande dans un panier de devis dédié, l’envoient, et vous reprenez la main au back-office pour négocier les prix ligne par ligne, appliquer une remise, fixer une validité et générer un PDF au style de votre boutique. Une fois le devis accepté par le client, un clic le convertit en commande réelle avec les prix négociés figés.
Pensé pour le B2B et la vente sur mesure : grossistes, fournitures professionnelles, gros volumes, produits configurables. Le parcours d’achat classique de vos clients particuliers reste intact : le bouton Devis peut remplacer l’achat, ou simplement s’ajouter à côté.
Compatibilité
- PrestaShop 8.0 à 9.x
- PHP 7.4 à 8.3
- Mono-boutique et multi-boutique
- Multilingue (statuts traduits, emails fournis en FR et EN)
- Thème Classic et thèmes personnalisés (le bouton s’injecte même si le thème n’appelle pas le hook)
- Aucune dépendance (ni Composer ni framework)
Installation
- Dans le back-office, ouvrez Modules > Gestionnaire de modules.
- Cliquez sur Installer un module puis sélectionnez le fichier
dfb2bquote.zip. - Une fois installé, cliquez sur Configurer.
À l’installation, le module crée ses tables (devis, lignes, statuts, panier de devis, historique), initialise les sept statuts par défaut, enregistre ses hooks (fiche produit, en-tête, espace client, authentification) et ajoute l’onglet Devis sous Commandes dans le menu d’administration. Un lien Mes devis apparaît dans l’espace client.
Configuration
Bouton et affichage
- Activer le module : active ou désactive l’ensemble du circuit devis côté front.
- Mode du bouton : Remplacement (le bouton Devis prend la place de l’ajout au panier, pour une boutique 100 % sur devis) ou Complément (le bouton s’ajoute à côté de l’achat classique, pour servir à la fois B2C et B2B).
- Libellé du bouton : texte affiché sur le bouton (« Devis », « Demander un prix »…).
- Masquer les prix : masque les prix catalogue côté front, pour une logique entièrement sur devis.
- Groupes clients : laissez vide pour afficher le bouton à tout le monde, ou sélectionnez les groupes (par exemple vos groupes professionnels) pour le réserver au B2B.
Demande et règles
- Autoriser les invités : permet à un visiteur non connecté de soumettre une demande en renseignant ses coordonnées (nom, email, société, téléphone). Désactivez pour n’accepter que les clients connectés.
- Montant minimum : seuil HT requis pour pouvoir soumettre une demande.
- Validité (jours) : durée de validité appliquée par défaut aux devis.
- Afficher le lien « Mes devis » : affiche l’indicateur de devis et le lien d’accès dans l’en-tête.
Conversion et documents
- Email administrateur : adresse qui reçoit la notification à chaque nouvelle demande.
- État de commande à la conversion : statut appliqué à la commande générée lors de la conversion d’un devis accepté.
- Conditions (CGV) : texte affiché en bas du PDF de devis.
Utilisation — côté client
Demander un devis
Sur la fiche produit et les listings, le client clique sur le bouton Devis. Le produit (et sa déclinaison) est ajouté à son panier de devis, indépendant du panier d’achat. Un indicateur « Mon devis » se met à jour dans l’en-tête.
Le panier de devis
Sur la page du panier de devis, le client ajuste les quantités, retire des lignes, ajoute un message, puis soumet sa demande. S’il n’est pas connecté et que le mode invité est autorisé, il renseigne ses coordonnées. À la soumission, le devis est créé au statut Nouvelle demande et une notification est envoyée à votre équipe.
Le panier de devis est rattaché à la session du visiteur et persiste entre les pages. À la connexion, un panier constitué en tant qu’invité est automatiquement transféré au compte client.
L’espace « Mes devis »
Depuis son compte, le client retrouve la liste de ses devis avec leur statut. Sur le détail d’un devis, il consulte les lignes et les totaux, télécharge le PDF, et lorsque le devis lui a été envoyé, peut l’accepter ou le refuser. Un invité accède à son devis via un lien sécurisé par clé unique.
Utilisation — back-office
Liste des devis
L’onglet Devis (sous Commandes) liste toutes les demandes avec leur référence, le client, un badge de statut coloré, le total HT et la date. Un clic ouvre l’écran de gestion.
Négocier le devis
Sur l’écran de détail, pour chaque ligne, le prix catalogue est rappelé et vous saisissez le prix négocié HT. Vous pouvez aussi :
- appliquer une remise globale en montant HT ou en pourcentage ;
- ajouter des frais de port indicatifs ;
- saisir un message destiné au client ;
- fixer ou ajuster la date de validité.
Statut et notification
Vous changez le statut du devis et, en cochant Notifier le client, déclenchez l’envoi d’un email. Passez le devis à Devis envoyé pour que le client puisse l’accepter depuis son espace. Tout l’historique des statuts est conservé, horodaté.
Convertir en commande
Lorsque le devis est Accepté, le bouton Convertir en commande apparaît. La conversion crée un panier, applique chaque prix négocié via un SpecificPrice rattaché à ce panier, ajoute l’éventuelle remise globale via une règle panier (CartRule), puis crée la commande via validateOrder avec l’état configuré.
Les prix spécifiques et règles temporaires sont nettoyés automatiquement après la création de la commande : votre catalogue n’est jamais modifié, et la commande porte exactement les montants négociés.
Les statuts de devis
- Nouvelle demande : devis reçu, à traiter.
- En cours : en cours de préparation côté boutique.
- Devis envoyé : transmis au client, qui peut l’accepter ou le refuser.
- Accepté : validé par le client, prêt à convertir en commande.
- Refusé : décliné par le client.
- Expiré : date de validité dépassée.
- Converti en commande : transformé en commande réelle.
FAQ et dépannage
Le bouton « Devis » ne s’affiche pas
Vérifiez que le module est activé, que le visiteur appartient à un groupe autorisé (si vous avez restreint l’affichage), et videz le cache de PrestaShop. Le module sait injecter le bouton même si votre thème n’appelle pas le hook de la fiche produit ; en cas de thème très personnalisé, vérifiez la présence du conteneur d’achat.
Page blanche ou erreur « JSON invalide » à l’ajout
Videz le cache (Paramètres avancés > Performances) et, pendant vos tests, désactivez la combinaison/compression des fichiers (CCC). Les réponses AJAX du module sont du JSON strict, renvoyé directement pour rester compatible PrestaShop 9.
Les prix ne sont pas masqués
Activez l’option Masquer les prix. Selon votre thème, certains emplacements de prix très spécifiques peuvent nécessiter un ajustement ; le module masque les emplacements standard de PrestaShop.
Le client ne peut pas accepter son devis
L’acceptation et le refus ne sont possibles que lorsque le devis est au statut Devis envoyé. Passez le devis à ce statut depuis le back-office.
Les emails ne sont pas reçus
Vérifiez l’adresse renseignée dans Email administrateur et la configuration email de PrestaShop (Paramètres avancés > E-mail). Les modèles sont fournis en français et en anglais et restent personnalisables.
Est-ce compatible PrestaShop 9 et multiboutique ?
Oui. Le module est compatible PrestaShop 8 et 9, en mono-boutique comme en multi-boutique. Les devis sont rattachés à la boutique et à la langue du client.