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

Материал из Umicms
Версия от 10:14, 18 апреля 2019; Alelekov (обсуждение | вклад) (Новая страница: «'''Актуально для версии 20''' '''Задача''': изменять цену доставки в зависимости от суммы зака…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 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;
}

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