Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый шаблон SALE_NEW_ORDER. Так как иначе он не очень информативен для менеджеров, приходится заходить в админку сайта и смотреть свойства заказа. Но всегда можно передать данные свойства напрямую в почтовое событие Битрикс. Правда для этого придется вынести компонент, который передает параметры почтовых событий в собственное пространство имен.
Внимание! Данная заметка актуальна только для устаревшего компонента sale.order.ajax. Сам компонент вполне работоспособен, если используете его можете воспользоваться информацией из заметки. Но, есть более "правильный" способ: Модифицировать состав заказа #ORDER_LIST# в почтовом событии "Новый заказ"
Добавление ФИО, номера телефона клиента и общий вес заказанных товаров в почтовое событие
Для начала копируем системный компонент sale.order.ajax в собственное пространство имен. Для этого создаем свою папку в /bitrix/components/, например bazarow. И копируем всю папку /bitrix/components/sale.order.ajax в bazarow
Открываем файл component.php и, примерно на 1946 ой строке, находим параметры, которые передаются в почтовое событие

Добавляем сюда строчки для вызова веса товара, и свойств заказа ФИО и Номер телефона
"PHONE" => $arUserResult["ORDER_PROP"][3], //ID свойства заказа из настроек Магазин->Свойство заказа,
"FIO" => $arUserResult["ORDER_PROP"][1], //ID свойства заказа из настроек Магазин->Свойство заказа,
"ORDER_WEIGHT" => $arResult["ORDER_WEIGHT"],
Целиком должно получиться примерно так:
$arFields = Array(
"ORDER_ID" => $arOrder["ACCOUNT_NUMBER"],
"ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", SITE_ID))),
"ORDER_USER" => ( (strlen($arUserResult["PAYER_NAME"]) > 0) ? $arUserResult["PAYER_NAME"] : $USER->GetFormattedName(false)),
"PRICE" => SaleFormatCurrency($orderTotalSum, $arResult["BASE_LANG_CURRENCY"]),
"PHONE" => $arUserResult["ORDER_PROP"][3],
"FIO" => $arUserResult["ORDER_PROP"][1],
"ORDER_WEIGHT" => $arResult["ORDER_WEIGHT"],
"BCC" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
"EMAIL" => (strlen($arUserResult["USER_EMAIL"])>0 ? $arUserResult["USER_EMAIL"] : $USER->GetEmail()),
"ORDER_LIST" => $strOrderList,
"SALE_EMAIL" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
"DELIVERY_PRICE" => $arResult["DELIVERY_PRICE"],
);
В публичной части сайта выводим наш новый компонент, подключаем к нему шаблон, и в почтовое событие "Новый заказ на сайте", в нужном месте вставляем переменные "PHONE" "FIO" и "ORDER_WEIGHT"
Интересует такой вопрос, задваиваются контрагенты при выгрузке из за неуникальности поля FIO.
Пробовал в Init.php вставить такой код:
Код |
---|
AddEventHandler("sale", "OnSaleComponentOrderComplete", "SaleComponentOrderCompleteHandler"); function SaleComponentOrderCompleteHandler($ID, $arOrder) { $fio = $arOrder['USER_NAME'].' '.$arOrder['USER_LAST_NAME']; $arFields = array( "ORDER_ID" => $ID, "ORDER_PROPS_ID" => ID поля FIO, "NAME" => "ФИО", "CODE" => "FIO", "VALUE" => $fio ); CSaleOrderPropsValue::Add($arFields); } |
Подскажите как в стандартном bitrix.sale.order.ajax - разбить поле FIO на имя и фамилию.
Т.к. штатно человек должен поставить пробел, это и будет разделителем, но меня крайне это не устраивает. Поля должны быть отдельно.
Хотелось бы чтобы из полей фамилия и имя формировалось поле FIO, впринципе судя по коду так и должно получаться, но не срабатывает.
Подскажите, может я допустил ошибку?
Решение с модулем для 1С, мне не подходит, версия не совпадает.
Подскажите как добавить свои поля в шаблон изменения статуса заказа SALE_STATUS_CHANGED

Отсюда вопрос, как добавлять собственные поля в шаблоне?
Также не подскажете как добавить в письмо [SALE_NEW_ORDER]адрес доставки и тип оплаты?