Цена доставки в зависимости от суммы заказа — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
Строка 31: Строка 31:
 
}
 
}
 
</source>
 
</source>
После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться по функции, которую мы описали. Можно использовать любую логику рассчёта с помощью данных, получаемых из [http://wiki.umisoft.ru/Класс_order_модуля_emarket  объекта заказа].
+
После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться с помощью метода, который мы написали. Можно использовать любую логику расчёта с помощью данных, получаемых из [http://wiki.umisoft.ru/Класс_order_модуля_emarket  объекта заказа].
  
 
  [[category:Модуль Интернет магазин]]
 
  [[category:Модуль Интернет магазин]]

Текущая версия на 11:49, 18 апреля 2019

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

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