Wie berechnet man den kostenlosen Versand basierend auf dem endgültigen Gesamtpreis in Prestashop?

Ziele des Blogs

Nachdem wir diesen Blog gelesen haben, können wir den freien Versand basierend auf dem endgültigen Gesamtpreis des Warenkorbs berechnen.

Problem Statement

Derzeit, wenn wir Produkte hinzufügen

  • Der Gesamtbetrag des Warenkorbs beträgt $ 100, wobei kostenloser Versand gewährt wird. Außerdem wird ein Rabatt von 5% hinzugefügt
  • Dann nach Abzug Gesamtbetrag des Warenkorbs auf unter $ 100 eingestellt, aber immer noch kostenloser Versand, der nicht passieren sollte. Kostenloser Versand muss für den endgültigen Gesamtbetrag des Warenkorbs nach Rabatt gelten.
  • Das ist

Problem Statement

Warum die aktuelle Ausgabe da ist:

Aktuell

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

Anforderung

Wir müssen das ändern Wurzelverzeichnis \ classes \ Cart.php

Verfahren zur Lösung des Problems

Folgen Sie den unten angegebenen Schritten –

1. Funktion umschreibengetPackageShippingCost

2. Nach der Zeile unten –

// Gesamtbetrag in Standardwährung ohne Gebühren bestellen $ order_total = $ this-> getOrderTotal (true, Cart :: BOTH_WITHOUT_SHIPPING, $ product_list);

3. Fügen Sie folgende Aussage hinzu –

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

4. Ersetzen Sie die unten genannten Zeilen – Ersetzen Sie diese Zeile

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

Mit 

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

———— UND —————– Diese Zeile ersetzen

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

Mit 

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

5. Leeren Sie den Cache und führen Sie ihn aus. Sehen Sie sich den Screenshot unten an, nachdem Sie Änderungen am Code vorgenommen haben.

Vorderes Ende

Zusammenfassung

Nachdem Sie das oben beschriebene Verfahren ausgeführt haben, können Sie den Versand anhand der endgültigen Gesamtmenge des Warenkorbs berechnen.


Leave a Reply

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