Получить историю оплат и отгрузок заказа
Получение истории оплат через PaymentCollection и отгрузок через ShipmentCollection с информацией о датах и статусах.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Получение полной истории оплат и отгрузок заказа через коллекции D7 API. Используйте в личном кабинете, детальных страницах заказов, отчётах для отображения истории операций.
use Bitrix\Main\Loader;
use Bitrix\Sale\Order;
/**
* Получить историю оплат заказа
* @param int $orderId ID заказа
* @return array Массив оплат с историей
*/
function getOrderPaymentsHistory($orderId) {
if (!Loader::includeModule('sale')) {
return [];
}
$order = Order::load($orderId);
if (!$order) {
return [];
}
$paymentCollection = $order->getPaymentCollection();
$payments = [];
foreach ($paymentCollection as $payment) {
$payments[] = [
'ID' => $payment->getId(),
'PAID' => $payment->getField('PAID') === 'Y',
'SUM' => $payment->getField('SUM'),
'CURRENCY' => $payment->getField('CURRENCY'),
'PAY_SYSTEM_ID' => $payment->getField('PAY_SYSTEM_ID'),
'PAY_SYSTEM_NAME' => $payment->getField('PAY_SYSTEM_NAME'),
'DATE_PAID' => $payment->getField('DATE_PAID'),
'DATE_BILL' => $payment->getField('DATE_BILL'),
'PAY_VOUCHER_NUM' => $payment->getField('PAY_VOUCHER_NUM'),
'PAY_VOUCHER_DATE' => $payment->getField('PAY_VOUCHER_DATE'),
'COMMENTS' => $payment->getField('COMMENTS')
];
}
return $payments;
}
/**
* Получить историю отгрузок заказа
* @param int $orderId ID заказа
* @return array Массив отгрузок с историей
*/
function getOrderShipmentsHistory($orderId) {
if (!Loader::includeModule('sale')) {
return [];
}
$order = Order::load($orderId);
if (!$order) {
return [];
}
$shipmentCollection = $order->getShipmentCollection();
$shipments = [];
foreach ($shipmentCollection as $shipment) {
$shipments[] = [
'ID' => $shipment->getId(),
'DEDUCTED' => $shipment->getField('DEDUCTED') === 'Y',
'ALLOW_DELIVERY' => $shipment->getField('ALLOW_DELIVERY') === 'Y',
'DELIVERY_ID' => $shipment->getField('DELIVERY_ID'),
'DELIVERY_NAME' => $shipment->getField('DELIVERY_NAME'),
'TRACKING_NUMBER' => $shipment->getField('TRACKING_NUMBER'),
'DATE_DEDUCTED' => $shipment->getField('DATE_DEDUCTED'),
'DATE_ALLOW_DELIVERY' => $shipment->getField('DATE_ALLOW_DELIVERY'),
'PRICE_DELIVERY' => $shipment->getField('PRICE_DELIVERY'),
'CURRENCY' => $shipment->getField('CURRENCY')
];
}
return $shipments;
}
/**
* Получить полную историю заказа (оплаты + отгрузки)
* @param int $orderId ID заказа
* @return array ['payments' => [], 'shipments' => []]
*/
function getOrderFullHistory($orderId) {
return [
'payments' => getOrderPaymentsHistory($orderId),
'shipments' => getOrderShipmentsHistory($orderId)
];
}
Usage:
// Получить историю оплат
$payments = getOrderPaymentsHistory(12345);
foreach ($payments as $payment) {
if ($payment['PAID']) {
echo 'Оплачено: ' . $payment['SUM'] . ' ' . $payment['CURRENCY'];
echo 'Дата оплаты: ' . $payment['DATE_PAID'];
echo 'Способ оплаты: ' . $payment['PAY_SYSTEM_NAME'];
}
}
// Получить историю отгрузок
$shipments = getOrderShipmentsHistory(12345);
foreach ($shipments as $shipment) {
if ($shipment['DEDUCTED']) {
echo 'Отгружено: ' . $shipment['DELIVERY_NAME'];
echo 'Трек-номер: ' . $shipment['TRACKING_NUMBER'];
echo 'Дата отгрузки: ' . $shipment['DATE_DEDUCTED'];
}
}
// Получить полную историю
$history = getOrderFullHistory(12345);
Notes:
⚠️ Коллекции оплат и отгрузок доступны только после загрузки заказа через Order::load(). DATE_PAID заполняется автоматически при оплате через платёжную систему. DATE_DEDUCTED заполняется при отгрузке товара. Для получения истории изменений статусов используйте отдельные таблицы истории или события.