Битрикс проверяем статус заказа и отправляем письмо

Смена статуса заказа и его почтовые события обрабатываются стандартно системой, при правильной установке. Ниже один из способов отловить такое событие.

Будем использовать OnOrderSave, это значит что ЛЮБОЕ изменение заказа будет проверено:

AddEventHandler("sale", "OnOrderSave", "OrderMySave");
function OrderMySave($orderID, $fields, $orderFields){
	if ($fields['STATUS_ID'] == 'F') {
		//AddMessage2Log($orderID);
		$email = $orderFields['USER_EMAIL'];
		Event::sendImmediate(array(
			"EVENT_NAME" => "SEND_RATING",
			"LID" => "s1",
			"C_FIELDS" => array(
				"EMAIL" => $email,
				"ORDER_ID" => $orderID
			),
		));
	}
}

Теперь по порядку. Вешаем обработчик события на сохранении данных о заказе. Проверяем на статус Выполнен с кодом F. По логике это финальное действие с заказом, и вы больше не будете там ничего сохранять, поэтому в данном случае это событие нас устраивает.

AddMessage2Log — поможет заняться дебагом, если вам нужно вывести данные в лог, только не забудьте добавить в дбкон — define(«LOG_FILENAME»,$_SERVER[«DOCUMENT_ROOT»].»/.log.txt»);

В начале нашего файла добавьте

use Bitrix\Main\Mail\Event;

Без него будет ошибка.

Событие отправляется мгновенно, потому как Event::sendImmediate. «SEND_RATING» — название почтового события.
C_FIELDS — наши поля для письма.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

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

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