• Модуль: 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);
}