CCrmOwnerType::GetCaption

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmOwnerType
  4. GetCaption
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_owner_type.php
  • Класс: \CCrmOwnerType
  • Вызов: CCrmOwnerType::GetCaption
static function GetCaption($typeID, $ID, $checkRights = true, array $options = null)
{
	$typeID = (int)$typeID;
	$ID = (int)$ID;

	if($ID <= 0)
	{
		return '';
	}

	$key = "{$typeID}_{$ID}";

	if(isset(self::$CAPTIONS[$key]))
	{
		return self::$CAPTIONS[$key];
	}

	if($options === null)
	{
		$options = array();
	}

	switch($typeID)
	{
		case self::Lead:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$dbRes = CCrmLead::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')), false, false, array('TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME'));
				$arRes = $dbRes ? $dbRes->Fetch() : null;
			}

			if(!$arRes)
			{
				return (self::$CAPTIONS[$key] = '');
			}
			else
			{
				$caption = isset($arRes['TITLE']) ? $arRes['TITLE'] : '';
				if($caption === '')
				{
					$caption = 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'] : ''
						)
					);
				}
				return (self::$CAPTIONS[$key] = $caption);
			}
		}
		case self::Contact:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$dbRes = CCrmContact::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')), false, false, array('HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME'));
				$arRes = $dbRes ? $dbRes->Fetch() : null;
			}

			if(!$arRes)
			{
				return (self::$CAPTIONS[$key] = '');
			}
			else
			{
				return (self::$CAPTIONS[$key] =
					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'] : ''
						)
					)
				);
			}
		}
		case self::Company:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$dbRes = CCrmCompany::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')), false, false, array('TITLE'));
				$arRes = $dbRes ? $dbRes->Fetch() : null;
			}
			return (self::$CAPTIONS[$key] = $arRes ? $arRes['TITLE'] : '');
		}
		case self::Deal:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$dbRes = CCrmDeal::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')), false, false, array('TITLE'));
				$arRes = $dbRes ? $dbRes->Fetch() : null;
			}
			return (self::$CAPTIONS[$key] = $arRes ? $arRes['TITLE'] : '');
		}
		case self::Invoice:
		{
			$dbRes = CCrmInvoice::GetList(array(), array('ID' => $ID), false, false, array('ORDER_TOPIC'));
			$arRes = $dbRes ? $dbRes->Fetch() : null;
			return (self::$CAPTIONS[$key] = $arRes ? $arRes['ORDER_TOPIC'] : '');
		}
		case self::Quote:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$dbRes = CCrmQuote::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')), false, false, array('QUOTE_NUMBER', 'TITLE'));
				$arRes = $dbRes ? $dbRes->Fetch() : null;
			}
			$quoteTitle = empty($arRes['QUOTE_NUMBER']) ? '' : $arRes['QUOTE_NUMBER'];
			$quoteTitle = empty($arRes['TITLE']) ?
				$quoteTitle : (empty($quoteTitle) ? $arRes['TITLE'] : $quoteTitle.' - '.$arRes['TITLE']);
			$quoteTitle = empty($quoteTitle) ? '' : str_replace(array(';', ','), ' ', $quoteTitle);
			return $quoteTitle;
		}
		case self::Order:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;

			if(!is_array($arRes))
			{
				// todo: 'CHECK_PERMISSIONS' => ($checkRights ? 'Y' : 'N')
				$dbRes = Bitrix\Crm\Order\Order::getList(array(
					'filter' => array('=ID' => $ID),
					'select' => array('ACCOUNT_NUMBER', 'ORDER_TOPIC')
				));

				$arRes = $dbRes->fetch();
			}

			$orderTitle = empty($arRes['ACCOUNT_NUMBER']) ? '' : $arRes['ACCOUNT_NUMBER'];
			$orderTitle = empty($arRes['ORDER_TOPIC']) ?
				$orderTitle : (empty($orderTitle) ? $arRes['ORDER_TOPIC'] : $orderTitle.' - '.$arRes['ORDER_TOPIC']);
			$orderTitle = empty($orderTitle) ? '' : str_replace(array(';', ','), ' ', $orderTitle);
			return $orderTitle;
		}

		case self::StoreDocument:
		{
			if (\Bitrix\Main\Loader::includeModule('catalog'))
			{
				$documentData = StoreDocumentTable::getList(
					[
						'select' => ['ID', 'DOC_TYPE', 'TITLE'],
						'filter' => ['ID' => $ID],
					]
				)->fetch();

				if ($documentData)
				{
					if (!empty($documentData['TITLE']))
					{
						return $documentData['TITLE'];
					}

					if (!empty($documentData['DOC_TYPE']))
					{
						$documentTitle = StoreDocumentTable::getTypeList(true)[$documentData['DOC_TYPE']];
						return $documentTitle;
					}
				}
				return '';
			}
			break;
		}

		case self::AgentContractDocument:
		{
			if (\Bitrix\Main\Loader::includeModule('catalog'))
			{
				$documentData = AgentContractTable::getList(
					[
						'select' => ['ID', 'TITLE'],
						'filter' => ['ID' => $ID],
					]
				)->fetch();

				if ($documentData && !empty($documentData['TITLE']))
				{
					return $documentData['TITLE'];
				}

				return '';
			}
			break;
		}

		case self::ShipmentDocument:
		{
			if
			(
				\Bitrix\Main\Loader::includeModule('catalog')
				&& \Bitrix\Main\Loader::includeModule('sale')
			)
			{
				$documentData = \Bitrix\Sale\Internals\ShipmentTable::getList(
					[
						'select' => ['ID', 'ORDER_ID', 'ACCOUNT_NUMBER'],
						'filter' => ['ID' => $ID],
					]
				)->fetch();

				if ($documentData)
				{
					if (!empty($documentData['ACCOUNT_NUMBER']))
					{
						$accountNumber = $documentData['ACCOUNT_NUMBER'];
					}
					else
					{
						$accountNumber = '';
					}

					return GetMessage('CRM_OWNER_TYPE_SHIPMENT_DOCUMENT', [
						"#ACCOUNT_NUMBER#" => $accountNumber
					]);
				}

				return '';
			}
			break;
		}

		case self::DealCategory:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes) && (!$checkRights || Bitrix\Crm\Category\DealCategory::checkReadPermission()))
			{
				$arRes = Bitrix\Crm\Category\DealCategory::get($ID);
			}

			if(!$arRes)
			{
				return (self::$CAPTIONS[$key] = '');
			}
			else
			{
				$caption = isset($arRes['NAME']) ? $arRes['NAME'] : '';
				return (self::$CAPTIONS[$key] = $caption);
			}
		}
		case self::CustomActivityType:
		{
			$arRes = isset($options['FIELDS']) ? $options['FIELDS'] : null;
			if(!is_array($arRes))
			{
				$arRes = Bitrix\Crm\Activity\CustomType::get($ID);
			}

			if(!$arRes)
			{
				return (self::$CAPTIONS[$key] = '');
			}
			else
			{
				$caption = isset($arRes['NAME']) ? $arRes['NAME'] : '';
				return (self::$CAPTIONS[$key] = $caption);
			}
		}
	}

	if (static::isUseDynamicTypeBasedApproach($typeID))
	{
		$factory = Container::getInstance()->getFactory($typeID);
		if ($factory)
		{
			$item = $factory->getItem($ID);
			if (!$item)
			{
				self::$CAPTIONS[$key] = '';
				return '';
			}
			if ($checkRights && !Container::getInstance()->getUserPermissions()->canReadItem($item))
			{
				self::$CAPTIONS[$key] = '';
				return '';
			}
			self::$CAPTIONS[$key] = $item->getHeading();

			return self::$CAPTIONS[$key];
		}
	}

	return '';
}

Добавить комментарий