• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::buildOrder
private function buildOrder(
	array $data,
	array $options = []
): ?SaleOrder
{
	$scenario = $this->getBuilderScenario($options);

	$formData = $this->prepareParamsForBuilder($data, $scenario);

	$builder = SalesCenterBuilderManager::getBuilder($scenario);

	try
	{
		$builder->build($formData);
		$order = $builder->getOrder();
	}
	catch (SaleHelpersOrderBuilderBuildingException $exception)
	{
		$order = null;
	}

	$errorsFilter = $options['orderErrorsFilter'] ?? null;
	if (is_null($errorsFilter))
	{
		return $order;
	}

	$filteredErrors = [];

	$errors = $builder->getErrorsContainer()->getErrors();
	foreach ($errors as $error)
	{
		if (empty($errorsFilter) || in_array($error->getCode(), $errorsFilter, true))
		{
			$filteredErrors[] = $error;
		}
	}

	$this->addErrors($filteredErrors);

	return $order;
}