Купон на повторную покупку в sms
На событии изменения статуса заказа, генерируем купон и отправляем его в смс.
\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['OrderEvents', 'orderStateChange']); class OrderEvents { public static function orderStateChange(\Bitrix\Main\Event $event): void { if ($order = $event->getParameter("ENTITY")) { // sms с купоном на повторную покупку if ($order->getField("STATUS_ID") === 'F') { // F - выполнен $coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); // генерируем купон $result = \Bitrix\Sale\Internals\DiscountCouponTable::add([ "DISCOUNT_ID" => "1", // ID скидки, для которой добавляется купон "COUPON" => $coupon, "TYPE" => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, // на заказ "ACTIVE_TO" => \Bitrix\Main\Type\DateTime::createFromTimestamp(strtotime("+3 month")), // срок действия 3 месяца 'MAX_USE' => 1, // одноразовый 'DESCRIPTION' => 'Купон на повторную покупку' ]); if ($result->IsSuccess()) { $message = 'Ваш купон на повторную покупку '.$coupon; // тут метод отправки смс // телефон можно получить так $order->getPropertyCollection()->getPhone()->getValue() // или из полей пользователя, его ID можно получить так $order->getUserId() } else { // массив ошибок $result->getErrorMessages() } } } } }
Учтите, что при данной реализации, если по какой-то причине статус "Выполнен" будет установлен повторно, то смс отправится еще раз с новым купоном.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.