При заказе от 2000 рублей - доставка бесплатно

Как правильно реализовать учёт, что при заказе от 2000 рублей — доставка бесплатная?

Можно в настройках добавить правило? Если да, то где?
Если нет, то какие сниппеты, чанки нужно поправить? чтобы это правило работало при оформлении заказа (вывод корзины, вывод заказа, письма).
Василий Летуев
20 июля 2013, 18:02
modx.pro
2
1 980
0

Комментарии: 5

Алексей Карташов
20 июля 2013, 22:14
0
Да, кстати, животрепещущий вопрос!
Тоже надо такое реализовать, но пока до этого момента не дошёл.
Вась, не подскажешь направление. в сторону чего смотреть?
Дмитрий Танцирев
03 декабря 2013, 16:02
0
Долго мучился делая данную функцию =D т.к. вообще не знаю php, но методом тыка всё же получилось =))
<?php

interface msDeliveryInterface {

	/* Get the cost of delivery
	 *
	 * @param msOrderHandler $order
	 * @param msDelivery $delivery
	 * @return integer
	 * */
	public function getcost(msOrderInterface $order, msDelivery $delivery);
}

class msDeliveryHandler implements msDeliveryInterface {

	public function getcost(msOrderInterface $order, msDelivery $delivery) {
		$cart = $order->ms2->cart->status();
		$min_price = $delivery->get('price');
		$weight_price = $delivery->get('weight_price');
		//$distance_price = $delivery->get('distance_price');

		$cart_weight = $cart['total_weight'];
		$cost = $min_price + ($weight_price * $cart_weight);

//Заветные строчки
	   $total_cost = $cart['total_cost'];
    if ($total_cost > 5000) {$cost = $cart_weight;}

		return $cost;


	}

}

Файл лежит вот здесь core/components/minishop2/model/minishop2/msdeliveryhandler.class.php
    Peter Zenin
    03 декабря 2013, 20:37
    1
    0
    Вот как я сделал (у меня 1700 бесплатная):

    /core/components/minishop2/custom/delivery/msdeliveryhandlerpetja.class.php:
    <?php
    /**
     * User: Petja
     * Date: 02.11.13
     * Time: 3:53
     */
    
    class msDeliveryHandlerPetja extends msDeliveryHandler{
    
        public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
    
            $add_price = 0;
    
            if($cost < 1700){
                $add_price = $delivery->get('price');
            }
    
            return $cost + $add_price;
    
        }
    
    }
    А в настройках магазина: варианты доставки, редактировать доставку, Класс-обработчик: msDeliveryHandlerPetja

    И все вроде.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5