koko85 Posted March 10, 2015 Share Posted March 10, 2015 Bonjour, j'utilise Prestashop 1.6.0.8 et je souhaite affiche les bons de réduction actifs dans le panier (shopping-cart.tpl) - J'ai créé une règle panier pour offrir les frais de port à partir de X € d'achat, activable par un code promo - Ce code promo est bien mis en avant avec le formulaire sur la page - Lorsque je saisi ce code promo, il est bien pris en compte car les frais de ports sont annulés à l'étape ultérieure du choix du transporteur, et le message de mis en avant du code promo disparaît. - Pourtant, le code promo n'apparaît pas dans le panier, pour indiquer qu'il est bien actif, alors que dans le fichier template, tout est prévu pour qu'il s'affiche : <tr class="cart_total_voucher" {if $total_discounts == 0}style="display:none"{/if}> {if sizeof($discounts)} {foreach $discounts as $discount} <td class="cart_discount_price" colspan="2">{$discount.name}</td> <td class="cart_discount_price"> <span class="price-discount price">{if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if}</span> </td> <td class="price_discount_del text-center"> {if strlen($discount.code)} <a href="{if $opc}{$link->getPageLink('order-opc', true)}{else}{$link->getPageLink('order', true)}{/if}?deleteDiscount={$discount.id_discount}" class="price_discount_delete" title="{l s='Delete'}"> <i class="icon-trash"></i> </a> {/if} </td> {/foreach} {/if} </tr> Je précise qu'il ne s'agit pas d'un problème de display:none au niveau du <TR> puisque le <TR> apparaît vide dans le code source. Plus étrange encore, lorsque j'affiche {sizeof($discounts)} quelque part dans le template, celui-ci retourne 0, ce qui signifie qu'aucun coupon n'est actif. Or le coupon est bien actif !!!! Je suis en train de bricoler une solution de secours, en insérant dans la méthode initContent() de OrderController.php : $this->context->smarty->assign('cart_rules', $this->context->cart->getCartRules(), array()); Mais j'ai l'impression de réinventer la roue... Quelqu'un aurait il une idée ? Merci par avance ! Link to comment Share on other sites More sharing options...
Nowis Posted March 10, 2015 Share Posted March 10, 2015 Bonjour, Pourriez-vous tenter d'afficher le retour de sizeof($discounts) Avez-vous un override sur le OrderController.php ? N'hésitez pas à faire des dumps de variable pour essayer de trouver l'erreur. Et également à comparer les codes lorsque ça s'affiche correctement dans le backoffice. Link to comment Share on other sites More sharing options...
koko85 Posted March 10, 2015 Author Share Posted March 10, 2015 Bonsoir Nowis, merci de votre réponse. Comme évoqué dans mon post, sizeof($discounts) renvoie 0. Pour OrderController, j'ai un peu bidouillé (sans override), principalement les étapes ultérieures, pour combiner l'étape de saisie de l'adresse et du choix du transporteur sur une même page. Link to comment Share on other sites More sharing options...
Nowis Posted March 10, 2015 Share Posted March 10, 2015 Effectivement, désolé je n'avais pas vu que vous aviez testé... Hum effectivement c'est très étrange. - Pourriez-vous tenter de supprimer tous vos override temporairement ? (dans votre cas il faut remettre les fichiers par défaut... l'inconvénient de ne pas avoir faire d'override) - Et également essayer avec le thème par défaut juste pour voir le résultat ? Si l'affichage reste le même, cela vient d'un problème interne, sinon c'est que le thème ou vos modifications ont impacté l'affichage sur cette page. Link to comment Share on other sites More sharing options...
koko85 Posted March 10, 2015 Author Share Posted March 10, 2015 Effectivement il faut que j'essaie de rétablir les controllers et le template par défaut pour approfondir mon enquête. Je vous ferai part de mes avancées. Merci de votre retour et bonne soirée. Link to comment Share on other sites More sharing options...
koko85 Posted March 11, 2015 Author Share Posted March 11, 2015 J'ai remis le fichier shopping-cart.tpl du thème par défaut et les controllers par défaut mais l'usage des vouchers n'est toujours pas clair. Pas de formulaire de Voucher en étape 1, et le message indiquant la gratuité des frais de port après application du voucher ne s'affiche pas, car, par défaut, le transporteur gratuit est préselectionné. Bref, après déplacement des modifications dans le dossier override/, retour à la bidouille ! Link to comment Share on other sites More sharing options...
koko85 Posted March 11, 2015 Author Share Posted March 11, 2015 (edited) La solution à mon problème initial était le fait que comme le transporteur gratuit est sélectionné par défaut (configuration que je souhaite conserver), le voucher correspondant est considéré comme nul donc retiré de la liste des vouchers. Ca se trouve dans le fichier classes/Cart.php à la ligne 2968, il faut commenter la condition ci-dessous : /* foreach ($cart_rules as $key => &$cart_rule) if ($cart_rule['value_real'] == 0) unset($cart_rules[$key]); */ Edited March 12, 2015 by koko85 (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