- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/requisite/importhelper.php
- Класс: Bitrix\Crm\Requisite\ImportHelper
- Вызов: ImportHelper::parseRequisiteDataRow
protected function parseRequisiteDataRow(&$context, $row)
{
$result = new Main\Result();
$presense = $this->getPresense($row);
// parse requisite fields
if (isset($presense['byGroup']['requisite']) && $presense['byGroup']['requisite'])
{
$res = $this->parseRequisiteKey($row);
if (!$res->isSuccess())
{
return $res;
}
$res = $res->getData();
$requisiteKey = $res[0];
unset($res);
if ($context['rowNumber'] === 1 && $requisiteKey == '')
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_EMPTY_RQ_KEY_FIELDS'),
self::ERR_EMPTY_RQ_KEY_FIELDS
)
);
return $result;
}
if ($requisiteKey !== '' && $requisiteKey !== $context['requisiteKey'])
{
$res = $this->associatePreset($row);
if (!$res->isSuccess())
{
return $res;
}
$presetInfo = $res->getData();
$res = $this->parseRequisiteFields($row, $presetInfo);
if (!$res->isSuccess())
{
return $res;
}
$requisiteFields = $res->getData();
if (!isset($requisiteFields['NAME']) || $requisiteFields['NAME'] == '')
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_RQ_NAME_IS_NOT_SET'),
self::ERR_RQ_NAME_IS_NOT_SET
)
);
return $result;
}
$this->requisiteList[++$context['requisiteIndex']] = $requisiteFields;
$context['requisiteKey'] = $requisiteKey;
$context['presetInfo'] = $presetInfo;
$context['bankDetailIndex'] = -1;
unset($res, $requisiteFields);
}
}
// parse address fields
if (isset($presense['byGroup']['address']) && $presense['byGroup']['address']
&& $context['requisiteIndex'] >= 0 && is_array($context['presetInfo']))
{
$res = $this->parseAddressFields($row, $context['presetInfo']);
if (!$res->isSuccess())
{
return $res;
}
$addressFields = $res->getData();
if (!isset($addressFields['TYPE_ID']))
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_ADDRESS_TYPE_IS_NOT_SET'),
self::ERR_ADDRESS_TYPE_IS_NOT_SET
)
);
return $result;
}
$addressType = $addressFields['TYPE_ID'];
unset($addressFields['TYPE_ID']);
if (is_array($this->requisiteList[$context['requisiteIndex']][EntityRequisite::ADDRESS]))
{
if (isset($this->requisiteList[$context['requisiteIndex']][EntityRequisite::ADDRESS][$addressType]))
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_ADDRESS_TYPE_ALREADY_EXISTS'),
self::ERR_ADDRESS_TYPE_ALREADY_EXISTS
)
);
return $result;
}
}
else
{
$this->requisiteList[$context['requisiteIndex']][EntityRequisite::ADDRESS] = array();
}
$this->requisiteList[$context['requisiteIndex']][EntityRequisite::ADDRESS][$addressType] = $addressFields;
}
// parse bank detail fields
if (isset($presense['byGroup']['bankDetail']) && $presense['byGroup']['bankDetail']
&& $context['requisiteIndex'] >= 0 && is_array($context['presetInfo']))
{
$res = $this->parseBankDetailKey($row);
if (!$res->isSuccess())
{
return $res;
}
$res = $res->getData();
$bankDetailKey = $res[0];
unset($res);
if ($bankDetailKey == '')
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_EMPTY_BD_KEY_FIELDS'),
self::ERR_EMPTY_BD_KEY_FIELDS
)
);
return $result;
}
$res = $this->parseBankDetailFields($row, $context['presetInfo']);
if (!$res->isSuccess())
{
return $res;
}
$bankDetailFields = $res->getData();
if (!isset($bankDetailFields['NAME']) || $bankDetailFields['NAME'] == '')
{
$result->addError(
new Main\Error(
Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_BD_NAME_IS_NOT_SET'),
self::ERR_BD_NAME_IS_NOT_SET
)
);
return $result;
}
if (!is_array($this->requisiteList[$context['requisiteIndex']]['BANK_DETAILS']))
$this->requisiteList[$context['requisiteIndex']]['BANK_DETAILS'] = array();
$this->requisiteList[$context['requisiteIndex']]['BANK_DETAILS'][++$context['bankDetailIndex']] =
$bankDetailFields;
unset($res, $bankDetailFields);
}
return $result;
}