Какая задача стояла:

Добавить статус заказа.

Новый статус нужен для исправленных/дополенных заказов в Битриксе.

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

Действовать будем через init.php.
Создадим этот файл в каталоге:
/local/php_interface/

Будьте внимательны. Возможно у вас уже есть этот файл и используется. Для этого нужно проверить его в следующих путях вашего сайта:
/local/php_interface/ID сайта/init.php
/bitrix/php_interface/init.php
/bitrix/php_interface/ID сайта/init.php

Напишем в файл init.php. Если он есть, то просто ниже в файле добавим:

<?php
include_once( $_SERVER["DOCUMENT_ROOT"] . '/local/php_interface/classes/C_OnOrderStatusSendEmail.php' );


AddEventHandler("sale", "OnOrderStatusSendEmail", Array("C_OnSaleStatusEMail", "modifySaleStatusMail"));

Выше мы создали вызов на исполнение программного кода при событии: OnOrderStatusSendEmail.
Данное событие вызывается перед отправкой пиьсма о смене статуса.

Примечание: данное событие устарело с версии 15.5.0, но в 1С-Битрикс сохранена обратная совместимость. Поэтому их можно использовать, если в настройках модуля Интернет-магазин отмечена опция:

Включить обработку устаревших событий

Создаем каталог и файл:
/local/php_interface/classes/C_OnOrderStatusSendEmail.php

<?php

use Bitrix\Main\Application;
use Bitrix\Sale\Helpers;
use Bitrix\Sale\Helpers\Order;

/**
 * 
 */
class C_OnOrderStatusSendEmail
{
	
	function bxModifySaleMails($orderID, &$eventName, &$arFields, $statusID)
	{
		if (CModule::IncludeModule("Sale")){			
			$order = Bitrix\Sale\Order::load($orderID);
			$price = $order->getPrice();
			$link = Bitrix\Sale\Helpers\Order::getPublicLink($order);

			$arFields['ORDER_PUBLIC_URL'] = $link;
			$arFields['PRICE_ALL'] = $price;
		}		
	}
}

?>

В этом коде мы получаем следующие поля, который можно использовать в шаблоне:
#ORDER_PUBLIC_URL#
#PRICE_ALL#

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

Ваш адрес email не будет опубликован.

Навигация по записям