# Остатки по складам: как подготовить данные для планирования поставки
Решение о поставке обычно сводится к одному вопросу: сколько штук какого артикула и на какой склад везти. Цифры для ответа уже есть в отчетах маркетплейса. Но если брать их как есть, расчет легко исказить.
Типичные ошибки такие. Резерв вычитают дважды. Товар в пути считают уже доступным. Остатки берут по одному набору складов, а заказы по другому. Дни запаса делят на выкупы, хотя остаток списывается при заказе.
В статье описано, как подготовить данные так, чтобы расчет поставки можно было проверить. Примеры учебные, все числа в них условные.
Коротко
- Зафиксируйте один периметр складов: конкретный склад, кластер или регион. Остатки, товары в пути и расход берите только по нему.
- Разделите остаток на три части: доступно к продаже, резерв, в пути на склад. Возвраты, которые едут от покупателя, держите отдельно.
- Для расхода выберите одно событие: заказы за вычетом отмен или отгрузки со склада. Заказы, выкупы и отгрузки без сверки взаимозаменять нельзя.
- Дни без остатка исключайте из базы среднего расхода. Если расход нулевой или данных о нем нет, дни запаса не считаются.
- Каждый расчет привязывайте к дате наблюдения и проверяйте по исходным выгрузкам.
Метод по шагам
Шаг 1. Задайте периметр и дату наблюдения
Сначала решите, для чего считается поставка: для одного склада, для кластера складов или для всего FBO-остатка на площадке. Это решение определяет все остальные данные.
Запишите дату и время выгрузки остатков. Остаток всегда относится к моменту, а расход к периоду. Если расход посчитан по 1–28 сентября, а остаток выгружен 4 октября, оценка темпа уже не включает последние дни. Сам свежий остаток учитывает произошедшее выбытие: повторно вычитать из него расход за этот разрыв нельзя. По возможности обновите период расхода близко к моменту снимка.
Шаг 2. Определите единицу учета
Единица — штука конкретного товара в конкретном варианте: артикул продавца плюс размер или баркод. Если сложить остатки разных размеров одной модели, получится, что товар «есть», хотя ходового размера нет.
Шаг 3. Разложите остаток на компоненты
Для каждого артикула и склада внутри периметра нужны:
- Доступно к продаже. Штуки, которые можно продать прямо сейчас.
- Резерв. Штуки, уже закрепленные под оформленные заказы. К продаже они недоступны.
- В пути на склад. Ваши поставки, которые еще не приняты. В доступный остаток их не включайте, пока приемка не завершена.
- В пути от покупателя. Возвраты. В плановый запас их не закладывайте: часть вернется в продажу не сразу, часть не вернется совсем.
Проверьте, как в вашем отчете определено поле с остатком. Иногда «доступно» уже указано за вычетом резерва, иногда нет. Если вычесть резерв еще раз, остаток будет занижен.
Шаг 4. Выберите событие расхода
Знаменатель дней запаса — расход того же запаса на том же периметре. Варианты:
- Заказы за вычетом отмен, привязанные к складу, с которого они собираются. Ближе всего к моменту, когда товар выходит из доступного остатка.
- Отгрузки со склада. Точнее отражают физическое списание, но отстают от заказов.
Выкупы не являются прямой заменой выбранного события расхода. Они происходят позже заказа и не включают товар, который уехал к покупателю и вернулся. Если вы все же используете другую метрику, сначала сверьте ее с заказами на одном отрезке и запишите расхождение.
Шаг 5. Очистите период от дней без остатка
Возьмите период, например последние 28 дней. Отметьте дни, когда доступный остаток артикула на периметре был нулевым. Средний дневной расход считайте только по дням доступности, определенным по истории остатков. Если есть только редкие снимки или часть дня товар отсутствовал, пометьте оценку как приблизительную; один снимок не доказывает наличие весь день:
средний дневной расход = расход за дни с остатком / число дней с остатком
Учтите, что нулевые продажи в дни без остатка ничего не говорят о спросе. Обратное тоже верно: если товар закончился, а продажи до этого падали, отсутствие остатка не обязательно главная причина. Совпадение по датам не доказывает связь.
Шаг 6. Посчитайте дни запаса и потребность
дни запаса = доступно к продаже / средний дневной расход
Если средний расход равен нулю или его не удалось определить, дни запаса не определены. Ставьте пометку, а не ноль или «бесконечность».
потребность = max(0; (срок до приемки + целевое покрытие в днях) × средний дневной расход − доступно − подтвержденные поступления до плановой приемки)
Вычитайте только подтвержденные поступления на тот же периметр, которые станут доступны не позже даты плановой приемки. Поздние или неподтвержденные поставки покажите отдельно. Даже достаточная суммарная поставка не исключает дефицит до ее приемки: отдельно сопоставьте текущие дни запаса и даты ожидаемых поступлений. Если расчет до ограничения снизу отрицательный, новая поставка по этой модели не нужна.
Учебный пример. Условный артикул, один кластер складов. Доступно 120 шт., подтверждено поступление 60 шт. на тот же периметр не позже плановой приемки. За 28 дней 4 дня остатка не было, за остальные 24 дня заказано за вычетом отмен 280 шт.
- Средний расход: 280 / 24 ≈ 11,67 шт. в день. В следующих вычислениях используем исходное отношение без промежуточного округления.
- Дни запаса: 120 / (280 / 24) ≈ 10,3 дня.
- Срок до приемки 7 дней, целевое покрытие 28 дней: (7 + 28) × (280 / 24) ≈ 408,3 шт.
- Потребность: max(0; 408,3 − 120 − 60) ≈ 228,3 шт. Округление вверх до целых дает 229 шт.; при упаковке по 12 шт. — 240 шт. Согласуйте округление и ограничения поставки перед отправкой.
Числа придуманы для демонстрации формулы и не описывают реальный магазин.
Ручная альтернатива: CSV и отчеты
Все это можно сделать без ассистента, в таблице.
- Выгрузите отчет по остаткам на складах на дату наблюдения. Сохраните исходный файл без правок.
- Выгрузите заказы за выбранный период с привязкой к складу и признаком отмены.
- Если в отчетах есть история остатков по дням, выгрузите и ее, чтобы найти дни без наличия. Если нет, используйте несколько снимков остатков за период и отметьте, что оценка приблизительная.
- Сведите данные в одну таблицу с ключом «артикул + размер/баркод + склад».
- Отфильтруйте склады, которые не входят в периметр. Сделайте это одинаково во всех листах.
- Посчитайте расход, дни запаса и потребность по формулам выше.
Отдельным столбцом отметьте строки, где данных не хватает: нет заказов, нет истории остатков, склад не сопоставился. В итоговое число поставки такие строки без ручного решения не включайте.
Ручной путь прозрачен, но его приходится повторять перед каждой поставкой. Больше всего времени уходит на выгрузку и сведение, а там чаще всего и появляются ошибки.
Какие данные нужны
| Поле | Единица | Источник | Момент или период |
|---|---|---|---|
| Артикул, размер или баркод | — | отчет по остаткам | на дату наблюдения |
| Склад | — | отчет по остаткам и заказам | — |
| Доступно к продаже | шт. | отчет по остаткам | на дату наблюдения |
| Резерв | шт. | отчет по остаткам, если поле есть | на дату наблюдения |
| В пути на склад | шт. | данные о поставках | на дату наблюдения |
| Заказы за вычетом отмен | шт. | отчет по заказам | выбранный период |
| Дни без остатка | дни | история остатков | тот же период |
| Срок до приемки | дни | ваш опыт поставок на этот склад | — |
| Целевое покрытие | дни | ваше решение | — |
| Кратность упаковки | шт. | ваши данные | — |
Себестоимость здесь не нужна: задача касается количества штук, а не прибыли. Она понадобится, только если вы будете считать бюджет закупки или маржинальность поставки.
Готовый промт
Промт рассчитан на ассистента, у которого есть доступ к данным магазина. Через Артель ИИ-ассистент подключается к поддерживаемым данным и инструментам Wildberries и Ozon. Какие именно отчеты и поля доступны в вашей конфигурации, проверьте в самом подключенном ассистенте: попросите его перечислить инструменты до начала расчета. Если подключения нет, приложите к промту выгрузки CSV.
Подставьте значения в квадратных скобках.
Задача: подготовить данные для планирования поставки на маркетплейс [вставить: Wildberries или Ozon].
Параметры:
- Периметр складов: [вставить список складов или название кластера].
- Дата наблюдения остатков: [вставить дату].
- Период расхода: [вставить даты начала и конца].
- Срок до приемки на склад, дней: [вставить число].
- Целевое покрытие, дней: [вставить число].
- Артикулы: [вставить список или "все с остатком или заказами на периметре"].
Порядок работы:
1. Сначала перечисли, какие инструменты и отчеты тебе доступны и какие поля в них есть. Если нужного поля нет, так и напиши. Не заменяй его оценкой без моего согласия.
2. Единица учета: артикул продавца + размер или баркод + склад. Все данные бери только по указанному периметру складов.
3. Раздели остаток на: доступно к продаже, резерв, в пути на склад, в пути от покупателя. Проверь, не вычтен ли резерв из доступного остатка уже в исходных данных, и напиши, что выяснилось. Товары в пути и возвраты в доступный остаток не включай.
4. Расход: заказы за вычетом отмен по складам периметра за указанный период. Не заменяй их выкупами или отгрузками. Если заказов по складам нет, остановись и сообщи об этом.
5. Найди дни без доступного остатка. Средний дневной расход считай только по дням с остатком. Укажи число таких дней для каждой строки.
6. Дни запаса = доступно / средний дневной расход. Если расход равен нулю или не определен, пиши "не определено", а не 0.
7. Потребность = max(0; (срок до приемки + целевое покрытие) × средний дневной расход − доступно − подтвержденные поступления на тот же периметр до даты плановой приемки). Поздние и неподтвержденные поступления показывай отдельно и не вычитай. Если срок приемки неизвестен, итоговую потребность не рассчитывай. Отдельно проверь риск дефицита до приемки по датам поступлений. Нулевую потребность показывай как "новая поставка по этой модели не нужна".
8. Не делай выводов о причинах падения или роста заказов.
Формат ответа:
- Таблица: артикул, размер/баркод, склад, доступно, резерв, в пути на склад, в пути от покупателя, расход за период, дней с остатком, средний расход, дни запаса, потребность, пометка.
- Отдельный список строк с неполными или противоречивыми данными.
- Дата и время, на которые получены остатки.
Требование в промте не гарантирует, что ассистент его выполнит. Поэтому дальше следует сверка.
Как сверить результат
Проверьте ответ по исходным данным, а не по его внутренней логике.
- Сумма остатков. Возьмите 3–5 артикулов и сравните доступный остаток, резерв и товары в пути с отчетом маркетплейса на ту же дату.
- Периметр. Убедитесь, что в таблице нет складов вне периметра и что все склады периметра попали в расчет.
- Расход. Для одного артикула вручную посчитайте заказы за период без отмен и сравните с ответом.
- Дни без остатка. Для артикула, который заканчивался, проверьте, что эти дни исключены из базы.
- Формулы. Пересчитайте дни запаса и потребность для двух строк на калькуляторе.
- Пометки. Проверьте, что строки с нулевым расходом помечены как «не определено», а не получили число.
Если расхождение найдено хотя бы в одной строке, выясните причину до того, как использовать остальные. Обычно это разные поля, разные даты или разный периметр, и тогда ошибка повторяется во многих строках сразу.
Ограничения
- Неполные отчеты. Если в отчетах маркетплейса нет истории остатков по дням или привязки заказов к складу, подключение ассистента этого не исправит. Коннектор передает те данные, которые доступны, и не восстанавливает недостающие.
- Срок до приемки. Для планирования нужна проверенная дата доступности товара, а не только дата отгрузки или запись о поставке. Если она неизвестна, используйте явно обозначенный сценарий и не представляйте расчет как точный план.
- Будущий спрос. Средний расход описывает прошлое. Сезонность, акции и изменения цены метод не учитывает, их нужно добавлять отдельно.
- Новые артикулы. Без истории заказов на периметре расход не определен. Для них нужно отдельное ручное решение.
- Решение о поставке. Ассистент готовит расчет. Создание поставки, выбор склада и отправка остаются за вами.
Частые вопросы
Почему нельзя автоматически заменять заказы выкупами?
Выкуп происходит позже заказа, а остаток уменьшается раньше, когда товар резервируется под заказ. Кроме того, товар, который уехал к покупателю и вернулся, в выкупы не попадает, хотя какое-то время он был недоступен для продажи. Поэтому дни запаса по выкупам обычно выходят завышенными. Если доступны только выкупы, это другая методика и другая интерпретация показателя. Не выдавайте ее за расчет по заказам; сначала явно согласуйте метод и проверьте сопоставимость данных.
Что делать с артикулом, у которого за период не было заказов?
Дни запаса для него не определены, потому что делить на ноль нельзя. Проверьте, был ли товар в наличии: если остатка не было весь период, нулевые заказы ничего не говорят о спросе. Решение о поставке такого артикула принимайте отдельно, по другим данным: истории на других складах, сезону, вашему плану.
Нужно ли учитывать возвраты, которые едут на склад?
Показывайте их в отдельном столбце, но в доступный остаток и в расчет потребности не включайте. До приемки и проверки неизвестно, сколько из них вернется в продажу и когда. Большой поток возвратов — повод отдельно проверить качество спроса и сроки повторной доступности, а не автоматически увеличивать запас. Возвраты и новые поступления не должны учитываться дважды.
Нужна ли себестоимость для планирования поставки?
Для расчета количества штук нет. Себестоимость нужна, если вы считаете бюджет закупки, прибыль от поставки или выбираете между артикулами по марже. Учтите, что маркетплейс себестоимость не передает и коннектор ее не добавит: ее нужно вносить из вашего учета.
Как часто обновлять данные перед поставкой?
Остатки берите в тот же день, когда принимаете решение, и фиксируйте время выгрузки. Период расхода можно обновлять реже, но он должен заканчиваться близко к дате наблюдения остатков. Если между концом периода и выгрузкой остатков прошло несколько дней, учтите, что расход за эти дни уже отразился в остатке.
Вывод
Расчет поставки надежен, когда остаток, товары в пути и расход взяты по одному периметру складов, в одних единицах и на понятную дату. Тогда каждое число в итоговой таблице можно проверить по исходному отчету.
Следующий шаг: откройте актуальную инструкцию подключения, сверьте там настройку и совместимость и проведите первый разбор по промту выше для одного кластера складов и нескольких артикулов. Прежде чем расширять расчет на весь ассортимент, проверьте результат по пунктам из раздела о сверке.