InvoiceOverdue::prepareEntityListFilter

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. InvoiceOverdue
  4. prepareEntityListFilter
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/widget/data/invoiceoverdue.php
  • Класс: Bitrix\Crm\Widget\Data\InvoiceOverdue
  • Вызов: InvoiceOverdue::prepareEntityListFilter
public function prepareEntityListFilter(array $filterParams)
{
	$filter = self::internalizeFilter($filterParams);
	$query = new Query(InvoiceSumStatisticsTable::getEntity());
	$query->setTableAliasPostfix('_s1');
	$query->addSelect('OWNER_ID');
	$query->addGroup('OWNER_ID');

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

	$subQuery = new Query(InvoiceSumStatisticsTable::getEntity());
	$subQuery->setTableAliasPostfix('_s2');
	$subQuery->addSelect('OWNER_ID');

	//region Overdue condition
	$subQuery->addFilter('=STATUS_SEMANTIC_ID', PhaseSemantics::PROCESS);
	$subQuery->addFilter('>=PAY_BEFORE_DATE', $periodStartDate);
	$subQuery->addFilter('<=PAY_BEFORE_DATE', $periodEndDate);
	//endregion

	$responsibleIDs = $filter->getResponsibleIDs();
	if(!empty($responsibleIDs))
	{
		$subQuery->addFilter('@RESPONSIBLE_ID', $responsibleIDs);
	}
	$subQuery->addGroup('OWNER_ID');

	$subQuery->addSelect('MAX_CREATED_DATE');
	$subQuery->registerRuntimeField('', new ExpressionField('MAX_CREATED_DATE', 'MAX(%s)', 'CREATED_DATE'));

	$query->registerRuntimeField('',
		new ReferenceField('M',
			Base::getInstanceByQuery($subQuery),
			array('=this.OWNER_ID' => 'ref.OWNER_ID', '=this.CREATED_DATE' => 'ref.MAX_CREATED_DATE'),
			array('join_type' => 'INNER')
		)
	);

	//region Overdue condition
	$query->addFilter('=STATUS_SEMANTIC_ID', PhaseSemantics::PROCESS);
	//endregion

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

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