Меняем местоположение в заказе по имени города

<?
use Bitrix\Main; 
Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderBeforeSaved',
    'orderAddRegion'
);
function orderAddRegion(Main\Event  $event)
{
	//получаем заказ
	$order = $event->getParameter("ENTITY");
	
	//получаем данные города по имени
	$res = \Bitrix\Sale\Location\LocationTable::getList(array(
               'filter' => array(
                   '=NAME.NAME_UPPER' => ToUpper($region_name),
                   '=NAME.LANGUAGE_ID' => "ru"
               ),
               'select' => array('ID', 'CODE')
           ));

    if($loc = $res->fetch())
        $resultCity = $loc;
	
	//если заказ новый, находим свойство местоположения по коду и передаем ему значение
	if($event->getParameter("IS_NEW")){
		\Bitrix\Main\Loader::includeModule('sale');
 
        $propertyCollection = $order->getPropertyCollection();
		
        foreach ($propertyCollection as $obProp) {
            $arProp = $obProp->getProperty();

			if(in_array($arProp["CODE"], ["LOCATION"])) {
                $obProp->setValue($resultCity[CODE]);  
            }
		}       
	}
}

Оцените документ
Обновлено 03.02.2025

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

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