jeje13 Posted September 16, 2017 Share Posted September 16, 2017 Bonjour, C'est ma première vrai install en Prestashop. Je monte une boutique sur Prestashop 1.6.1.17 avec le thème standard. J'utilise des règles de prix par PRODUIT. Par exemple prix normal 30€ Mais à partir de 1, 10€ A partir de 3, -20€. Dans la fiche du produit, pour une quantité 1 ou 2, c'est ok. Dès qu'on arrive à 3, au lieu du prix c'est la réduction qui est affiché et le prix ne bouge plus. Voilà en image: Pour autant si on ajoute au panier, les calculs sont bon, si on modifie au panier, tout est bien prix en compte. J'ai regardé le code et effectivement il y a un gros bug. Dans product.js l289-302: $(document).on('change', '#quantity_wanted', function(e){ e.preventDefault(); var specificPrice = findSpecificPrice(); if(false !== specificPrice){ $('#our_price_display').text(specificPrice); }else{ if (typeof productHasAttributes != 'undefined' && productHasAttributes){ updateDisplay(); }else{ $('#our_price_display').text(formatCurrency(parseFloat($('#our_price_display').attr('content')), currencyFormat, currencySign, currencyBlank)); } } }); findSpecifcPrice() (ligne 219) retourne la valeur de la réduction. Or c'est cette valeur qui est affichée dans our_price_display; Mais c'est le prix de vente! De plus, le champ correspondant à la réduction (reduction_amount-display) n'est pas updaté. J'ai modifié le code pour que ça fonctionne. C'est ok quand on incrémente mais en revenant sur la première promo, comme elle ne fait pas parti du tableau "remise sur quantité", c'est alors dans le else (vert) que l'on passe. Là, Prestashop arrive à récupérer la valeur originale du prix car elle est stockée dans l'attribut "content", mais la ristourne originale n'ayant pas de "content" et n'étant pas stockée, elle reste à sa valeur précédente!! Je ne comprends pas que ce bug soit encore présent après tant de version 1.6... ? Quelqu'un a forcément dû l'avoir?! Donc si cette aimable personne avait la solution, grand merci. A moins qu'il ne faille pas utiliser le thème par défaut et forcément en acheter un!! Cordialement Jérôme Link to comment Share on other sites More sharing options...
pppplus Posted May 18, 2018 Share Posted May 18, 2018 (edited) I propose this correction in /default-boostrap/js/product.js (my version is 1.6.1.18) lines 237-238 to replace : newPrice = $(this).attr('data-real-discount-value'); return false; by new lines : newPrice = $(this).attr('data-discount'); var currentPrice = parseFloat($('#our_price_display').attr('content')); var finalPrice = currentPrice-newPrice; newPrice = formatCurrency(parseFloat(finalPrice), currencyFormat, currencySign, currencyBlank); return false; For me, it's ok now for quantity-discount Edited May 18, 2018 by pppplus (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now