Добро пожаловать в блог, где важны слова.

Тут я частенько публикую в открытым доступе полезные материаллы и готовые решения для повседневных задач по 1С-Битрикс и Битрикс24, а также затрагиваю темы всё что связано с сайтостроением

Получение корзины пользователя в 1С-Битрикс (API D7)

Получение корзины пользователя в 1С-Битрикс (API D7)

Получение корзины

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(

   //Получение ID покупателя (не путаем с id пользователя)
   \Bitrix\Sale\Fuser::getId(),

   //Текущий сайт
   \Bitrix\Main\Context::getCurrent()->getSite()
);

//Обёртка над ORM
$basket = \Bitrix\Sale\Basket::getList($filter);

Получение корзины по ID заказа

Получение корзины по ID заказа

$orderId = 1;
$basket = \Bitrix\Sale\Order::load($orderId)->getBasket();

Получение корзины по объекту заказа

$userId = 111;

$order = Order::create(\Bitrix\Main\Context::getCurrent()->getSite(), $userId);

$basket = \Bitrix\Sale\Basket::loadItemsForOrder($order);

Информация по корзине

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
   \Bitrix\Sale\Fuser::getId(),
   \Bitrix\Main\Context::getCurrent()->getSite()
);

$basket->getPrice(); // Сумма с учетом скидок
$basket->getSiteId(); // Код сайта
$basket->getOrder(); // Объект заказа
$basket->getOrderId(); // ID заказа
$basket->getFUserId($skipCreate = false); //Получить ID покупателя (если подать true он будет создан)
$basket->getBasePrice(); // Сумма без учета скидок
$basket->getWeight(); // Общий вес корзины
$basket->getVatRate(); //Налоги
$basket->getVatSum(); //Налоги (сумма)

$basket->setSiteId(\Bitrix\Main\Context::getCurrent()->getSite());   // Установить код сайта
$basket->setFUserId($id); // Установить $id покупателя
$basket->setOrder($order); // объект заказа

//Сохранение корзины
$basket->save();

Получение товаров доступных к покупке (CAN_BUY=Y)

$orderBasket = $basket->getOrderableItems();

Получение отформатированного массива данных по товарам в корзине

$basketList = $basket->getListOfFormatText();

Получение отформатированного массива данных по количесту товара в корзине

$basketQntList = $basket->getQuantityList();

Обновление данных корзины

//Если корзина привязана к заказу, то и данные по заказу будут пересчитаны
$basket->refreshData();

//Можно пересчитывать конкретные поля например поле цены:
\Bitrix\Sale\Basket::refreshData(['PRICE'], $basketItem);

Создание корзины

$basket = \Bitrix\Sale\Basket::create(\Bitrix\Main\Context::getCurrent()->getSite())

Создание корзины из $_REQUEST

//В массиве должны быть поля: SITE_ID, MODULE, PRODUCT_ID
$basket = \Bitrix\Sale\Basket::createFromRequest($_REQUEST);

Удаление старых корзин

//$days - количество дней
\Bitrix\Sale\Basket::deleteOld($days);

Добавление товара

$productId = 1
$basket->createItem('catalog', $productId, $basketCode = null);

//Или добавление через объект \Bitrix\Sale\BasketItem
$basketItem = Bitrix\Sale\BasketItem::create($basket, 'catalog', $productId, $basketCode = null)
$basket->addItem($basketItem);
Возврат к списку