При обмене товара система должна вернуть один товар и выдать другой. Если остаток уменьшается дважды, склад быстро начинает расходиться с реальностью.

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

Коротко: обмен нужно учитывать как связанную операцию возврата и новой выдачи, а не как два независимых списания.

Почему возникает проблема

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

Что проверить в первую очередь

  • какие складские движения создаются при обмене
  • есть ли связь с исходным заказом
  • повторяется ли webhook
  • используются ли транзакции
  • как меняются статусы возврата и новой выдачи

Как я решаю такую задачу

Я разбираю конкретный обмен по движениям склада и событиям заказа.

  • нахожу операцию с двойным списанием
  • смотрю движения товара
  • исправляю логику возврата и новой выдачи
  • добавляю защиту от повторной обработки
  • тестирую полный и частичный обмен

Что подготовить

  • пример заказа с обменом
  • артикулы товаров
  • доступ к админке или базе
  • интеграция со складом
  • правила обмена

Сроки и риски

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

Чего лучше не делать

Не правьте остатки вручную без исправления причины. Следующий обмен снова создаст расхождение.

FAQ

Можно ли восстановить остатки?

Да, если есть история движений и понятный период ошибки.

Нужна ли транзакция?

Для складских операций желательно, чтобы связанный набор изменений применялся целиком.

Webhook может списать повторно?

Да, если нет проверки уникального события.

Как учитывать обмен на другой товар?

Как возврат первой позиции и выдачу второй с общей связью обмена.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и короткое описание того, как должно работать. Я посмотрю задачу, предложу безопасный план и скажу, какие доступы понадобятся.

Итог

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