Цена доставки в зависимости от суммы заказа — различия между версиями
Материал из Umicms
Aposio (обсуждение | вклад) |
Aposio (обсуждение | вклад) |
||
Строка 31: | Строка 31: | ||
} | } | ||
</source> | </source> | ||
− | После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться | + | После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться с помощью метода, который мы написали. Можно использовать любую логику расчёта с помощью данных, получаемых из [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;
}
После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться с помощью метода, который мы написали. Можно использовать любую логику расчёта с помощью данных, получаемых из объекта заказа.