- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/rest/deliveryservice.php
- Класс: BitrixSaleDeliveryRestDeliveryService
- Вызов: DeliveryService::addDelivery
static function addDelivery($query, $n, CRestServer $server)
{
self::checkDeliveryPermission();
$params = self::prepareDeliveryParams($query, $server);
self::checkParamsBeforeDeliveryAdd($params);
$params = self::prepareParamsBeforeDeliveryAdd($params);
$fields = [
'NAME' => $params['NAME'],
'DESCRIPTION' => $params['DESCRIPTION'] ?? '',
'CLASS_NAME' => '\' . SaleHandlersDeliveryRestHandler::class,
'CURRENCY' => $params['CURRENCY'],
'SORT' => $params['SORT'] ?? 100,
'ACTIVE' => $params['ACTIVE'] ?? 'Y',
'CONFIG' => $params['CONFIG'],
'LOGOTIP' => $params['LOGOTIP'] ?? null,
];
$result = DeliveryServicesManager::add($fields);
if ($result->isSuccess())
{
$parentDelivery = DeliveryServicesManager::getList([
'select' => self::ALLOWED_DELIVERY_FIELDS,
'filter' => ['=ID' => (int)$result->getId()],
])->fetch();
$profiles = [];
$profilesDeliveryList = DeliveryServicesManager::getList([
'select' => self::ALLOWED_DELIVERY_FIELDS,
'filter' => ['=PARENT_ID' => (int)$result->getId()],
]);
while ($profileDelivery = $profilesDeliveryList->fetch())
{
$profiles[] = self::prepareOutcomingFields($profileDelivery);
}
return [
'parent' => $parentDelivery ? self::prepareOutcomingFields($parentDelivery) : null,
'profiles' => $profiles,
];
}
$error = implode("n", $result->getErrorMessages());
throw new RestException($error, self::ERROR_DELIVERY_ADD);
}