Сгенерировать скидочные купоны, при заказе и отправить на почту

RSS
Сгенерировать скидочные купоны, при заказе и отправить на почту
 
Сгенерировать скидочные купоны, при заказе и отправить на почту

Задача: после того как пользователь сделал заказ, нужно сгенерировать одноразовые купоны для скидки (правила корзины) и отправить, эти купоны, на почту указанную при оформлении заказа. Купоны генерируются и отправляются, только после полного завершения заказа, который оплачен и переведен в статус "Выполнен".
 
Что бы купоны не копились в базе, если они больше не нужны.
Можно запускать периодический скрипт с методом
\Bitrix\Sale\Internals\DiscountCouponTable::onDelete
который будет подчищать использованные купоны.
 
Спасибо за материал! Очень полезно.
Но, для ленивых, подскажите, как поправить под генерацию одного купона?
 
Цитата
Alexey написал:
Сгенерировать скидочные купоны, при заказе и отправить на почту

Как-то так. Не проверял, но вроде бы все правильно.
То есть даже не получаем список товаров заказа. Достатоно знать что он стал в статусе F
Код
if ($arFields == 'F') {
   // Генерируем купон
                $generateCoupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true);
                $fields = array(
                    "DISCOUNT_ID" => "7",
                    "ACTIVE" => "Y",
                    "TYPE" => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER,
                    "COUPON" => $generateCoupon,
                    "DATE_APPLY" => false
                );
                $result = \Bitrix\Sale\Internals\DiscountCouponTable::add($fields);
                $cupon = $generateCoupon;
   // end Генерируем купон

        // Получаем email для отправки купона
        $dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
            'select' => ['CODE', 'VALUE'],
            'filter' => ['=ORDER_ID' => $orderID, '=CODE' => 'EMAIL']
        ]);
        while ($item = $dbRes->fetch()) {
            $userOrderEmail = $item['VALUE'];
        }
        // end Получаем email для отправки купона
        
        // Отправляем письмо
        $EVEN_TYPE = 'SEND_CUPONS';
        $SITE_ID = 's1';
        $arFeedForm = array(
            "EMAIL_TO" => $userOrderEmail,
            "CUPON_LIST" => $cupon
        );
        CEvent::Send($EVEN_TYPE, $SITE_ID, $arFeedForm );
    }
Изменено: Михаил Базаров - 01.09.2022 12:30:22
 
Благодарю, Михаил :) Буду пробовать
 
Подскажите, как создать большое кол-во купонов с заранее заданным форматом кода купона ?
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе