• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
  • Класс: \CAllCrmInvoice
  • Вызов: CAllCrmInvoice::GetList
static function GetList($arOrder = Array("ID"=>"DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array())
{
	global $USER;
	if(!CModule::IncludeModule('sale'))
	{
		return false;
	}

	//Reset callback params
	self::$LIST_CALLBACK_PARAMS = null;

	if (isset($arFilter['STATUS_ID']) && is_array($arFilter['STATUS_ID']))
		$arFilter['STATUS_ID'] = array_values($arFilter['STATUS_ID']);

	if (!is_array($arGroupBy))
	{
		if (is_array($arSelectFields) && (count($arSelectFields) === 0 || in_array('*', $arSelectFields)))
		{
			if (count($arSelectFields) === 0)
				$arSelectFields[] = '*';
			if (!in_array('UF_QUOTE_ID', $arSelectFields))
				$arSelectFields[] = 'UF_QUOTE_ID';
			if (!in_array('UF_DEAL_ID', $arSelectFields))
				$arSelectFields[] = 'UF_DEAL_ID';
			if (!in_array('UF_COMPANY_ID', $arSelectFields))
				$arSelectFields[] = 'UF_COMPANY_ID';
			if (!in_array('UF_CONTACT_ID', $arSelectFields))
				$arSelectFields[] = 'UF_CONTACT_ID';
			if (!in_array('UF_MYCOMPANY_ID', $arSelectFields))
				$arSelectFields[] = 'UF_MYCOMPANY_ID';
			$arSelectedUserFields = array_keys(self::GetUserFields());
			if (is_array($arSelectedUserFields) && !empty($arSelectedUserFields))
				$arSelectFields = array_merge($arSelectFields, $arSelectedUserFields);
			unset($arSelectedUserFields);
		}
	}

	if(!is_array($arOptions))
	{
		$arOptions = array();
	}

	if (isset($arFilter['CUSTOM_SUBQUERY']))
	{
		unset($arFilter['CUSTOM_SUBQUERY']);
	}

	if(isset($arFilter['__CONDITIONS']))
	{
		if(is_array($arFilter['__CONDITIONS']) && !empty($arFilter['__CONDITIONS']))
		{
			self::$LIST_CALLBACK_PARAMS = array('SQL' => $arFilter['__CONDITIONS'][0]['SQL']);
			$arFilter['CUSTOM_SUBQUERY'] = array('CCrmInvoice', '__callbackWhereCondition');
		}
		unset($arFilter['__CONDITIONS']);
	}

	if (!(is_object($USER) && $USER->IsAdmin())
		&& (!array_key_exists('CHECK_PERMISSIONS', $arFilter) || $arFilter['CHECK_PERMISSIONS'] !== 'N')
	)
	{
		$arFilter['CUSTOM_SUBQUERY'] = array('CCrmInvoice', '__callbackPermissionsWhereCondition');
		self::$arCurrentPermType = isset($arFilter['PERMISSION'])
			? (is_array($arFilter['PERMISSION']) ? $arFilter['PERMISSION'] : array($arFilter['PERMISSION']))
			: array('READ');
	}

	$userType = new CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], self::$sUFEntityID);
	$userType->ListPrepareFilter($arFilter);

	if (
		$arNavStartParams === false
		&& isset($arOptions['QUERY_OPTIONS'])
		&& is_array($arOptions['QUERY_OPTIONS'])
	)
	{
		$queryOptions = $arOptions['QUERY_OPTIONS'];
		$limit = isset($queryOptions['LIMIT']) ? (int)$queryOptions['LIMIT'] : 0;
		$offset = isset($queryOptions['OFFSET']) ? (int)$queryOptions['OFFSET'] : 0;
		if ($limit > 0)
		{
			$arNavStartParams = [
				'nPageSize' => $limit,
				'iNumPage' => (int)(floor($offset / $limit) + 1),
			];
		}
	}

	$result = Compatible\Helper::getList(
		$arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields, $arOptions
	);
	self::$arCurrentPermType = null;

	return $result;
}