Добрый день, коллеги!
Подскажите, пожалуйста, как создать через API Службу доставки по группам местоположений и Ограничения к ней по Местоположению (указать регионы, где её использовать).
Создать саму службу доставки не трудно - делаю через \Bitrix\Sale\Delivery\Services\Manager::add
$arDeliveryFields = array(
"CODE" => "",
"PARENT_ID" => 7,
"NAME" => "Доставка на дом",
"ACTIVE" => "Y",
"DESCRIPTION" => "Россия. Вами свяжется менеджер для уточнения стоимости доставки",
"SORT" => 100,
"CURRENCY" => "RUB",
"PRICE" => 0,
"CLASS_NAME" => "\Sale\Handlers\Delivery\SimpleHandler",
);
$rsDelivery = \Bitrix\Sale\Delivery\Services\Manager::add($arDeliveryFields); |
А вот как добавить ограничение на конкретные местоположения? В "недрах" ядра нашел код, который Сначала добавляет ограничение, а потом напрямую в БД пишет записи с конкретными ограничениями:
$rsLocationRestr = \Bitrix\Sale\Internals\ServiceRestrictionTable::add(array(
"SERVICE_ID" => $iDeliveryId,
"SERVICE_TYPE" => \Bitrix\Sale\Services\Base\RestrictionManager::SERVICE_TYPE_SHIPMENT,
"CLASS_NAME" => '\Bitrix\Sale\Delivery\Restrictions\ByLocation',
"SORT" => 100
));
$obCon = \Bitrix\Main\Application::getConnection();
$obCon->queryExecute('INS ERT IN TO b_sale_delivery2location (DELIVERY_ID, LOCATION_CODE, LOCATION_TYPE)
VALUES ("'.$iDeliveryId.'", "'.$sLocationCode.'", "L");'); |
Вроде и в админке всё выглядет корректно, но вот прямой запрос к БД напрягает. Подскажите, как сделать правильно.