• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entity/paymentdocumentsrepository.php
  • Класс: Bitrix\Crm\Entity\objects
  • Вызов: objects::fetchPaymentDocuments
private function fetchPaymentDocuments(): array
{
	if (count($this->orderIds) <= 0)
	{
		return [];
	}

	$select = ['ID', 'ORDER_ID', 'ACCOUNT_NUMBER', 'PAID', 'DATE_BILL', 'SUM', 'CURRENCY', 'PAY_SYSTEM_NAME', 'DATE_PAID'];
	$filter = ['=ORDER_ID' => $this->orderIds];
	$result = [];

	$payments = Sale\PaymentCollection::getList([
		'select' => $select,
		'filter' => $filter,
	]);
	$paymentIds = [];
	while ($payment = $payments->fetch())
	{
		$paymentIds[] = $payment['ID'];
		$payment['TYPE'] = 'PAYMENT';
		$payment['ORIG_SUM'] = $payment['SUM'];
		$payment['ORIG_CURRENCY'] = $payment['CURRENCY'];
		$payment['DATE'] = $payment['DATE_BILL'];
		if ($payment['DATE_PAID'])
		{
			$payment['FORMATTED_DATE_PAID'] = ConvertTimeStamp($payment['DATE_PAID']->getTimestamp(), 'FULL');
		}

		$payment['STAGE'] = ($payment['PAID'] === 'Y') ? PaymentStage::PAID : PaymentStage::NOT_PAID;

		if ($payment['PAID'] === 'Y')
		{
			$this->paidSum += $payment['SUM'];
			$this->totalSum -= $payment['SUM'];
		}

		$result[$payment['ID']] = $payment;
	}

	if (count($paymentIds) > 0)
	{
		$paymentStages = EntityStageTable::getList([
			'select' => ['ENTITY_ID', 'STAGE'],
			'filter' => ['=ENTITY_ID' => $paymentIds, '=WORKFLOW_CODE' => PaymentWorkflow::getWorkflowCode()]
		]);
		while ($paymentStage = $paymentStages->fetch())
		{
			if ($result[$paymentStage['ENTITY_ID']])
			{
				$result[$paymentStage['ENTITY_ID']]['STAGE'] = $paymentStage['STAGE'];
			}
		}
	}

	return array_values($result);
}