Skip to content
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.

Получение корзины пользователя (D7)

John edited this page Nov 16, 2016 · 18 revisions

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

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

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

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

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

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

Получение корзины по 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();

Копирование корзины

//Не копируется корзина, привязанная к заказу, и лучше копию корзины не сохранять)))
$basketCopy = $basket->copy();

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

//Если корзина привязана к заказу, то и данные по заказу будут пересчитаны
$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);

Полезные ссылки

Clone this wiki locally