В Битриксе есть свои автоматизации, но они мне не подходят, т.к. если заказ ушел наложкой, то он уже давно выдан, а деньги только пришили, и как только деньги пришли, то автоматом установился статус «оплачен» и заказ пошел на повторную обработку, как любой заказ с предоплатой.
Только можно сделать так:
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 я заблокировал ручной перевод в статус выполнен вовсе.