Не дать пользователю купить больше одного товара, в Битрикс

RSS
Не дать пользователю купить больше одного товара, в Битрикс
 
Не дать пользователю купить больше одного товара, в Битрикс

Иногда нужно и такое: Например: на одном из разрабатываемых сайтов, мне нужно было создать всего 4 товара. при этом покупателю не доступна возможность купить два товара, только один. Но у него должна остаться возможность "передумать".
 
Вариант без передачи параметра в  ссылке.
Смысл заключается в том что: получаем всю корзину пользователя, выделяем из нее самый свежий товар (из добавленных в корзину).
Очищаем и снова наполняем корзину этим, одним товаром.

Код
<?
// подключаем ядро
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");

// подключаем модули
Bitrix\Main\Loader::includeModule("sale");
Bitrix\Main\Loader::includeModule("catalog");

$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
    // Сортируем состав корзины по ID что бы самый новый, добавленный товар
    // Оказался в конце массива
    array("ID" => "ASC"),
    array(
        "FUSER_ID" => CSaleBasket::GetBasketUserID(),
        "LID" => SITE_ID,
        "ORDER_ID" => "NULL"
    ),
    false,
    false,
    array("PRODUCT_ID", 'ID')
);
while ($arItems = $dbBasketItems->Fetch())
{
    // В этой переменной последний добавленный товар
    $arToCart = $arItems['PRODUCT_ID'];
}

// очищаем корзину
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());

// Добавляем товар в корзину
$fields = [
    'PRODUCT_ID' => $arToCart, // ID самого свежего добавленного товара
    'QUANTITY' => 1,
];
$r = Bitrix\Catalog\Product\Basket::addProduct($fields);

//Отправляем в оформление или корзину
header('Location: /personal/order/index.php', true, 301);
exit();
?>
Изменено: Михаил Базаров - 19.05.2022 14:28:40
 
Михаил, приветствую.

Подскажите по немного схожей теме пожалуйста.

Как не дать пользователю купить товар со склада, если количество товара на данном складе к примеру 2, а на другом складе 5?

То есть имеем 2 склада с разным количеством товара, при этом когда выбран склад с количеством 2, в нём спокойно можно оформить 7 (общее количество со всех складов).

Как запретить покупать больше чем на текущем складе и выводить пользователю предупреждение, что на текущем складе количество товара только 2, а на другом 5.

Буду очень благодарен.

Количественный учёт включен.
Покупка при отсутствии выключена.
 
Тут только копать в сторону метода CCatalogStoreProduct::GetList
Получать остатки товара на каждом складе, проверять сколько товара набросано в корзину.
И если превышает количество выдавать предупреждение

В общем, направление такое. А что бы конкретно описать, мне нужно самому с таким столкнуться и познать.)
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе