Задать вопрос
@TechNOIR

1С-Битрикс. Как сделать статус «Отменен» при отмене заказа вместо «Выполнен»?

Добрый день.

При отмене заказа в Битриксе заказу выставляется статус "Выполнен".
Как сделать статус "Отменен" при отмене заказа вместо "Выполнен"? Если я создам допустим статус "Отменен " в статусах с кодом CN

Спасибо заранее
  • Вопрос задан
  • 4399 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Надо написать обработчик события модуля sale OnSaleOrderBeforeSaved.

Вот пример обработчика
<?
namespace Gricuk\Sale;


class OrderEvents
{
	/**
     * 1) Смена статуса для отмененного заказа
     * 2) Комиссия за наложенный платёж
     * @param \Bitrix\Main\Event $event
     * @link https://dev.1c-bitrix.ru/api_d7/bitrix/sale/events/order_saved.php
     */
	public static function OnSaleOrderBeforeSavedHandler(\Bitrix\Main\Event $event)
	{
		/** @var \Bitrix\Sale\Order $order */
	    $order = $event->getParameter("ENTITY");
	    global $USER;
	    if (!$order->isNew()) {

	        $orderStatus = $order->getField("STATUS_ID");
	        if ($order->isCanceled() && ($orderStatus != "CN")) {
	            $order->setField("STATUS_ID", "CN");
	            $event->addResult(new \Bitrix\Main\EventResult(
	                \Bitrix\Main\EventResult::SUCCESS,
	                array(
	                    "RESULT" => $order,
	                )
	            ));
	        }

	        return;
	    }
	}
}


Вот так надо подключить событие
<?
$bxEventManager = \Bitrix\Main\EventManager::getInstance();

$bxEventManager->addEventHandler(
    "sale",
    "OnSaleOrderBeforeSaved",
    array(
         \Gricuk\Sale\OrderEvents::class,
        "OnSaleOrderBeforeSavedHandler"
    )
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы