Доп поле в письмо ✉️ (Новый заказ ? SALE_NEW_ORDER) Битрикс

Задача

Добавить дополнительные поля в письмо при отправке нового заказа: «комментарий клиента к заказу», «телефон», «название службы доставки», «название способа оплаты», «полный адрес клиента» в шаблон письма-уведомления о новом заказе

Описание:

При создании нового заказа битрикс отправляет письмо клиенту и тем кто стоит в копии, по стандарту через событие SALE_NEW_ORDER

При этом используются шаблон с id 32 (для админов магазина я создал 57)

Решение

Шаблон

В шаблон 57 добавил такой текст

...
Контактный телефон: #PHONE#
Комментарий:
#ORDER_DESCRIPTION#
Служба доставки: #DELIVERY_NAME#
Способ оплаты: #PAY_SYSTEM_NAME#
Адрес доставки: #FULL_ADDRESS#
...

Код

в /bitrix/php_interface/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"];
  }

  //-- получаем название платежной системы   
  $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["PAY_SYSTEM_NAME"] =  $pay_system_name;
  $arFields["FULL_ADDRESS"] = $full_address;   
}

Источник https://dev.1c-bitrix.ru/community/webdev/user/50449/blog/dopolnietlnye-polya-v-pochtovom-uvedomlenii-o-novom-zakaze/

Вам также может понравиться

About the Author: Vladimir Kusakin

Hi. I am web developer. For the past 9 years, I've been developing applications for the web using mostly PHP and Python. About me

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *