ВсіРеактГенераціяГрупаТовар✕ABCВсіABC⤓ PDF❓ Як працює
Завантаження…
📊 Як працює звіт «Обіговість запасів»
Звіт показує, скільки грошей стоїть у запасі і як швидко цей запас обертається. Один рядок = один товар, який зараз є на складі. Немає залишку — немає рядка, навіть якщо товар активно продається.
📥 Джерело даних
Усе з нашої бази (D1), не з 1С наживо. Запит — action=inventory_turnover.
Залишки — знімок регістру «Запаси» 1С на останню дату синку (вона під таблицею і в PDF). Оновлює автосинк кожні 30 хв, 08:00–20:30.
Беруться лише додатні залишки і лише товари — послуги та позначені на видалення не входять.
Виключені склади: «В дорозі», «Майно», «АВТО», «Інструменти», «Сонячна станція», «ПОСЛУГ», «НОВИЙ ОФИС». Тобто транзит у залишок не рахується.
Продажі — проведені видаткові накладні (не замовлення й не оплати). Кількість переводиться в базові одиниці: бухта 500 м рахується як 500 м.
Собівартість — середньозважена ціна закупівлі за всю історію: сума прихідних накладних ($) ÷ кількість. Не FIFO і не остання ціна.
Усі суми — в USD. Вікна 90 і 365 днів рахуються від сьогодні, а не від дати залишків.
📐 Що означають цифри
Вартість запасу = залишок × середня ціна закупівлі. Якщо товар жодного разу не приходив прихідною накладною з сумою — ціни нема, у вартість він не входить, у колонках «—».
ITR (оборотність) = COGS за рік ÷ вартість запасу, де COGS = продано за рік × середня ціна закупівлі. 4x = запас обертається 4 рази на рік.
DSI (дні запасу) = 365 ÷ ITR. На скільки днів вистачить запасу — рахується в грошах.
GMROI = (виручка за рік − COGS за рік) ÷ вартість запасу. Скільки доларів маржі приносить кожен долар, вкладений у запас: 1.0 = долар за рік повернув долар маржі.
Покриття днів = залишок ÷ денний темп продажів. Темп = продано за 90 днів ÷ 90, а якщо за 90 днів не продавали — продано за рік ÷ 365.
ABC — за виручкою за останні 365 днів: позиції сортуються за спаданням, перші, що дають 80% виручки — A, далі до 95% — B, решта — C. Товар без продажів за рік отримує «—» і у фільтри A/B/C не потрапляє.
🚦 Статуси
Перевіряються згори вниз, перший збіг виграє:
Мертвий — жодного продажу за 12 місяців (або взагалі жодного).
Повільний — DSI понад 180 днів або DSI не порахувався.
Нормальний — DSI 60–180 днів.
Швидкий — DSI менше 60 днів.
📦 Надлишок
Запас понад норму покриття 90 днів: надлишок = залишок − денний темп × 90 (у мінус не йде), у грошах — × середню ціну закупівлі.
Якщо продажів нема взагалі, темп = 0 і надлишком вважається весь залишок. Тому «Мертвий сток» майже цілком сидить і в «Надлишку» — це не подвійний рахунок, а два різні розрізи тих самих грошей.
🔎 Фільтри
Організація: Реакт / Генерація (Одеса + Київ) / Всі. Фільтр діє одразу на залишки, продажі й закупівлі.
Група — батьківська папка номенклатури в 1С. Товар — пошук по назві, артикулу й коду.
Картки статусів клікабельні і звужують тільки таблицю. KPI зверху при цьому не міняються: вони рахуються по вибірці «група + пошук + ABC», статус на них не діє.
Сортування — клік по заголовку колонки, за замовчуванням «Надлишок $» за спаданням.
PDF вивантажує рівно те, що зараз на екрані, з поточними фільтрами в шапці.
⚠️ Чому цифра може здивувати
DSI ≠ «Покриття днів». DSI — у грошах і завжди по річному вікну; покриття — у штуках і по свіжому 90-денному темпу. Товар, який щойно почали активно продавати, матиме мале покриття і великий DSI.
Товар продається, а статус «Повільний» — найчастіше на нього нема закупівельної ціни, тож ITR і DSI не порахувались, а порожній DSI за правилом іде в «Повільний».
Сезонність не враховується. Темп лінійний: разовий сплеск продажів занижує покриття й надлишок, а мертвий сезон — завищує.
Ціна закупівлі береться в одиниці прихідної накладної. Якщо товар купували упаковкою, а продають штуками, собівартість і вартість запасу такої позиції будуть завищені.
Транзит не в залишку. Товар, який уже їде, у покриття та надлишок не входить.