Цена доставки в зависимости от суммы заказа

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 20

Задача: изменять цену доставки в зависимости от суммы заказа

Решение:

Для начала, создадим новый тип доставки, чтобы мы могли без опасений кастомизировать его функционал.

Затем нужно описать в созданном классе функцию получения стоимости доставки - getDeliveryPrice:

public function getDeliveryPrice(order $order) {
	$actualOrderPrice = $order->getActualPrice();
	// Если сумма заказа между 1000 и 2000 - цена доставки = 500
	if($actualOrderPrice >= 1000 && $actualOrderPrice < 2000)
	{
		return 500;
	}

	// Если сумма заказа между 2000 и 3000 - цена доставки = 400
	if($actualOrderPrice >= 2000 && $actualOrderPrice < 3000)
	{
		return 400;
	}
 
	// Если ни одно из условий выше не подходит
	// Получаем цену доставки, которая указана в админ. панели
	$deliveryPrice = $this->getValue('price');
 
	// И возвращаем её
	return $deliveryPrice;
}

После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться с помощью метода, который мы написали. Можно использовать любую логику расчёта с помощью данных, получаемых из объекта заказа.