Tintin1538 Posted February 20, 2012 Share Posted February 20, 2012 Bonjour à tous, J'ai parcouru le forum, mais je n'arrive pas à trouver une réponse à ma question: Je souhaiterai ajouter une ligne dans le bloc panier, qui dirait "Encore x € avant la gratuité de la livraison", ou quelque chose comme ca... Je suppose que je ne suis pas le premier à vouloir rajouter cette ligne, et toute aide serait la bienvenue! Merci pour votre aide! Martin. Link to comment Share on other sites More sharing options...
Tintin1538 Posted February 21, 2012 Author Share Posted February 21, 2012 Non, personne n'est inspiré? Link to comment Share on other sites More sharing options...
Tintin1538 Posted February 23, 2012 Author Share Posted February 23, 2012 Un peu d'aide siouplé Link to comment Share on other sites More sharing options...
SMorillon.com Posted February 24, 2012 Share Posted February 24, 2012 Si je ne me trompe pas, tu doit trouver le morceau de code dans le fichier shopping-cart.tpl pour l'affichage (page panier). Et il faudra aussi surement regarder dans le fichier CartController.php pour envoyer les bonnes données à smarty. Link to comment Share on other sites More sharing options...
diabolyo Posted August 21, 2012 Share Posted August 21, 2012 Bonsoir à tous ! Je relance le sujet, je suis en 1.4.7. je n'ai pas trouvé le "morceau de code" du shoppingcart.tpl et le "Et il faudra aussi surement regarder dans le fichier CartController.php pour envoyer les bonnes données à smarty." ne m'a pas non plus inspiré !! Merci d'avance si vous avez une idée. Merci ! Link to comment Share on other sites More sharing options...
Aimée H. Posted August 22, 2012 Share Posted August 22, 2012 Bonjour, apparement l'affichage de cette fonction est prévue sur le shopping-cart.tpl (class="cart_free_shipping"). Pour l'activer, il faut définir le montant minimum depuis le back-office : - Onglet "transport" / rubrique "manutention" (1er cadre en haut de page), puis indiquez un montant à partir duquel la gratuité s'opérera dans le champ "Frais de port offerts à partir de = (le montant souhaité)" Une fois activée, un texte voisin de celui que vous souhaitez, s'affichera en dessous du total du shopping-cart Ce constat a été effectué sous version 1.4.8.2. Reste à vérifier la présence de cette variable sous votre version 1.4.7. Cordialement AH Link to comment Share on other sites More sharing options...
diabolyo Posted November 3, 2012 Share Posted November 3, 2012 Bonjour, Merci pour votre réponse ! Le problème c'est que cela agit pour tous les transporteurs et pas uniquement cuit par défaut. J'offre la livraison à partir de 59€ pour la France mais pas pour le reste du monde. Avec cette méthode quel que soit le pays de destination, la livraison est gratuite dès 59€. Même si j'ai spécifié les bon frais de port dans les "frais par transporteur" Cordialement Link to comment Share on other sites More sharing options...
patrickpolbos Posted November 3, 2012 Share Posted November 3, 2012 j'ai le même soucis et je n'ai pas trouvé de solution pour restreindre cette fonction à des zones géographiques Link to comment Share on other sites More sharing options...
LocalShop Posted April 10, 2013 Share Posted April 10, 2013 Si quelqu'un a la solution, je suis aussi preneur... Link to comment Share on other sites More sharing options...
utaku Posted April 10, 2013 Share Posted April 10, 2013 (edited) Hello, peu être un début de piste, voici ce que j'ai dans mon schopping-cart.tpl {if sizeof($discounts)} <tbody> {foreach $discounts as $discount} <tr class="cart_discount {if $discount@last}last_item{elseif $discount@first}first_item{else}item{/if}" id="cart_discount_{$discount.id_discount}"> <td class="cart_discount_name" colspan="3">{$discount.name}</td> <td class="cart_discount_price"><span class="price-discount"> {if !$priceDisplay}{displayPrice price=$discount.value_real*-1}{else}{displayPrice price=$discount.value_tax_exc*-1}{/if} </span></td> <td class="cart_discount_delete">1</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"> {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'}">{l s='Delete'}</a>{/if} </td> </tr> {/foreach} </tbody> {/if} Je pense qu'il s'agit de la partie qui calcul le fonctionnement des promotions, et donc exemple une promotion de livraison gratuite . Reste plus qu'a trouver comme faire pour indiquer le message suivant : Il vous reste x Euro pour bénéficier de la promo " livraison gratuit X " et de faire en sorte qu'il fasse le calcul à afficher Donc en gros assigner une valeur dans une variable qui sera calculer par un code php ou smarty...du style valeur du bon de réduction - valeur du panier = x ( si x = " a " alors .... sinon ... ). Si quelqu'un sait mettre cela en place sa sera parfait Edited April 10, 2013 by utaku (see edit history) Link to comment Share on other sites More sharing options...
fredmac Posted April 12, 2013 Share Posted April 12, 2013 Bonjour, je suis intéressé également par cette possibilité à ceci près que j'aimerai que cette information apparaisse dans le panier et non pas seulement lorsque l'on affiche le contenu de son panier. A titre d'exemple j'ai trouvé cette possibilité sur le site http://www.palaisdesthes.com/fr/ Si un module payant fais cela, je suis partant. Merci. Link to comment Share on other sites More sharing options...
kittypaw Posted July 29, 2013 Share Posted July 29, 2013 As-tu trouvé une solution ? Je recherche exactement ce même type de système à mettre en place sur une version 1.5 : Encore X€ d'achat pour bénéficier de la livraison gratuite Merci pour vos réponses. Link to comment Share on other sites More sharing options...
Myst26 Posted September 24, 2013 Share Posted September 24, 2013 (edited) Bonjour, je viens d’implémenter cette phrase sur un de mes projets, mais je ne gère pas le TTC / HT pour l'instant ( BtoC). Je vous partage donc ma solution pour le TTC Fichier /override/classes/Cart.php (cf pj) j'ai rajouté une fonction getFreeShipping() pour l'instant je ne vérifie que si on utilise la gratuité des frais de port selon un prix (et non un poids) Je surcharge la fonction getSummaryDetails([...]) pour y ajouter 'amount_left_free_ship' => $this->getFreeShipping(), dans le retour de l'array. Fichier /themes/themeName/js/cart-summary.js (cf pj) Ligne 731 rajouté $('#amount_left_shipping').html(formatCurrency(json.amount_left_free_ship, currencyFormat, currencySign, currencyBlank)); "amount_left_shipping" étant l'id de la balise html que nous allons édité lors d'ajout/suppression de produit panier (et quantité) Fichier themes/themeName/shopping-cart.tpl Il faut rajouter cette ligne la ou vous souhaitez voir apparaitre cette mention. <span class="amount_left" >{l s='remaining of purchase to get free shipping'} : <span id="amount_left_shipping">{displayPrice price=$amount_left_free_ship}</span> </span> Cart.zip cart-summary.zip Edited September 24, 2013 by Myst26 (see edit history) Link to comment Share on other sites More sharing options...
maz0193 Posted September 24, 2013 Share Posted September 24, 2013 @Myst26 : merci beaucoup pour le bout de code, mais est ce qu'il est valable si je veux avoir dans le blockcart la mention : frais de port offerts dans x€ : bien sur j'ai la version 1.5.3 et aussi le "x" doit se mettre à jour en ajax. merci beaucoup Link to comment Share on other sites More sharing options...
Myst26 Posted September 24, 2013 Share Posted September 24, 2013 (edited) Oui, récupére l'override de Cart.php et dans le module blockart, fichier blockart.php rajouter vers la ligne 129 'amount_left_free_shipping' => Tools::displayPrice($params['cart']->getFreeShipping()), Ensuite dans le fichier blockcart-json vers la ligne 101 "productTotal": "{$product_total|html_entity_decode:2:'UTF-8'}", "amountLeftFreeShipping":"{$amount_left_free_shipping|html_entity_decode:2:'UTF-8'}", Fichier ajax-cart.js, il faut remplacer : if (parseFloat(jsonData.shippingCostFloat) > 0 || jsonData.nbTotalProducts < 1) $('.ajax_cart_shipping_cost').text(jsonData.shippingCost); else if (typeof(freeShippingTranslation) != 'undefined') $('.ajax_cart_shipping_cost').html(freeShippingTranslation); par if (parseFloat(jsonData.shippingCostFloat) > 0 || jsonData.nbTotalProducts < 1){ $('.ajax_cart_shipping_cost').text(jsonData.shippingCost); $('.ajax_cart_remaining_amount_ship').text(jsonData.amountLeftFreeShipping); // peut etre mettre formatCurrency(json.amount_left_free_ship, currencyFormat, currencySign, currencyBlank) à la place de jsonData.amountLeftFreeShipping sinon on aura pas la devise }else if (typeof(freeShippingTranslation) != 'undefined'){ $('.ajax_cart_shipping_cost').html(freeShippingTranslation); $('.ajax_cart_remaining_amount_ship').hide(); } Dans le fichier tpl blockcart.tpl il faudra juste rajouter la ou tu le souhaites : frais de port offerts dans <span class='ajax_cart_remaining_amount_ship'>{convertPrice price=$amount_left_free_shipping}</span> Edited September 24, 2013 by Myst26 (see edit history) Link to comment Share on other sites More sharing options...
maz0193 Posted September 24, 2013 Share Posted September 24, 2013 merci pour la réponse, j'ai testé et disons que ça marche à 80%. il y a toujours style="display: none;" dans <span class='ajax_cart_remaining_amount_ship'> aussi lorsqu'on atteint le montant pour que les frais de port soit gratuit donc normalement on voit 0€ même dans firebug. Link to comment Share on other sites More sharing options...
Myst26 Posted September 24, 2013 Share Posted September 24, 2013 Je n'ai pas testé le code donc je t'avouerai que ce n'est pas une solution 100% ! Essaie de rajouter $('.ajax_cart_remaining_amount_ship').show() comme : $('.ajax_cart_remaining_amount_ship').text(jsonData.amountLeftFreeShipping); $('.ajax_cart_remaining_amount_ship').show() Ici dés lors que les frais de port sont gratuit cela retire la mention. Link to comment Share on other sites More sharing options...
maz0193 Posted September 24, 2013 Share Posted September 24, 2013 donc si par exemple il reste 3€ et on atteint les frais de port, et on ajoute par exemple un produit de 10 euro. automatiquement le display:none vient et dans firebug, il y a toujours il reste 3€. autre chose, si par exemple, je supprime un produit du panier, c'est à dire j’enlève un produit de 10 €, donc normalement ça devrait ettre : frais de port offert dans 13 € ( 3€ et 10 du produit), mais non, il reste toujours en display:none Link to comment Share on other sites More sharing options...
Myst26 Posted September 24, 2013 Share Posted September 24, 2013 (edited) donc si par exemple il reste 3€ et on atteint les frais de port, et on ajoute par exemple un produit de 10 euro. automatiquement le display:none vient et dans firebug, il y a toujours il reste 3€. autre chose, si par exemple, je supprime un produit du panier, c'est à dire j’enlève un produit de 10 €, donc normalement ça devrait ettre : frais de port offert dans 13 € ( 3€ et 10 du produit), mais non, il reste toujours en display:none remet à l'état initial ton fichier ajax-cart.js et rajoute vers la ligne 598 (function updateCartEverywhere de ton fichier js) $('.ajax_cart_remaining_amount_ship').text(jsonData.amountLeftFreeShipping); la condition est peut etre pas verifié. Si cela se met à jour alors fait des conditions sur jsonData.amountLeftFreeShipping si il est > 0 : $('.ajax_cart_remaining_amount_ship').show() sinon $('.ajax_cart_remaining_amount_ship').hide() Edited September 24, 2013 by Myst26 (see edit history) Link to comment Share on other sites More sharing options...
maz0193 Posted September 24, 2013 Share Posted September 24, 2013 j'ai ajouter seulement cette ligne : et rajoute vers la ligne 598 (function updateCartEverywhere de ton fichier js) $('.ajax_cart_remaining_amount_ship').text(jsonData.amountLeftFreeShipping); maintenant tout va bien , seulement, lorsque j'atteint le montant de gratuité, il me met : frais de port offert dans "1" sinon, dans les deux sens ( diminution ou augmentation) ça se calcule trés bien. Link to comment Share on other sites More sharing options...
Myst26 Posted September 25, 2013 Share Posted September 25, 2013 ok. c'est normal, la function getFreeShipping() renvoie true si c'est gratuit. D'ailleurs cela va poser un problème... car si il reste1€ d'achat cela être ambigu avec le js qui ne fera pas de différence ... remplace la function du fichier Cart.php getFreeShipping par public function getFreeShipping() { if(Configuration::get('PS_SHIPPING_FREE_PRICE') > 0): if($this->getOrderTotal(true,Cart::BOTH_WITHOUT_SHIPPING) < Configuration::get('PS_SHIPPING_FREE_PRICE')): return Configuration::get('PS_SHIPPING_FREE_PRICE') - $this->getOrderTotal(true,Cart::BOTH_WITHOUT_SHIPPING); endif; return -1; elseif(Configuration::get('PS_SHIPPING_FREE_WEIGHT') > 0): //see for free shiping based on weight. endif; return false; Elle retournera -1 si les frais de port sont gratuit. Du coup dans ton fichier ajax-cart.js tu ajoutes aprés $('.ajax_cart_remaining_amount_ship').text(jsonData.amountLeftFreeShipping); if(jsonData.amountLeftFreeShipping < 0) $('.ajax_cart_remaining_amount_ship').hide() else $('.ajax_cart_remaining_amount_ship').show() Link to comment Share on other sites More sharing options...
maz0193 Posted September 25, 2013 Share Posted September 25, 2013 (edited) maintenant à la place de "1" c'est devenu -1,00 € sans que le display:none ne s'active Edited September 25, 2013 by maz0193 (see edit history) Link to comment Share on other sites More sharing options...
Myst26 Posted September 25, 2013 Share Posted September 25, 2013 peux tu tester console.log(jsonData.amountLeftFreeShipping); if(jsonData.amountLeftFreeShipping < 0){ $('.ajax_cart_remaining_amount_ship').hide() console.log('hide'); }else{ $('.ajax_cart_remaining_amount_ship').show() console.log('show'); } Link to comment Share on other sites More sharing options...
maz0193 Posted September 25, 2013 Share Posted September 25, 2013 je le mets où ? Link to comment Share on other sites More sharing options...
Myst26 Posted September 25, 2013 Share Posted September 25, 2013 @maz0193 tu le met aprés ca dans ajax-cart.js //update general cart informations everywhere in the page updateCartEverywhere : function(jsonData) { $('.ajax_cart_total').text($.trim(jsonData.productTotal)); //ICI Link to comment Share on other sites More sharing options...
maz0193 Posted September 25, 2013 Share Posted September 25, 2013 rien ne se passe, mais bon j'ai une autre idée. si j’enlève le return -1; comme ça, lorsque le prix de la gratuité est atteint, le prix s'effacera et il me reste : (frais de port offerts dans ) et c'est ça le hic, c'est que soit il me faut afficher 0 € donc je doit mettre return 0; soit il me faut une règle dans ajax-cart.js pour cacher le "dans" pour ne laisser que (frais de port offerts ) ou mieux cacher toute la ligne (frais de port offerts dans ) et afficher une nouvelle ligne : (vos frais sont offert !). Link to comment Share on other sites More sharing options...
pdriss Posted November 19, 2013 Share Posted November 19, 2013 Salut, Largement inspiré de ce post, j'ai fait les modifs qui prennent en compte les règles de panier, et non plus le port gratuit pour tout le monde. vous les trouverez ici @+ pdriss 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