Prestashop 1.7.4.2 - бесплатная доставка на основе итоговой общей цены - PullRequest
0 голосов
/ 24 декабря 2018

Мне нужен расчет доставки после применения скидки

Пример.
Итого корзина: 65 $
Бесплатная доставка: 65 $
Скидка: 5%

После скидкион становится дешевле 65 $ и все еще получает бесплатную доставку. Мне нужно рассчитать скидку перед отправкой

1 Ответ

0 голосов
/ 25 декабря 2018

Сначала установите диапазоны по перевозчику (0-65: X EUR, выше 65: 0 EUR)

Выполните переопределение класса Cart.php

Rewrite function getPackageShippingCost

После строки

// Order total in default currency without fees
$order_total = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, $product_list);

Добавить это

//Recalcul total pour panier et livraison gratuite 
$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);

Заменить

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

И

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

Очистить кеш и запустить

...