• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/widget/data/company/invoicesumstatistics.php
  • Класс: Bitrix\Crm\Widget\Data\Company\InvoiceSumStatistics
  • Вызов: InvoiceSumStatistics::prepareEntityListFilter
public function prepareEntityListFilter(array $filterParams)
{
	$filter = self::internalizeFilter($filterParams);

	$period = $filter->getPeriod();
	$periodStartDate = $period['START'];
	$periodEndDate = $period['END'];

	$responsibleIDs = $filter->getResponsibleIDs();
	$field = isset($filterParams['FIELD']) ? $filterParams['FIELD'] : '';
	$semanticID = PhaseSemantics::UNDEFINED;
	switch ($field)
	{
		case 'PROCESS_COUNT':
		case 'PROCESS_SUM':
			$semanticID = PhaseSemantics::PROCESS;
			break;
		case 'SUCCESS_COUNT':
		case 'SUCCESS_SUM':
		case 'PAID_INTIME_COUNT':
			$semanticID = PhaseSemantics::SUCCESS;
			break;
	}

	$query = new Query(InvoiceSumStatisticsTable::getEntity());
	$query->addSelect('OWNER_ID');
	$query->addGroup('OWNER_ID');

	$dateFieldName = 'CREATED_DATE';
	if($semanticID !== PhaseSemantics::UNDEFINED)
	{
		$query->addFilter('=STATUS_SEMANTIC_ID', $semanticID);
		if(PhaseSemantics::isFinal($semanticID))
		{
			$dateFieldName = 'CLOSED_DATE';
		}
	}

	if ($field === 'PAID_INTIME_COUNT')
		$query->addFilter("=IS_PAID_INTIME", 'Y');

	$query->addFilter(">={$dateFieldName}", $periodStartDate);
	$query->addFilter("<={$dateFieldName}", $periodEndDate);

	if(!empty($responsibleIDs))
	{
		$query->addFilter('@RESPONSIBLE_ID', $responsibleIDs);
	}

	if (isset($filterParams['ENTITY_ID']))
	{
		$query->addFilter('=COMPANY_ID', (int)$filterParams['ENTITY_ID']);
	}

	return array(
		'__CONDITIONS' => array(
			array(
				'SQL' => 'crm_invoice_internals_invoice.ID IN('.$query->getQuery().')'
			)
		)
	);
}