Como calcular o frete grátis com base no preço total final em Prestashop?

Objetivos do blog

Depois de ler este blog, poderemos calcular o frete grátis com base no preço total final do carrinho.

Problema Declaração

Atualmente, quando adicionamos produtos

  • O valor total do carrinho é de $ 100, que também oferece frete grátis e desconto de 5%.
  • Em seguida, após o desconto, o total do carrinho definido abaixo de US $ 100, mas ainda assim o frete grátis, aplica-se, o que não deve acontecer. O frete grátis deve ser aplicado no valor total final do carrinho após o desconto.
  • Isto é

Problema Declaração

Por que o problema atual está lá:

Atual

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

Exigência

Precisamos modificar o Raiz dir \ classes \ Cart.php

Procedimento para resolver o problema

Siga os passos abaixo mencionados –

1. Função de reescritagetPackageShippingCost

2. Depois da linha abaixo –

// Total do pedido na moeda padrão sem taxas $ order_total = $ this-> getOrderTotal (true, Carrinho :: BOTH_WITHOUT_SHIPPING, $ product_list);

3. Adicione a seguinte declaração –

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

4. Substitua as linhas mencionadas abaixo – Substitua esta linha

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

Com

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

———— AND —————– Substitua esta linha

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

Com

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

5. Limpe o cache e execute. Consulte a imagem abaixo depois de aplicar as alterações no código –

front-end

Resumo

Após seguir o procedimento acima, você poderá calcular o frete no valor total final do carrinho.


Leave a Reply

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