Меню
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
Получать остатки товара на каждом складе, проверять сколько товара набросано в корзину.
И если превышает количество выдавать предупреждение

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

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

Простые калькуляторы в карточке товара каталога на Битрикс

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

Заполнить картинки разделов каталога из картинок товаров

Задача: в каталоге, разделы и подразделы выводятся в виде плитки над товарами, с картинками разделов. Так как разделов и...

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

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

Автоматически помечаем новинки лейблом в каталоге битрикс

Если вы хотите помечать новинки каталога, вашего магазина на Битрикс, лейблом "Новинка". И так, что бы это происходило а...

Установить цену товара из свойства инфоблока

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

Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне 1С-Битрикс

Ранее я уже делал заметку на эту тему. Тогда, мы меняли значение input-а при добавлении товара в корзину в старых шаблон...

Автоматическая загрузка каталогов из csv файлов в Битрикс

Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В 1С-Битрикс, уже есть весь не...

Заполнить свойство инфоблока ценой из торгового каталога

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

Создание скидки на общую сумму покупки в Битрикс корзине

Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать множество условий скидок в корз...