Отмены и возвраты при обмене - что уезжает в учётную систему
Разбираем судьбу отменённого заказа: что меняется на сайте, что уезжает в учётную систему и куда девается резерв вместе с оплатой.
Решение
Смотрим признаки отмены у заказа:
$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();// возврат в банке без отметки в заказе рвёт сверку с учётной системой// возврат денег и чек возврата делают на сайте, а не в учётной системеВозврат денег отмечают в заказе, а не только в личном кабинете банка. Заказ без отметки возврата остаётся оплаченным, и сверка сумм с учётной системой перестаёт сходиться уже на второй неделе.
Причину отмены стоит выбирать из списка, а не писать текстом. Свободный текст в причине не собирается в отчёт, и вопрос «почему у нас растут отказы» остаётся без ответа.
Отмену стоит разрешать покупателю самому, пока заказ не собран. Заявка на отмену через письмо и звонок обходится магазину дороже, чем кнопка в личном кабинете, и портит впечатление сильнее самого отказа.
Отмена и удаление заказа - это две совершенно разные по смыслу операции. Удаление уносит историю и ломает сверку, поэтому заказы на сайте не удаляют почти никогда, а отмечают отменёнными.
Типичные проблемы
Товар остался в резерве после отмены.
Резерв держит созданная отгрузка, а вовсе не сам заказ. У отменённого заказа отгрузку снимают отдельным и явным действием в коде.
В учётной системе заказ висит активным.
Отменённые заказы исключены из отбора самой выгрузки в учётную систему целиком и полностью. Учётная система не узнаёт об отмене и держит документ активным.
Суммы не сходятся при сверке.
Возврат сделан в банке без отметки в самом заказе. Для сайта такой заказ так и остаётся оплаченным.
Статус «отменён» есть, а признака отмены нет.
Меняли статус заказа вместо его настоящей отмены в самой торговой системе. Это независимые поля, и обмен смотрит на признак.
Причины отмены не собираются в отчёт.
Они записаны свободным текстом, а не выбраны из заранее готового списка причин. Для отчёта причину выбирают из заранее заданного списка.
Частые вопросы
Можно ли отменить оплаченный заказ?
Да, но вместе с возвратом оплаты. Отмена без возврата оставляет деньги у магазина и расхождение в учёте.
Кто отменяет заказ: сайт или учётная система?
Обе стороны, и обмен переносит признак в нужную сторону. Важно, чтобы отмена не делалась одновременно в двух местах.
Что делать с частичным возвратом?
Оформлять возврат по конкретной оплате и правкой состава заказа. Полная отмена для этого не подходит.
Удалять ли отменённые заказы?
Нет: они нужны для отчётов и сверки. Чистят разве что тестовые заказы, и то по разовому решению.
Смежное
- Обмен заказами с 1С - оглавление подтемы
- Статусы заказа при обмене: возврат из 1С и обратное направление - статусы рядом с признаками
- Оплаты и отгрузки заказа: объекты, признаки, частичные операции - где живут оплаты и резерв
- Состав заказа и контрагенты при обмене - что ещё уезжает в документе
- Обмен с 1С и HTTP - устройство обмена целиком
- Возврат покупателю: отмена оплаты, чек возврата, склад - что происходит на самом сайте