Автоматизация статусов при оплате заказов

В Битриксе есть свои автоматизации, но они мне не подходят, т.к. если заказ ушел наложкой, то он уже давно выдан, а деньги только пришили, и как только деньги пришли, то автоматом установился статус «оплачен» и заказ пошел на повторную обработку, как любой заказ с предоплатой.

Только можно сделать так:

AddEventHandler("sale", "OnSalePayOrder", "SetOrderStatusToComptele");
function SetOrderStatusToComptele($ID) {
    if (CModule::IncludeModule("sale")){
        $arOrder = CSaleOrder::GetByID($ID);
        if ($arOrder["STATUS_ID"] == "A" && $arOrder["PAYED"] == "Y"):
            CSaleOrder::StatusOrder($ID, "P");//если ждет оплату и оплачен, то статус оплачен
        elseif ($arOrder["STATUS_ID"] == "DD" && $arOrder["PAYED"] == "Y"):
            CSaleOrder::StatusOrder($ID, "F");//если доставлен и оплачен, то статус выполнен
        endif;
    }
}

Навешиваем обработчик на оплату заказа, где смотрим:

  • Заказ в статусе ожидания оплаты — после оплаты становится оплачен
  • Заказ доставлен — после оплаты стал выполнен.

Обратите внимание, что заказ в стадии «F» Выполнен из 1С оплаты уже не принимает, поэтому у себя в RetailCRM я заблокировал ручной перевод в статус выполнен вовсе.

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

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