MAATRIX / Блог / Салон красоты: склад косметики и списание по процедурам на одном небольшом сервере

Салон красоты: склад косметики и списание по процедурам на одном небольшом сервере

MAATRIX

Мастер сделал окрашивание, ушёл на следующего клиента, а сколько граммов краски и окислителя реально ушло на голову — никто не зафиксировал. Через полгода администратор смотрит на остатки склада и не понимает, почему по документам краски должно быть на треть больше, чем есть на полке. Это не воровство и не обязательно халатность — это естественный результат того, что расход косметики никак не привязан к конкретной оказанной услуге. Ниже — как небольшой салон красоты может закрыть этот разрыв: без дорогой ERP-системы, на одном скромном сервере, который обходится дешевле, чем кажется.

Почему списание "на глаз" — это не мелочь, а дыра в марже

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

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

Что происходит, когда себестоимость услуги никто толком не считает

Самое дорогое следствие отсутствия учёта — не потерянные граммы краски, а неправильное ценообразование. Если вы не знаете точную себестоимость конкретной услуги, вы устанавливаете цену либо интуитивно («у конкурентов через дорогу так же»), либо по устаревшему расчёту, сделанному один раз при открытии и не пересмотренному, когда поставщик косметики поднял цены на 15%. Обе стратегии рискованны: можно годами предлагать услугу, которая формально прибыльна, а по факту едва окупает материалы и работу мастера, — и узнать об этом только когда общая рентабельность салона начнёт проседать без очевидной причины.

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

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Тетрадь и Excel: почему это перестаёт работать уже на пяти мастерах

Учёт склада «по факту закупки» — записали, сколько купили, и раз в месяц прикинули остаток на глаз — работает, пока в салоне один-два мастера и небольшой ассортимент. На пяти-шести мастерах и полусотне SKU (разные тона краски, окислители разной концентрации, средства для разных типов волос и кожи) схема ломается по тем же причинам, что и в любом малом бизнесе без системы: Excel-файл на общем диске не выдерживает, когда администратор и старший мастер одновременно вносят в него закупку и списание — кто-то теряет правки. У бумажного журнала расхода нет истории: если запись стёрли или переправили, разобраться, кто и когда это сделал, невозможно. А главное — ни тетрадь, ни таблица физически не связывают расход материала с конкретной услугой и конкретным мастером, поэтому даже при добросовестном заполнении данные остаются описательными, а не расчётными: вы видите, что краски стало меньше, но не видите, на какие именно процедуры она ушла.

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

Что должна делать система на самом деле

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

  • каталог материалов с единицами измерения в граммах и миллилитрах, а не «упаковках» — краска расходуется частями тюбика, а не целыми штуками;
  • техкарта (рецептура) на каждую услугу — нормативный расход материалов на одну процедуру: сколько граммов краски такого-то тона, сколько миллилитров окислителя, сколько состава для ламинирования;
  • автоматическое списание расхода со склада в момент, когда услуга отмечена оказанной, а не по памяти в конце дня;
  • привязка списания к конкретному мастеру и клиенту — это и контроль расхода, и материал для разбора спорных ситуаций;
  • сигнал о низком остатке конкретного тона или объёма, пока он не закончился в разгар рабочего дня;
  • отчёт «плановый расход по техкартам против фактического расхода по складу» — именно разница между ними и показывает реальные потери;
  • расчёт фактической себестоимости услуги = материалы по техкарте + доля времени мастера + доля постоянных расходов, а не только цена флакона.

Ни один из этих пунктов не требует тяжёлой отраслевой CRM для салонов красоты — это обычная реляционная база с несколькими связанными таблицами и простым интерфейсом поверх неё, и для салона на 5-10 мастеров такая система разворачивается на своём сервере за один-два рабочих дня.

Свой сервер: как это устроено на практике

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

Путь первый, быстрее в запуске — no-code база данных с готовым веб-интерфейсом, вроде Baserow или NocoDB. Вы создаёте три связанные таблицы: услуги (с техкартой — какие материалы и в каком количестве расходуются на процедуру), материалы (остаток, единица измерения, минимальный порог) и журнал оказанных услуг (кто, кому, когда, какая услуга). При добавлении новой строки в журнал автоматизация (в Baserow и NocoDB есть встроенные правила и вебхуки) вычитает нормативный расход из остатков материалов. Это не полноценная бухгалтерия склада, но для салона с понятным списком услуг и стабильными техкартами закрывает основную задачу — видеть плановое списание и реальный остаток в одном месте. Установка описана в гайде по Baserow на Ubuntu 24.04.

materials:   id, name, unit(g/ml), stock_qty, min_threshold
services:    id, name, price
service_recipe: id, service_id, material_id, qty_per_service
service_log: id, service_id, master_id, client_id, date, note

Путь второй, более полный — развернуть на своём сервере Odoo с модулями «Склад» (Inventory) и «Производство» (Manufacturing). В Odoo есть механизм спецификаций (Bill of Materials), изначально сделанный для производства физических товаров, но он же хорошо ложится на логику «услуга расходует набор материалов по нормативу»: заводите услугу как позицию, привязываете к ней BOM с материалами и количествами, и при регистрации оказанной услуги через модуль продаж или кассы (Point of Sale) система списывает материалы со склада автоматически, без ручного ввода. Честно предупредим о нюансе: из коробки BOM в Odoo рассчитан на производство товара, а не на прямую продажу услуги с автосписанием при кассовой операции, поэтому связку «услуга → списание по BOM при продаже» обычно приходится донастраивать — либо через штатные автоматизации Odoo, либо небольшим скриптом на стороне. Это на порядок функциональнее no-code таблиц (полноценные отчёты, история движения по каждому материалу, многоскладской учёт, если у вас несколько точек), но и требует больше времени на настройку и понимания логики системы. Установка разобрана в статье про Odoo на VPS.

Для салона с одной точкой и понятным списком из 15-25 услуг обычно достаточно первого пути. Второй имеет смысл, если у вас несколько точек, розничная продажа косметики клиентам вдобавок к услугам, или вы уже используете Odoo для бухгалтерии и хотите свести всё в одном месте.

Сколько сервера реально нужно небольшому салону

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

Для варианта с Baserow или NocoDB хватает бюджетного VPS: 1-2 виртуальных ядра, 2 ГБ оперативной памяти, 20-40 ГБ диска — с запасом даже на несколько лет вперёд и фотографии до-после процедур в карточках клиентов, если вы захотите их добавить. Для Odoo требования чуть выше из-за более тяжёлого стека (Python, PostgreSQL, сам фреймворк): ориентир и разбор конфигурации есть в статье сколько RAM нужно для Odoo, но для одного небольшого салона это по-прежнему компактная конфигурация, а не что-то близкое к серверу для тяжёлой нагрузки.

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

Экономика: точная себестоимость против прикидки на глаз

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

Отдельно стоит экономика самого решения. Облачные CRM для салонов красоты со складским модулем нередко берут плату за каждое дополнительное рабочее место или за расширенные отчёты по себестоимости — это отдельный тариф поверх базовой подписки на запись клиентов. Свой сервер с Baserow, NocoDB или Odoo снимает эту зависимость: вы платите фиксированную стоимость аренды, которая не растёт от числа мастеров, заходящих в систему, и не привязана к тому, включён ли складской учёт в ваш тарифный план или это платное расширение. А для небольшого салона, как показано выше, даже эта фиксированная стоимость — это цена скромного VPS, а не бюджет на выделенный сервер.

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

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Сколько времени уходит на то, чтобы завести техкарты по всем услугам?

Для салона на 15-25 услуг обычно один-два рабочих дня — если у вас уже есть внутренние стандарты расхода материалов у мастеров (даже неформальные, «на глаз, но одинаково»), формализовать их в цифры быстрее, чем кажется. Если стандартов расхода никогда не было, честнее сначала неделю-две последить за реальным расходом на типовых процедурах, а потом зафиксировать техкарту по факту.

Что делать, если один мастер тратит заметно больше материала, чем предполагает техкарта?

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

Можно ли подключить эту систему к онлайн-записи клиентов?

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

Нужен ли программист для обслуживания такой системы?

Для варианта на Baserow или NocoDB — нет, администратор салона осваивает интерфейс за пару часов и дальше сам добавляет новые услуги и материалы. Для Odoo с автоматическим списанием по BOM при продаже первичная настройка обычно требует человека с техническим бэкграундом, а дальнейшая рутинная работа (завести новую услугу, обновить рецептуру) снова доступна администратору без программирования.

А если у нас несколько точек салона?

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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →