Отправка письма пользователю при смене статуса заказа (Битрикс)

Письмо при смене статуса заказа Битрикс

Я уже писал о том, как отправлять письмо пользователю интернет магазина при оформлении нового заказа. Сегодня я расскажу о том как это делать при смене статуса заказа. Например, менеджер магазина изменил в административном разделе Битрикса статус заказа на отгружен, и в это время пользователю отправляется письмо с информацией об этом.

В письмо будут входить следующие данные:
- ID заказа
- статус заказа
- дата заказа
- описание статуса заказа
- некое сообщение пользователю

Как и раньше, первым делом мы создадим соответствующее почтовое событие и тип почтового шаблона. Как это сделать описано в этой статье. Итак, у нас должны получиться почтовое событие и шаблон как на картинке:

Отправка письма пользователю при смене статуса его заказа Bitrix
Отправка сообщения пользователю при смене статуса его заказа Битрикс

Далее необходимо зайти в папку www.ваш_сайт.ru//bitrix/php_interface и в файл init.php вставить следующий код (если такого файла нет создать!):

AddEventHandler("sale", "OnSaleStatusOrder", Array("mail", "OnSaleStatusOrder_mail")); 

class mail
{ 

function OnSaleStatusOrder_mail($ID, $val)
{ 

// Код статуса заказа, при котором отправлять письмо (N)
if ($val == "N")
{
            // Получаем параметры заказа
            $arOrder = CSaleOrder::GetByID($ID);

            $text = "Для просмотра подробной информации о заказе перейдите по ссылке: http://alo-alo.ru/personal/order/";

            //Получаем свойства заказа
            $db_props = CSaleOrderPropsValue::GetOrderProps($ID);

            // Получаем код статуса заказа
            $arStatus = CSaleStatus::GetByID($val);
            $arStatus_opis = $arStatus["DESCRIPTION"];
            $arStatus = $arStatus["NAME"];

            $EMAIL = "";
            while ($arProps = $db_props->Fetch())
                {
                     if($arProps["CODE"] == "EMAIL")
                        {
                           $EMAIL = $arProps["VALUE"];
                        }
                }

$arEventFields = array(
    "ORDER_ID"            => $ID,
    "ORDER_STATUS"        => $arStatus,
    "ORDER_DATE"          => $arOrder["DATE_INSERT"],
    "EMAIL"               => $EMAIL,
    "ORDER_DESCRIPTION"   => $arStatus_opis,
    "SALE_EMAIL"          => "ваша почта",
    "TEXT"                => $text,
    );

CEvent::SendImmediate("SALE_STATUS_CHANGED_N", s1, $arEventFields, "N", 19);
}

} 

}

Теперь после того, как статус заказа сменится на статус с кодом «N», пользователю отправится соответствующее письмо. Аналогично можно добавлять отправку писем при других статусах.

Данная функция будет выполняться по событию OnSaleStatusOrder, оно срабатывает в момент сменты статуса у заказа. В функцию передается идентификатор заказа и идентификатор статуса. Про функцию CEvent::SendImmediate вы также можете прочитать в прошлой статье.
Все, теперь клиентам будут рассылаться письма с информацией о том, что их заказ перешел в другой статус.

Похожие посты:
  • Отправка письма на почту пользователю при оформлении нового заказа (Битрикс)
  • Напоминание пользователю о появлении товара (Битрикс)
  • Кнопка «повторить заказ» для Битрикс
  • Выгрузка заказов в xml файл для курьерской службы
  • События в 1С Битрикс
  • Добавить комментарий:

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: