Отмена заказа

Отменить заказ, снять отмену

Отменить и снять отмену заказа можно через метод CSaleOrder::CancelOrder().

$order_id = 5;

// Отменить заказ
CSaleOrder::CancelOrder($order_id, 'Y');

// Снять отмену
CSaleOrder::CancelOrder($order_id, 'N');

Метод CSaleOrder::CancelOrder() также генерирует события «OnSaleBeforeCancelOrder» и «OnSaleCancelOrder».

Также отменить заказ можно через JavaScript на странице заказа в админке.

// JS-код, выполняется в админке на странице заказа 
var orderID = 5;

// Отменить заказ
BX.Sale.Admin.OrderEditPage.onCancelStatusButton(orderID, 'N');

// Снять отмену
BX.Sale.Admin.OrderEditPage.onCancelStatusButton(orderID, 'Y');

Статус заказа (отменён)

Узнать, является ли заказ отменённым, можно через метод $order->getField('CANCELED').

$order_id = 5;
$order = Bitrix\Sale\Order::load($order_id);

$order->getField('CANCELED'); // заказ отменён (Y / N)
$order->getField('EMP_CANCELED_ID'); // ИД пользователя, отменивший заказ
$order->getField('DATE_CANCELED')->toString(); // дата отмены (05.01.2020 21:11:10)

Причина отмены заказа

Указать причину отмены заказа можно через третий параметр метода CSaleOrder::CancelOrder().

// Указать причину отмены заказа
CSaleOrder::CancelOrder($order_id, 'Y', 'Передумал');

Получить причину отмены заказа можно через метод $order->getField('REASON_CANCELED').

$order_id = 5;
$order = Bitrix\Sale\Order::load($order_id);

// причина отмены заказа
$order->getField('REASON_CANCELED');

Код перед и после отмены или снятия заказа

Выполнять код перед и после отмены или снятия заказа можно через события «OnSaleBeforeCancelOrder» и «OnSaleCancelOrder».

# bitrix/php_interface/init.php
AddEventHandler('sale', 'OnSaleBeforeCancelOrder', 'OnSaleBeforeCancelOrderHandler');
AddEventHandler('sale', 'OnSaleCancelOrder', 'OnSaleCancelOrderHandler');

function OnSaleBeforeCancelOrderHandler($ID, $val) {
    // код перед отменой или снятия отмены заказа
}

function OnSaleCancelOrderHandler($order_id, $status, $info) {
    // код после отмены или снятия отмены заказа
}

Отправлять письмо пользователю об отменённом заказе

После отмены заказа генерируется почтовое событие «SALE_ORDER_CANCEL», при котором пользователю отправляется письмо об отменённом заказе.

Данный шаблон находится в Битрикс по умолчанию.