Obiettivi del blog
Dopo aver letto questo blog, saremo in grado di calcolare la spedizione gratuita in base al prezzo totale finale del carrello.
Dichiarazione problema
Attualmente, quando aggiungiamo i prodotti
- L'importo totale del carrello è $ 100 che si avvale della spedizione gratuita e viene anche aggiunto uno sconto di 5%
- Quindi dopo lo sconto importo totale del carrello impostato al di sotto di $ 100 ma si applica comunque la spedizione gratuita che non dovrebbe verificarsi. La spedizione gratuita deve essere applicata sull'importo totale finale del carrello dopo lo sconto.
- Questo è
Perché il problema attuale è lì:
attuale
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);
Requisito
Abbiamo bisogno di modificare il Directory principale \ classes \ Cart.php
Procedura per risolvere il problema-
Segui i passaggi sotto indicati –
1. Funzione di riscritturagetPackageShippingCost
2. Dopo la riga di seguito indicata –
// Ordina il totale nella valuta predefinita senza commissioni $ order_total = $ this-> getOrderTotal (true, Carrello :: BOTH_WITHOUT_SHIPPING, $ product_list);
3. Aggiungi la seguente dichiarazione:
$ 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. Sostituisci le linee indicate sotto – Sostituisci questa linea
$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ total_order, (int) $ id_zone, (int) $ this-> id_currency);
Con
$ check_delivery_price_by_price = Carrier :: checkDeliveryPriceByPrice ($ row ['id_carrier'], $ price_to_apply_shipment, (int) $ id_zone, (int) $ this-> id_currency);
———— E —————– Sostituisci questa riga
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ the_total_price, $ id_zone, (int) $ this-> id_currency);
Con
$ shipping_cost + = $ carrier-> getDeliveryPriceByPrice ($ price_to_apply_shipment, $ id_zone, (int) $ this-> id_currency);
5. Cancella la cache ed esegui. Fai riferimento allo screenshot seguente dopo aver applicato le modifiche nel codice:
sommario
Dopo aver seguito la procedura sopra riportata, sarai in grado di calcolare la spedizione sull'importo totale finale del carrello.