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

Иногда нужно и такое: Например: на одном из разрабатываемых сайтов, мне нужно было создать всего 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();
?>
Михаил, приветствую.

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

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

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

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

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

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

В общем, направление такое. А что бы конкретно описать, мне нужно самому с таким столкнуться и познать.)
опечатка - (размещае): "В index.php раздела /newitem/ размещае вот"
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

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

Индивидуальные цены в 1С-Битрикс: в каталоге и при оформлении заказа

В этой заметке постараюсь описать процесс реализации индивидуальных цен, для пользователей. При этом, индивидуальные цен...

Уникальная СЕО информация для каждого торгового предложения в каталоге 1С-Битрикс

Задача: реализовать уникальную мета-информацию для каждого SKU в каталоге. У каждого ТП должны быть свои: заголовок h1, ...

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

Задача: В магазине реализован внутренний счет (бонусный счет) для покупателей. Необходимо, чтобы при оплате зака...

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

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

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

Увеличение диска на готовой виртуальной машине Битрикс

Как всем известно, на официальном сайте 1С-битрикс можно скачать готовую виртуальную машину максимально сконфигурированн...

Вывести свойство отдельно ото всех или исключить из всех

Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство отдельно ото всех, или вообще н...

Добавление своих полей в почтовые шаблоны Битрикс

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

Информация о службе доставки по ее ID, в 1С-Битрикс

Задача: зная ID службы доставки получить необходимую информацию о ней, с помощью API 1С-Битрикс