Меню
RSS
Минимальная сумма заказа в корзине 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
То задача по получению "минимальной суммы" хоть и не работает, но корзина работает как и до всех изменений. Подскажите пожалуйста, что я делаю не так, очень хочется реализовать данный вариант. Спасибо
 
Цитата
Александр Козлов пишет:
[QUOTE][URL=/club/user/1/]Михаил Базаров[/URL] пишет:
Включите вывод ошибок в .settings.php[/QUOTE] Вот, что не нравится: [CODE] [ParseError]
syntax error, unexpected ''MIN_SUMM'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' (0)

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

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

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

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

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

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

В чем может быть причина такой ошибки?

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

Позже дополню заметку более "фен шуйным" вариантом.
 
А я в  template.php (sale.order.ajax) и добавляла проверку и был переброс на корзину...
 
Цитата
Гость написал:
А я в  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']);
    }
}

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

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

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

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

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

Блог-note: заметки разработчика

Номера страниц в Title и Description при постраничной навигации каталога

Задача: Часто SEO-специалисты просят добавить номер страницы, из постраничной навигации, в заголовок и описание раздела ...

Создание раздела инфоблока при регистрации пользователя в Битрикс

Например вам нужно выводить информацию исключительно для определенного пользователя. Само собой, это можно сделать с пом...

Показать доступный остаток каждого товара в корзине 1С-Битрикс

Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...

Отфильтровать товары бренда и вывести по разделам каталога

Задача: на странице бренда, который выводится компонентом новостей, нужно показать все товары этого бренда из каталога. ...

Пошагово получить информацию о заказах и сохранить как Excel (xls)

Задача: Нужно получить информацию о заказах с возможностью указания даты создания "от"" и "до" ...

Вывести список всех пользователей с необходимой информацией

Если нужно, на какой-либо странице сайта, вывести всех пользователей из группы "Зарегистирированные пользователи", прост...

СЕО настройки сайта перед запуском

В видео рассказано о первоначальной СЕО настройке сайта перед запуском. Все показанное является компилицией из собственн...

Вывести разделы инфоблока по первым буквам не меняя структуру каталога. Алфавитный указатель

Например: у нас есть инфоблок с большим количеством разделов. И мы хотим, на сайте разбить разделы по буквам. Самый прос...