krona-staff/docs/PAYROLL-SCHEMES-CATALOGUE.md
Ochenstarik 3464998168
Some checks are pending
ci / verify (push) Waiting to run
feat: add secure attendance portal and payroll foundation
2026-09-24 15:59:38 +07:00

16 KiB
Raw Permalink Blame History

Справочник схем расчёта переменной части зарплаты

Собран по практике российского малого и среднего бизнеса (вендорские материалы iiko, r_keeper, СБИС, 1С, YCLIENTS, отраслевые публикации, вакансии). Назначение — состав блоков конструктора и отраслевые пресеты. Конкретные проценты приведены как ориентир рынка, а не как норматив: в пресетах они лишь значения по умолчанию.

1. Обозначения

R — выручка подразделения, R_personal — личные продажи, H — часы (в том числе H_night, H_over, H_holiday), N — количество единиц, P — план, F — фонд, n — число участников, w — вес участника, G — гарантия, pct(x) — процент как функция показателя.

2. Отрасли

Общепит

Роль Формула Ориентир рынка
Официант ставка_смены + R_personal × pct + N_позиций_категории × ставка + премия за средний чек процент 1,3–5% от личного оборота; допродажа десерта 40 ₽/шт
Официант, порог if(R_personal ≥ порог, R_personal × pct, 0) порог включения процента, например 50 000 ₽
Повар (командно) F × доля_по_времени + ставка_часа × H + надбавка, F = R × pct фонд 10–11% от выручки
Повар (личный процент) ставка_часа × H + R × pct 1–2%, в том числе от конкретной станции
Бармен ставка_смены + R_бара × pct + доля чаевых 2–5%; доля в общем котле 20%
Курьер ресторана ставка_часа × H_простоя + Σ(за заказ) × k_спроса 50–110 ₽ за доставку либо 3% от заказа
Администратор max(G, R × pct + ставка_часа × H) pct 2,5–8%, G около 3000 ₽ за смену

Чаевые как отдельный фонд: официанты 75% поровну, бармен 20%, посудомойка 5%; банкет — кухня 40%, зал 50%, техперсонал 10%. Юридически чаевые от гостя — дарение, не оплата труда.

Ориентир по ФОТ: 18–27% от товарооборота, около 32% — операционный ноль.

Розница и продажи

Схема Формула
Ставка по достигнутому уровню оклад + R_personal × tier(R_personal / P, [<80% → 1,75%; <100% → 2,0%; ≥100% → 2,25%])
Прогрессивная (послойная) оклад + progressive(R_personal, [до 80% плана → 3%; 80–100% → 5%; 100–120% → 7%; выше → 10%])
Кассир оклад + R_точки × pct (процент от общих продаж смены)
Старший смены оклад × коэффициент + R_смены × pct + премия KPI

Разница между двумя первыми схемами на плане 105% — десятки процентов премии; владельцы их регулярно путают. В конструкторе это два разных блока: «шкала» и «прогрессивная шкала».

Услуги с мастерами

Схема Формула Ориентир
Чистый процент R_personal × pct(категория) 30–35% начинающий, 35–45% средний, 45–55% топ
Оклад плюс процент на превышение оклад + max(0, R_personal − порог) × pct оклад 25 000 ₽, порог 60 000 ₽, 40% сверх
Разный процент по источнику клиента сумма(свои) × 50% + сумма(салона) × 35% повышение за повторные визиты
Автосервис, нормо-часы Σ нормо-часов × ставка_разряда 140 / 180 / 220 ₽ за нормо-час
Автосервис, превышение плана оклад + max(0, н-ч − норма) × ставка норма 80 н-ч, 350 ₽ сверх
Мастер-приёмщик max(G, R_приёмки × tier(план) + бонусы) × k_CSI шкала 1–2,5%, множитель качества 1,05 / 1,0 / 0,9
Клининг, бригада сумма_заказа × pct × (часы × КТУ) / Σ(часы × КТУ) фонд 30–40% от заказа

Доставка и логистика

Роль Формула
Пеший курьер Σ_заказ(база + max(0, км − порог) × ставка_км + доплата_вес) × k_спроса + чаевые
Авто-курьер за забор + за выдачу × N + ставка_км × км + ставка_кг × кг
Водитель ставка_км × км × k_рефрижератор + суточные × дни + надбавка_стажа + премия за безаварийность + доля экономии топлива
Сборщик ставка_часа × H + max(0, N_строк − норма × H) × ставка_единицы

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

Склад и производство

расценка = тарифная_ставка / норма_выработки
прямая:        расценка × N
прогрессивная: расценка × min(N, норма) + расценка × k × max(0, N − норма),  k = 1,5–2
косвенная:     тариф_вспомогательного × средний_процент_выполнения_норм бригады
аккордная:     фиксированная сумма за объём, затем делится по КТУ и часам

Бригадное распределение, самый практичный вариант (гарантирует тариф каждому):

доля_i = тариф_i × часы_i + (F − Σ тариф × часы) × (КТУ_i × часы_i) / Σ(КТУ × часы)

КТУ: база 1,0, диапазон в источниках 0–2; утверждается протоколом бригады; фонд не увеличивает, только перераспределяет.

B2B-продажи

ЗП = твёрдый_оклад + мягкий_оклад × if(Σ(KPI_i × вес_i) ≥ 0,8, Σ(KPI_i × вес_i), 0)
   + progressive(оплаченная_маржа_за_месяц, [<80% плана → 2%; ≤100% → 4%; ≤120% → 6%; выше → 8%])

Соотношение фикс к переменной: 30–50% на 50–70%. База процента — оплаченная маржа, а не выручка: процент от выручки поощряет скидки. Порог отсечки KPI около 80% — отраслевой стандарт. Рекомендуется 3–5 метрик, на которые сотрудник реально влияет.

Медицина, фитнес, образование

Роль Формула
Врач max(МРОТ_пропорционально, оклад + Σ(услуга × pct(тип))); ФОТ врачей 25–35% оборота клиники
Стоматолог врачу 40–50% выручки по его услугам
Администратор клиники оклад + N_дошедших × ставка + if(конверсия_явки ≥ 70%, командная премия, 0)
Персональный тренер Σ(тренировка × pct(количество тренировок)), 30–70%, типично 35–50%
Групповой тренер ставка_занятия × N либо Σ(ставка + ставка_участника × N_участников)
Преподаватель Σ(ставка_академчаса × k_группы × k_квалификации) плюс надбавка за удержание ученика

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

Охрана, диспетчеры, линейный персонал

ЗП = ставка_смены × S
   + ставка_часа × H_night × 20%
   + ставка_часа × (min(H_over, 2) × 0,5 + max(0, H_over − 2) × 1,0)
   + ставка_часа × H_holiday
   + премия за отсутствие нарушений

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

3. Что из этого поддерживает движок

Реализовано в src/domain/payroll/rule.ts: процент от показателя, ставка за час и за смену, ставка за единицу, агрегаты по позициям с фильтрами (количество, сумма, среднее, число уникальных значений), поштучная оценка строки по её атрибутам, шкала и прогрессивная шкала, фонд с делением по времени присутствия и весами, условия с И/ИЛИ, гарантия и потолок, округление, типизированные часы (ночные, сверхурочные, праздничные), окно агрегации шире дня (неделя, декада, месяц, период).

Пресеты в src/domain/payroll/presets.ts: общепит (фонд, личный процент, официант с допродажами, администратор с гарантией, почасовая, премия за порог выручки), розница и продажи (две шкалы), доставка (два варианта), услуги с мастерами, сменная работа с ночными и сверхурочными, B2B с месячной прогрессией, простая почасовая.

Не реализовано и вынесено в следующий шаг:

  1. Блок вычета. Удержание должно быть отдельной сущностью с основанием, лимитом и следом в аудите, а не отрицательным слагаемым формулы — см. правовые ограничения.
  2. Фонд сверх тарифа как готовый блок (сейчас выражается комбинацией).
  3. Линтер правил: предупреждение о начислении ниже МРОТ пропорционально отработанному, об отсутствии оплаты ночных и сверхурочных, об отрицательных узлах с дисциплинарным основанием.

4. Чего рынок не подтверждает

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

  • многоступенчатая шкала процента мастера салона (практика — плоский процент по категории либо порог на превышение);
  • сдельщина «за строку» у сборщиков заказов (доминирует почасовая с бонусом за выработку);
  • конкретная прогрессия процента персонального тренера по порогам числа тренировок (структура уровней подтверждается, ставки — нет).