- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/entity/paymentdocumentsrepository.php
- Класс: Bitrix\Crm\Entity\PaymentDocumentsRepository
- Вызов: PaymentDocumentsRepository::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);
}