Битрикс-разработчик Вероника Малышева

Разрешение оплаты после согласования менеджером в битриксе

Разрешение оплаты после согласования менеджером в битриксе

1. Сначала создадим нужные статусы
2. В настройках (настройки -> настройки модулей -> интернет-магазин -> настройки -> Статус, начиная с которого можно оплатить заказ (указать)
3. Сделать настройки в 1С в модуле обмена (статусов)
4. Письмо клиенту, что может оплатить. Я доработала событие SALE_ORDER_ALLOW_PAY в init.php

AddEventHandler("main", "OnBeforeEventAdd", "MyOnBeforeEventAdd");
function MyOnBeforeEventAdd(&$event, &$lid, &$arFields){
    if($event == "SALE_ORDER_ALLOW_PAY" && isset($arFields["ORDER_REAL_ID"]) && intval($arFields["ORDER_REAL_ID"])>0 && 
        (!isset($arFields["ORDER_PAYMENT"]) || $arFields["ORDER_PAYMENT"]=='')
    ){
        $order = Sale\Order::load(intval($arFields["ORDER_REAL_ID"]));
        $paymentCollection = $order->getPaymentCollection();
        $paySystemService = PaySystem\Manager::getObjectById($paymentCollection->current()->getPaymentSystemId());
        //AddMessage2Log($paymentCollection->current()->getPaymentSystemId());
        //AddMessage2Log($paySystemService);
        if($paySystemService->getField("IS_CASH")=="Y"){
            //если наличные
            $arFields["ORDER_PAYMENT"] = "Вы можете оплатить в офисе по адресу: Тут адрес";
        }
        elseif($paySystemService->getField("ACTION_FILE")=="bill"){
            //если счет
            $arPdf = $paySystemService->getPdf($paymentCollection->current());

            if(isset($arPdf["SRC"]) && $arPdf["SRC"]!=''){
                $arFields["ORDER_PAYMENT"] = "<a href='https://адрес_сайта".$arPdf["SRC"]."' target='_blank'>Ссылка на счет pdf</a>";
            }
        }
        elseif ($paySystemService->getField('NEW_WINDOW') === 'N' || $paySystemService->getField('ID') == PaySystem\Manager::getInnerPaySystemId()){
            $initResult = $paySystemService->initiatePay($paymentCollection->current(), null, PaySystem\BaseServiceHandler::STRING);
            if ($initResult->isSuccess()){
                $arFields["ORDER_PAYMENT"] = $initResult->getTemplate();
            } 
        }
        else{
            $arFields["ORDER_PAYMENT"] = "Вы можете оплатить, перейдя по ссылке на заказ";
        }          

    }   
}