Дата и стомость доставки в шаблон письма заказа в 1С-Битрикс

Добавляем в шаблон письма о новом заказе в CMS 1С-Битрикс дату и стоимость доставки.


Все началось с того что нам прилетело письмо от Яндекса:

Заказ на сайте магазина не был подтверждён в течение часа

Сотрудник Маркета оформил заказ на сайте магазина. В ответ ему пришло автоматическое уведомление, в котором не было важной информации о заказе: даты и стоимости доставки.

И задача звучит вообще не сложно, но дело в том что данная информация о доставке не доступна в штатом функционале редактора почтового шаблона, а нам она очень нужна!

Что вообще делаем?

Хотим что бы в почтовом шаблоне были доступны новые «поля»

#ORDER_DESCRIPTION# - комментарий пользователя
#PHONE# - телефон
#DELIVERY_NAME# - название службы доставки
#DELIVERY_PRICE# - цена доставки
#DELIVERY_PERIOD_TYPE# в чем измеряется срок доставки
#DELIVERY_PERIOD_FROM# - минимальный срок доставки
#DELIVERY_PERIOD_TO# - максимальный срок доставки
#FULL_ADDRESS# - адрес доставки
#PAY_SYSTEM_NAME# - платежная система

Пошаговую инструкцию можно увидеть на видео, а ниже информация которая нам необходима:

По адресу bitrix/php_interface/ создаем файл init.php

Внимание!!! Если файл init.php у вас уже есть первую строчку «<?» - убираем и добавляем все что после нее в Ваш файл init.php

Добавляем в него код:

<?
//-- Добавление обработчика события

AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");

//-- Собственно обработчик события

function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$arOrder = CSaleOrder::GetByID($orderID);

//-- получаем телефоны и адрес
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
$phone="";
$index = "";
$country_name = "";
$city_name = "";
$address = "";
while ($arProps = $order_props->Fetch())
{
if ($arProps["CODE"] == "PHONE")
{
$phone = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "LOCATION")
{
$arLocs = CSaleLocation::GetByID($arProps["VALUE"]);
$country_name = $arLocs["COUNTRY_NAME_ORIG"];
$city_name = $arLocs["CITY_NAME_ORIG"];
}

if ($arProps["CODE"] == "INDEX")
{
$index = $arProps["VALUE"];
}

if ($arProps["CODE"] == "ADDRESS")
{
$address = $arProps["VALUE"];
}
}

$full_address = $index.", ".$country_name." ".$city_name.", ".$address;

//-- получаем название службы доставки
$arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]);
$delivery_name = "";
if ($arDeliv)
{
$delivery_name = $arDeliv["NAME"];
}

//-- генерируем срок достаки
$delivery_period_type = "";

switch ($arDeliv["PERIOD_TYPE"]) {
case "D":
$delivery_period_type = "дней";
break;
case "H":
$delivery_period_type = "часов";
break;
case "M":
$delivery_period_type = "месяцев";
break;
}

//-- получаем название платежной системы
$arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
$pay_system_name = "";
if ($arPaySystem)
{
$pay_system_name = $arPaySystem["NAME"];
}

//-- добавляем новые поля в массив результатов
$arFields["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"];
$arFields["PHONE"] = $phone;

$arFields["DELIVERY_NAME"] = $delivery_name;
$arFields["DELIVERY_PRICE"] = $arOrder["PRICE_DELIVERY"];
$arFields["DELIVERY_PERIOD_TYPE"] = $delivery_period_type;
$arFields["DELIVERY_PERIOD_FROM"] = $arDeliv["PERIOD_FROM"];
$arFields["DELIVERY_PERIOD_TO"] = $arDeliv["PERIOD_TO"];

$arFields["FULL_ADDRESS"] = $full_address;
$arFields["PAY_SYSTEM_NAME"] = $pay_system_name;
}

Переходим в Админ меню в Настройки -> Настройки продукта -> Почтовые события -> Почтовые шаблоны 

Находим там тип почтового события: [SALE_NEW_ORDER] и добавляем нужную нам информацию:

Способ оплаты: #PAY_SYSTEM_NAME#
Служба доставки: #DELIVERY_NAME#
Стоимость доставки: #DELIVERY_PRICE# руб.
Адрес доставки: #FULL_ADDRESS#
Внимание! Срок доставки от #DELIVERY_PERIOD_FROM# до #DELIVERY_PERIOD_TO# #DELIVERY_PERIOD_TYPE# 
Для уточнения точного времени доставки с Вами свяжется наш менеджер! 
Если доставка осуществляешься Транспортной компанией её стоимость может измениться в зависимости от тарифов Транспортной компании.
Комментарий:
#ORDER_DESCRIPTION#

По мотивам статьи: Дополнительные поля в почтовом уведомлении о новом заказе



(0)

В настройках компонента не выбран ни один тип комментариев