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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 20''' '''Задача''': изменять цену доставки в зависимости от суммы зака…»)
 
Строка 7: Строка 7:
 
Для начала, [http://wiki.umisoft.ru/Создание_своих_типов_доставки создадим новый тип доставки], чтобы мы могли без опасений кастомизировать его функционал.
 
Для начала, [http://wiki.umisoft.ru/Создание_своих_типов_доставки создадим новый тип доставки], чтобы мы могли без опасений кастомизировать его функционал.
  
Затем, нужно описать в созданном классе функцию получения стоимости доставки - getDeliveryPrice:
+
Затем нужно описать в созданном классе функцию получения стоимости доставки - getDeliveryPrice:
 
<source lang="php">
 
<source lang="php">
 
public function getDeliveryPrice(order $order) {
 
public function getDeliveryPrice(order $order) {

Версия 11:46, 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;
}

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