• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/merger/conflictresolver/namefield.php
  • Класс: Bitrix\Crm\Merger\ConflictResolver\NameField
  • Вызов: NameField::checkRelatedFields
protected function checkRelatedFields(&$seedValue, &$targetValue): bool
{
	$seed = $this->getSeed();
	$target = $this->getTarget();
	$seedLastNameOriginalValue = isset($seed['LAST_NAME']) ? (string)$seed['LAST_NAME'] : '';
	$targetLastNameOriginalValue = isset($target['LAST_NAME']) ? (string)$target['LAST_NAME'] : '';

	$seedLastNameValue = mb_strtolower(trim($seedLastNameOriginalValue));
	$targetLastNameValue = mb_strtolower(trim($targetLastNameOriginalValue));

	$seedNameValue = mb_strtolower($seedValue);
	$targetNameValue = mb_strtolower($targetValue);

	// region Name or lastname in wrong field
	if ($seedLastNameValue === '' && $seedNameValue === $targetLastNameValue)
	{ // for example $seed = ['NAME' => 'lastname', 'LAST_NAME' => '']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
		return true;
	}
	if ($seedNameValue === '' && $seedLastNameValue === $targetNameValue)
	{ // for example $seed = ['NAME' => '', 'LAST_NAME' => 'name']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
		return true;
	}

	if ($targetLastNameValue === '' && $targetNameValue === $seedLastNameValue)
	{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => 'lastname', 'LAST_NAME' => ''];
		$this->setNewTargetValue($this->getSeedValue());
		$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
		return true;
	}
	if ($targetNameValue === '' && $targetLastNameValue === $seedNameValue)
	{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => '', 'LAST_NAME' => 'name'];
		$this->setNewTargetValue($this->getSeedValue());
		$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
		return true;
	}
	// endregion

	// region Name and lastname in the same field
	if ($seedLastNameValue === '' && (
		($seedNameValue === $targetNameValue.' '.$targetLastNameValue) ||
		($seedNameValue === $targetLastNameValue.' '.$targetNameValue)
		))
	{ // for example $seed = ['NAME' => 'name lastname', 'LAST_NAME' => '']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
		return true;
	}
	if ($seedNameValue === '' && (
			($seedLastNameValue === $targetNameValue.' '.$targetLastNameValue) ||
			($seedLastNameValue === $targetLastNameValue.' '.$targetNameValue)
		))
	{ // for example $seed = ['NAME' => '', 'LAST_NAME' => 'name lastname']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
		return true;
	}
	if ($targetLastNameValue === '' && (
			($targetNameValue === $seedNameValue.' '.$seedLastNameValue) ||
			($targetNameValue === $seedLastNameValue.' '.$seedNameValue)
		))
	{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => 'name lastname', 'LAST_NAME' => ''];
		$this->setNewTargetValue($this->getSeedValue());
		$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
		return true;
	}
	if ($targetNameValue === '' && (
			($targetLastNameValue === $seedNameValue.' '.$seedLastNameValue) ||
			($targetLastNameValue === $seedLastNameValue.' '.$seedNameValue)
		))
	{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => '', 'LAST_NAME' => 'name lastname'];
		$this->setNewTargetValue($this->getSeedValue());
		$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
		return true;
	}
	// endregion

	if($this->checkRedundantSpacesInAllFields(
		$seedValue,
		trim($seedLastNameOriginalValue),
		$targetValue,
		trim($targetLastNameOriginalValue))
	)
	{
		return true;
	}

	return false;
}