Перейти к содержимому

Отмены и возвраты при обмене - что уезжает в учётную систему

Разбираем судьбу отменённого заказа: что меняется на сайте, что уезжает в учётную систему и куда девается резерв вместе с оплатой.

Решение

Смотрим признаки отмены у заказа:

$order = \Bitrix\Sale\Order::load($orderId);
printf("отменён=%s причина=%s оплачен=%s\n",
$order->isCanceled() ? 'да' : 'нет',
$order->getField('REASON_CANCELED') ?: '-',
$order->isPaid() ? 'да' : 'нет');

Отмена - это отдельное поле заказа, а вовсе не один из его статусов. Статус «отменён» в списке статусов и признак отмены живут независимо, и рассинхронизация между ними

  • обычная причина расхождений с учётной системой.

Отменяем заказ и снимаем резерв:

$order->setField('CANCELED', 'Y');
$order->setField('REASON_CANCELED', 'Покупатель отказался');
$order->save();
// резерв снимается вместе с отгрузкой: у отменённого заказа её обычно нет
$shipments = $order->getShipmentCollection();
foreach ($shipments->getNotSystemItems() as $shipment) {
$shipment->tryUnreserve(); // возвращаем товар на склад явно
}

Отмена сама по себе не всегда возвращает товар на склад. Резерв держится отгрузкой, поэтому у заказа с созданной отгрузкой её снимают отдельно, иначе товар остаётся занятым до ручного вмешательства.

Проверяем, что отмена уехала в учётную систему:

printf("выгружен=%s дата выгрузки=%s\n",
$order->getField('UPDATED_1C'), $order->getField('DATE_UPDATE'));
// отменённый заказ выгружается как обычный: учётная система видит его признак
// исключать отменённые из отбора выгрузки не стоит: документ повиснет активным

Отменённый заказ продолжает участвовать в обмене данными. Учётная система получает его с признаком отмены и сама решает, что делать с документом, а исключение отменённых из выгрузки оставляет её в неведении.

Отмечаем возврат оплаты:

$payment = $order->getPaymentCollection()->getItemById($paymentId);
$payment->setReturn('Y'); // отметка возврата в заказе
$order->save();
// возврат в банке без отметки в заказе рвёт сверку с учётной системой
// возврат денег и чек возврата делают на сайте, а не в учётной системе

Возврат денег отмечают в заказе, а не только в личном кабинете банка. Заказ без отметки возврата остаётся оплаченным, и сверка сумм с учётной системой перестаёт сходиться уже на второй неделе.

Причину отмены стоит выбирать из списка, а не писать текстом. Свободный текст в причине не собирается в отчёт, и вопрос «почему у нас растут отказы» остаётся без ответа.

Отмену стоит разрешать покупателю самому, пока заказ не собран. Заявка на отмену через письмо и звонок обходится магазину дороже, чем кнопка в личном кабинете, и портит впечатление сильнее самого отказа.

Отмена и удаление заказа - это две совершенно разные по смыслу операции. Удаление уносит историю и ломает сверку, поэтому заказы на сайте не удаляют почти никогда, а отмечают отменёнными.

Типичные проблемы

Товар остался в резерве после отмены.

Резерв держит созданная отгрузка, а вовсе не сам заказ. У отменённого заказа отгрузку снимают отдельным и явным действием в коде.

В учётной системе заказ висит активным.

Отменённые заказы исключены из отбора самой выгрузки в учётную систему целиком и полностью. Учётная система не узнаёт об отмене и держит документ активным.

Суммы не сходятся при сверке.

Возврат сделан в банке без отметки в самом заказе. Для сайта такой заказ так и остаётся оплаченным.

Статус «отменён» есть, а признака отмены нет.

Меняли статус заказа вместо его настоящей отмены в самой торговой системе. Это независимые поля, и обмен смотрит на признак.

Причины отмены не собираются в отчёт.

Они записаны свободным текстом, а не выбраны из заранее готового списка причин. Для отчёта причину выбирают из заранее заданного списка.

Частые вопросы

Можно ли отменить оплаченный заказ?

Да, но вместе с возвратом оплаты. Отмена без возврата оставляет деньги у магазина и расхождение в учёте.

Кто отменяет заказ: сайт или учётная система?

Обе стороны, и обмен переносит признак в нужную сторону. Важно, чтобы отмена не делалась одновременно в двух местах.

Что делать с частичным возвратом?

Оформлять возврат по конкретной оплате и правкой состава заказа. Полная отмена для этого не подходит.

Удалять ли отменённые заказы?

Нет: они нужны для отчётов и сверки. Чистят разве что тестовые заказы, и то по разовому решению.

Смежное

Первоисточник