Comment calculer la livraison gratuite en fonction du prix total final dans Prestashop?

Objectifs du blog

Après avoir lu ce blog, nous pourrons calculer la livraison gratuite en fonction du prix total final du panier.

Énoncé du problème

Actuellement, lorsque nous ajoutons des produits dans

  • Le montant total du panier est de $ 100 qui ont recours à la livraison gratuite et une remise de 5% est également ajoutée.
  • Ensuite, après remise, le montant total du panier est inférieur à 100, mais la livraison gratuite s'applique, ce qui ne devrait pas se produire. La livraison gratuite doit s'appliquer sur le montant total final du panier après le rabais.
  • C'est

Énoncé du problème

Pourquoi le problème actuel est là:

Actuel

$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);

Exigence

Nous devons modifier le Répertoire racine \ classes \ Cart.php

Procédure pour résoudre le problème-

Suivez les étapes mentionnées ci-dessous –

1. Fonction de réécrituregetPackageShippingCost

2. Après la ligne donnée ci-dessous –

// Total de la commande dans la devise par défaut sans frais $ order_total = $ this-> getOrderTotal (true, Cart :: BOTH_WITHOUT_SHIPPING, $ product_list);

3. Ajouter la déclaration suivante –

$ listeDiscounts = $ this-> getCartRules (); $ total_discounts = 0; if (is_array ($ listeDiscounts)) {if (isset ($ listeDiscounts [0] ['valeur_real'])) $ total_discounts = $ listeDiscounts [0] ['valeur_real']; } $ price_to_apply_shipment = floatval ($ order_total) - floatval ($ total_discounts);

4. Remplacez les lignes mentionnées ci-dessous – Remplacez cette ligne

$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ total_order, (int) $ id_zone, (int) $ this-> id_currency);

Avec

$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ price_to_apply_shipment, (int) $ id_zone, (int) $ this-> id_currency);

———— ET —————– Remplacez cette ligne

$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);

Avec

$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ price_to_apply_shipment, $ id_zone, (int) $ this-> id_currency);

5. Effacez le cache et exécutez. Reportez-vous à la capture d'écran ci-dessous après application des modifications dans le code –

frontal

Résumé

Après avoir suivi la procédure ci-dessus, vous pourrez calculer les frais de port sur le montant total final du panier.


Leave a Reply

Your email address will not be published. Required fields are marked *