• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/merger/requisitemerginghelper.php
  • Класс: Bitrix\Crm\Merger\RequisiteMergingHelper
  • Вызов: RequisiteMergingHelper::mergeBankDetail
protected function mergeBankDetail(array $targRequisite, array $seedRequisite,
									array &$targBankDetail, array $seedBankDetail)
{
	$seedCountryId = isset($seedBankDetail['COUNTRY_ID']) ? (int)$seedBankDetail['COUNTRY_ID'] : 0;
	$targCountryId = isset($targBankDetail['COUNTRY_ID']) ? (int)$targBankDetail['COUNTRY_ID'] : 0;

	if (!($seedCountryId > 0 && $seedCountryId === $targCountryId))
		throw new Main\SystemException('To merge, the bank details must relate to one country.');

	$countryId = $seedCountryId;
	unset($seedCountryId, $targCountryId);

	$fieldsToUpdate = array();

	if (is_array($this->bankDetailFieldsMap[$countryId]) && !empty($this->bankDetailFieldsMap[$countryId]))
	{
		foreach ($this->bankDetailFieldsMap[$countryId] as $fieldName)
		{
			$seedValue = isset($seedBankDetail[$fieldName]) ? $seedBankDetail[$fieldName] : array();
			$targValue = isset($targBankDetail[$fieldName]) ? $targBankDetail[$fieldName] : array();
			$isSeedValueEmpty = ($seedValue === null
				|| (is_string($seedValue) ? $seedValue == '' : empty($seedValue)));
			$isTargValueEmpty = ($targValue === null
				|| (is_string($targValue) ? $targValue == '' : empty($targValue)));
			if (!$isSeedValueEmpty && $isTargValueEmpty)
			{
				$targBankDetail[$fieldName] = $seedValue;
				$fieldsToUpdate[$fieldName] = $seedValue;
			}
		}
	}

	if (!empty($fieldsToUpdate))
	{
		$this->addMergeAction(
			self::ACTION_BANK_DETAIL_UPDATE,
			array(
				'TARG_BANK_DETAIL_ID' => $targBankDetail['ID'],
				'FIELDS' => $fieldsToUpdate
			)
		);
	}

	$this->addMergeAction(
		self::ACTION_BANK_DETAIL_MOVE_DEPENDECIES,
		array(
			'TARG_ENTITY_TYPE_ID' => $targRequisite['ENTITY_TYPE_ID'],
			'TARG_ENTITY_ID' => $targRequisite['ENTITY_ID'],
			'SEED_ENTITY_TYPE_ID' => $seedRequisite['ENTITY_TYPE_ID'],
			'SEED_ENTITY_ID' => $seedRequisite['ENTITY_ID'],
			'TARG_REQUISITE_ID' => $targBankDetail['ENTITY_ID'],
			'TARG_BANK_DETAIL_ID' => $targBankDetail['ID'],
			'SEED_REQUISITE_ID' => $seedBankDetail['ENTITY_ID'],
			'SEED_BANK_DETAIL_ID' => $seedBankDetail['ID']
		)
	);

	$this->addMergeAction(
		self::ACTION_BANK_DETAIL_DELETE,
		array(
			'SEED_BANK_DETAIL_ID' => $seedBankDetail['ID']
		)
	);
}