Все статьи

30 августа 2026 · 20 мин чтения

Учёт расходных материалов в салоне красоты: нормы и списание

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

Складской учёт можно начать без пересчёта всего салона

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

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

Номенклатура: позиция, назначение, единица

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

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

Складом работает филиал

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

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

Норма расхода задаётся на услуге, а не на паре «услуга + мастер»

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

Исключения для конкретного сотрудника есть, но живут отдельным блоком, свёрнутым, пока он пуст. Сначала выбирается сотрудник, потом его строки — так исключение и читается: «у Анны иначе». Переопределение полностью заменяет базовую строку по той же позиции, в том числе значением 0 — «не использует». Ноль показывается явной пометкой, а не пустым полем: «не использует» и «не заполнили» — разные факты.

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

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

Списание материалов идёт от факта визита, а не от нажатой кнопки

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

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

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

Фактический расход правит тот, кто оказывал услугу

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

Ограничения у этой правки узкие и осознанные:

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

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

Складские документы: черновик → проведён, исправление только сторно

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

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

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

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

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

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

Начальные остатки и загрузка файлом

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

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

Инвентаризация в салоне: черновик, два снимка и пустая ячейка вместо нуля

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

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

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

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

Партии и сроки годности: включаются на позицию, а не на весь склад

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

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

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

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

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

Себестоимость услуги: материалы на одно оказание и маржа

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

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

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

Кто перерасходует: план/факт и отчёт по сотрудникам

Отчёты строятся по фактическим движениям расхода и читают снимки в строках, а не живые справочники: правка нормы или себестоимости сегодня не переписывает перерасход прошлого месяца.

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

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

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

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

Продажа товара клиенту и цена на полке

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

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

У позиции есть цена продажи за упаковку — она предзаполняет строку продажи и печатается на ценнике. Ценники печатаются листом PDF на выбранные позиции: название, цена, фасовка, артикул и продавец с филиалом. Себестоимость на ценник не попадает никогда — он уходит в руки покупателю.

Расходная часть: сколько съели материалы и что такое валовая маржа

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

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

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

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

Пороги остатков, отчёт «Что заказать» и уведомления

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

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

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

Кто видит склад

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

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

Склад в телефоне: то же самое, что в вебе

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

Сканер штрихкодов в телефоне есть: камера читает код в карточке позиции, в поиске номенклатуры и прямо в продаже — отсканировал товар, строка добавилась с ценой из карточки. В вебе сканер работает и так: USB-сканер печатает код в поле поиска как клавиатура.

Чего в модуле нет намеренно

Отсутствующая функция честнее плохо работающей, поэтому список закрытых решений стоит знать заранее:

  • Партионной оценки запаса. Партии и сроки годности есть (см. раздел выше), но себестоимость остаётся средней по позиции: партия режет количество и срок, а не деньги. Отчёта «серия A стоила 10, серия B — 14» нет — этого не просит ни одна сфера, а стоит он переписывания трёх отчётов разом.
  • Нескольких складов внутри одного филиала. Складом работает филиал — «две кладовки в одном помещении» не тот сценарий, ради которого стоит добавлять селектор склада в каждую форму.
  • Нескольких складов внутри одного филиала и взаиморасчётов с поставщиками. Складом работает филиал; приход хранит поставщика и номер накладной, но денежных отношений с ним модуль не ведёт.
  • Закрытого учётного периода и ретро-окон прав. Прошлое и так не переписывается: проведённый документ неизменяем, а исправление — сторно днём исправления.
  • Раздела «прибыль». Валовая маржа в финансовом отчёте есть — выручка минус материалы и себестоимость проданного, — но прибылью она не называется и ею не является: зарплата, аренда, налоги и подписки в неё не входят, и подпись об этом стоит прямо в отчёте.

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

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

С чего начать

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

Смысл здесь не в том, чтобы «вести склад», а в том, чтобы на три вопроса был ответ в системе, а не в чьей-то памяти: сколько материалов съедает одна услуга, правильно ли назначена её цена и куда делись те самые 12 флаконов.

Попробуйте SetNow для своего бизнеса

Настройте онлайн-запись за один день и начните принимать клиентов 24/7. Регистрация бесплатная.