Цена доставки в зависимости от суммы заказа
Материал из Umicms
Актуально для версии 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;
}
После всех этих действий, при выборе доставки того типа, который мы создали, цена доставки будет вычисляться с помощью метода, который мы написали. Можно использовать любую логику расчёта с помощью данных, получаемых из объекта заказа.