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
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 –
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.