- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/documentgenerator/dataprovider/crmentitydataprovider.php
- Класс: Bitrix\Crm\Integration\DocumentGenerator\DataProvider\CrmEntityDataProvider
- Вызов: CrmEntityDataProvider::getAdditionalDocumentInfo
public function getAdditionalDocumentInfo(Document $document)
{
$data = parent::getAdditionalDocumentInfo($document);
$stampPlaceholders = [];
$data['changeStampsEnabled'] = false;
$template = $document->getTemplate();
if ($template)
{
$stampPlaceholders = $this->getTemplateStampsFields($template);
}
if (empty($stampPlaceholders))
{
$data['changeStampsDisabledReason'] = GetMessage('CRM_DOCGEN_CRMENTITYDATAPROVIDER_STAMPS_DISABLED_NO_TEMPLATE_V2');
}
else
{
$documentStampFields = $this->getDocumentFieldsValues($document, $stampPlaceholders);
foreach ($stampPlaceholders as $placeholder)
{
if (
!empty($documentStampFields[$placeholder])
&& $documentStampFields[$placeholder] != false
)
{
$data['changeStampsEnabled'] = true;
break;
}
}
}
$templateFields = $template->getFields();
$qrPlaceholder = 'PaymentQrCode';
$data['changeQrCodeEnabled'] = false;
$data['qrCodeEnabled'] = false;
if (!isset($templateFields[$qrPlaceholder]))
{
$data['changeQrCodeDisabledReason'] = GetMessage('CRM_DOCGEN_CRMENTITYDATAPROVIDER_PAYMENT_QR_CODE_DISABLED_NO_TEMPLATE');
}
else
{
if (empty($this->getPaymentQrCode()))
{
$data['changeQrCodeDisabledReason'] = GetMessage('CRM_DOCGEN_CRMENTITYDATAPROVIDER_PAYMENT_QR_CODE_DISABLED_NO_DATA');
}
else
{
$documentQrCodeFields = $this->getDocumentFieldsValues($document, [$qrPlaceholder]);
$data['changeQrCodeEnabled'] = true;
$data['qrCodeEnabled'] = (
!empty($documentQrCodeFields[$qrPlaceholder])
&& $documentQrCodeFields[$qrPlaceholder] != false
);
}
}
if (!$data['changeStampsEnabled'] && !empty($stampPlaceholders))
{
$data['changeStampsDisabledReason'] = GetMessage('CRM_DOCGEN_CRMENTITYDATAPROVIDER_STAMPS_DISABLED_EMPTY_FIELDS');
$data['myCompanyEditUrl'] = $this->getMyCompanyEditUrl();
if($data['myCompanyEditUrl'])
{
$data['changeStampsDisabledReason'] .= '
'.GetMessage('CRM_DOCGEN_CRMENTITYDATAPROVIDER_EDIT_MY_COMPANY', ['#URL#' => $data['myCompanyEditUrl']]);
}
}
$products = [];
$currencyId = $this->getRawValue('CURRENCY_ID');
$products['currencyId'] = is_string($currencyId) ? $currencyId : null;
$totalSum = $this->getRawValue('TOTAL_SUM');
$products['totalSum'] = is_numeric($totalSum) ? $totalSum : null;
$totalRows = $this->getRawValue('TOTAL_ROWS');
$products['totalRows'] = is_numeric($totalRows) ? $totalRows : null;
$productsWithNotNullValues = array_filter($products, fn($value) => !is_null($value));
if (!empty($productsWithNotNullValues))
{
$data['products'] = $products;
}
return $data;
}