Jump to content

Prix total du panier erroné dans une requête


Recommended Posts

Bonjour,

 

Voilà, sur mon site que je suis en train de faire je suis en train de mettre en place un système d'affichage dans le panier (header), dans la popup de confirmation d'ajout au panier et dans la page récapitulative du panier une ligne affichant le montant restant avant une livraison possible.

 

Je vous explique : Je souhaites proposer une livraison uniquement à compter d'un certain montant du panier HT, en dessous de cette somme le client ne pourra que venir chercher sa commande dans mes locaux, à savoir que mes produits sont réservés uniquement à une clientèle locale puisque ce sont des pizzas.

 

J'ai bien réussi à insérer un bout de code qui va calculer si le prix HT du panier est bien supérieur à 15€ pour l'affichage de ma phrase, voici mon code :

<div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container">
      <strong class="dark red" style="color:red !important;">
            {l s='Livraison possible dans :' mod='blockcart'} {15.00-$cart->getOrderTotal(false)|string_format:"%.2f"}€
      </strong>
</div>

Ce que je constate et là où est mon problème c'est que le montant affiché n'est pas le bon, je suis obligé d'actualisé la page pour que le montant soit correct dans le panier du header, et du coup dans la popup de confirmation d'ajout au panier le montant requis n'est jamais le bon. Cela me récupère je ne sais pourquoi le montant du panier avant l'ajout du dernier produit.

 

J'ai constaté que cela est du à la class "ajax_block_cart_total" mais je ne sais comment modifier mon code pour que le montant restant avant livraison possible soit correct.

 

Un exemple concret, avec mon code si je met au panier une petite pizza a 8€, il m'affiche, "Livraison possible dans : 15€" et si j'ajoute en suite une boisson à 2€, il m'affiche "Livraison possible dans : 7€", puis en fin si j'ajoute à nouveau une autre petite pizza à 9€, là il m'affiche "Livraison possible dans : 5€" et il faut que je rajoute un autre article pour que là la phrase disparaisse.

 

J'ai besoin de votre aide, en vous remerciant par avance.

 

Ma version de prestashop : 1.6.0.11

 

Cordialement

Link to comment
Share on other sites

Si vous utilisez le mode Ajax d'ajout au panier, essayer d'insérer ceci dans votre tpl juste avant votre affichage:

<script>
ajaxCart.refresh();
</script>

Mais commencez d'abord par corriger votre faute de frappe en remplaçant "flase" par "false" dans

<div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container">
Link to comment
Share on other sites

 

Si vous utilisez le mode Ajax d'ajout au panier, essayer d'insérer ceci dans votre tpl juste avant votre affichage:

<script>
ajaxCart.refresh();
</script>

Mais commencez d'abord par corriger votre faute de frappe en remplaçant "flase" par "false" dans

<div class="layer_cart_row" style="{if $cart->getOrderTotal(flase) > 15}display:none;{/if}" id="total_price_container">

 

Bonjour,

 

J'ai bien effectué l'ajout du code donné, mais cela ne fonctionne pas, voici mon code blockcart.tpl :

                <script>
                    ajaxCart.refresh();
                </script>
                <div class="layer_cart_row" style="{if $cart->getOrderTotal(false) > 15}display:none;{/if}" id="total_price_container">
                    <strong class="dark red" style="color:red !important;">
                        {l s='Livraison possible dans :' mod='blockcart'} {15.00-$cart->getOrderTotal(false)|string_format:"%.2f"}€
                    </strong>
                </div>

Je crois que c'est du au fait que le montant du panier actualisé ne s'affiche que si la class est ajax_block_cart_total et le problème est que si je rajoute à mon strong la class en question, bein du coup j'ai uniquement le montant du panier qui s'affiche et mon calcul ne se fait plus.

 

Que faire ?

 

Merci de votre aide.

 

Cordialement

Link to comment
Share on other sites

Ouais, c'est un peu normal...

Les variables contenues dans le tpl ne changent pas tant que la page n'est pas rechargée.

 

Le contenu de la class ajax_block_cart est actualisé en js après requête ajax

 

Donc, il faut bidouiller le ajax-cart.js:

 

Trouvez la fonction updateCartEverywhere  vers la ligne 767 et modifiez le début comme suit: (j'ai uniquement ajouté des éléments)

	//update general cart informations everywhere in the page
	updateCartEverywhere : function(jsonData){
	        // Ajout Eolia
		var pwt1 = jsonData.productTotal.replace("€","");
		var pwt = parseFloat(pwt1.replace(",","."));
		if(pwt < 15) {
			var price_free = Number(15 - pwt).toFixed(2);
			$('#total_price_container').show();
			$('#total_free').text(price_free + ' €');
		}
		else
			$('#total_price_container').hide();
                // Fin ajout
		$('.ajax_cart_total').text($.trim(jsonData.productTotal));
                ......

et dans votre blockcart.tpl mettez:

				<div class="layer_cart_row" id="total_price_container" style="display:none">
                    <strong class="dark red" style="color:red !important;">
						<p>{l s='Aucune livraison ne sera effectuée pour un montant inférieur à 15 € ' mod='blockcart'}<br />
                        {l s='Livraison possible dans : ' mod='blockcart'}<span id="total_free"></span></p>
                    </strong>
                </div>
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...