CarsEXP Академия Назад

Финансы — счета, оплаты, касса

Раздел «Финансы» — это всё про деньги сервиса: список счетов клиентам, текущая касса за день, просроченные долги и инструменты оплаты (наличные, карта, перевод, подарочный сертификат, онлайн-ссылка). Отсюда же управляются налоговые ставки, абонементы и подарочные карты.

Как открыть

В нижней навигации нажмите «Ещё» — там пункт Финансы. Маршрут /finance. Карточка отдельного счёта открывается по /invoice/:id — из списка, из наряда или по ссылке-оплате.

Что на экране

Список счетов (главный экран «Финансы»)

Экран делится на зоны сверху вниз:

  1. Заголовок и кнопки панели — название «Финансы» и четыре иконки справа (шаблон, абонементы, подарочные, налоги).
  2. Красный баннер «Просрочено» — появляется только если есть просроченные долги. Число счетов, открытая сумма, максимальная задержка в днях. Нажмите, чтобы увидеть только должников.
  3. Зелёная карточка «Касса сегодня» — появляется только если за день были платежи. Общая сумма + разбивка по способам (наличные, карта, перевод, онлайн). Нажмите, чтобы увидеть каждый платёж.
  4. Строка поиска — поиск по клиенту, госномеру, номеру счёта.
  5. Полоска статусов — горизонтальные чипы: «Все», «Черновик», «Выставлен», «Отправлен», «Оплачен», «Просрочен», «Аннулирован».
  6. Список счетов — карточки с номером, клиентом, госномером, датой и суммой. Счёт с кредит-нотой выделен красным бордером и значком «⇄ Кредит-нота».
Скин «Aurora» (премиум-вид): тот же экран с другим оформлением — четыре KPI-карточки вверху («Касса сегодня», «Дебиторка», «Просрочено», «Способы оплаты»), таблица счетов с колонками (№, Клиент, Сумма, Дата, Статус), правый сайдбар — столбчатый график «Старение задолженности» (бакеты 0–30/31–60/61–90/90+ дн) и список «Платежи» за день. Логика и данные те же самые.

Карточка счёта (детальный экран /invoice/:id)

Зоны сверху вниз:

  1. Заголовок — номер счёта и до четырёх иконок справа (отображаются условно: «Оплатить онлайн» — только при наличии долга и права finance:create; «Предварительный счёт» — только если сметы включены в политике; «Отправить в портал» — только при праве finance:update).
  2. Блок клиента и авто — имя, телефон, марка/модель, госномер.
  3. Позиции счёта — группы «Работы» и «Запчасти» с подытогами.
  4. Итоговый блок — разбивка по категориям (Работы/Запчасти с налогом, если НДС), строка скидки (если есть), строка субподряда/прочего (если есть), «Сумма без налога» + «Налог» (только у плательщиков НДС), «Итого», «Предоплата» (если был аванс), «Оплачено», «К доплате» или «К возврату» (если переплата). При переплате также появляется жёлтый баннер-подсказка о возврате.
  5. Кнопки оплаты — появляются, пока есть долг.
  6. История платежей — список внесённых оплат с методом и статусом.
  7. Кредит-ноты — блок возвратов/корректировок.
  8. Кнопка «Открыть наряд» — если счёт связан с нарядом.
Черновик счёта всегда равен наряду. Пока счёт в статусе «Черновик», он не «застывает»: при повторном нажатии «Создать счёт» в наряде и при выставлении черновик автоматически пересчитывается по текущему составу наряда (работы, запчасти, субподряд, скидки). Так исправление наряда после создания черновика не теряется. Как только счёт выставлен (Выставлен / Отправлен / Оплачен) — это неизменяемый снимок на момент выставления, и правки наряда его больше не меняют.

Каждая кнопка и действие

Главный экран «Финансы» (/finance)

ЭлементГдеЧто делаетКому доступно
Иконка «Конструктор счетов» (иконка receipt_long_outlined)AppBar, справаОткрывает экран «Конструктор счетов» — настройка внешнего вида PDF: логотип, реквизиты, подпись, шаблон, язык печатиВсе
Иконка «Сервис-планы» (значок workspace_premium_outlined)AppBar, справаПереход на экран «Сервис-планы» (/service-plans)Все
Иконка «Подарочные сертификаты» (card_giftcard)AppBar, справаПереход на экран «Подарочные сертификаты» (/gift-cards)Все
Иконка «Налоговые ставки» (percent_outlined)AppBar, справаПереход на экран «Налоговые ставки»Все
Красный баннер «Просрочено счетов: N · €...»Под AppBarНажмите — список переключается в режим только просроченных счетовВсе с доступом к «Финансы»
Зелёная карточка «Касса сегодня · N»Под баннеромНажмите — открывается sheet с платежами за день; каждый платёж нажимаем → счётВсе с доступом
Строка поиска (иконка лупы)Под кассойВвод текста → поиск по клиенту, госномеру, номеру счёта (с задержкой 350 мс)Все
Крестик «×» в строке поискаСтрока поиска, справаОчищает поле поиска и сбрасывает результатВсе
Чип «Все»Полоска статусовПоказывает все счета (без фильтра по статусу)Все
Чип «Черновик»Полоска статусовФильтр: только черновикиВсе
Чип «Выставлен»Полоска статусовФильтр: только выставленныеВсе
Чип «Отправлен»Полоска статусовФильтр: только отправленные клиентуВсе
Чип «Оплачен»Полоска статусовФильтр: только полностью оплаченныеВсе
Чип «Просрочен»Полоска статусовФильтр: только просроченныеВсе
Чип «Аннулирован»Полоска статусовФильтр: аннулированные (void)Все
Чип-фильтр «Только: Неоплаченные ×»Под полоской статусовАктивный баннер-фильтр; крестик «×» снимает фильтрВсе
Чип-фильтр «Только: Просрочено ×»Режим просроченныхАктивный фильтр просрочки; крестик «×» возвращает к общему спискуВсе
Карточка счёта в спискеСписокНажмите → открывается экран счёта (/invoice/:id)Все
Кнопка «Показать ещё»Конец спискаЗагружает следующую порцию счетовВсе
Потянуть список внизСписокОбновляет данные с сервераВсе
Строка платежа в sheet «Касса сегодня»Bottom sheet «Касса сегодня»Нажмите → переход в счёт этого платежа (если привязан)Все

Экран счёта (/invoice/:id)

ЭлементГдеЧто делаетКому доступно
Иконка «Оплатить онлайн» (link_outlined)AppBar, справаСоздаёт ссылку онлайн-оплаты остатка (Montonio); открывает диалог «Оплатить онлайн» со ссылкой и кнопкой «Копировать ссылку»finance:create, только если есть долг
Иконка «Предварительный счёт» (request_quote_outlined)AppBar, справаФормирует PDF предварительного счёта-сметы; на мобиле — системный диалог печати, в браузере — скачиваниеВсе (если сметы включены в политике)
Иконка «Отправить в портал клиента» (cloud_upload_outlined)AppBar, справаГенерирует PDF и загружает в портал клиента; если наряд завершён — выставляет счёт (issued) и архивирует наряд; если нет — отправляет сметуfinance:update
Иконка «Печать» (print_outlined)AppBar, справаФормирует PDF счёта и открывает системный диалог печати (на мобиле) или скачивает файл (в браузере)Все
Кнопка «Повторить» (TextButton)Центр экрана при ошибкеПовторяет загрузку данных счётаВсе
Кнопка «Записать оплату» (с иконкой add_card_outlined)Тело, под итогомОткрывает sheet записи оплаты; там: поле суммы (подставлен остаток), три чипа способа (Наличные / Карта / Перевод), кнопка «Сохранить»Все (пока есть долг)
Кнопка «Оплатить подарочной картой» (контурная, иконка card_giftcard_outlined)Тело, под «Записать оплату»Открывает диалог ввода кода подарочной карты; при верном коде — списывает сумму с картыВсе (пока есть долг)
Кнопка «Кредит-нота» (TextButton с иконкой add)Раздел «Кредит-ноты», заголовокОткрывает диалог выпуска кредит-ноты: сумма, причина, опционально — выбор другого плательщикаВсе
Кнопка «Открыть наряд» (контурная, внизу)Конец телаПереходит на экран ремонтного наряда, связанного со счётомВсе
Строка платежа в историиРаздел «Оплаты»Только информационная (иконка, метод, статус, сумма); кнопок нет

Экран «Подарочные сертификаты» (/gift-cards)

ЭлементГдеЧто делаетКому доступно
Иконка поиска (лупа)AppBar, справаОткрывает диалог «Проверить по коду»: поле кода + кнопка «Проверить»Все
FAB «Выпустить» (с иконкой карты)Нижний правый уголОткрывает sheet выпуска сертификатаfinance:create
Потянуть список внизСписокОбновляет список сертификатовВсе
Иконка аннулировать (Icons.block) на карточкеКарточка активного сертификатаОткрывает диалог подтверждения аннулированияВсе, только у активных карт
Кнопка «Повторить»Центр при ошибкеПовторяет загрузку спискаВсе

Экран «Сервис-планы» (/service-plans)

ЭлементГдеЧто делаетКому доступно
FAB «План» (с иконкой add)Нижний правый уголОткрывает sheet создания планаfinance:create
Потянуть список внизСписокОбновляет список плановВсе
Иконка «Архивировать» на карточкеАктивный план, справаОткрывает диалог подтверждения архивированияfinance:update
Кнопка «Повторить»Центр при ошибкеПовторяет загрузку спискаВсе

Экран «Налоговые ставки»

ЭлементГдеЧто делаетКому доступно
FAB «Новая ставка» (с иконкой add)Нижний правый уголОткрывает диалог создания ставки НДСfinance:create
Потянуть список внизСписокОбновляет список ставокВсе
Меню «⋮» (more_vert) на карточке ставкиКарточка, справаРазворачивает пункты: «Изменить» / «Сделать по умолчанию» (только не-дефолтным) / «Удалить»finance:create
Пункт «Изменить»Меню «⋮»Открывает диалог правки ставкиfinance:create
Пункт «Сделать по умолчанию» (только для не-дефолтных)Меню «⋮»Делает эту ставку дефолтной (с остальных флаг снимается)finance:create
Пункт «Удалить»Меню «⋮»Открывает диалог подтверждения удаленияfinance:create

Диалоги и подэкраны

Sheet «Касса сегодня» (платежи за день)

Открывается нажатием на зелёную карточку «Касса сегодня» на главном экране «Финансы». Тянется снизу, занимает 60–90% высоты экрана.

Содержимое:

  • Заголовок «Касса сегодня».
  • Список платежей: иконка способа, номер счёта и имя клиента, способ оплаты, сумма.
  • Нажатие на строку платежа → переход в карточку счёта (sheet закрывается).

Пустое состояние: показывает «нет счетов» (появляется только когда платежи уже были, но список пуст).

Sheet «Записать оплату»

Открывается кнопкой «Записать оплату» на экране счёта. Тянется снизу.

Поля:

  • Сумма оплаты (€) — числовое поле, подставлен остаток по счёту. Можно уменьшить (частичная оплата). Принимает запятую и точку как разделитель.
  • Способ оплаты — три чипа (ChoiceChip): Наличные / Карта / Перевод. По умолчанию «Наличные». Нажмите нужный.

Кнопки:

  • Сохранить (FilledButton) — записывает платёж, обновляет остаток по счёту и «Кассу сегодня»; snackbar «Оплата записана».

Что не пустит: сумма ноль или не является числом — кнопка не вызовет ошибку, но ничего не запишет (парсинг на стороне кнопки).

Диалог «Оплатить онлайн» (ссылка для клиента)

Открывается иконкой link_outlined в AppBar счёта. Доступен только при наличии долга и праве finance:create.

Содержимое:

  • Заголовок «Оплатить онлайн».
  • Подсказка «Ссылка для оплаты — отправьте клиенту:».
  • Ссылка для клиента — выделяемый текст (SelectableText).

Кнопки:

  • Готово — закрывает диалог без действий.
  • Копировать ссылку (основная, FilledButton) — копирует ссылку в буфер обмена, показывает «Ссылка скопирована», закрывает диалог.

Диалог «Кредит-нота» (выпуск кредит-ноты)

Открывается кнопкой «Кредит-нота» (TextButton с иконкой add) в шапке раздела «Кредит-ноты» на экране счёта.

Поля:

  • Сумма возврата (€) — числовое поле. Обязательное.
  • Причина — текстовое поле. Обязательное.
  • Переоформить на · необязательно — поле выбора клиента. Если выбран, появляется жёлтая подсказка: «Исходный счёт будет сторнирован (реверс НДС). Новому плательщику выставьте отдельный счёт».

Кнопки:

  • Отмена — закрывает без сохранения.
  • Кредит-нота (основная, FilledButton) — создаёт кредит-ноту. Если сумма пуста или причина пуста — показывает «Поле обязательно».

Sheet «Выпустить подарочный сертификат»

Открывается FAB «Выпустить» (FAB.extended с иконкой add_card) на экране /gift-cards. Тянется снизу.

Форма (первый шаг):

Поля:

  • Сумма (€) — числовое поле, обязательное. Если пустое или ноль — показывает ошибку «Поле обязательно» при попытке сохранить.
  • Код · необязательно — можно ввести свой код (автокапитализация). Под полем подсказка «Оставьте пустым — сгенерируется автоматически». Если оставить пустым — система сгенерирует код сама.

Кнопки:

  • Выпустить (основная, FilledButton) — создаёт сертификат; пока идёт запрос — показывает индикатор загрузки.

Результат (второй шаг, после создания):

  • Иконка check_circle и надпись «Сертификат выпущен».
  • Код карты крупным моноширинным шрифтом + сумма (SelectableText).
  • Копировать (контурная, OutlinedButton) — копирует код в буфер; snackbar «Код скопирован».
  • Готово (основная, FilledButton) — закрывает sheet, обновляет список.

Диалог «Проверить по коду» (поиск сертификата)

Открывается иконкой search в AppBar экрана /gift-cards. Заголовок диалога — «Проверить по коду».

Поля:

  • Код — текстовое поле, автофокус.

Кнопки:

  • Отмена — закрывает.
  • Проверить (основная) — ищет карту по коду; результат показывается как snackbar: «КОД: €остаток · статус» или «Сертификат не найден».

Диалог «Аннулировать сертификат?»

Открывается иконкой Icons.block на карточке активного сертификата.

Содержимое: заголовок «Аннулировать сертификат?» + текст «Баланс обнулится, сертификат нельзя будет использовать. Удалить его нельзя (нужен для учёта) — только аннулировать.»

Кнопки:

  • Отмена — закрывает без действий.
  • Аннулировать (красная FilledButton) — аннулирует карту, обновляет список.

Sheet «Создать сервис-план»

Открывается FAB «План» на экране /service-plans. Тянется снизу.

Поля:

  • Название плана — текстовое, обязательное (иконка workspace_premium_outlined). Пустое → «Поле обязательно».
  • Цена (€) — числовое, обязательное. Ноль → «Поле обязательно».
  • Период оплаты — выпадающий список (DropdownButtonFormField): мес / квартал / год.
  • Работы (%) — числовое, необязательное.
  • Запчасти (%) — числовое, необязательное.

Кнопки:

  • Создать (основная, FilledButton) — создаёт план, закрывает sheet.

Диалог «Архивировать план?»

Открывается иконкой archive_outlined на карточке активного плана.

Содержимое: заголовок «Архивировать план?», затем название плана жирным + текст «План перестанет предлагаться клиентам, но история и активные подписки сохранятся.»

Кнопки:

  • Отмена.
  • В архив (основная, FilledButton) — переводит план в архив; в списке он становится полупрозрачным (opacity 0.5).

Диалог «Новая ставка» / «Изменить» (налоговая ставка)

Открывается FAB «Новая ставка» или пунктом «Изменить» в меню «⋮».

Поля:

  • Название (напр. НДС 22%) — текстовое.
  • Процент (%) — числовое.
  • Сделать ставкой по умолчанию — свитч. Если включить — эта ставка будет автоматически проставляться в новые счета.

Кнопки:

  • Отмена.
  • Сохранить (основная, FilledButton) — сохраняет ставку.

Диалог «Удалить» (налоговая ставка)

Открывается пунктом «Удалить» в меню «⋮».

Содержимое: заголовок «Удалить» + «Название ставки · процент%».

Кнопки:

  • Отмена.
  • Удалить (основная, FilledButton) — удаляет ставку.

Что если…

Красного баннера и зелёной карточки не видно

Это нормально: баннер «Просрочено» прячется, когда нет ни одного просроченного счёта; «Касса сегодня» прячется, когда за сегодня ещё не было платежей. К вечеру первой смены они появятся.

Список счетов пустой

После поиска или выбора статуса видите: «По фильтру счетов нет» (активен фильтр) или «Счетов пока нет» (нет ни одного в системе). Сбросьте фильтр нажатием на «×» рядом с чипом или выберите «Все».

Кнопки «Записать оплату» и «Оплатить подарочной картой» не показываются

Счёт полностью оплачен (остаток = 0) или даже есть переплата. Вместо кнопок вы видите строку «К возврату».

PDF с надписью «DEMO» посередине

Вы используете PRO-шаблон счёта на бесплатном тарифе. Чтобы убрать водяной знак, перейдите на тариф PRO. На простом (Classic) шаблоне водяного знака нет.

Иконка «Оплатить онлайн» не появляется в AppBar счёта

Либо у вас нет права finance:create, либо остаток по счёту уже равен нулю.

Подарочная карта не принимается

Код введён неверно, карта уже полностью использована или аннулирована. Проверьте код через иконку лупы на экране сертификатов.

Вопрос-ответ

В: Как быстро найти должников? О: Откройте «Финансы» → нажмите красный баннер «Просрочено» вверху. Увидите список с именами, суммами и днями задержки. Нажмите на любого → сразу на его счёт.

В: Как принять оплату наличными? О: Откройте нужный счёт → нажмите «Записать оплату» → проверьте сумму (подставлен весь остаток, можно уменьшить для частичной оплаты) → выберите чип «Наличные» → «Сохранить». Платёж сразу попадёт в «Кассу сегодня».

В: Клиент хочет оплатить онлайн картой, не через терминал — как ему отправить ссылку? О: Откройте счёт → нажмите иконку «Оплатить онлайн» (link_outlined) в правом верхнем углу → нажмите «Копировать ссылку» → отправьте клиенту ссылку любым способом (мессенджер, СМС). По ссылке он оплатит сам.

В: Как отправить счёт клиенту в его личный кабинет, чтобы он мог скачать PDF? О: Откройте счёт → нажмите иконку облака со стрелкой вверху. Если работы по наряду закончены — клиент получит настоящий счёт и наряд уйдёт в архив. Если работы ещё идут — клиент получит предварительный счёт (смету).

В: Клиент хочет вернуть деньги — что нажать? О: Откройте счёт → прокрутите вниз до раздела «Кредит-ноты» → нажмите кнопку «Кредит-нота» (с иконкой +) → укажите сумму возврата и причину → «Кредит-нота». На счёте появится запись о кредит-ноте, а сам счёт получит красный бордер.

В: Выпустил подарочный сертификат, код не записал — где посмотреть? О: В списке сертификатов (/gift-cards) код каждой карты виден в строке. Нажмите на строку — откроется копирование. Карта хранится, пока не аннулирована или не использована.

В: Создал счёт, потом дописал в наряд работу — в счёте её нет. Что делать? О: Пока счёт в статусе «Черновик» — просто нажмите «Создать счёт» в наряде ещё раз или выставьте счёт: черновик пересчитается по текущему наряду сам. Если счёт уже выставлен (Выставлен / Отправлен / Оплачен) — это снимок на момент выставления, он не меняется; оформите разницу отдельным документом (кредит-нотой или новым счётом).

Демо