Добавить в корзину товары как в другом заказе (повторить заказ)
Как на Битриксе реализовать функционал "Повторить заказ" – т.е. добавить в корзину товары, как в другом заказе
Нужно получить корзину заказа, из которого хотим скопировать, и добавить товары из нее в текущую корзину пользователя:
<?php
$order = \Bitrix\Sale\Order::load($orderId); //ID заказа
if ($order) {
// получаем корзину заказа
$orderBasket = $order->getBasket();
// получаем текущую корзину пользователя
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
\Bitrix\Sale\Fuser::getId(),
\Bitrix\Main\Context::getCurrent()->getSite()
);
foreach ($orderBasket as $orderBasketItem) {
$productId = $orderBasketItem->getProductId();
// добавляем товар в корзину
$basketItem = $basket->createItem('catalog', $productId);
$basketItem->setFields([
'QUANTITY' => $orderBasketItem->getQuantity(),
'CURRENCY' => $order->getCurrency(),
'LID' => $order->getSiteId(),
'PRODUCT_PROVIDER_CLASS' => '\CCatalogProductProvider',
]);
}
$basket->save();
}
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий