<?
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]);
}
}
}
}
Добавить комментарий