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