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

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

Будем использовать 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь