- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/documentgenerator/dataprovider/crmentitydataprovider.php
- Класс: Bitrix\Crm\Integration\DocumentGenerator\DataProvider\CrmEntityDataProvider
- Вызов: CrmEntityDataProvider::extractRequisiteAndBankDetailDataFromProvider
protected function extractRequisiteAndBankDetailDataFromProvider(
CrmEntityDataProvider $provider,
string $prefix = ''
): array
{
$requisiteData = [];
$bankDetailData = [];
$optionValues = $this->getOptions()['VALUES'] ?? [];
$dataProviderManager = DataProviderManager::getInstance();
$requisiteId = $dataProviderManager->getDataProviderValue($provider, 'REQUISITE');
if (is_array($requisiteId))
{
$requisiteId = $dataProviderManager->getValueFromList($requisiteId);
}
if (!is_scalar($requisiteId) || (int)$requisiteId <= 0)
{
$requisiteId = null;
}
$requisite = null;
$requisiteFieldDescription = $provider->getFields()['REQUISITE'] ?? null;
if (is_array($requisiteFieldDescription))
{
$requisite = $dataProviderManager->createDataProvider(
$requisiteFieldDescription,
$requisiteId,
$provider
);
}
if ($requisite)
{
$requisiteData = $dataProviderManager->getArray($requisite, [
'rawValue' => true,
]);
}
else
{
$requisite = new Requisite(0);
}
foreach ($requisite->getFields() as $placeholder => $fieldDescription)
{
$templatePlaceholder = $dataProviderManager->valueToPlaceholder(
($prefix ? $prefix . '.' : '')
. 'REQUISITE'
. '.' . $placeholder
);
if (isset($optionValues[$templatePlaceholder]))
{
$requisiteData[$placeholder] = $optionValues[$templatePlaceholder];
continue;
}
if (($fieldDescription['TYPE'] ?? '') === static::FIELD_TYPE_NAME)
{
$requisiteData[$placeholder] = $requisite->getRawNameValue($placeholder);
}
}
$bankDetailId = $dataProviderManager->getDataProviderValue($provider, 'BANK_DETAIL');
if (is_array($bankDetailId))
{
$bankDetailId = $dataProviderManager->getValueFromList($bankDetailId);
}
if (!is_scalar($bankDetailId) || (int)$bankDetailId <= 0)
{
$bankDetailId = null;
}
$bankDetail = null;
$bankDetailFieldDescription = $provider->getFields()['BANK_DETAIL'] ?? null;
if (is_array($bankDetailFieldDescription))
{
$bankDetail = $dataProviderManager->createDataProvider(
$provider->getFields()['BANK_DETAIL'],
$bankDetailId,
$provider
);
}
if ($bankDetail)
{
$bankDetailData = $dataProviderManager->getArray($bankDetail, [
'rawValue' => true,
]);
}
else
{
$bankDetail = new BankDetail(0);
}
foreach ($bankDetail->getFields() as $placeholder => $fieldDescription)
{
$templatePlaceholder = $dataProviderManager->valueToPlaceholder(
($prefix ? $prefix . '.' : '')
. 'BANK_DETAIL'
. '.' . $placeholder
);
if (isset($optionValues[$templatePlaceholder]))
{
$bankDetailData[$placeholder] = $optionValues[$templatePlaceholder];
}
}
return [
$requisiteData,
$bankDetailData,
];
}