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
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.
Zusammenfassung
Nachdem Sie das oben beschriebene Verfahren ausgeführt haben, können Sie den Versand anhand der endgültigen Gesamtmenge des Warenkorbs berechnen.