Комплекты и наборы: остаток по компонентам и частичный возврат
Содержание и рабочий файл
- Рабочий файл: пустой шаблон и учебный пример
- 1. Выберите модель набора
- 2. Зафиксируйте состав до первого заказа
- 3. Посчитайте свободные компоненты
- 4. Учебный расчёт двух наборов
- 5. Заказ, недостача и изменение состава
- 6. Заранее собранный набор: не посчитайте компоненты дважды
- 7. Частичный возврат: сначала факт и состояние
- 8. Что делать с исключениями
- 9. Как принять сценарий в своей системе
На складе девять свободных кружек. Один набор требует две кружки, другой — одну. В карточках можно получить четыре доступных набора первого вида и пять второго. Если выставить оба количества как независимый запас, покупателям пообещают тринадцать кружек. Ошибка возникает уже в расчёте, до сборки и обмена с площадкой.
Ниже — способ проверить состав, доступность и возврат наборов из общих компонентов. Результат работы: таблица состава, совместный план без двойного расхода и карта возврата, по которой неполный набор не становится полным продаваемым товаром.
4 A + 5 B = 13 кружек. Дефицит — 4 кружки.
Рабочий файл: пустой шаблон и учебный пример
Скачать расчёт комплектов и карту возврата — XLSX. Инструкция к файлу — Markdown.
В книге четыре листа: пустой расчёт, заполненный учебный расчёт, пустая карта возврата и заполненный учебный возврат. Жёлтые ячейки предназначены для ввода; формулы оставлены видимыми. Пример использует условные товары и числа, а не данные клиента.
Расчёт ограничен шестью различными компонентами, двумя наборами, одним владельцем и одним физическим складом. Все количества измеряются в целых штуках. Он помогает проверить решение на одном срезе данных; резервирует товар и отправляет остаток ваша учётная система.
1. Выберите модель набора
Сначала ответьте, что именно лежит на полке. Название «комплект» само по себе этого не определяет.
| Модель | Что учитывается физически | Что происходит при выполнении заказа |
|---|---|---|
| Виртуальный набор | Отдельные компоненты | Заказ набора требует резерва и расхода каждого компонента по составу |
| Заранее собранный набор | Готовая упакованная единица | При сборке компоненты расходуются, появляется готовый товар; при продаже расходуется эта единица |
| Готовый комплект производителя | Единица поставки в исходной упаковке | Право вскрытия, продажи частей и маркировку проверяют по товару и документам |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Эти модели нельзя смешивать в одном количестве. В документации Odoo 19.0 для kit описан пример: в заказе продажи набор выглядит одной строкой, а в доставке раскрывается на компоненты. Инструкция SkladBot по комплектации описывает другой переход: при приёмке готового комплекта компоненты списываются с номинального остатка, готовые комплекты появляются на основном. Это описания конкретных систем, прочитанные 31.10.2026; они не доказывают одинакового поведения других WMS.
Если вы переходите со SkladBot, сначала сохраните значение обоих видов остатка и рецепт. Перенести готовый комплект и одновременно оставить его уже израсходованные компоненты свободными — значит удвоить запас. Подробности сверки — в материале о переезде со SkladBot.
2. Зафиксируйте состав до первого заказа
Состав набора — это отдельная запись, которую можно воспроизвести после изменения каталога. Для каждой строки нужны:
- SKU набора и версия состава;
- идентификатор и вариант компонента: размер, цвет, фасовка;
- норма на один набор и единица измерения;
- владелец товара и склад, из которого допускается сборка;
- дата начала применения версии и ответственный за изменение.
Добавьте упаковку, вкладыш или подарок в расчёт, если их отсутствие действительно запрещает отгрузить обещанный набор. Если расходник не ограничивает продажу, ведите его потребность отдельно и не делайте случайным ограничителем товарного остатка.
Сохраняйте состав, с которым был принят заказ. Возврат заказа по версии v1 нельзя разбирать по сегодняшней v2. Если в новой версии заменили красную кружку на синюю, поздний возврат красной кружки остаётся связан с исходной отгрузкой. Старые составы не удаляют: у них закрывают период применения, а изменение связывают с новой версией.
Одинаковый компонент, встречающийся в рецепте несколько раз, перед расчётом сводят в одну строку с суммарной нормой. Иначе две строки могут отдельно использовать один и тот же свободный запас. Совпадение названия или штрихкода не заменяет проверку варианта и владельца; спорные связи разбирают по таблице очистки каталога.
Для фиксированного физического ассортимента есть и внешняя граница. GS1 GTIN Management Standard, правило 2.9 требует новый GTIN при изменении, добавлении или замене входящего товара. Это правило относится к описанному стандартом физическому ассортименту. Внутренняя версия рецепта не заменяет проверку идентификации товара и карточки площадки.
3. Посчитайте свободные компоненты
Для выбранного владельца, склада и момента времени используйте:
Свободно = годных физически − действующие резервы − прочие блоки.
В этой формуле «годных физически» уже исключает карантин и брак. Повторно вычитать их нельзя. «Прочие блоки» могут включать согласованный страховой запас, но не должны повторять те же единицы из колонки резерва. Товар в пути не относится к физическому наличию принимающего склада.
Если результат отрицательный, разберите исходные количества. Молчаливое превращение минуса в ноль скрывает пересечение резервов, двойной блок или несогласованные срезы. В файле такой ввод останавливает расчёт и показывает причину.
Для одного виртуального набора:
Можно собрать = минимум целых частей «свободно компонента ÷ его норма на набор».
Учитываются только компоненты с положительной нормой. Норма 0 означает, что компонент в этот набор не входит; незаполненная норма означает неизвестные данные. Для коробки из десяти штук сначала согласуйте единицу: десять коробок и десять отдельных упаковок дают разный результат.
Формула отвечает на вопрос о материальной обеспеченности. Она не учитывает пропускную способность упаковки, срок доставки, разрешение на продажу и свежесть опубликованного остатка. Компоненты в разных городах также не образуют доступный набор лишь потому, что их можно сложить в отчёте.
4. Учебный расчёт двух наборов
В примере KIT-A состоит из двух кружек, чая и коробки; KIT-B — из кружки, двух пачек чая и открытки. Все компоненты принадлежат одному условному владельцу и лежат на одном складе.
| Компонент | Годных, шт. | В резерве | Другие блоки | Свободно | Норма A | Норма B |
|---|---|---|---|---|---|---|
| Кружка CUP | 12 | 2 | 1 | 9 | 2 | 1 |
| Чай TEA | 15 | 1 | 0 | 14 | 1 | 2 |
| Коробка BOX | 8 | 1 | 1 | 6 | 1 | 0 |
| Открытка CARD | 5 | 0 | 0 | 5 | 0 | 1 |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Для A получаем min(⌊9/2⌋, 14, 6) = 4. Для B — min(9, ⌊14/2⌋, 5) = 5. Каждый результат предполагает, что остальные наборы не расходуют эти компоненты.
Чтобы проверить совместный план, для каждого компонента посчитайте:
Потребность = план A × норма A + план B × норма B.
| План | Кружки | Чай | Коробки | Открытки | Решение по компонентам |
|---|---|---|---|---|---|
| 4 A и 5 B | 13 | 14 | 4 | 5 | Не хватает 4 кружек |
| 3 A и 3 B | 9 | 9 | 3 | 3 | На этом срезе хватает |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Во втором случае остаются 0 свободных кружек, 5 пачек чая, 3 коробки и 2 открытки. Дополнительный заказ любого из этих наборов потребует нового поступления или освобождения кружки. Если кружки продаются ещё и отдельно, их заказы участвуют в том же резервировании.
Запас девять кружек нельзя независимо обещать нескольким наборам и нескольким каналам. Нужна единая проверка расходуемых компонентов при резерве, а для опубликованных количеств — выбранное правило распределения и учёт задержек обмена. Как восстановить последовательность при перепродаже, разобрано в журнале диагностики последнего экземпляра.
5. Заказ, недостача и изменение состава
Обычный путь виртуального набора состоит из пяти действий:
- Зафиксировать в заказе версию и полный состав.
- Рассчитать потребность с учётом уже действующих резервов.
- Зарезервировать весь необходимый состав в одной согласованной операции. Если одного компонента не хватило, не оставлять остальные в бесхозном резерве.
- При сборке подтвердить компоненты и количества, затем связать их с отгрузкой.
- При повторной обработке того же события проверить, что второго резерва, расхода или начисления не возникло.
Это требования к проверяемому процессу, а не утверждение об атомарности любой WMS. Простая таблица показывает потребность; конкурентный резерв и восстановление после сбоя проверяются в системе.
Если недостача обнаружена на полке после резерва, отметьте конкретный компонент, заказ и ячейку. Остановите сборку неполного набора, пересчитайте место, сопоставьте движения. Резерв заказа, корректировка физического остатка и отмена заказа — разные действия: снятие резерва само по себе не создаёт недостающую вещь.
Подмена компонента «почти таким же» требует отдельного решения. После согласования обновляют состав нового предложения и правила идентификации; старый заказ нельзя незаметно перевести на новую версию. Если допустимые альтернативы заранее определены, расчёт должен учитывать их совместимость и общий ресурс. Приложенный файл альтернативы и вложенные наборы не моделирует.
6. Заранее собранный набор: не посчитайте компоненты дважды
Предположим, из свободного запаса учебного примера заранее собрали три A. На сборку ушли шесть кружек, три пачки чая и три коробки. Свободных компонентов осталось 3, 11 и 3 соответственно, а в отдельном учёте готовой продукции появились три A.
Дальше используют согласованную модель готового товара: продажа готового A не расходует эти компоненты повторно. Разбор готового набора — отдельная операция, которая уменьшает количество готовых единиц и возвращает только фактически полученные и допущенные компоненты. Повреждённая коробка не возвращается в годный запас автоматически по рецепту.
Сохраняйте баланс в одинаковых единицах. Например, кружек до сборки должно быть столько же, сколько после неё лежит отдельно и содержится в готовых наборах, с учётом подтверждённых потерь. Складывать «штуки набора» и «штуки кружек» в один итог бессмысленно.
7. Частичный возврат: сначала факт и состояние
Здесь частичный возврат означает, что на склад фактически пришла только часть отгруженного состава. Допустимость возврата, решение по заявке покупателя и возврат денег определяются отдельно по правилам площадки и применимым условиям. Складская таблица фиксирует физический факт.
Начните с исходного заказа, владельца и версии состава. Затем для каждого компонента зафиксируйте отгруженное, фактически полученное и состояние после осмотра. Пока осмотр не завершён, полученное остаётся в карантине и не увеличивает свободный запас.
Получено = годно + карантин + брак. Недостача остаётся отдельной разницей между отправленным составом и фактическим приходом. Она не является приходом, браком или доказательством виновной стороны.
Учебный возврат одного KIT-A v1
| Компонент | Отгружено | Получено | Годно | Карантин | Брак | Недополучено |
|---|---|---|---|---|---|---|
| Кружка | 2 | 1 | 1 | 0 | 0 | 1 |
| Чай | 1 | 1 | 1 | 0 | 0 | 0 |
| Коробка | 1 | 1 | 0 | 0 | 1 | 0 |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Из годных компонентов этого возврата получается min(⌊1/2⌋, 1, 0) = 0 полных составов. Восстанавливать один A нельзя. Если отдельная продажа кружки и чая разрешена и пройдены необходимые проверки, можно допустить по одной годной единице. Коробку оставляют в браке; недостающую кружку разбирают как расхождение.
Позднее набор можно восстановить с дополнительной кружкой и новой коробкой. Их потребность, резерв и расход должны появиться отдельной операцией. В завершении повторно проверяют полную комплектацию и упаковку. Wildberries относит отсутствие предусмотренной детали или аксессуара к причине «Неполный комплект»; это не основание возвращать такую единицу в обычную продажу без решения по её состоянию.
8. Что делать с исключениями
| Ситуация | Действие и граница |
|---|---|
| Вернулся другой вариант | Изолировать, сверить идентификаторы и исходную отгрузку; не зачесть в компонент ожидаемого размера |
| Пришло больше, чем было отправлено | Зафиксировать излишек отдельно; восстановить происхождение и владельца перед допуском |
| Карточка набора уже изменена | Использовать снимок состава исходного заказа, сохранить ссылку на старую версию |
| Возврат обработали повторно | Проверить ID возврата, строки и событие прихода; второй запуск не должен добавлять товар ещё раз |
| Всё пришло, но часть ещё не осмотрена | Оставить эту часть в карантине; полный состав из годных может оставаться нулевым |
| Комплект изготовителя или маркируемые товары | Проверить применимую товарную группу, упаковку, коды и разрешённый способ восстановления до продажи частей |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Термины WMS не заменяют классификацию маркировки. Например, официальное разъяснение для лёгкой промышленности различает комплект производителя и набор участника оборота. Возможность нажать «разобрать» в программе не подтверждает право продавать получившиеся части. Эта статья не устанавливает единый порядок маркировки для всех товарных групп.
9. Как принять сценарий в своей системе
Покажите эти действия на копии данных или в согласованном тестовом контуре. Для проверки Skirbo используйте тот же набор входов и ожидаемых результатов; поддержку конкретного пути, включение в вашем кабинете и исключения подтверждают отдельно.
| Проверка | Что должно быть видно |
|---|---|
| Рассчитать A и B из примера | Лимиты 4 и 5 объясняются компонентами, а не ручным числом на карточке |
| Принять совместный план 3 A + 3 B | Потребность в кружках 9; повторное использование этих же единиц не допускается |
| Попытаться принять 4 A + 5 B | Дефицит четырёх кружек, понятная обработка второго обязательства |
| Повторить событие резерва или расхода | Один результат и одна запись движения; повтор не меняет итог |
| Изменить рецепт после принятия заказа | Исходный заказ и его возврат сохраняют прежний состав |
| Принять учебный частичный возврат | 0 полных составов, годные компоненты отдельно, брак и недостача различимы |
| Повторить приёмку того же возврата | Второго прихода нет; видны прежнее событие и ответственный |
На узком экране таблицу можно прокрутить вправо. С клавиатуры: Tab до таблицы, затем стрелки.
Сохраняйте результат по каждой строке: входные данные, действие, ожидание, факт, ссылка на движение и оставшееся ограничение. Успешный расчёт на экране ещё не доказывает корректную сборку, обмен с площадкой или физическую приёмку возврата.
Следующий шаг: откройте пустой шаблон, внесите два своих набора с общим компонентом и проверьте совместный план. Затем возьмите один завершённый возврат и сверьте его по составу исходного заказа. Если итоги расходятся, у вас уже будет предметный пакет для разбора: версии, количества, состояния и события — без догадок о том, где потерялся товар.
Проверьте свой пример со Skirbo
Подготовьте два состава с общим компонентом, срез годного остатка и один обезличенный возврат. Сверим входные данные и критерии проверки сценария в вашем кабинете.
Предложение по развитию продукта можно написать основателю.