• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/rest/requestservice.php
  • Класс: BitrixSaleDeliveryRestRequestService
  • Вызов: RequestService::updateRequest
static function updateRequest($query, $n, CRestServer $server): bool
{
	self::checkDeliveryPermission();
	$params = self::prepareIncomingParams($query);

	$requestId = self::getRequestId(
		self::getDeliveryId($params, 'DELIVERY_ID'),
		$params,
		'REQUEST_ID'
	);

	$fields = [];

	if (isset($params['FINALIZE']))
	{
		if (!in_array($params['FINALIZE'], ['Y', 'N'], true))
		{
			throw new RestException(
				'Unexpected parameter FINALIZE value: Y, N expected',
				self::ERROR_CODE_UNEXPECTED_OVERWRITE_PROPERTIES_VALUE
			);
		}

		if ($params['FINALIZE'] === 'Y')
		{
			$fields['STATUS'] = RequestsManager::STATUS_PROCESSED;
		}
	}

	$requestStatus = self::getRequestStatus($params, 'STATUS');
	if (!is_null($requestStatus))
	{
		$fields['EXTERNAL_STATUS'] = $requestStatus['TEXT'];
		$fields['EXTERNAL_STATUS_SEMANTIC'] = $requestStatus['SEMANTIC'];
	}

	$properties = self::getRequestProperties($params, 'PROPERTIES');
	if (!is_null($properties))
	{
		$fields['EXTERNAL_PROPERTIES'] = $properties;
	}

	$overwriteProperties = false;
	if (isset($params['OVERWRITE_PROPERTIES']))
	{
		if (!in_array($params['OVERWRITE_PROPERTIES'], ['Y', 'N'], true))
		{
			throw new RestException(
				'Unexpected parameter OVERWRITE_PROPERTIES value: Y, N expected',
				self::ERROR_CODE_UNEXPECTED_OVERWRITE_PROPERTIES_VALUE
			);
		}
		$overwriteProperties = $params['OVERWRITE_PROPERTIES'] === 'Y';
	}

	if (empty($fields))
	{
		throw new RestException(
			'Empty update payload',
			self::ERROR_CODE_EMPTY_UPDATE_PAYLOAD
		);
	}

	$updateResult = RequestsManager::updateDeliveryRequest(
		$requestId,
		$fields,
		$overwriteProperties
	);
	if (!$updateResult->isSuccess())
	{
		throw new RestException('Internal error', self::ERROR_CODE_UPDATE_REQUEST_INTERNAL_ERROR);
	}

	return true;
}