План — то, что записано в отгрузочных документах. Факт — то, что насчитал кладовщик. Пересчёт не правит остаток напрямую: он создаёт движение «приёмка», поэтому на любое число всегда есть построчный ответ.
CSV или Excel с колонками sku и факт
(годятся «артикул», «посчитано», «количество»). Сначала покажу, что получится.
Строка модели раскрывается щелчком. Факт вписывается прямо в строку — Enter или уход из поля сохраняет. Повторный пересчёт заменяет прежний: старое движение сторнируется, а не правится.
Склад двухстадийный: болванка + принт = готовый товар. Печать — это движение, а не смена свойства: болванка списывается, готовое приходуется. Связь выводится из артикула, хранить её не нужно.
Готового мало, а болванка под него лежит на складе. Каждая строка — отгрузка, которую сейчас не сделать, хотя сырьё есть.
Болванки, на которых давно ничего не печатали. Замороженное сырьё.
Коробки переводит в штуки сервер: сколько штук в коробе, написано в справочнике товара.