Битрикс: передача значения в свойство заказа после создания 


В некоторых случаях возникает необходимость записать какое-либо значение из заказа в свойство (заказа).
Для примера приведен код получения значения поля “Промокод” и запись его в отдельное свойство заказа “PROMOKOD” для дальнейшей выборки заказов и аналитики.
Код необходимо разместить в файле инициализации обработчиков событий init.php. Обработчик в примере “вешается” на событие сохранения заказа.

$eventManager->AddEventHandler('sale', 'OnSaleOrderBeforeSaved', 'saleOrderAddPromocode'); 

function saleOrderAddPromocode($event) { 

    $order = $event->getParameter("ENTITY"); 

    $coupons = $order->getDiscount()->getApplyResult()["COUPON_LIST"]; 

    $propertyCollection = $order->getPropertyCollection(); 

    foreach ($propertyCollection as $propertyItem) { 

        switch ($propertyItem->getField("CODE")) { 

            case 'PROMOKOD': 

                foreach($coupons as $coupon_key=>$coupon_val) { 

                    $propertyItem->setField("VALUE", $coupon_val['COUPON']); 

                } 

            break; 

        } 

    } 

}