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