Настройка минимальной суммы заказа для B2B 1С-Битрикс
Минимальная сумма заказа в B2B — это не просто ограничение, это экономическая необходимость: обработка заказа на 500 рублей при стоимости логистики 300 рублей убыточна. Задача — реализовать проверку так, чтобы разные клиенты имели разные минимумы и чтобы ограничение применялось до, а не после оформления.
Стандартный способ через настройки магазина
В Битриксе есть базовое ограничение минимальной суммы заказа: Магазин → Настройки → Основные настройки → поле «Минимальная сумма заказа». Это единое значение для всех пользователей. При попытке оформить заказ ниже порога выводится сообщение об ошибке, кнопка «Оформить» недоступна.
Для B2B с единым минимумом этого достаточно. Но на практике оптовые компании имеют разные минимумы для разных групп: новый клиент — 10К, постоянный оптовик — 5К, VIP-дилер — без ограничений.
Групповые минимумы через обработчик события
Реализуется через обработчик OnBeforeSaleOrderAdd. Логика:
- Определяем группу пользователя или его дилерскую компанию
- Получаем минимальную сумму для этой группы из настроек (опции модуля или Highload-блок)
- Сравниваем с суммой заказа
$order->getPrice() - Если сумма ниже — добавляем ошибку через
$event->addError(), заказ не создаётся
Хранение минимумов по группам: таблица опций модуля или Highload-блок b2b_order_limits с полями UF_GROUP_ID / UF_COMPANY_ID, UF_MIN_ORDER_AMOUNT, UF_CURRENCY.
Предупреждение в корзине
Блокировать на этапе создания заказа — поздно. Пользователь должен видеть предупреждение прямо в корзине, когда набирает позиции. Это делается в компоненте корзины: в result_modifier.php вычисляем сумму текущей корзины и минимум для пользователя, добавляем в $arResult флаг IS_BELOW_MINIMUM и сумму до достижения порога. Шаблон показывает информер: «До минимальной суммы заказа не хватает 3 200 руб.»
Минимум по категориям
Иногда минимум задаётся не для всего заказа, а для конкретных категорий товаров (например, категория «Хрупкие товары» отгружается минимум на 15К). Реализуется через то же событие OnBeforeSaleOrderAdd: группируем позиции корзины по IBLOCK_SECTION_ID, проверяем минимум для каждой категории из Highload-блока правил.
Настройка базового ограничения минимальной суммы через интерфейс: 1 день. Разработка групповых минимумов с предупреждением в корзине: 3-5 дней.







