• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/kanban/supervisor.php
  • Класс: Bitrix\Crm\Kanban\SupervisorTable
  • Вызов: SupervisorTable::buildItem
static function buildItem(array $row, $type)
{
	$currency = \CCrmCurrency::GetAccountCurrencyID();
	$row['FORMAT_TIME'] = true;
	//base
	if ($type == \CCrmOwnerType::LeadName)
	{
		$row['ACTIVITY_SHOW'] = 1;
		$row['PRICE'] = $row['OPPORTUNITY'];
		$row['DATE'] = $row['DATE_CREATE'];
	}
	elseif ($type == \CCrmOwnerType::DealName)
	{
		$row['STATUS_ID'] = $row['STAGE_ID'];
		$row['ACTIVITY_SHOW'] = 1;
		$row['PRICE'] = $row['OPPORTUNITY'];
		if ($row['BEGINDATE'])
		{
			$row['FORMAT_TIME'] = false;
			$row['DATE'] = $row['BEGINDATE'];
		}
		else
		{
			$row['DATE'] = $row['DATE_CREATE'];
		}
	}
	elseif ($type == \CCrmOwnerType::QuoteName)
	{
		$row['ACTIVITY_SHOW'] = 0;
		$row['PRICE'] = $row['OPPORTUNITY'];
		if ($row['BEGINDATE'])
		{
			$row['FORMAT_TIME'] = false;
			$row['DATE'] = $row['BEGINDATE'];
		}
		else
		{
			$row['DATE'] = $row['DATE_CREATE'];
		}
	}
	elseif ($type == \CCrmOwnerType::InvoiceName)
	{
		$row['ACTIVITY_SHOW'] = 0;
		$row['TITLE'] = $row['ORDER_TOPIC'];
		$row['PRICE'] = $row['PRICE'];
		$row['FORMAT_TIME'] = false;
		$row['DATE'] = $row['DATE_BILL'] ? $row['DATE_BILL'] : $row['DATE_INSERT_FORMAT'];
		$row['CONTACT_ID'] = $row['UF_CONTACT_ID'];
		$row['COMPANY_ID'] = $row['UF_COMPANY_ID'];
		$row['CURRENCY_ID'] = $row['CURRENCY'];
	}
	if (!isset($row['MODIFY_BY_ID']))
	{
		$row['MODIFY_BY_ID'] = 0;
	}
	if ($row['MODIFY_BY_ID'] > 0)
	{
		$res = \Bitrix\Main\UserTable::getList(array(
			'select' => array('ID', 'PERSONAL_PHOTO'),
			'filter' => array('ID' => $row['MODIFY_BY_ID'])
		));
		if ($user = $res->fetch())
		{
			$row['MODIFY_PERSONAL_PHOTO'] = \CFile::ResizeImageGet($user['PERSONAL_PHOTO'], self::$avatarSize, BX_RESIZE_IMAGE_EXACT);
			if (!$row['MODIFY_PERSONAL_PHOTO'])
			{
				unset($row['MODIFY_PERSONAL_PHOTO']);
			}
		}
	}
	//redefine price
	if ($priceField = self::getRedefinedPriceField($type))
	{
		$row['PRICE'] = $row[$priceField];
	}
	elseif (isset($row['OPPORTUNITY_ACCOUNT']) && $row['OPPORTUNITY_ACCOUNT']!='')
	{
		$row['PRICE'] = $row['OPPORTUNITY_ACCOUNT'];
	}
	if (isset($row['ACCOUNT_CURRENCY_ID']) && $row['ACCOUNT_CURRENCY_ID']!='')
	{
		$row['CURRENCY_ID'] = $row['ACCOUNT_CURRENCY_ID'];
	}
	//price converted
	if ($row['CURRENCY_ID']=='' || $row['CURRENCY_ID'] == $currency)
	{
		$row['PRICE'] = doubleval($row['PRICE']);
		$row['PRICE_FORMATTED'] = \CCrmCurrency::MoneyToString($row['PRICE'], $currency);
	}
	else
	{
		$row['PRICE'] = \CCrmCurrency::ConvertMoney($row['PRICE'], $row['CURRENCY_ID'], $currency);
		$row['PRICE_FORMATTED'] = \CCrmCurrency::MoneyToString($row['PRICE'], $currency);
	}
	//contragent
	if ($row['CONTACT_ID'] > 0)
	{
		$row['CONTACT_TYPE'] = 'CONTACT';
		$contragentProvider = 'CCrmContact';
	}
	elseif ($row['COMPANY_ID'] > 0)
	{
		$row['CONTACT_TYPE'] = 'COMPANY';
		$row['CONTACT_ID'] = $row['COMPANY_ID'];
		$contragentProvider = 'CCrmCompany';
	}
	else
	{
		$row['CONTACT_TYPE'] = '';
	}
	if ($row['CONTACT_ID'] > 0)
	{
		//name
		$contragent = $contragentProvider::getListEx(array(),
													array('ID' => $row['CONTACT_ID'], 'CHECK_PERMISSIONS' => 'N'),
													false, false, array('ID', 'NAME', 'LAST_NAME', 'TITLE'))->fetch();
		if ($contragent)
		{
			if (!array_key_exists('TITLE', $contragent) && array_key_exists('NAME', $contragent) && array_key_exists('LAST_NAME', $contragent))
			{
				$row['CONTACT_NAME'] = trim($contragent['NAME'] . ' ' . $contragent['LAST_NAME']);
			}
			else
			{
				$row['CONTACT_NAME'] = $contragent['TITLE'];
			}
			$row['CONTACT_LINK'] = self::getUrl($contragent['ID'], $row['CONTACT_TYPE']);
		}
		//contacts
		$langMess = array();
		$res = \CCrmFieldMulti::GetListEx(array(), array(
														'ENTITY_ID' => $row['CONTACT_TYPE'],
														'ELEMENT_ID' => $row['CONTACT_ID']));
		while ($fm = $res->fetch())
		{
			$fm['TYPE_ID'] = mb_strtolower($fm['TYPE_ID']);
			if (!in_array($fm['TYPE_ID'], array('phone', 'email', 'im')))
			{
				continue;
			}
			if ($fm['TYPE_ID'] == 'im' && mb_strpos($fm['VALUE'], 'imol|') !== 0)
			{
				continue;
			}
			if (!isset($row['FM_VALUES']))
			{
				$row['FM_VALUES'] = array();
			}
			if (!isset($row['FM_VALUES'][$fm['TYPE_ID']]))
			{
				$row['FM_VALUES'][$fm['TYPE_ID']] = array();
			}
			if (empty($langMess))
			{
				Loc::loadMessages('/bitrix/components/bitrix/crm.kanban/class.php');
				$langMess = array(
					'EMAIL_WORK' => Loc::getMessage('CRM_KANBAN_EMAIL_TYPE_WORK'),
					'EMAIL_HOME' => Loc::getMessage('CRM_KANBAN_EMAIL_TYPE_HOME'),
					'EMAIL_OTHER' => Loc::getMessage('CRM_KANBAN_EMAIL_TYPE_OTHER'),
					'PHONE_MOBILE' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_MOBILE'),
					'PHONE_WORK' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_WORK'),
					'PHONE_FAX' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_FAX'),
					'PHONE_HOME' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_HOME'),
					'PHONE_PAGER' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_PAGER'),
					'PHONE_OTHER' => Loc::getMessage('CRM_KANBAN_PHONE_TYPE_OTHER'),
				);
			}
			$row['FM_VALUES'][$fm['TYPE_ID']][] = array(
				'value' => htmlspecialcharsbx($fm['VALUE']),
				'title' => $langMess[$fm['COMPLEX_ID']]
			);
		}

		$row['CONTACT_TYPE'] = 'CRM_'.$row['CONTACT_TYPE'];
	}
	$row['DATE_UNIX'] = \makeTimeStamp($row['DATE']);

	return $row;
}