Come calcolare la spedizione gratuita in base al prezzo totale finale in Prestashop?

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 è

Dichiarazione problema

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:

front-end

sommario

Dopo aver seguito la procedura sopra riportata, sarai in grado di calcolare la spedizione sull'importo totale finale del carrello.


Leave a Reply

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