Prestashop et le champ bon de réduction absent

Depuis tout ce temps, il n’est pas rare que je voie le cas du « champ de bon réduction » qui ne s’affiche pas dans le récapitulatif panier de la boutique. Voyons ensemble comment y remédier à ce problème qui est assez fréquent sous Prestashop.

Explication du problème

Vous avez par exemple créé un bon de réduction dans le back-office de votre boutique, mais voilà… dans le récapitulatif du panier le champ n’apparaît pas, il est du coup impossible pour l’utilisateur de saisir le bon. Si vous lisez cet article, penser à bien vérifier sur votre boutique si le champ s’affiche bien de manière permanente, car celui-ci peut compromettre des ventes, voir frustrer l’acheteur qui ne saura pas où saisir son code.

Le champ pour la saisie ne s’affiche pas, alors qu’un bon de réduction existe.

Correction méthode 1

La première méthode à essayer, c’est de modifier le fichier « shopping-cart.tpl » de votre thème en retirant les balises fermantes et ouvrantes pour la condition « {if $voucherAllowed} ». Le but de la manipulation est de forcer le champ à s’afficher. Il faut effectuer cela normalement à 3 endroits dans le fichier.

Il faut normalement retirer ces 2 balises 3 fois dans le fichier.

Correction méthode 2

Si cela ne fonctionne pas, il faut modifier à nouveau le fichier « shopping-cart.tpl » de votre thème en supprimant cette fois les balises du type class="cart_voucher". Cela évitera à certains fichiers Javascript d’intervenir sur ces éléments de l’interface (ce qui peut parfois influencer l’affichage). Vous devriez pouvoir aussi supprimer 3 fois ces balises.

Parfois la suppression de la classe remédie au problème.

Correction méthode 3

Si vous êtes ici, vous n’avez vraiment pas de chance… Avez-vous installé le module PayPal ? Si oui, c’est peut-être celui-ci perturbe le fonctionnement. Pour cela je vous invite à consulter le fichier « modules/paypal/views/templates/hook/paypal.js » & « modules/paypal/js/paypal.js » et à regarder si vous trouvez à l’intérieur cette ligne :

$('.qty-field.cart_quantity_input, .cart_total_bar, .cart_quantity_delete, #cart_voucher *').remove();

Si vous la trouvez, mettez la en commentaire dans les deux fichier comme ceci :

/*$('.qty-field.cart_quantity_input, .cart_total_bar, .cart_quantity_delete, #cart_voucher *').remove();*/

Respirez un bon coup !

Si vous avez appliqué les 3 patches ci-dessus, normalement le bloc pour l’utilisation des bons de réduction devrait s’afficher.. Le pire reste quand même le point 3 qui concerne le module PayPal, qui retire volontairement le champ bon de réduction dans le but de verrouiller la commande à cette étape du récapitulatif panier.

Enfin le champ devrait s’afficher de manière permanente…

Bilan

Si toutefois le problème persistait encore, il faut bien faire un CTRL+R ou F5 pour bien recharger votre page. Surtout s’il s’agit du point n°3, il faut bien que le fichier Javascript soit actualisé pour qu’il arrête de retirer le champ. Le problème est récurent, je le vois lors de déploiement de boutiques, le bug se remarque surtout à l’utilisation ou lorsqu’on commence à mettre une stratégie en place pour la gestion des bons de réduction.

32 réflexions au sujet de « Prestashop et le champ bon de réduction absent »

  1. Perso sur un Prestashop 1.6, le formulaire « Bons de réduction » s’affiche directement
    dès la mise en place un premier code coté BackOffice dans Promotions > Règles de panier.

    Lors d’une mise en place de boutique je créé ce premier code.
    Ex. « Frais de port Offert » puis le désactive et le formulaire est bien présent sans devoir toucher au code.

    J’ai plus l’impression que Prestashop test cette présence ou non de ce 1er code
    car il n’est pas utile d’afficher ce formulaire si il y a pas de « Bon de réduction » configuré.

    🙂

    1. Hello,

      Effectivement par défaut tout semble se passer correctement, mais je vois régulièrement passer ce problème lors de la xième commande pour un même compte client.

      Le coup du compte PayPal est aussi récurrent, mais ensuite tout dépend de la version de Prestashop et de la configuration générale de la boutique.

      Par principe à présent quand le formulaire des bons de réduction me joue des tours j’applique cette méthode… mais ce n’est pas « obligatoire » 😉 !

      Merci pour ta visite !

  2. Bonjour,

    Le petit + : n’afficher ce bloc que quand le client a effectivement un bon de réduction actif.

    Ca évite que le cliente parte à la chasse aux codes de réduction sur le net alors qu’il est prêt à valider sa commande.

    Je l’ai fait sur une 1.4, il faut simplement que je retrouve le code…

    1. Bonjour,

      Cela sent déjà le vécu 😉 ! Ensuite il faut pouvoir aussi gérer le cas, du bon « actif » pour tout le monde, non-assigné à un client spécifique.

      C’est aussi pour cela qu’il faut bien mettre une date de péremption assez courte pour éviter ce type de désagréments.

      Merci pour votre visite !

  3. Bonjour,

    Pour ceux qui auraient des doutes sur la probabilité de rencontrer le bug concerné par la méthode 3…

    Il faut savoir que ce bug apparaît exclusivement lorsqu’on abandonne un paiement Paypal sans utiliser le lien Paypal prévu pour annuler et retourner vers la boutique du marchand (utilisation du bouton « page précédente » du navigateur par exemple).

    Le problème vient en fait d’un cookie placé par le module Paypal qui n’est pas effacé lorsqu’on abandonne un paiement à l’arrache.

    Bref, la probabilité de rencontrer le bug avec Paypal est donc très sérieuse 😉

    1. Hello,

      Exactement, je confirme aussi que ce n’est pas un cas « isolé », mais un cas « fréquent » qui peut se produit sur une boutique Prestashop utilisant le module officiel de PayPal.

      Merci d’avoir appuyé ce point !

      1. Bonjour, étant plus que débutante sur Prestashop je ne sais pas comment faire les manipulations concernant Prestashop et le champ bon de réduction absent. Pourriez vous me dire où et comment je peux trouver les lignes à modifier. Merci

        1. Bonjour,

          Il faudra absolument retoucher au code de Prestashop, l’étape 3 est nécessaire.

          Si vous n’avez pas de compétences techniques, il faudra vous faire aider par un spécialiste du web.

          Merci pour votre visite !

    1. Bonjour,

      Bonne nouvelle pour vous, j’ai pensé à rédiger ce billet, car moi aussi j’ai été confronté de multiples-fois à ce problème et chercher… cela prend du temps.

      Merci pour votre visite !

    1. Ça fonctionne, mais « paypal express » ne fonctionne plus et n’arrive plus à greffer le Displaypageheader. Il est disparu. J’ai réinitialisé et réinstaller le module paypal rien à faire….

      1. Bonjour,

        Pour PayPal express je pourrai pas vous dire exactement, je désactive toujours cette option, car je la trouve « brouillonne » et cela ne permet pas de conserver toutes les informations du clients + pouvoir conserver un historique clair des transactions.

        Je me suis toujours demandé qui sont les clients qui achètent véritablement avec cette option…

        Merci pour votre visite !

    1. A vérifier le CHMOD à mettre en 755 voir 775 suivant votre hébergeur, si remplacement ne se fait pas c’est qu’il y a un problème de permissions.

  4. Merci pour cette astuce! La correction 3 corrige mon problème… Je ne comprenais plus suivant le navigateur la box s’affichait ou non. je comprends mieux maintenant avec cette histoire de Cookies :hum:

    1. Bonne nouvelle si ça fonctionne, le cas n°3 est souvent rencontré par les marchands, mais pas facile de le détecter sans notion en développement.

  5. j’ai appliqué la méthode 3 concernant paypal, bonne nouvelle le bloc apparait de nouveau

    mauvaise nouvelle il ne fonctionne pas, j’ai beau tester des bons rien ne change!

    faut il réaliser aussi les méthodes 1 et 2?

    1. Normalement la méthode 3 suffit uniquement, est-ce que tu as regardé avec l’inspecteur JS de Firebug, s’il y’avait une erreur d’exécution javascript ?

  6. Bonjour,

    Je viens de faire les 3 étapes mais cela ne fonctionne toujours pas.
    Je precise que je suis en 1.6.0.9

    Peut-Être ai-je oublié une étape ?

  7. Je precise que le champs code de reduction n’apparait pas dans le récapitulatif de la commande
    etape 1 mais uniquement a l’étape 5
    et lorsque je remplis le champs cela me renvoie a l’étape 1

  8. Bonjour,
    Prestashop 1.6.1.6 suite mise à jour fin août deuis 1.4.0.17
    thème responsive de temla
    Le problème est survenu depuis quelques jours sans que je ne le relie à une cause (disparition de la case bons de réduction). j’ai appliqué la méthode 1 et la 2.
    la 3 je ne peux pas, le fichier paypal.js n’est pas au même endroit et l’occurrence cherchée ne concerne que le paypal express que je n’utilise pas.
    j’ai vidé le cache recompilé les templates, vidé le cache de mon navigateur. rien n’y fait.
    j’ai déjà des règles paniers depuis longtemps. qu’à cela ne tienne ! j’en recrée une générale et là la case bons de réduction s’est affichée une fois fugitivement, puis plus jamais …
    rien n’y fait pour linstant.
    ça suit les nombreux bugs et soucis que j’ai eus depuis la mise à jour et qui me donnent aujourd’hui envie de fermer cette boutique qui tourne depuis 5 ans …

    1. Bonjour,

      Dans votre cas je vous conseille.

      1) De désactiver le module PayPal pour voir si le problème est toujours présent.
      2) Si le problème a ensuite disparu, désinstallez le module PayPal et ré-installez la dernière version disponible via Prestashop Addons.
      3) Appliquez ensuite la méthode n°3 énoncée ci-dessus.

      Merci pour votre visite !

  9. Bonjour,

    Problème toujours présent sur la version 1.6.1.9

    Chez moi la case Bons de réduction et le bouton supprimer disparaît.

    J’ai réussi à reproduire le problème, c’est bien un problème Paypal,
    pour produire le problème, il faut faire une commande, choisir Paypal,
    puis une fois arrivé sur Paypal, retourner en arrière ou fermer le site,
    la quand ont reviens sur le site et le panier, la case bons de reduction
    et le bouton supprimé ont disparut.
    Pour les retrouver, il faut supprimer les cookies.

    Pour ne pas avoir ce problème il faut normalement utiliser le bouton
    annuler une fois sur Paypal et pas revenir en arrière comme ça.
    Pareil si ont utilise l’expresse checkout, en cliquant dessus puis en
    revenant en arrière ont retrouve le même problème.

    Donc ma supposition est la suivante, Paypal verrouille la commande donc
    plus de bons de remise ou de bouton supprimer pour que le total reste
    verrouillé, si ont annuler pas elle reste verrouillé d’où le problème.
    Ce verrouillage est mis en place dans un cookie.

    Chez moi la solution qui a fonctionné est la modification du fichier (méthode 3) : /modules/paypal/views/js/paypal.js

    Remplacer la ligne :

    $(‘.qty-field.cart_quantity_input, .cart_total_bar, .cart_quantity_delete, #cart_voucher *’).remove()

    Par :

    /*$(‘.qty-field.cart_quantity_input, .cart_total_bar, .cart_quantity_delete, #cart_voucher *’).remove()*/

    Et ensuite il ne faut pas oublier de vider le cache si non ça ne fonctionne pas, pour cela, allez dans le Back office et sur Paramètres avancés -> Performance et cliquez sur Vider le cache en haut à droite.

    Voilà, pour moi le problème a été résolu de cette manière 😉

    1. Bonjour,

      Le cas de figure le plus populaire est effectivement la méthode 3 (observé chez beaucoup de clients).

      Cette ligne de code reste à mon sens difficile à justifier, pourquoi l’utilisateur régulier PayPal, ne pourrait pas utiliser le bon de réduction ? A voir dans les prochaines versions du module, dont celle pour Prestashop 1.7 si ce problème est toujours d’actualité.

      Merci de nous avoir fait ce retour !

  10. Bonjour à tous,

    Je lis ce thread ici et également dans le forum de Prestashop et les trois solutions proposées semble marcher pour ceux chez qui le champs ne s’active pas.

    Par contre je rencontre un problème légèrement différent. Le champs du bon de réduction est bien présent mai je ne peux rien mettre (impossible d’écrire dans le champs, ni de cliquer sur le bouton) et ceci uniquement avec Firefox (version 51.0.1). Avec Safari, Chrome cela fonctionne tant sur mac que PC, mais avec Firefox rien à faire tant sur mac que sur PC.

    Si quelqu’un a une solution je suis preneur. Merci et bonne soirée.

    smalto

    1. Bonjour,

      Concernant le problème lié au champ du bon de réduction, dans votre cas il semble que cela pourrait-être lié à un problème du template (disposition / présentation des champs).

      Pour vous en assurer, vous pouvez toujours essayer de passer sur le thème standard pour faire le test ou de faire une demande à l’auteur du thème.

      Merci pour votre visite !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *