Проблема
По умолчанию в стандартных email-уведомлениях Битрикс выводятся не все поля заказа. Если нужно отправить клиенту или менеджеру полную информацию, включая все заполненные свойства и способ оплаты, потребуется доработать код.
Решение
Добавим обработчик события OnOrderNewSendEmail, который соберет все данные заказа и передаст их в письмо.
Как это работает?
-
Получаем все свойства заказа через
CSaleOrderPropsValue::GetOrderProps(). -
Форматируем их в строку, пропуская пустые значения.
-
Добавляем способ оплаты из
CSalePaySystem. -
Передаем данные в переменную
ALL_PROPS, которую можно использовать в почтовом шаблоне.
Готовый код
<?
AddEventHandler("sale", "OnOrderNewSendEmail", "addAllOrderFieldsToEmail");
function addAllOrderFieldsToEmail($orderID, &$eventName, &$arFields)
{
// Получаем свойства заказа
$dbOrderProps = CSaleOrderPropsValue::GetOrderProps($orderID);
$formattedProps = '';
// Формируем строку с заполненными свойствами
while ($arProp = $dbOrderProps->Fetch()) {
if (!empty($arProp['VALUE'])) {
// Для свойства с ID=12 заменяем значение на "да"
$value = ($arProp['ORDER_PROPS_ID'] == 12) ? 'да' : $arProp['VALUE'];
$formattedProps .= "{$arProp['NAME']}: {$value}\n";
}
}
// Добавляем способ оплаты
if ($arOrder = CSaleOrder::GetByID($orderID)) {
if ($arPayment = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID'])) {
$formattedProps .= "Способ оплаты: {$arPayment['PSA_NAME']}\n";
}
}
// Передаем данные в письмо
$arFields["ALL_PROPS"] = $formattedProps;
}
?>Как использовать?
-
Вставьте код в файл
/bitrix/php_interface/init.php(если его нет — создайте). -
В почтовом шаблоне добавьте переменную
#ALL_PROPS#, куда подставятся все свойства.
Вывод
Этот код автоматически добавит в письмо все заполненные поля заказа, включая способ оплаты. Решение особенно полезно для интернет-магазинов, где важно передавать клиенту полную информацию о заказе.
Нужна доработка?
-
Если требуется изменить формат вывода, отредактируйте строку
$formattedProps. -
Для выборочного отключения некоторых полей добавьте проверку
ORDER_PROPS_ID.
Теперь ваши email-уведомления в Битрикс будут содержать всю необходимую информацию!