• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::processDocumentSelectorOptions
protected function processDocumentSelectorOptions(int $paymentId, array $options): MainResult
{
	$result = new MainResult();

	$documentGenerator = CrmIntegrationDocumentGeneratorManager::getInstance();
	$entityTypeId = (int)($options['ownerTypeId'] ?? 0);
	if (
		$entityTypeId > 0
		&& $documentGenerator->isEntitySupportsPaymentDocumentBinding($entityTypeId)
	)
	{
		$boundDocumentId = (int)($options['boundDocumentId'] ?? 0);
		if (!$boundDocumentId)
		{
			$selectedTemplateId = (int)($options['selectedTemplateId'] ?? 0);
			if (!($selectedTemplateId > 0))
			{
				return $result->addError(new Error('Could not create new document: selectedTemplateId is not specified'));
			}
			$entityId = (int)($options['ownerId'] ?? 0);
			if (!$entityId)
			{
				return $result->addError(new Error('Could not create new document: ownerId is not specified'));
			}

			$createDocumentResult = $documentGenerator->createDocumentForItem(
				new CrmItemIdentifier(
					$entityTypeId,
					$entityId,
				),
				$selectedTemplateId,
				$paymentId,
			);
			if ($createDocumentResult->isSuccess())
			{
				$boundDocumentId = $createDocumentResult->getData()['id'];
			}
			else
			{
				return $result->addErrors($createDocumentResult->getErrors());
			}
		}
		if ($boundDocumentId > 0)
		{
			return $documentGenerator->bindDocumentToPayment($boundDocumentId, $paymentId);
		}
	}

	return $result;
}