Модуль "Параметры заказа в письме" для 1С-Битрикс

Интернет-магазины давно перестали быть новшествами, став обыденным атрибутом нашей жизни. Вместо прогулок по торговым центрам и рынкам все больше людей предпочитает делать заказы через сеть, заполняя внушительные по размерам формы оформления заказов данными о себе, информацией о доставке, желаемом способе оплаты и многими другими сведениями. Немудрено, что запомнить все введенные сведения не представляется возможным для покупателя, особенно если он делает такие заказы каждый день. Отправка полной информации по заказу на указанный покупателем адрес электронной почты - логичное и удобное решение этой проблемы. Учитывая, что в уважающем себя Интернет-магазине процедура оформления заказа практически автономна, процесс отсылки всей нужной информации об оформленном заказе на почту клиента так же должен быть полностью автономен.

Краткий ликбез

Модуль Интернет-магазина 1C Bitrix включает в себя функционал, позволяющий отсылать пользователю минимум информации о его заказе: код заказа, его дату, стоимость и состав. Однако не было предусмотрена возможность добавления в текст письма весьма важных сведений о доставке товара или способе оплаты. Кроме того, многие Интернет-магазины сохраняют в свойствах заказа, которые так же не пересылаются пользователю стандартным функционалом Битрикса, не менее критичную информацию, например, указанный покупателем телефон или реквизиты. Конечно, покупатель может посмотреть их в личном кабинете (при его наличии на сайте), но все же куда удобнее было бы получить их на почту.
Данный модуль является бесплатным, установить его можно, скачав в Маркетплейсе Битрикса.

О модуле

Модуль "Параметры заказа в письме" позволяет отсылать на электронный адрес пользователя любую информацию, хранящуюся в свойствах заказа, а так же сведения о выбранной службе доставки и способе оплаты заказа. Модуль прост в настройке: достаточно выбрать те свойства, которые должны добавляться к тексту письма и вставить их макросами в шаблон отсылаемого пользователю письма.


Для обеспечения большей универсальности модуля в его настройки добавлена опция "Режим работы", которая позволяет вставлять свойства заказа в многомакросовом или одномакросовом режиме.
  • Многомакросовый режим подойдет для магазинов с нагруженными свойствами заказа, а так же имеющим сложный дизайн отсылаемого письма.
  • Одномакросовый режим предназначен для магазинов с текстовыми письмами или использующих простой дизайн в отсылаемых письмах.

Разработка

Перед отсылкой письма клиенту срабатывает событие OnBeforeEventAdd, которое содержит информацию о типе почтового события, а так же совершенном заказе в массиве $arFields. Примечательно, что данный массив и содержит те поля, которые в дальнейшем будут добавлены в текст письма: ключ массива - макрос, которым информация будет вставлена в письмо, значение - вставляемый текст. Следовательно, необходимо просто вставить указанные в настройках модуля параметры заказа в ключи-макросы и надеяться, что администратор Интернет-магазина не забыл добавить эти макросы в текст письма.

Получая необходимые параметры апи-запросами (ведь в получаемой от события информации о них ни слова), дополняем массив $arFields свойствами заказа и сведениями о способе оплаты. Со службой доставки и местоположением есть небольшие трудности.

Служба доставки

В Битриксе определено два типа служб доставки: Настраиваемые и Автоматизированные. Для нас разница в следующем:
  • Настраиваемые службы доставки характеризуются числовым id и получаются запросом CSaleDelivery::GetByID(), откуда достаем ее название.
  • Автоматизированные службы доставки характеризуются символьным id, в которым содержится идентификатор службы доставки (SID) и указанный покупателем профиль, разделенные двоеточием. Зная SID получаем информацию о службе доставки через CSaleDeliveryHandler::GetBySID(), указывая в письме и службу доставки, и профиль.

Местоположение

Местоположение - это свойство заказа, имеющее тип LOCATION и получается оно запросом CSaleLocation::GetByID. Результатом запроса будет массив, содержащий название местоположения: страну (ключ COUNTRY_NAME_LANG), регион (REGION_NAME_LANG) и город (CITY_NAME_LANG).

Шаблон номеров заказов

Битрикс не стоит на месте, развиваясь с каждым обновлением. Одно новшество под названием "Шаблоны номеров заказов" сделало небольшую неприятность модулю, потому что отныне в поле $arFields["ID"] стоит не id заказа, а номер, сформированный этим заказом. Поэтому вместо простого запроса CSaleOrder::GetByID($arFields["ID"]) приходится немного извратиться и получить id заказа через другие функции, учитывая шаблон, хранимый в параметрах заказа под ключем ACCOUNT_NUMBER.