1С: Битрикс — минимальная сумма заказа

Вы можете удивляться, но такой опции в интернет-магазине 1C: Битрикс не предусмотрено.
Вот и пускается народ на всякие ухищрения. Один из вариантов реализации минимальной суммы заказа — блокирование активности кнопки «Оформить заказ», пока сумма заказа в корзине не превысит нужное вам значение.

Редактируем файл basket_items.php в папке sale.basket.basket (примерный полный путь /templates/основной шаблон темы/components/bitrix/sale.basket.basket/шаблон_корзины/).
Структура вашего файла корзины может зависеть от шаблона. У меня, например, шаблон стандартный на таблицах, более того, кнопка заказа у меня встречается 2 раза.
Находим строку типа
[code language=»php»]» name=»BasketOrder»  id=»basketOrderButton1″>[/code]
и заменяем её на
[code language=»php»]
» name=»BasketOrder» id=»basketOrderButton1″>

Оформление заказа возможно после наполнения корзины на сумму более 500 рублей.


» name=»BasketOrder» id=»basketOrderButton2″>

[/code]

Вот и всё. Пока сумма не будет больше или равна 500 рублям, покупатель не сможет сделать заказ.
Найдено здесь.

Ещё версия
для компонента sale.basket.basket ищем файл mutator.php находим в нём строчку $totalData = array( (у меня это 379 строка) и дописываем:
[code language=»php»]if ($result[‘allSum’] < 500) { $totalData['DISABLE_CHECKOUT'] = 1; } [/code] Свежа версия. Я так понимаю это какого-то рода хук перед сохранением заказа [code language="php"] \Bitrix\Main\EventManager::getInstance()->addEventHandler(
‘sale’,
‘OnSaleOrderBeforeSaved’,
‘\MyClass::onSaleOrderBeforeSaved’
);

class MyClass
{
function onSaleOrderBeforeSaved(\Bitrix\Main\Event $event)
{
foreach($event->getResults() as $previousResult)
if($previousResult->getType()!=\Bitrix\Main\EventResult::SUCCESS)
return;
$order = $event->getParameter(«ENTITY»);
$sum = $order->getPrice();

if($sum > 5000)
return;
if($order->getId())
return;
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
\Bitrix\Sale\ResultError::create(new \Bitrix\Main\Error(‘Сумма заказа меньше 5 000 рублей!’, «MINIMUM_PRICE_ERROR»))
);
}
}
[/code]