Финансовый кабинет

ХМК Финансовый кабинет

Система управления платежами

{{ loginError }}

Подтверждение

Код отправлен в ваш Telegram.
Введите его ниже.

{{ loginError }}

Главная

На согласовании

{{ stats.pending }}

Согласовано

{{ stats.approved }}

Оплачено

{{ stats.paid }}

Отклонено

{{ stats.rejected }}

Ждёт закр. документы

{{ waitingClosingPayments.length }}

Требуют согласования

{{ pendingPayments.length }}
Нет платежей на согласовании

{{ p.title }}

{{ p.recipient_name || '—' }} · {{ p.created_by_user?.full_name }}

{{ fmtMoney(p.amount) }}

{{ typeLabel(p.payment_type) }}

Предстоящие платежи

Нет предстоящих платежей

{{ p.title }}

{{ p.recipient_name || '—' }}

{{ fmtMoney(p.amount) }}

{{ fmtDate(p.due_date) }}

📨

Ждут закрывающие документы

Оплаченные платежи без закрывающих документов

{{ waitingClosingPayments.length }}

{{ p.title }}

{{ p.recipient_name || '—' }} · {{ p.created_by_user?.full_name }}

{{ fmtMoney(p.amount) }}

📨 Запрошены ⚠ Не запрошены

Подотчёт

Открыть →

{{ fmtMoney(advanceStats.total_outstanding) }}

Общий долг

{{ advanceStats.open_count }}

Открытых авансов

{{ advanceStats.overdue_count }}

Просрочено

Просроченные:

{{ a.employee?.full_name }} {{ fmtMoney(a.amount) }}
💰

Вам выданы деньги под отчёт

{{ fmtMoney(a.amount) }}

{{ a.purpose }}

Срок отчёта: {{ fmtDate(a.deadline) }}

{{ isAdmin ? 'Все платежи' : 'Мои платежи' }}

Загрузка...
Платежей нет
Платёж Получатель Тип Категория Сумма Срок Статус Загрузил

{{ p.title }}

#{{ p.id }}

{{ p.recipient_name || '—' }}

зарплата
{{ typeLabel(p.payment_type) }} {{ p.category?.name || '—' }} {{ fmtMoney(p.amount) }} {{ p.due_date ? fmtDate(p.due_date) : '—' }} {{ statusLabel(p.status) }} ⚠ Нет закр. документов

{{ p.created_by_user?.full_name }}

☎ {{ p.created_by_user.short_number }}

На оплату

Согласованные платежи — загрузите платёжное поручение и отметьте оплаченными

Нет платежей на оплату
Платёж Получатель Тип Сумма Срок Загрузил

{{ p.title }}

#{{ p.id }}

{{ p.recipient_name || '—' }} {{ typeLabel(p.payment_type) }} {{ fmtMoney(p.amount) }} {{ fmtDate(p.due_date) }}

{{ p.created_by_user?.full_name }}

☎ {{ p.created_by_user.short_number }}

Все операции

Оплаченные платежи — для отчётности и учёта

Нет оплаченных платежей
Платёж Получатель Тип Категория Сумма Дата оплаты

{{ p.title }}

#{{ p.id }}

⚠ Нет закр. документов
{{ p.recipient_name || '—' }} {{ typeLabel(p.payment_type) }} {{ p.category?.name || '—' }} {{ fmtMoney(p.amount) }} {{ p.paid_at ? fmtDate(p.paid_at) : '—' }}

Новый платёж

{{ formError }}

{{ newFile ? newFile.name : 'Нажмите или перетащите файл' }}

PDF, JPG, PNG до 20MB

Загрузка...

Оплачено всего

{{ fmtMoney(report.total_paid) }}

Ожидает оплаты

{{ fmtMoney(report.total_approved) }}

На согласовании

{{ fmtMoney(report.total_pending) }}

По категориям

Нет данных
{{ item.label }} {{ item.count }} шт.

{{ fmtMoney(item.total) }}

По типу платежей

Нет данных

{{ item.label }}

{{ item.count }} платежей

{{ fmtMoney(item.total) }}

Топ получателей

Нет данных
Получатель Платежей Сумма
{{ item.label }} {{ item.count }} {{ fmtMoney(item.total) }}

Категории

Категорий нет. Создайте первую!
{{ cat.name }}

Сотрудники

Сотрудник Роль Telegram Статус Действия
{{ u.full_name.charAt(0) }}

{{ u.full_name }}

{{ u.username }} {{ u.short_number }}
{{ u.role==='admin' ? 'Администратор' : u.role==='accountant' ? 'Бухгалтер' : u.role==='user' ? 'Пользователь' : 'Сотрудник' }} ✓ {{ u.telegram_id }} {{ u.is_active ? 'Активен' : 'Заблокирован' }}

Профиль

{{ user?.full_name?.charAt(0) }}

{{ user?.full_name }}

@{{ user?.username }}

{{ user?.role==='admin' ? 'Администратор' : user?.role==='accountant' ? 'Бухгалтер' : user?.role==='user' ? 'Пользователь' : 'Сотрудник' }}

Telegram

{{ user.telegram_username ? '@'+user.telegram_username : 'Подключён' }}

Подключите Telegram для получения уведомлений и подтверждения входа.

Отправьте боту команду:

/connect {{ connectCode }}

Код действителен 30 минут

Сменить пароль

{{ pwdError }}
✓ Пароль изменён

Календарь платежей

Платежи по датам оплаты

{{ calMonthLabel }}

{{ d }}
{{ day.date.getDate() }}
{{ p.title }}
+{{ day.payments.length - 3 }} ещё

{{ hoveredDay.date.toLocaleDateString('ru-RU', {day:'numeric', month:'long'}) }}

{{ p.title }} {{ fmtMoney(p.amount) }}
На согласовании Согласован Оплачен

{{ calendarSelected.toLocaleDateString('ru-RU', {day:'numeric', month:'long', year:'numeric'}) }}

Нет платежей на эту дату

{{ p.title }}

{{ typeLabel(p.payment_type) }}{{ p.recipient_name ? ' · ' + p.recipient_name : '' }}

{{ fmtMoney(p.amount) }} {{ statusLabel(p.status) }}

Регулярные платежи

Автоматическое создание платежей по расписанию

Нет шаблонов. Создайте первый.

{{ r.title }}

Пауза {{ recurringFreqLabel(r.frequency) }} · {{ recurringDayLabel(r) }}

👥 Зарплата ({{ recurringEmployees.filter(e=>e.is_active).length }} чел. · {{ fmtMoney(recurringEmployees.filter(e=>e.is_active).reduce((s,e)=>s+e.amount,0)) }}) 💰 {{ fmtMoney(r.amount) }}{{ r.recipient_name ? ' · ' + r.recipient_name : '' }}

Следующий запуск: {{ r.next_run_at ? fmtDate(r.next_run_at) : '—' }} · Напомнить за {{ r.remind_days_before }} дн. · Последний: {{ fmtDate(r.last_triggered_at) }}

Итого активных: {{ fmtMoney(recurringEmployees.filter(e=>e.is_active).reduce((s,e)=>s+e.amount,0)) }}

Справочник пуст
ФИО Сумма Тип Статус
{{ e.full_name }}{{ e.notes }} {{ fmtMoney(e.amount) }} {{ typeLabel(e.payment_type) }} {{ e.is_active ? 'Активен' : 'Неактивен' }}

Отклонённые платежи

Платежи, которые были отклонены

Отклонённых платежей нет

Платёж Сумма

{{ p.title }}

{{ typeLabel(p.payment_type) }}{{ p.recipient_name ? ' · ' + p.recipient_name : '' }}

{{ fmtMoney(p.amount) }}
{{ advanceWeeklyBanner.icon }}

{{ advanceWeeklyBanner.title }}

{{ advanceWeeklyBanner.text }}

Подотчёт

Общий долг

{{ fmtMoney(advanceStats.total_outstanding) }}

Открытых

{{ advanceStats.open_count }}

Просрочено

{{ advanceStats.overdue_count }}

Ждут проверки

{{ advances.filter(a => a.status === 'reported').length }}

{{ a.purpose }}

Выдано

{{ fmtMoney(a.amount) }}

Потрачено

{{ fmtMoney(a.spent_amount || 0) }}

Остаток

{{ fmtMoney(a.amount - (a.spent_amount||0)) }}

Авансов нет
Сотрудник Назначение Выдано Потрачено Остаток Срок Статус

{{ a.employee?.full_name }}

#{{ a.id }}

{{ a.purpose }} {{ fmtMoney(a.amount) }} {{ a.spent_amount != null ? fmtMoney(a.spent_amount) : '—' }} {{ fmtMoney(a.amount - a.spent_amount) }} {{ fmtDate(a.deadline) }} {{ advanceStatusLabel(a.status) }}
Авансов нет

{{ a.purpose }}

#{{ a.id }} · {{ fmtDate(a.created_at) }}

{{ fmtMoney(a.amount) }}

{{ advanceStatusLabel(a.status) }}
Срок отчёта: {{ fmtDate(a.deadline) }}

⚠️ Нужно отчитаться за полученные деньги

Сдать отчёт →

Платёж #{{ selectedPayment.id }}

{{ statusLabel(selectedPayment.status) }}

{{ selectedPayment.title }}

Комментарий

{{ selectedPayment.description }}

Сумма

{{ fmtMoney(selectedPayment.amount) }}

Тип

{{ typeLabel(selectedPayment.payment_type) }}
Получатель {{ selectedPayment.recipient_name }}
Тип Зарплата
Срок оплаты {{ fmtDate(selectedPayment.due_date) }}
Категория {{ selectedPayment.category.name }}
Криптовалюта {{ selectedPayment.crypto_currency }}
Адрес кошелька {{ selectedPayment.crypto_address }}
Загрузил

{{ selectedPayment.created_by_user?.full_name }}

☎ {{ selectedPayment.created_by_user.short_number }}

Дата загрузки {{ fmtDateTime(selectedPayment.created_at) }}
Дата решения {{ fmtDateTime(selectedPayment.approved_at) }}
Дата оплаты {{ fmtDateTime(selectedPayment.paid_at) }}

Причина отклонения:

{{ selectedPayment.rejection_reason }}

Причина отзыва:

{{ selectedPayment.recall_reason }}

Файлы

Закрывающие документы

📨

Закрывающие документы запрошены

{{ fmtDateTime(selectedPayment.closing_docs_requested_at) }}

Назначить категорию

Категория:

{{ selectedPayment.category?.name }}
{{ actionError }}

Укажите причину отзыва:

{{ actionError }}
{{ actionError }}

{{ accountantFile ? accountantFile.name : 'Нажмите или перетащите ПП' }}

{{ actionError }}

{{ accountantFile ? accountantFile.name : 'Нажмите или перетащите ПП' }}

Причина отклонения

{{ editUserId ? 'Редактировать сотрудника' : 'Новый сотрудник' }}

Числовой ID (от @userinfobot)

Если не выбрана ни одна — поле категории скрыто при создании платежа

{{ userFormError }}

{{ editingRecurring ? 'Редактировать шаблон' : 'Новый шаблон' }}

{{ recurringFormError }}

{{ editingEmp ? 'Редактировать сотрудника' : 'Добавить сотрудника' }}

{{ isAdmin ? 'Выдать аванс' : 'Запросить аванс' }}

{{ advanceFormError }}

Аванс #{{ selectedAdvance.id }}

{{ advanceStatusLabel(selectedAdvance.status) }}

Выдано

{{ fmtMoney(selectedAdvance.amount) }}

Потрачено

{{ fmtMoney(selectedAdvance.spent_amount) }}

Назначение {{ selectedAdvance.purpose }}
Сотрудник {{ selectedAdvance.employee.full_name }}
Выдал {{ selectedAdvance.issuer.full_name }}
Срок отчёта {{ fmtDate(selectedAdvance.deadline) }}
Создан {{ fmtDateTime(selectedAdvance.created_at) }}
Выдан {{ fmtDateTime(selectedAdvance.issued_at) }}
Отчёт сдан {{ fmtDateTime(selectedAdvance.reported_at) }}
Комментарий {{ selectedAdvance.report_comment }}
Остаток / перерасход {{ fmtMoney(selectedAdvance.amount - selectedAdvance.spent_amount) }}

Документы

Выдано

{{ fmtMoney(selectedAdvance.amount) }}

Потрачено

{{ fmtMoney(selectedAdvance.spent_amount || 0) }}

Остаток

{{ fmtMoney(selectedAdvance.amount - (selectedAdvance.spent_amount||0)) }}

Операции

— {{ fmtMoney(e.amount) }}

{{ e.comment }}

{{ fmtDateTime(e.created_at) }}

Выдано

{{ fmtMoney(selectedAdvance.amount) }}

Потрачено

{{ fmtMoney(selectedAdvance.spent_amount || 0) }}

Остаток

{{ fmtMoney(selectedAdvance.amount - (selectedAdvance.spent_amount||0)) }}

Операции

— {{ fmtMoney(e.amount) }}

{{ e.comment }}

{{ fmtDateTime(e.created_at) }}

Добавить расход

{{ advanceFormError }}

Все расходы внесены? Сдайте отчёт — администратор получит уведомление.