Учёт цветов в магазине: склад, сроки годности, букеты — какая программа нужна

Учёт цветов в цветочном магазине отличается от учёта обычного товара тремя вещами. Цветок портится: партия живёт дни, и остаток «50 роз» без даты прихода ничего не говорит о том, сколько из них можно продать к субботе. Букет — это не единица товара, а состав из стеблей, у каждого свой остаток, своя цена и свой срок. И заказы в цветах часто делают наперёд, под поставку, которой на полке ещё нет. Поэтому программа учёта цветов должна вести партии со сроком жизни, считать доступность на каждую дату с учётом плановых поставок, списывать букет по стеблям и показывать, сколько магазин реально заработал и сколько потерял.

Почему тетрадь и Excel не справляются

Первая версия NovaFlo была очень простой: витрина в Telegram и одна цифра у каждого товара — сколько есть в наличии. Тетрадь и Excel устроены так же. И ломаются они на одних и тех же трёх вещах.

Остаток без даты. В таблице 50 тюльпанов сегодня и 50 тюльпанов через три недели выглядят одинаково. Что за это время сменится несколько поставок, а сами тюльпаны давно погибнут, таблица не знает. Отсюда заказы, которые приняли, а собрать не смогли.

Будущее держится в голове. Клиент просит букет к субботе, сегодня вторник, нужных цветов нет, но в пятницу придёт поставка. В тетради этого нет: владелец прикидывает «привезём, запишу» и держит обещание в памяти. Для одного сорта ещё терпимо, для букета из пяти стеблей с разными датами прихода — уже головоломка, в которой легко ошибиться.

Букет одной строкой. Продали букет — в таблице «минус один букет». А со склада ушли три пиона, две маттиолы и эвкалипт, каждый из своего остатка. Через неделю остатки по стеблям не сходятся, а сколько магазин заработал на этом букете, не знает никто.

Как это было в STEMSBOT. До автоматизации бизнес держался на памяти и тетрадке. Потерянные заказы, пересорт, списания, остатки, которые упрямо не сходятся, и попытка с готовой программой, которая не прижилась. С этого и началась NovaFlo.

Партия живёт дни: учёт по срокам, а не по остаткам

Партия — это приход одного сорта от одной поставки: дата прихода и количество. У каждого сорта есть срок жизни в днях (в других отраслях его назвали бы сроком годности), после которого стебель уже не продать. Обычный склад считает коробки. Цветочный должен считать время: что лежит сейчас, что доживёт до нужной даты, что уже обещано покупателям и что ещё приедет.

Из даты прихода и срока жизни получается окно, в котором партия доступна к продаже. Пока окно открыто, цветок виден на витрине. Как только срок вышел, программа сама убирает позицию с витрины и помечает её как истёкшую в панели магазина, чтобы её списали, а не продали.

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

Что считает Excel Что считает программа учёта цветов
Одно число остатка на сорт Партии с датой прихода и сроком жизни
Остаток «сейчас» Доступность на каждую дату вперёд
Ничего не знает о сроке Сама убирает истёкшие партии с витрины
Будущие заказы и поставки — в голове у владельца Резервы под заказы и плановые поставки в одной таблице
Списание вручную, когда заметили Истёкшие партии видны в панели каждый день

Как это было в STEMSBOT. Первая версия системы спокойно приняла заказ с доставкой через три недели, потому что видела только число. Тогда стало ясно, что витрины мало, а после 14 февраля мы начали строить склад. Не тот, который считает коробки, а тот, который считает время.

Поставки: продавать то, что ещё едет

В обычном магазине нельзя продать то, чего нет на полке. В цветочном без этого никак: люди заказывают к празднику, к свадьбе, к выходным, и нужные цветы к этой дате часто ещё едут от поставщика. Если витрина показывает «нет в наличии», магазин отказывает клиенту, которому на самом деле мог бы всё собрать.

Решение — плановая накладная. Это документ, который заводится один раз: что, сколько и какого числа придёт от поставщика. С этого момента программа предлагает эти цветы на витрине на те даты, к которым они будут, и считает доступность на каждый день вперёд: что лежит сейчас, что доживёт, что приедет по плану и что уже зарезервировано другими заказами.

Здесь есть тонкость, без которой всё разваливается. Заказ на субботу закрепляется за пятничной поставкой, а не за тем, что лежит на полке во вторник, даже если нужный цветок сейчас есть. Текущий остаток остаётся для тех, кто покупает прямо сейчас. Так заказ на сегодня и заказ на субботу не претендуют на один и тот же стебель.

Когда поставка приходит, магазин делает приёмку: вносит фактическое количество по каждой позиции. Если привезли меньше, разница по заказам становится дефицитом: в каждом таком заказе видно, каких стеблей не хватает, и магазин решает заранее — докупить, предложить замену или перенести доставку. Если поставку не приняли к концу дня приёма заказов, программа перестаёт считать её запасом: накладная помечается как просроченная, а товары без остатка уходят с витрины, пока поставку не примут или не перенесут. Без программы об этом узнают в момент сборки.

Побочный эффект: не нужно забивать холодильник «на всякий случай». Магазин продаёт под регулярные поставки, а не под запас, и в товаре заморожено меньше денег.

Как это было в STEMSBOT. Продажа из будущей поставки появилась из ситуации «клиент хочет букет к субботе, сегодня вторник, цветов нет, но в пятницу они придут». Теперь такой заказ оформляется на витрине сам, без переписки с магазином.

Букет — это состав, а не товар

Для обычной системы букет — один товар с одним остатком. И здесь она начинает врать, потому что букет — это композиция из живых стеблей: три пиона, две маттиолы, веточка эвкалипта. У каждого свой остаток, своя цена и свой срок.

Правильный учёт хранит букет как рецепт — список стеблей с количеством. Доступность букета на дату считается от остатков его стеблей: хватает всех компонентов, с учётом плановых поставок, — букет можно заказать, даже если на полке его ещё нет. Продали букет — программа списывает не «минус один букет», а минус три пиона, минус две маттиолы, минус эвкалипт, каждый из своего остатка.

Себестоимость букета тогда не нужно сводить в столбик. Она складывается из закупочной цены стеблей по той накладной, из которой они забронированы под заказ, плюс упаковка. Цена продажи по умолчанию складывается из цен стеблей, а если букет нужно продать быстрее, её ставят руками.

Отдельная жизнь у собранных букетов — тех, что уже стоят готовыми на витрине. Их стебли зарезервированы в момент сборки, и обратно на склад они попадают только через разборку: свежие стебли возвращаются, увядшие уходят в порчу. Срок жизни собранного букета по умолчанию равен остатку срока самого недолговечного стебля в нём на день сборки, при необходимости его меняют.

Клиент просит «замените пионы на розы» или «добавьте ещё три тюльпана»? Состав правится прямо в заказе: цена пересчиталась, добавленные стебли забронировались, и сразу видно, что свободно, а что занято.

Как это было в STEMSBOT. К букетам мы подошли позже всего — охапки считать проще. И провозились с ними дольше, чем с чем угодно ещё, пока не стали считать каждый стебель в каждом букете.

Списание: откуда берутся потери и как их увидеть

Списание — главная статья потерь цветочного магазина, и точную долю без учёта не знает почти никто. В STEMSBOT до учёта по партиям списание держалось около 20 % от закупки, после — 3,5 %. Своя цифра у магазина появляется только тогда, когда каждое списание записано с причиной и в деньгах.

Откуда берутся потери:

  • Увядание. Партию не продали до конца срока жизни. Самая незаметная причина: цветы просто «кончились».
  • Повреждение. Сломали при сборке, помяли при доставке, подморозили в холодильнике.
  • Пересорт. Поставщик привёз не тот сорт или не то качество, либо в учёте один сорт записали как другой. Остатки расходятся, и разницу в итоге списывают.
  • Закупка «на всякий случай». Холодильник, забитый под возможный спрос, — это списание каждую неделю.
  • Разборка букетов. Собрали, не продали, разобрали: часть стеблей возвращается, часть уходит в порчу.

Чтобы потери стало видно, отчёт о списании должен отвечать на четыре вопроса: сколько списали в деньгах по закупочной цене, по каким причинам, по каким сортам и из каких поставок. Каждая строка списания должна вести к источнику — партии, заказу или букету. Тогда понятно, что делать: сократить закупку одного сорта, сменить поставщика или изменить рецепт букета.

Подробнее: Списание цветов в магазине: причины, нормальный процент и учёт по партиям

Чек-лист: что должна уметь программа учёта цветов

Неважно, как продукт называет себя — программа учёта, CRM для цветочного магазина или складской модуль. Проверить стоит десять вещей:

  1. Вести остаток по партиям: дата прихода и срок жизни у каждого сорта.
  2. Сама убирать истёкшие партии с витрины и показывать их к списанию.
  3. Считать доступность каждого сорта на каждую дату вперёд, а не только «сейчас».
  4. Принимать плановую накладную и продавать из будущей поставки, не трогая текущий остаток.
  5. Делать приёмку по факту и показывать дефицит по конкретным заказам.
  6. Хранить букет как рецепт и списывать его по стеблям.
  7. Считать себестоимость букета из закупочных цен стеблей и упаковки.
  8. Учитывать собранные букеты со своим сроком и разборкой.
  9. Записывать каждое списание с причиной и в деньгах.
  10. Показывать маржу по заказу и по товару с учётом потерь, доставки и упаковки.

Подробнее: Себестоимость букета: расчёт по шагам, формула и почему считать нужно по партиям

Как это устроено в NovaFlo

NovaFlo — программа для цветочного магазина, которая выросла из одного реального магазина: витрина в Telegram, MAX и на сайте, а под ней склад, который считает время. У каждого сорта есть срок жизни в днях и дата последней приёмки; когда срок выходит, сорт сам перестаёт продаваться. Плановая накладная — отдельный запас на дату: под неё бронируются заказы на будущее, а при приёмке бронь переходит на склад. Если поставку не приняли к концу приёма заказов на её день, накладная помечается как просроченная и запасом больше не считается.

Букет хранится как рецепт и списывается по стеблям; собранные экземпляры живут своим сроком. Списание — движение в журнале склада с причиной и в деньгах по закупочной цене. В аналитике по каждому товару видны выручка, себестоимость, потери, доставка, бонусы, упаковка и маржа. Отдельные партии одного сорта с разными датами на полке программа не ведёт: срок и цена считаются по последней принятой накладной.

Посмотреть, как выглядит программа изнутри, можно на главной. Если хотите посчитать для своего магазина, что перенести из таблиц и с чего начать, напишите нам.

Вопросы и ответы

Как вести учёт в цветочном магазине, если точка одна и товара немного?

Минимум — записывать каждую партию с датой прихода и сроком жизни, а не общий остаток по сорту. Уже это показывает, что продавать в первую очередь и что ушло в списание. Когда появляются букеты под заказ и продажи к дате, тетрадь перестаёт справляться — нужна программа.

Сколько дней живёт партия и кто задаёт срок?

Срок задаёт магазин на каждый сорт, исходя из своего опыта и поставщика: у одних сортов это несколько дней, у других — две-три недели. Программа считает окно от даты прихода и сама убирает партию с витрины, когда оно закрывается.

Нужно ли считать себестоимость букета вручную?

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

Как учитывать списание цветов в магазине?

Каждое списание — с причиной (увядание, повреждение, пересорт, разборка букета) и в деньгах по закупочной цене. Отчёт должен группировать потери по причинам, сортам и поставкам: тогда видно, где именно теряются деньги, а не только сколько.

Можно ли продавать цветы, которых ещё нет на складе?

Да, через плановую накладную: магазин заводит, что и когда придёт, и витрина предлагает эти цветы на даты после поставки. Заказ закрепляется за поставкой, а не за текущим остатком, поэтому покупатели «на сейчас» и «на субботу» не конкурируют за один стебель.

Посчитаем, сколько магазин теряет на списании сейчас и что изменится с учётом по партиям.

Посчитать для своего магазина
Николай Мельников, основатель NovaFlo

Николай Мельников — основатель NovaFlo, до этого 15+ лет в международных IT-проектах (транспорт, минеральные удобрения); первый магазин на NovaFlo — STEMSBOT в Казани, с января 2026.