- Модуль: 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;
}