Установить минимальную стоимость для оформления заказа
Чтобы реализовать проверку на минимальную стоимость заказа в стандартном компоненте bitrix:sale.order.ajax, можно воспользоваться событием OnSaleOrderBeforeSaved, которое срабатывает перед сохранением заказа.
Добавляем следующий код в /local/php_interface/init.php:
<?php
use Bitrix\Main\EventResult;
use Bitrix\Sale\ResultError;
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'checkMinPrice');
//минимальная сумма
const MIN_ORDER_PRICE = 1000;
function checkMinPrice(\Bitrix\Main\Event $event)
{
$result = new EventResult(EventResult::SUCCESS);
//проверка, что мы не в административной части
if (!defined('ADMIN_SECTION')) {
$order = $event->getParameter('ENTITY');
if ($order instanceof \Bitrix\Sale\Order) {
//стоимость заказа
$price = $order->getPrice();
//проверка на минимальную стоимость
if ($price < MIN_ORDER_PRICE) {
//текст ошибки
$errorText = 'Минимальная сумма заказа: ' . $minPrice;
$errorParams = new ResultError($errorText, 'code');
//результат с ошибкой
$result = new EventResult(EventResult::ERROR, $errorParams, 'sale');
}
}
}
return $result;
}
Здесь происходит проверка текущей стоимости корзины с заданной минимальной суммой. Возвращается ошибка с текстом, если сумма корзины меньше, что не позволит создать заказ.
Также обратите внимание на мой модуль «Минимальная сумма заказа с настройками», который использует именно этот подход для проверки, и обладает дополнительными настройками.
Он позволит организовать проверку стоимость заказа без изменений в коде. В нем можно задать свой текст ошибки, настроить для каких групп пользователей и для каких служб доставки выполняется проверка, а также можно указать, нужно ли учитывать скидки и/или стоимость доставки для проверки.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий