%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/system.field.edit/templates/crm/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/components/bitrix/system.field.edit/templates/crm/result_modifier.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if(!CModule::IncludeModule("crm"))
	return;

global $USER;
$userPermissions = CCrmPerms::GetCurrentUserPermissions();
$arSupportedTypes = array(); // all entity types are defined in settings
$arParams['ENTITY_TYPE'] = array(); // only entity types are allowed for current user
$arSettings = $arParams['arUserField']['SETTINGS'];
if (isset($arSettings['LEAD']) && $arSettings['LEAD'] === 'Y')
{
	$arSupportedTypes[] = CCrmOwnerType::LeadName;
	if(CCrmLead::CheckReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::LeadName;
	}
}
if (isset($arSettings['CONTACT']) && $arSettings['CONTACT'] === 'Y')
{
	$arSupportedTypes[] = 'CONTACT';
	if(CCrmContact::CheckReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::ContactName;
	}
}
if (isset($arSettings['COMPANY']) && $arSettings['COMPANY'] === 'Y')
{
	$arSupportedTypes[] = 'COMPANY';
	if(CCrmCompany::CheckReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::CompanyName;
	}
}
if (isset($arSettings['DEAL']) && $arSettings['DEAL'] === 'Y')
{
	$arSupportedTypes[] = 'DEAL';
	if(CCrmDeal::CheckReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::DealName;
	}
}
if (isset($arSettings['QUOTE']) && $arSettings['QUOTE'] === 'Y')
{
	$arSupportedTypes[] = CCrmOwnerType::QuoteName;
	if(CCrmQuote::CheckReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::DealName;
	}
}
if (isset($arSettings['ORDER']) && $arSettings['ORDER'] === 'Y')
{
	$arSupportedTypes[] = CCrmOwnerType::OrderName;
	if(\Bitrix\Crm\Order\Permissions\Order::checkReadPermission(0, $userPermissions))
	{
		$arParams['ENTITY_TYPE'][] = CCrmOwnerType::OrderName;
	}
}
if (isset($arSettings['PRODUCT']) && $arSettings['PRODUCT'] === 'Y')
{
	$arSupportedTypes[] = 'PRODUCT';
	if(CCrmProduct::CheckReadPermission())
	{
		$arParams['ENTITY_TYPE'][] = 'PRODUCT';
	}
}

$arResult['PREFIX'] = count($arSupportedTypes) > 1 ? 'Y' : 'N';
if(!empty($arParams['usePrefix']))
	$arResult['PREFIX'] = 'Y';

$arResult['MULTIPLE'] = $arParams['arUserField']['MULTIPLE'];
if (!is_array($arResult['VALUE']))
	$arResult['VALUE'] = explode(';', $arResult['VALUE']);
else
{
	$ar = array();
	foreach ($arResult['VALUE'] as $value)
		foreach(explode(';', $value) as $val)
			if (!empty($val))
				$ar[$val] = $val;
	$arResult['VALUE'] = $ar;
}

$arResult['SELECTED'] = array();
foreach ($arResult['VALUE'] as $key => $value)
{
	if (empty($value))
	{
		continue;
	}

	if($arResult['PREFIX'] === 'Y')
	{
		$arResult['SELECTED'][$value] = $value;
	}
	else
	{
		// Try to get raw entity ID
		$ary = explode('_', $value);
		if(count($ary) > 1)
		{
			$value = $ary[1];
		}

		$arResult['SELECTED'][$value] = $value;
	}
}

$arResult['ELEMENT'] = array();
$arResult['ENTITY_TYPE'] = array();
// last 50 entity
if (in_array('LEAD', $arParams['ENTITY_TYPE'], true))
{
	$hasNameFormatter = method_exists("CCrmLead", "PrepareFormattedName");
	$arResult['ENTITY_TYPE'][] = 'lead';

	if (method_exists('CCrmLead', 'GetTopIDs'))
	{
		$IDs = CCrmLead::GetTopIDs(50, 'DESC', $userPermissions);
		if (empty($IDs))
		{
			$obRes = new CDBResult();
			$obRes->InitFromArray(array());
		}
		else
		{
			$obRes = CCrmLead::GetListEx(
				array('ID' => 'DESC'),
				array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
				false,
				false,
				array('ID', 'TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'FULL_NAME')
			);
		}
	}
	else
	{
		$obRes = CCrmLead::GetListEx(
			array('ID' => 'DESC'),
			array(),
			false,
			array('nTopCount' => 50),
			$hasNameFormatter
				? array('ID', 'TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME')
				: array('ID', 'TITLE', 'FULL_NAME')
		);
	}
	while ($arRes = $obRes->Fetch())
	{
		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'L_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		if($hasNameFormatter)
		{
			$description = CCrmLead::PrepareFormattedName(
				array(
					'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
					'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
					'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '',
					'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''
				)
			);
		}
		else
		{
			$description = isset($arRes['FULL_NAME']) ? $arRes['FULL_NAME'] : '';
		}

		$arResult['ELEMENT'][] = Array(
			'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
			'desc' => $description,
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'),
				array(
					'lead_id' => $arRes['ID']
				)
			),
			'type'  => 'lead',
			'selected' => $sSelected
		);
	}
}
if (in_array('CONTACT', $arParams['ENTITY_TYPE'], true))
{
	$hasNameFormatter = method_exists("CCrmContact", "PrepareFormattedName");
	$arResult['ENTITY_TYPE'][] = 'contact';

	if (method_exists('CCrmContact', 'GetTopIDs'))
	{
		$IDs = CCrmContact::GetTopIDs(50, 'DESC', $userPermissions);
		if (empty($IDs))
		{
			$obRes = new CDBResult();
			$obRes->InitFromArray(array());
		}
		else
		{
			$obRes = CCrmContact::GetListEx(
				array('ID' => 'DESC'),
				array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
				false,
				false,
				array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO')
			);
		}
	}
	else
	{
		$obRes = CCrmContact::GetListEx(
			array('ID' => 'DESC'),
			array(),
			false,
			array('nTopCount' => 50),
			$hasNameFormatter
				? array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO')
				: array('ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO')
		);
	}
	while ($arRes = $obRes->Fetch())
	{
		$imageUrl = '';
		if (isset($arRes['PHOTO']) && $arRes['PHOTO'] > 0)
		{
			$arImg = CFile::ResizeImageGet($arRes['PHOTO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
			if(is_array($arImg) && isset($arImg['src']))
			{
				$imageUrl = $arImg['src'];
			}
		}

		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'C_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		if($hasNameFormatter)
		{
			$title = CCrmContact::PrepareFormattedName(
				array(
					'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
					'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
					'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '',
					'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''
				)
			);
		}
		else
		{
			$title = isset($arRes['FULL_NAME']) ? $arRes['FULL_NAME'] : '';
		}

		$arResult['ELEMENT'][] = Array(
			'title' => $title,
			'desc'  => empty($arRes['COMPANY_TITLE']) ? '' : $arRes['COMPANY_TITLE'],
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_show'),
				array(
					'contact_id' => $arRes['ID']
				)
			),
			'image' => $imageUrl,
			'type'  => 'contact',
			'selected' => $sSelected
		);
	}
}
if (in_array('COMPANY', $arParams['ENTITY_TYPE'], true))
{
	$arResult['ENTITY_TYPE'][] = 'company';

	if (method_exists('CCrmCompany', 'GetTopIDs'))
	{
		$IDs = CCrmCompany::GetTopIDs(50, 'DESC', $userPermissions);
		if (empty($IDs))
		{
			$obRes = new CDBResult();
			$obRes->InitFromArray(array());
		}
		else
		{
			$obRes = CCrmCompany::GetListEx(
				array('ID' => 'DESC'),
				array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
				false,
				false,
				array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY', 'LOGO')
			);
		}
	}
	else
	{
		$obRes = CCrmCompany::GetListEx(
			array('ID' => 'DESC'),
			array(),
			false,
			array('nTopCount' => 50),
			array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY',  'LOGO')
		);
	}

	$arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE');
	$arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY');

	while ($arRes = $obRes->Fetch())
	{
		$imageUrl = '';
		if (isset($arRes['LOGO']) && $arRes['LOGO'] > 0)
		{
			$arImg = CFile::ResizeImageGet($arRes['LOGO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
			if(is_array($arImg) && isset($arImg['src']))
			{
				$imageUrl = $arImg['src'];
			}
		}

		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'CO_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		$arDesc = Array();
		if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']]))
			$arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']];
		if (isset($arCompanyIndustryList[$arRes['INDUSTRY']]))
			$arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']];


		$arResult['ELEMENT'][] = Array(
			'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
			'desc' => implode(', ', $arDesc),
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'),
				array(
					'company_id' => $arRes['ID']
				)
			),
			'image' => $imageUrl,
			'type'  => 'company',
			'selected' => $sSelected
		);
	}
}
if (in_array('DEAL', $arParams['ENTITY_TYPE'], true))
{
	$arResult['ENTITY_TYPE'][] = 'deal';

	if (method_exists('CCrmDeal', 'GetTopIDs'))
	{
		$IDs = CCrmDeal::GetTopIDs(50, 'DESC', $userPermissions);
		if (empty($IDs))
		{
			$obRes = new CDBResult();
			$obRes->InitFromArray(array());
		}
		else
		{
			$obRes = CCrmDeal::GetListEx(
				array('ID' => 'DESC'),
				array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
				false,
				false,
				array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')
			);
		}
	}
	else
	{
		$obRes = CCrmDeal::GetListEx(
			array('ID' => 'DESC'),
			array(),
			false,
			array('nTopCount' => 50),
			array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')
		);
	}

	while ($arRes = $obRes->Fetch())
	{
		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'D_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
		$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').$arRes['CONTACT_FULL_NAME'];

		$arResult['ELEMENT'][] = Array(
			'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
			'desc' => $clientTitle,
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'),
				array(
					'deal_id' => $arRes['ID']
				)
			),
			'type'  => 'deal',
			'selected' => $sSelected
		);
	}
}
if (in_array('QUOTE', $arParams['ENTITY_TYPE'], true))
{
	$arResult['ENTITY_TYPE'][] = 'quote';

	if (method_exists('CCrmQuote', 'GetTopIDs'))
	{
		$IDs = CCrmQuote::GetTopIDs(50, 'DESC', $userPermissions);
		if (empty($IDs))
		{
			$obRes = new CDBResult();
			$obRes->InitFromArray(array());
		}
		else
		{
			$obRes = CCrmQuote::GetList(
				array('ID' => 'DESC'),
				array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'),
				false,
				false,
				array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')
			);
		}
	}
	else
	{
		$obRes = CCrmQuote::GetList(
			array('ID' => 'DESC'),
			array(),
			false,
			array('nTopCount' => 50),
			array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')
		);
	}

	while ($arRes = $obRes->Fetch())
	{
		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'Q_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
		$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').$arRes['CONTACT_FULL_NAME'];

		$arResult['ELEMENT'][] = Array(
			'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
			'desc' => $clientTitle,
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'),
				array(
					'quote_id' => $arRes['ID']
				)
			),
			'type'  => 'quote',
			'selected' => $sSelected
		);
	}
}
if (in_array('PRODUCT', $arParams['ENTITY_TYPE'], true))
{
	$arResult['ENTITY_TYPE'][] = 'product';

	$arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID');
	$arPricesSelect = $arVatsSelect = array();
	$arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect);
	$obRes = CCrmProduct::GetList(array('ID' => 'DESC'), array(), $arSelect, 50);

	$arProducts = $arProductId = array();
	while ($arRes = $obRes->Fetch())
	{
		foreach ($arPricesSelect as $fieldName)
			$arRes[$fieldName] = null;
		foreach ($arVatsSelect as $fieldName)
			$arRes[$fieldName] = null;
		$arProductId[] = $arRes['ID'];
		$arProducts[$arRes['ID']] = $arRes;
	}
	CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect);
	unset($arProductId, $arPricesSelect, $arVatsSelect);

	foreach ($arProducts as $arRes)
	{
		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'PROD_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		$arResult['ELEMENT'][] = array(
			'title' => $arRes['NAME'],
			'desc' => CCrmProduct::FormatPrice($arRes),
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_product_show'),
				array(
					'product_id' => $arRes['ID']
				)
			),
			'type'  => 'product',
			'selected' => $sSelected
		);
	}
	unset($arProducts);
}
if (in_array('ORDER', $arParams['ENTITY_TYPE'], true))
{
	$arResult['ENTITY_TYPE'][] = 'order';

	$resultDB = \Bitrix\Crm\Order\Order::getList(array(
		'select' =>  array('ID', 'ACCOUNT_NUMBER'),
		'limit' => 50,
		'order' => array('ID' => 'DESC')
	));
	while ($arRes = $resultDB->fetch())
	{
		$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'O_'.$arRes['ID']: $arRes['ID'];
		if (isset($arResult['SELECTED'][$arRes['SID']]))
		{
			unset($arResult['SELECTED'][$arRes['SID']]);
			$sSelected = 'Y';
		}
		else
		{
			if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
			{
				unset($arResult['SELECTED'][$arRes['ID']]);
				$sSelected = 'Y';
			}
			else
			{
				$sSelected = 'N';
			}
		}

		$arResult['ELEMENT'][] = Array(
			'title' => $arRes['ACCOUNT_NUMBER'],
			'desc' => $arRes['ACCOUNT_NUMBER'],
			'id' => $arRes['SID'],
			'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_order_details'),
				array(
					'order_id' => $arRes['ID']
				)
			),
			'type'  => 'order',
			'selected' => $sSelected
		);
	}
}

if (!empty($arResult['SELECTED']))
{
	foreach ($arResult['SELECTED'] as $value)
	{
		if (is_numeric($value))
			$arSelected[$arParams['ENTITY_TYPE'][0]][] = $value;
		else
		{
			$ar = explode('_', $value);
			$arSelected[CUserTypeCrm::GetLongEntityType($ar[0])][] = intval($ar[1]);
		}
	}

	if ($arSettings['LEAD'] == 'Y'
		&& isset($arSelected['LEAD']) && !empty($arSelected['LEAD']))
	{
		$hasNameFormatter = method_exists("CCrmLead", "PrepareFormattedName");
		$obRes = CCrmLead::GetListEx(
			array('ID' => 'DESC'),
			array('=ID' => $arSelected['LEAD']),
			false,
			false,
			$hasNameFormatter
				? array('ID', 'TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME')
				: array('ID', 'TITLE', 'FULL_NAME')
		);
		$ar = Array();
		while ($arRes = $obRes->Fetch())
		{
			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'L_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			if($hasNameFormatter)
			{
				$description = CCrmLead::PrepareFormattedName(
					array(
						'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
						'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
						'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '',
						'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''
					)
				);
			}
			else
			{
				$description = isset($arRes['FULL_NAME']) ? $arRes['FULL_NAME'] : '';
			}

			$ar[] = Array(
				'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
				'desc' => $description,
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_show'),
					array(
						'lead_id' => $arRes['ID']
					)
				),
				'type'  => 'lead',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if ($arSettings['CONTACT'] == 'Y'
		&& isset($arSelected['CONTACT']) && !empty($arSelected['CONTACT']))
	{
		$hasNameFormatter = method_exists("CCrmContact", "PrepareFormattedName");
		$obRes = CCrmContact::GetListEx(
			array('ID' => 'DESC'),
			array('=ID' => $arSelected['CONTACT']),
			false,
			false,
			$hasNameFormatter
				? array('ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO')
				: array('ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO')
		);
		$ar = Array();
		while ($arRes = $obRes->Fetch())
		{
			$imageUrl = '';
			if (isset($arRes['PHOTO']) && $arRes['PHOTO'] > 0)
			{
				$arImg = CFile::ResizeImageGet($arRes['PHOTO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
				if(is_array($arImg) && isset($arImg['src']))
				{
					$imageUrl = $arImg['src'];
				}
			}

			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'C_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			if($hasNameFormatter)
			{
				$title = CCrmContact::PrepareFormattedName(
					array(
						'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
						'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
						'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '',
						'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''
					)
				);
			}
			else
			{
				$title = isset($arRes['FULL_NAME']) ? $arRes['FULL_NAME'] : '';
			}

			$ar[] = Array(
				'title' => $title,
				'desc'  => empty($arRes['COMPANY_TITLE']) ? '': $arRes['COMPANY_TITLE'],
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(
					COption::GetOptionString('crm', 'path_to_contact_show'),
					array('contact_id' => $arRes['ID'])
				),
				'image' => $imageUrl,
				'type'  => 'contact',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if ($arSettings['COMPANY'] == 'Y'
		&& isset($arSelected['COMPANY']) && !empty($arSelected['COMPANY']))
	{
		$arCompanyTypeList = CCrmStatus::GetStatusListEx('COMPANY_TYPE');
		$arCompanyIndustryList = CCrmStatus::GetStatusListEx('INDUSTRY');
		$arSelect = array('ID', 'TITLE', 'COMPANY_TYPE', 'INDUSTRY',  'LOGO');
		$obRes = CCrmCompany::GetList(array('ID' => 'DESC'), Array('ID' => $arSelected['COMPANY']), $arSelect);
		$ar = Array();
		while ($arRes = $obRes->Fetch())
		{
			$imageUrl = '';
			if (isset($arRes['LOGO']) && $arRes['LOGO'] > 0)
			{
				$arImg = CFile::ResizeImageGet($arRes['LOGO'], array('width' => 25, 'height' => 25), BX_RESIZE_IMAGE_EXACT);
				if(is_array($arImg) && isset($arImg['src']))
				{
					$imageUrl = $arImg['src'];
				}
			}

			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'CO_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}


			$arDesc = Array();
			if (isset($arCompanyTypeList[$arRes['COMPANY_TYPE']]))
				$arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']];
			if (isset($arCompanyIndustryList[$arRes['INDUSTRY']]))
				$arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']];

			$ar[] = Array(
				'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
				'desc' => implode(', ', $arDesc),
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_show'),
					array(
						'company_id' => $arRes['ID']
					)
				),
				'image' => $imageUrl,
				'type'  => 'company',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if ($arSettings['DEAL'] == 'Y'
	&& isset($arSelected['DEAL']) && !empty($arSelected['DEAL']))
	{
		$arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME');
		$ar = Array();
		$obRes = CCrmDeal::GetList(array('ID' => 'DESC'), Array('ID' => $arSelected['DEAL']), $arSelect);
		while ($arRes = $obRes->Fetch())
		{
			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'D_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
			$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').$arRes['CONTACT_FULL_NAME'];

			$ar[] = Array(
				'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
				'desc' => $clientTitle,
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_show'),
					array(
						'deal_id' => $arRes['ID']
					)
				),
				'type'  => 'deal',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if ($arSettings['ORDER'] == 'Y'
		&& isset($arSelected['ORDER']) && !empty($arSelected['ORDER']))
	{
		$ar = Array();
		$resultDB = \Bitrix\Crm\Order\Order::getList(array(
			'filter' => array('=ID' => $arSelected['ORDER']),
			'select' =>  array('ID', 'ACCOUNT_NUMBER'),
			'order' => array('ID' => 'DESC')
		));
		while ($arRes = $resultDB->fetch())
		{
			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'O_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			$ar[] = array(
				'title' => (str_replace(array(';', ','), ' ', $arRes['ACCOUNT_NUMBER'])),
				'desc' => $arRes['ACCOUNT_NUMBER'],
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_order_details'),
					array(
						'order_id' => $arRes['ID']
					)
				),
				'type'  => 'order',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if ($arSettings['QUOTE'] == 'Y'
		&& isset($arSelected['QUOTE']) && !empty($arSelected['QUOTE']))
	{
		$arSelect = array('ID', 'TITLE', 'STAGE_ID', 'COMPANY_TITLE', 'CONTACT_FULL_NAME');
		$ar = Array();
		$obRes = CCrmQuote::GetList(array('ID' => 'DESC'), Array('ID' => $arSelected['QUOTE']), false, false, $arSelect);
		while ($arRes = $obRes->Fetch())
		{
			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'Q_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
			$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').$arRes['CONTACT_FULL_NAME'];

			$ar[] = Array(
				'title' => (str_replace(array(';', ','), ' ', $arRes['TITLE'])),
				'desc' => $clientTitle,
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_show'),
					array(
						'quote_id' => $arRes['ID']
					)
				),
				'type'  => 'quote',
				'selected' => $sSelected
			);
		}
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
	if (isset($arSettings['PRODUCT'])
		&& $arSettings['PRODUCT'] == 'Y'
		&& isset($arSelected['PRODUCT'])
		&& !empty($arSelected['PRODUCT']))
	{
		$ar = array();
		$arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID');
		$arPricesSelect = $arVatsSelect = array();
		$arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect);
		$obRes = CCrmProduct::GetList(
			array('ID' => 'DESC'),
			array('ID' => $arSelected['PRODUCT']),
			$arSelect
		);

		$arProducts = $arProductId = array();
		while ($arRes = $obRes->Fetch())
		{
			foreach ($arPricesSelect as $fieldName)
				$arRes[$fieldName] = null;
			foreach ($arVatsSelect as $fieldName)
				$arRes[$fieldName] = null;
			$arProductId[] = $arRes['ID'];
			$arProducts[$arRes['ID']] = $arRes;
		}
		CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect);
		unset($arProductId, $arPricesSelect, $arVatsSelect);

		foreach ($arProducts as $arRes)
		{
			$arRes['SID'] = $arResult['PREFIX'] == 'Y'? 'D_'.$arRes['ID']: $arRes['ID'];
			if (isset($arResult['SELECTED'][$arRes['SID']]))
			{
				unset($arResult['SELECTED'][$arRes['SID']]);
				$sSelected = 'Y';
			}
			else
			{
				if(!empty($arParams['usePrefix']) && isset($arResult['SELECTED'][$arRes['ID']]))
				{
					unset($arResult['SELECTED'][$arRes['ID']]);
					$sSelected = 'Y';
				}
				else
				{
					$sSelected = 'N';
				}
			}

			$ar[] = array(
				'title' => $arRes['NAME'],
				'desc' => CCrmProduct::FormatPrice($arRes),
				'id' => $arRes['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_product_show'),
					array(
						'product_id' => $arRes['ID']
					)
				),
				'type'  => 'product',
				'selected' => $sSelected
			);
		}
		unset($arProducts);
		$arResult['ELEMENT'] = array_merge($ar, $arResult['ELEMENT']);
	}
}

if(!empty($arParams['createNewEntity']))
{
	if(!empty($arResult['ENTITY_TYPE']))
	{
		if(count($arResult['ENTITY_TYPE']) > 1)
		{
			$arResult['PLURAL_CREATION'] = true;
		}
		else
		{
			$arResult['PLURAL_CREATION'] = false;
			$arResult['CURRENT_ENTITY_TYPE'] = current($arResult['ENTITY_TYPE']);
		}
	}
	
	$arResult['LIST_ENTITY_CREATE_URL'] = array();
	foreach($arResult['ENTITY_TYPE'] as $entityType)
	{
		$arResult['LIST_ENTITY_CREATE_URL'][$entityType] =
			CCrmOwnerType::GetEditUrl(CCrmOwnerType::ResolveID($entityType), 0, false);
	}
	
}
?>

Zerion Mini Shell 1.0