Запретить оплату с внутреннего счета, если в корзине есть определенный товар

RSS
Запретить оплату с внутреннего счета, если в корзине есть определенный товар
 
Запретить оплату с внутреннего счета, если в корзине есть определенный товар

Задача: пользователи могут оплачивать заказы с бонусного счета (штатный внутренний счет), но если в корзине  есть определенные товары - то в этом заказе нужно запретить оплату бонусами.
 
Улучшенный вариант получения корзины на D7
Код
use Bitrix\Sale;
use Bitrix\Main\Loader;
use Bitrix\Iblock\Elements\ElementTable;
use Bitrix\Iblock\PropertyTable;

Loader::includeModule("sale");
Loader::includeModule("iblock");

// Получаем корзину текущего пользователя
$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), SITE_ID);

// Проходим по элементам корзины
foreach ($basket as $basketItem) {
    $productId = $basketItem->getProductId();

    // Получаем значение свойства товара с кодом 'ZAPRESHCHENO_OPLACHIVAT_BONUSAMI'
    $property = PropertyTable::getList([
        'filter' => [
            'IBLOCK_ID' => 4,
            'CODE' => 'ZAPRESHCHENO_OPLACHIVAT_BONUSAMI',
            'IBLOCK_ELEMENT_ID' => $productId
        ],
        'select' => ['VALUE']
    ])->fetch();

    // Проверка на запрет оплаты бонусами
    if ($property && $property['VALUE'] === 'Да') {
        $hidePayBonus = 'Y';
        break; // Прерываем цикл, если нашли хотя бы один товар с запретом
    }
}
$APPLICATION->IncludeComponent(
    "bitrix:sale.order.ajax",
    "new_order",
    array(
       ... параметры компонента ...
        "PAY_FROM_ACCOUNT" =>  $hidePayBonus ? 'N' : 'Y';
        ... параметры компонента ...
    ),
    false
);
Изменено: Михаил Базаров - 24.09.2024 12:54:57
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst
Место для вашей рекламы.
Сквозная по:

15 000 руб/мес.

Обязательно через ОРД
со счетами и актами

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

Мобильные версии страниц и поисковые системы

Согласно требования поисковых систем: Яндекс и Google, в случае если у вашего сайта имеется мобильная версия, нужно увед...

Вывести разделы инфоблока в которых находится элемент Битрикс

Если нужно в карточке товара или новости, вывести структуру разделов в котором находится элемент. С одной стороны, это у...

INPUT type="file" Предпросмотр превью картинки до загрузки

Рассмотрим на примере компонента "Форма добавления-редактирования элементов инфоблока", как сделать ее более удобной для...

Композитный сайт на 1С-Битрикс

Для новых клиентов: Все новые проекты будут включать в себя применение технологии "Композитный сайт" - данная услуга уже...

Данные о заказе текущего пользователя

Иногда нужно получить данные о заказе текущего пользователя. Не через компонент, а непосредственно через API Битрикс. Ва...

Время на БД и веб сервере отличается на 3600 секунд, тест Битрикс

Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок: Время на БД и на сервере- Вр...

Настройка push уведомлений через Firebase, в мобильном приложении Apache Cordova

Задача: Apache Cordova предоставляет удобный способ разработки кроссплатформенных мобильных приложений. В данной статье ...

Кастомизация компонента восстановления пароля bitrix:system.auth.forgotpasswd

Достаточно часто спрашивают как кастомизировать компонент восстановления пароля пользователя. Типовая задача, это измени...

Создание блога с комментариями, оценками и просмотрами на сайте с 1С-Битрикс

Если на вашем сайте требуется создание раздела с блогом или новостями, статьями. Записям в которых, посетители смогу ста...