• Telegram: mibazarow
  • Whatsapp: MihailBazarow
  • E-mail: mihail@bazarow.ru

Минимальная сумма заказа в корзине 1С-Битрикс

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Минимальная сумма заказа в корзине 1С-Битрикс

В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне корзины на 1С-Битрикс.
Михаил, спасибо вам за такой изящный способ, давно искал. Но вот только не могу заставить его работать. Всё ввёл как указано, несколько раз проверил, но в корзине ошибка:
Цитата
При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php
Причём, начал понять, где именно, что не нравится... Первый пункт явно в порядке, в компоненте появилось поле с минимальной суммой, второй пункт нагляден и в точности его внёс в mutator.php
Код
   $minSummOrder = $this->arParams['MIN_SUMM'];
   if ($result['allSum'] < (int)$minSummOrder) {
       $minSummMustache = $minSummOrder;
   }
$totalData = array(
   'DISABLE_CHECKOUT' => (int)$result['ORDERABLE_BASKET_ITEMS_COUNT'] === 0,
   'PRICE' => $result['allSum'],
   'PRICE_FORMATED' => $result['allSum_FORMATED'],
   'PRICE_WITHOUT_DISCOUNT_FORMATED' => $result['PRICE_WITHOUT_DISCOUNT'],
   'CURRENCY' => $result['CURRENCY']
   'MIN_SUMM' => $minSummMustache
В basket-total.php вышло так:
Код
            <div class="basket-checkout-block basket-checkout-block-btn">
               <button class="btn btn-lg btn-default basket-btn-checkout{{#DISABLE_CHECKOUT}} disabled{{/DISABLE_CHECKOUT}}"
               {{#MIN_SUMM}}
    <div class="minimal_summ">
        Минимальная сумма заказа {{{MIN_SUMM}}} руб.
    </div>
{{/MIN_SUMM}}
{{^MIN_SUMM}}
                  data-entity="basket-checkout-button">
                  <?=Loc::getMessage('SBB_ORDER')?>
               </button>
               {{/MIN_SUMM}}
            </div>
         </div>
      </div>

Но ошибка. Причем, если удалить строку второго действия (что конечно не правильно)
Код
   'MIN_SUMM' => $minSummMustache
То задача по получению "минимальной суммы" хоть и не работает, но корзина работает как и до всех изменений. Подскажите пожалуйста, что я делаю не так, очень хочется реализовать данный вариант. Спасибо
Запятую забыли тут
Код
'CURRENCY' => $result['CURRENCY'],  //<<<<<<- нет запятой 
'MIN_SUMM' => $minSummMustache,  // - тоже можно поставить (не обязательно)
Михаил! Низкий поклон! Теперь всё в полном порядке. Очень удобное решение. Спасибо!
Приветствую, а следующая заметка с указанием минимальной суммы для разных групп покупателей еще не готова?
Пока нет, пишется )
Здравствуйте!

Скажите, а возможно сделать ограничении минимальной суммы корзины, но чтобы при применении купона (в рублях), минимальная сумма отключалась? Сейчас получается так, что человек набирает корзину на 5500 рублей, применяет купон на 5000 рублей, и ему нужно набрать еще товара, до получения минимальной суммы заказа. Подскажите, пожалуйста, куда копать или имеются готовые решения?

Заранее спасибо!
Здравствуйте!
Подскажите в mutator.php все нормально. В basket-total.php заменил, но в корзине ничего не меняется.. в чем может быть проблема? кеш сбросил
Может быть не в том шаблоне корзины делаете?
Это из более менее простого  :)

А так, сложно подсказать - нужно разбираться на месте
а с оформлением заказа как быть? /personal/order/make/
В принципе, точно так же. Проверять сумму товаров заказа и скрывать / показывать кнопку оформления заказа.
 
Здравствуйте, после добавления
if ($arParams['MIN_SUMM'] < $arResult['JS_DATA']['TOTAL']['PRICE_WITHOUT_DISCOUNT_VALUE']) {
   header('Location:'.$arParams['PATH_TO_BASKET']);
}

в sale.order.ajax и нажатия на кнопку "Оформить заказ" идет переброска на страницу с корзиной, которая пустая, хотя по по плану должна была быть страница с инф. о заказе и оплатой...

В чем может быть причина такой ошибки?
Да, что-то этот момент я не учел. После оформления, само собой сумма станет меньше минимальной (точнее 0) и условие сработает.
Быстрое решение, перенесите эту проверку из result_modifier.php в вверх template.php
Тогда не должно бы срабатывать после оформления заказа, за него отвечает файл confirm.php

Позже дополню заметку более "фен шуйным" вариантом.
А я в  template.php (sale.order.ajax) и добавляла проверку и был переброс на корзину...
Обверните код, который проверяет сумму в корзине и отвечает за редирект, вот в такое условие:
Код
if (!$request->get('ORDER_ID') <> '') {
    if ($arParams['MIN_SUMM'] > $arResult['JS_DATA']['TOTAL']['PRICE_WITHOUT_DISCOUNT_VALUE']) {
        LocalRedirect($arParams['PATH_TO_BASKET']);
    }
}

В заметку дописал этот нюансик
Обернула код в template.php (sale.order.ajax) новым условием, которое вы прислали в пред.комментарии и вышло много ошибок (см. прил.), а сама форма заказа пропала.
Все работает, проверил со штатными шаблонами вот тут https://bxstore.ru/ (минимальная сумма 100 000 руб)

В интек шаблоне видимо есть какая-то модификация. Попробуйте найти там подключение файла confirm.php и перешлите сюда.

В штатном шаблоне выглядет так, ищите что-то похожее.
Код
if ($request->get('ORDER_ID') <> '')
{
   include(Main\Application::getDocumentRoot().$templateFolder.'/confirm.php');
}

Собственно, он в это же условие обвернут, но без отрицания.
А какой может быть способ решения схожей задачи, в которой нужен контроль минимальной стоимости (сбора) в разрезе каждой номенклатуры? Другими словами, отдельного товара можно купить на общую сумму не менее чем ХХХ руб. при этом в заказе (в корзине) могут быть подобраны разные товары, и по каждому из них установлена установлена индивидуальная "отсечка" минимального стоимости (сбора)!
Такое через свойства товара, думаю, проще всего. У товаров свойство типа число "Минимальная сумма".
В корзине получать свойство каждого товара, сравнивать с суммой этого товара в корзине и выводить оповещение.

Можно скомпоновать с этой заметкой:
https://bazarow.ru/blog-note/13200/
Если сумма не достаточна при переходе к заказу удалять такие товары (предупредив пользователя)
Добрый день Михаил.
А как можно сделать чтобы минимальная стоимость заказа была только у определённого типа плательщиков?
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 400 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 250 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 300 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 30 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.