Зарплата

Источник требований

BR 1.4.1, раздел 5

Референс

YUMA POS: _reference/yumapos/roles.md (вкладка “Зарплата”), _reference/yumapos/how-to-add-new-staff-member.md (формула по сотруднику)

Расчёт и начисление заработной платы на основе отработанных часов. Только начисление — без НДФЛ, взносов и вычетов (бухгалтерия ведётся в 1С).


Формулы начисления

Три типа формул

ТипФормула расчётаПример
Почасовая (hourly)ставка × отработанные часы500 ₽/час × 160ч = 80 000 ₽
Фиксированный оклад (fixed)оклад за месяц60 000 ₽/мес (независимо от часов)
Смешанная (mixed)оклад + ставка × часы сверх нормы50 000 ₽ + 600 ₽/час × часы сверх 160ч

Поля формулы

ПолеТипОбязательностьОписание
ТипenumОбязательноhourly / fixed / mixed
Почасовая ставкаdecimalДля hourly и mixedРублей в час
Месячный окладdecimalДля fixed и mixedРублей в месяц
Ставка за переработкуdecimalДля mixedРублей в час сверх нормы
Норма часовintegerДля mixedЧасов в месяц (по умолчанию 160)

Формула по роли

Каждой роли-объекту (см. Роли) можно задать формулу начисления по умолчанию. Все сотрудники с этой ролью получают зарплату по этой формуле, если не задана индивидуальная.

(Обновлено в BR 1.4.3 — формула теперь привязана к роли-объекту, а не к enum-значению. Одна формула на всю роль в рамках франшизы.)

Deferred: формулы по ТТ

Исходная формулировка BR 1.4.1 предполагала различие ставок по ТТ (роль × ТТ → formula). Отложено до отдельной BR — см. Роли § Deferred.

Иерархия применения

Индивидуальная формула сотрудника (если задана)
    ↓ (если нет)
Формула роли сотрудника (если задана)
    ↓ (если нет — и если у сотрудника несколько ролей с формулами)
Формула первой назначенной роли с заданной формулой
    ↓ (если нет ни одной формулы)
Нет формулы → ведомость не рассчитывается для этого сотрудника

Индивидуальная формула

Для конкретного сотрудника можно задать свою формулу, которая перекрывает ролевую. Настраивается на вкладке “Роли и магазины” в профиле сотрудника.


Платёжные ведомости (Payroll)

Новая страница: Сотрудники → Платёжные ведомости

Фильтры

ФильтрОбязательностьПо умолчанию
ТТНеобязательныйВсе ТТ
Период (месяц)ОбязательныйТекущий месяц

Таблица ведомости

По каждому сотруднику за период:

КолонкаОписание
СотрудникФИО
РольРоль сотрудника
ТТТорговая точка
Плановые часыЧасов по расписанию
Фактические часыЧасов отработано (с учётом корректировок)
ПерерывыСуммарные перерывы за период
Чистое времяФакт − перерывы ± корректировки
ФормулаТип формулы (hourly/fixed/mixed) и ставка
НачисленоРассчитанная сумма
СтатусРассчитано / Подтверждено / Выплачено

Статусы ведомости

stateDiagram-v2
    [*] --> Рассчитано: POST /payroll/calculate
    Рассчитано --> Подтверждено: POST /payroll/{id}/confirm
    Подтверждено --> Выплачено: POST /payroll/{id}/mark-paid
    Рассчитано --> Рассчитано: Пересчёт (при изменении данных)
СтатусОписание
Рассчитано (calculated)Система рассчитала начисления. Можно пересчитать.
Подтверждено (confirmed)Ответственный подтвердил суммы. Пересчёт больше недоступен.
Выплачено (paid)Деньги выплачены. Финальный статус.

Снимок формулы

При расчёте ведомости текущая формула сохраняется как snapshot (снимок). Это гарантирует, что исторические ведомости остаются корректными даже если формула позже изменится.

CSV-экспорт

Кнопка “Экспорт в CSV” — выгрузка ведомости для передачи бухгалтеру:

  • Формат: UTF-8 с BOM (для корректного открытия в Excel)
  • Колонки: ФИО, Роль, ТТ, Часы, Ставка, Начислено, Статус

Ролевая матрица

(Обновлено в BR 1.4.4 — колонки scope вместо enum, permission для обычных сотрудников)

ДействиеВладелец франшизыВладелец партнёраОбычный сотрудник (permission)
Настройка формул по ролямДа (все ТТ)Да (свои ТТ)payroll.edit + scope
Настройка индивидуальных формулДаДа (свои)payroll.edit + scope
Просмотр ведомостейДа (все ТТ)Да (свои ТТ)payroll.read + scope
Расчёт ведомостейДаДа (свои)payroll.edit + scope
Подтверждение ведомостейДаДа (свои)payroll.edit + scope
Отметка “Выплачено”ДаДа (свои)payroll.edit + scope
CSV-экспортДаДа (свои)payroll.read + scope

Связи с другими модулями