Если товар списывается не с той партии, складской учет быстро расходится с реальностью. Особенно критично это для сроков годности, серийных номеров, гарантий, маркировки и финансового учета.

Сначала нужно понять правило списания: FIFO, FEFO, ручной выбор партии, резерв под заказ или приоритет склада. Потом проверить, где система выбирает другую партию.

Коротко: что делать

  • Определить правильное правило списания
  • Проверить остатки по партиям до и после заказа
  • Проверить резервы и отмены заказов
  • Посмотреть SQL или код выбора партии
  • Сверить ручной выбор партии в интерфейсе и backend

Основные причины

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

  • Партии сортируются по дате создания вместо срока годности
  • Резерв создается на одну партию, а списание идет с другой
  • Нет транзакции при одновременных заказах
  • Ручной выбор партии не передается в backend
  • Возвраты и отмены возвращают остаток не туда

Пошаговая диагностика

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

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

Как исправить проблему

Исправление должно сделать выбор партии явным и транзакционно безопасным.

  • Исправить сортировку и приоритет партий
  • Связать резерв и списание одной партией
  • Добавить транзакции и блокировки остатков
  • Проверять ручной выбор партии на backend
  • Добавить журнал движений с причиной операции

Безопасный план решения

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

Чего не стоит делать

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

Что подготовить перед исправлением

  • Пример заказа и товара
  • Правило списания партий
  • Остатки по партиям
  • Журнал движений или доступ к базе

FAQ

Можно ли исправить только будущие списания?

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

Что лучше: FIFO или FEFO?

Зависит от товара. Для сроков годности чаще нужен FEFO, для обычного учета может хватить FIFO.

Почему ошибка появляется не всегда?

Часто она зависит от параллельных заказов, резервов или конкретного сочетания партий.

Когда стоит обратиться за помощью

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

Итог

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