• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/conversion/psrequisiteconverter.php
  • Класс: Bitrix\Crm\Requisite\Conversion\PSRequisiteConverter
  • Вызов: PSRequisiteConverter::updateCompanyMF
static function updateCompanyMF($id, $info)
{
	
	// update IS_MY_COMPANY flag
	$res = \CCrmCompany::GetListEx(
		array(),
		array('=ID' => $id),
		false,
		array('nTopCount' => 1),
		array('ID', 'IS_MY_COMPANY')
	);
	$row = $res->Fetch();
	if (isset($row['IS_MY_COMPANY']) && $row['IS_MY_COMPANY'] !== 'Y')
	{
		$connection = Main\Application::getConnection();
		$strSql = '';
		if ($connection instanceof Main\DB\MysqlCommonConnection)
		{
			$strSql = "UPDATE b_crm_company SET IS_MY_COMPANY = 'Y' WHERE ID = $id";
		}
		elseif ($connection instanceof Main\DB\MssqlConnection
			|| $connection instanceof Main\DB\OracleConnection)
		{
			$strSql = "UPDATE B_CRM_COMPANY SET IS_MY_COMPANY = 'Y' WHERE ID = $id";
		}
		if (!empty($strSql))
		{
			$connection->queryExecute($strSql);
		}
	}


	if ($id > 0 && is_array($info) && is_array($info['CO'])
		&& ((is_array($info['CO']['PHONE']) && !empty($info['CO']['PHONE']))
			|| (is_array($info['CO']['EMAIL'] && !empty($info['CO']['EMAIL'])))))
	{
		$phoneList = array();
		$emailList = array();
		$phoneToAdd = array();
		$emailToAdd = array();

		$res = \CCrmFieldMulti::GetList(
			array('ID' => 'asc'),
			array('ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => (int)$id)
		);
		while ($row = $res->Fetch())
		{
			if ($row['COMPLEX_ID'] === 'PHONE_WORK')
			{
				$phoneList[] = trim(strval($row['VALUE']));
			}
			else if ($row['COMPLEX_ID'] === 'EMAIL_WORK')
			{
				$emailList[] = trim(strval($row['VALUE']));
			}
		}

		if (!empty($info['CO']['PHONE']))
		{
			if (empty($phoneList))
			{
				$phoneToAdd = $info['CO']['PHONE'];
			}
			else
			{
				foreach ($info['CO']['PHONE'] as $value)
				{
					if (!in_array($value, $phoneList, true))
						$phoneToAdd[] = $value;
				}
			}
		}

		if (!empty($info['CO']['EMAIL']))
		{
			if (empty($emailList))
			{
				$emailToAdd = $info['CO']['EMAIL'];
			}
			else
			{
				foreach ($info['CO']['EMAIL'] as $value)
				{
					if (!in_array($value, $emailList, true))
						$emailToAdd[] = $value;
				}
			}
		}

		$fieldMulti = new \CCrmFieldMulti();
		foreach ($phoneToAdd as $value)
		{
			$fieldMulti->Add(array(
				'ENTITY_ID' => 'COMPANY',
				'ELEMENT_ID' => (int)$id,
				'TYPE_ID' => 'PHONE',
				'VALUE_TYPE' => 'WORK',
				'COMPLEX_ID' => 'PHONE_WORK',
				'VALUE' => $value
			));
		}
		foreach ($emailToAdd as $value)
		{
			$fieldMulti->Add(array(
				'ENTITY_ID' => 'COMPANY',
				'ELEMENT_ID' => (int)$id,
				'TYPE_ID' => 'EMAIL',
				'VALUE_TYPE' => 'WORK',
				'COMPLEX_ID' => 'EMAIL_WORK',
				'VALUE' => $value
			));
		}
	}
}