| Ученик | Статус | ||
|---|---|---|---|
|
{{ initials(d.surname, d.first_name) }}
{{ d.surname }} {{ d.first_name }} {{ d.patronymic }} ДР {{ formatDate(d.birth_date) }} / {{ fmtYearsFull(calcAge(d.birth_date)) }} |
{{ statusLabel(d.status) }} |
Занятия
Контакты
{{ d.has_debt ? 'Долг' : 'Оплата' }}
|
|
| {{ dancerSearch ? 'Ничего не найдено' : 'Нет данных' }} | |||
| Название | Филиал | Уровень | Ученики | Педагог / Упр. | Взнос | Статус | |
|---|---|---|---|---|---|---|---|
|
{{ g.name || g.direction || '—' }}
{{ g.direction }}
|
{{ g.institution_name || '—' }}
{{ g.institution_address }}
|
{{ levelLabel(g.level) }} | {{ g.students_count||0 }}/{{ g.max_students }} {{ g.students_count||0 }} |
Пед.:{{ g.teacher_name }}
Педагог не назначен
Упр.:{{ g.manager_name }}
Управляющий не назначен
|
{{ g.subscription_price ? formatNum(g.subscription_price)+'₽' : '—' }}
{{ g.lessons_per_month }} зан./мес
|
{{ g.status==='active'?'Активна':g.status==='archive'?'Архив':'Закрыта' }} |
|
| {{ groupSearch ? 'Ничего не найдено' : 'Нет данных' }} | |||||||
| Группа | Филиал | Дата | Педагог | Посещаемость |
|---|---|---|---|---|
| {{ l.group_name || '—' }} | {{ l.institution_name || '—' }} | {{ formatDate(l.lesson_date) }} {{ (l.time_start||'').slice(0,5) }} | {{ l.teacher_name || 'без педагога' }} | {{ l.present_count||0 }} / {{ l.total_students||0 }} 🤒 {{ l.sick_count }} |
| Нет занятий за выбранный период | ||||
| Ученик | К оплате | Оплачено | Статус | Действия |
|---|---|---|---|---|
| {{ r.surname }} {{ r.first_name }} | ₽{{ formatNum(r.expected_amount) }}({{ r.lessons_charged }}/{{ r.lessons_per_month }} зан.) | ₽{{ formatNum(r.amount) }} | {{ payStatusLabel(r.status) }} |
{{ r.note }}
|
| В группе нет учеников | ||||
| Группа | К оплате | Оплачено | Статус | Действия |
|---|---|---|---|---|
| {{ r.group_name }} | ₽{{ formatNum(r.expected_amount) }}({{ r.lessons_charged }}/{{ r.lessons_per_month }} зан.) | ₽{{ formatNum(r.amount) }} | {{ payStatusLabel(r.status) }} |
{{ r.note }}
|
| Танцор не состоит ни в одной группе | ||||
| Ученик | Группа | Период | Сумма | Статус | Дата | |
|---|---|---|---|---|---|---|
| {{ p.dancer_name }} | {{ p.group_name }} | {{ p.period }} | ₽{{ formatNum(p.amount) }} | {{ payStatusLabel(p.status) }} | {{ p.paid_at ? formatDate(p.paid_at) : '—' }} | |
| Нет данных | ||||||
{{ showPinModal.pin.address || '—' }} · {{ showPinModal.pin.corpus }}
{{ branchEffectiveCoords(showPinModal.pin)[0].toFixed(6) }}, {{ branchEffectiveCoords(showPinModal.pin)[1].toFixed(6) }}
Координаты ещё не заданы
{{ showPinModal.geocodeError }}
Кликните на карте, чтобы поставить метку в нужном месте. Можно перетаскивать уже поставленную метку.
{{ payAction.mode==='partial' ? 'Частичная оплата' : payAction.mode==='edit' ? 'Изменить оплату' : 'Перерасчёт' }}
{{ payAction.dancerName }} · {{ payAction.groupName }}
Осталось к оплате: ₽{{ formatNum(payAction.currentExpected) }}
К оплате за период: ₽{{ formatNum(payAction.expectedAmount) }}
| Педагог | Стиль | Стаж | Группы | Медиа | Доступ | Статус | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{{ initials(t.surname, t.first_name) }}
{{ t.surname }} {{ t.first_name }}
{{ t.patronymic }}
{{ t.preferred_okrug_code }} · {{ t.preferred_rayon_name }}
{{ flagLabel(f) }}
|
{{ t.style || '—' }} | {{ t.experience_yrs ? fmtYears(t.experience_yrs) : '—' }} |
{{ gd.group }}
({{ gd.institution || '—' }})
|
|
{{ t.staff_status==='active' ? 'Есть доступ' : 'Заблокирован' }} Нет доступа |
{{ teacherStatusLabel(t.status) }}
В резерве
|
|
||||||
| Нет данных | |||||||||||||
| Номер | Ученик | Дата | СОД | Подписан | Статус | |
|---|---|---|---|---|---|---|
| {{ c.number }} | {{ c.dancer_name || '—' }} | {{ formatDate(c.signed_at) }} | {{ contractStatusLabel(c.status) }} | |||
| Нет данных | ||||||
| Номер | Название | Тип | Контрагент | Сумма | Ответственный | Согласование | Статус | |
|---|---|---|---|---|---|---|---|---|
| {{ c.number }} | {{ c.title }} | {{ registryTypeLabel(c.contract_type) }} | {{ c.counterparty_name || '—' }} | {{ c.amount ? Number(c.amount).toLocaleString('ru-RU') + ' ' + c.currency : '—' }} | {{ c.responsible_name || '—' }} | {{ c.approval_steps ? c.approval_done + '/' + c.approval_steps : '—' }} | {{ registryStatusLabel(c.status) }} | |
| Нет данных | ||||||||
| Название | Должность | Версия | Статус | Файл | Ознакомление | |
|---|---|---|---|---|---|---|
| {{ j.title }} | {{ j.role_label || '—' }} | {{ j.version || '—' }} | {{ j.status==='approved'?'Утверждена':'Черновик' }} | Открыть — | Подтверждено {{ j.ack_done }}/{{ j.ack_total }} — |
|
| Нет данных | ||||||
Например, 10 — период считается с 10 числа по 9-е следующего месяца, а не с 1 по последнее число.
| Сотрудник | Должность | Период | Занятий | Ставка | Бонусы | Итого | Статус | |
|---|---|---|---|---|---|---|---|---|
| {{ s.teacher_name || '—' }} | {{ roleLabel(s.person_role) }} | {{ s.period }} | {{ s.lessons_cnt }} | ₽{{ formatNum(s.base_amount) }} | +₽{{ formatNum(s.bonuses) }} | ₽{{ formatNum(s.total) }} | {{ s.status==='paid'?'Выплачено':'Начислено' }} | |
| {{ filters.salary.period ? 'Нет данных за выбранный период' : 'Выберите период, чтобы увидеть данные' }} | ||||||||
| Итого: {{ salaryTotals.count }} чел. | {{ salaryTotals.lessons }} | ₽{{ formatNum(salaryTotals.base) }} | +₽{{ formatNum(salaryTotals.bonuses) }} | ₽{{ formatNum(salaryTotals.total) }} | ||||
{{ salaryBreakdown.teacherName }}
{{ salaryBreakdown.period }} · Итого: ₽{{ formatNum(salaryBreakdown.total) }}
| Дата | Детей | Ставка |
|---|---|---|
| {{ formatDate(l.date) }} | {{ l.present }} | ₽{{ formatNum(l.rate) }} |
Условия оплаты: {{ salaryConfig.teacherName }}
Система расчёта задаётся отдельно для каждой группы, которую ведёт педагог. Значение по умолчанию используется только если для группы ничего не задано.
Для этой должности пока доступна только фиксированная ставка в месяц.
Системы расчёта
Готовые схемы оплаты — загружайте их в условия любого педагога или сотрудника, не вводя цифры заново
Вертикаль подчинения
% от выручки группы директору / рук. управляющему / управляющему — сверх зарплаты педагога, которая считается отдельно
Если один и тот же человек выбран на несколько ролей — он просто получит сумму по каждой из них (так и получаются «схема 2» и «схема 3»).
| Название | Размер | Выдан | Вернуть до | Статус | |
|---|---|---|---|---|---|
| {{ c.name }} | {{ c.size || '—' }} | {{ c.issued_name || '—' }} | {{ formatDate(c.return_by) }} | {{ {storage:'На складе',issued:'Выдан',lost:'Утерян'}[c.status] }} | |
| Нет данных | |||||
| Тип | Канал | Тема | Статус | Отправлено |
|---|---|---|---|---|
| {{ notifTypeLabel(n.type) }} | {{ n.channel }} | {{ n.subject || '—' }} | {{ {pending:'Ожидает',sent:'Отправлено',error:'Ошибка'}[n.status] }} | {{ n.sent_at ? formatDate(n.sent_at) : '—' }} |
| Нет данных | ||||
| Название | Контакт | Метро / Район | Статус | |
|---|---|---|---|---|
|
{{ l.name }}
{{ l.address }} · {{ l.corpus }}
|
{{ locationContactLabel(l) }} {{ (l.contacts && l.contacts[0] && l.contacts[0].phone) || l.contact_phone || '' }} |
{{ s.name }}, {{ s.walk_min }}мин
{{ [l.okrug_code, l.rayon_join_name || l.rayon_name].filter(Boolean).join(' / ') }}
—
|
Свободна В работе Архив |
|
| {{ locationSearch ? 'Ничего не найдено' : 'Нет данных' }} | ||||
| ФИО | Стиль | Стаж | Медиа | Рейтинг | Интервью | Статус | |
|---|---|---|---|---|---|---|---|
| {{ c.surname }} {{ c.first_name }} {{ c.patronymic }} {{ c.preferred_okrug_code }} · {{ c.preferred_rayon_name }} |
{{ c.style || '—' }} | {{ c.experience_yrs ? fmtYears(c.experience_yrs) : '—' }} |
|
{{ '★'.repeat(c.scout_rating)+'☆'.repeat(5-c.scout_rating) }} — | {{ c.interview_date ? formatDate(c.interview_date) : '—' }} |
|
|
| {{ candidateSearch ? 'Ничего не найдено' : 'Нет данных' }} | |||||||
| Название | Город | Метро / Район | Штатный план | Статус | |
|---|---|---|---|---|---|
|
{{ b.name }}
{{ b.address }}
Нет доступа к подробностям
|
{{ {msk:'Москва',mo:'МО',other:'Другой'}[b.city] || b.city }} |
—
{{ s.name }}, {{ s.walk_min }}мин
{{ [b.okrug_code, b.rayon_join_name].filter(Boolean).join(' / ') }}
—
|
—
{{ line.label }}: {{ line.names.join(', ') }}
|
{{ b.status==='active'?'Активен':b.status==='prospect'?'Свободна':'Архив' }}
|
|
| {{ branchSearch ? 'Ничего не найдено' : 'Нет данных' }} | |||||
| ФИО | Контакты | Роль | Профиль педагога | Статус | Документы | |
|---|---|---|---|---|---|---|
| {{ u.surname }} {{ u.first_name }} {{ u.patronymic }} |
{{ u.phone }}
{{ u.email }}
—
|
{{ rolesLabel(u.roles||[u.role]) }} | — {{ u.teacher_name }} Нет профиля | {{ u.status==='active'?'Активен':u.status==='archive'?'Архив':'Заблокирован' }} |
Перс. данные
Договор
|
|
| {{ staffSearch ? 'Ничего не найдено' : 'Нет данных' }} | ||||||
Перетащите сотрудника на холст справа
| Объект | Раздел | Филиал | Кто удалил | Когда | ||
|---|---|---|---|---|---|---|
| {{ it.name }} | {{ it.section_label }} | {{ it.institution_name || '—' }} | {{ it.deleted_by_name }} {{ it.deleted_by_role }} |
{{ formatDateTime(it.deleted_at) }} |
|
|
| {{ trashData.total ? 'По фильтрам ничего не найдено' : 'Корзина пуста' }} | ||||||
{{ roleManageError }}
| Раздел | Режим | Просмотр | Редакт. | Удаление | Переход м/у разделами |
|---|---|---|---|---|---|
| {{ m.label }} |
|
| Раздел | Режим | Просмотр | Редакт. | Удаление | Переход м/у разделами | |
|---|---|---|---|---|---|---|
| {{ m.label }} персонально |
|
| # | Документ | Статус | |
|---|---|---|---|
| {{ idx + 1 }} | {{ d.title }} | {{ docTypeLabel(d) }} | |
|
Документы не загружены
|
|||
|
|
|||
Можно выбрать несколько — каждому создастся своя задача со своим этапом.
| Тип | Куда | Статус | Размер | Начало | Конец |
|---|---|---|---|---|---|
| {{ BACKUP_TYPE_LABELS[b.type] || b.type }} | {{ b.destination==='local' ? 'Сервер' : 'Яндекс.Диск' }} | {{ {success:'Успех',failed:'Ошибка',partial:'Частично'}[b.status] }} | {{ b.file_size_kb ? (b.file_size_kb/1024).toFixed(1)+' МБ' : '—' }} | {{ formatDateTime(b.started_at) }} | {{ formatDateTime(b.finished_at) }} |
| Нет данных | |||||
| Когда | Кто | Раздел | Действие | |
|---|---|---|---|---|
| {{ formatDateTime(r.timestamp) }} | {{ r.user_name ? r.user_name.trim() : '—' }} | {{ r.entity }} #{{ r.record_id }} | {{ auditActionLabel(r.action) }} | |
|
Было {{ JSON.stringify(r.old_value, null, 1) }}Стало {{ JSON.stringify(r.new_value, null, 1) }} |
||||
| Нет данных | ||||
{{ JSON.stringify(r.old_value, null, 1) }}{{ JSON.stringify(r.new_value, null, 1) }}| Кто | Вход | Выход | Длительность | Статус |
|---|---|---|---|---|
| {{ s.user_name ? s.user_name.trim() : '—' }} | {{ s.login_at ? formatDateTime(s.login_at) : '—' }} | {{ s.logout_at ? formatDateTime(s.logout_at) : '—' }} | {{ formatSessionDuration(s.duration_sec) }} | {{ s.status==='active' ? 'В сети' : s.status==='expired' ? 'Сессия истекла' : 'Завершена' }} |
| Нет данных | ||||