Цена доставки в зависимости от суммы заказа — различия между версиями
Материал из Umicms
Alelekov (обсуждение | вклад) (Новая страница: «'''Актуально для версии 20''' '''Задача''': изменять цену доставки в зависимости от суммы зака…») |
Aposio (обсуждение | вклад) |
||
Строка 7: | Строка 7: | ||
Для начала, [http://wiki.umisoft.ru/Создание_своих_типов_доставки создадим новый тип доставки], чтобы мы могли без опасений кастомизировать его функционал. | Для начала, [http://wiki.umisoft.ru/Создание_своих_типов_доставки создадим новый тип доставки], чтобы мы могли без опасений кастомизировать его функционал. | ||
− | Затем | + | Затем нужно описать в созданном классе функцию получения стоимости доставки - 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;
}
После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться по функции, которую мы описали. Можно использовать любую логику рассчёта с помощью данных, получаемых из объекта заказа.