• Telegram: mibazarow
  • Whatsapp: MihailBazarow
  • E-mail: mihail@bazarow.ru

Повторить заказ на API 1С-Битрикс наполнив корзину из заказа

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Повторить заказ на API 1С-Битрикс наполнив корзину из заказа

Задача: заполнить корзину пользователя теми же товарами и количествами которые были в ранее созданном заказе. При этом нужно очистить корзину от товаров которые в ней уже имеются
Пример для компонента "Детальная информация о заказе", что бы при повторе заказа товары не добавлялись к существующей корзине

В template.php вместо кнопки повтора ставим форму:
Код
<form action="" method="post">
  <button type="submit" name="ORDER_REPEAT" value="Y">
      Повторить заказ
  </button>
</form>

В component_epilog.php (если нет-то создаем):
Код
php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

use Bitrix\Sale;
if ($_REQUEST['ORDER_REPEAT'] === 'Y') {
        // Очищаем корзину пользователя
        $basket = Sale\Basket::loadItemsForFUser(
            Sale\Fuser::getId(),
            Bitrix\Main\Context::getCurrent()->getSite()
        );
        foreach ($basket as $basketItem) {
            // Отложенные не трогаем
            if ($basketItem->getField('DELAY') === 'N') {
                // Удаляем запись
                $basket->getItemById($basketItem->getId())->delete();
                // Сохраняем корзину
                $basket->save();
            }
        }

        // Загружаем заказ
        $order = Sale\Order::load(
            $arResult['ID']
        );

        if ($order) {
            // Получаем корзину заказа
            $orderBasket = $order->getBasket();

            foreach ($orderBasket as $orderItem) {

                $productID = $orderItem->getProductId();
                $quantity = $orderItem->getQuantity();
                // Добавляем товар в корзину
                $basketItem = $basket->createItem(
                    'catalog',
                    $productID
                );
                // Дозаполняем
                $basketItem->setFields(array(
                    'QUANTITY' => $quantity,
                    'CURRENCY' => $order->getCurrency(),
                    'LID' => $order->getSiteId(),
                    'PRODUCT_PROVIDER_CLASS'=>'\CCatalogProductProvider',
                ));
            }
            $basket->save();
        }
        LocalRedirect('/personal/order/make/');
}

Убрана проверка на авторизацию, так как она уже есть в самом компоненте и не нужные подключения классов- так как тоже уже подключены компонентом
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 400 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

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

Мобильное приложение

от 400 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 250 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 300 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 30 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.