# Счета и оплата

# Счета и оплата

Раздел счетов позволяет управлять выставлением счетов, отслеживать оплату и настраивать параметры биллинга.

## Список счетов

Для просмотра всех счетов:

1. Перейдите в раздел **Счета** в боковом меню.
2. Откроется таблица со всеми счетами.
3. Для каждого счёта отображается: номер, плательщик, сумма, статус, дата выставления.
4. Используйте фильтры для поиска:
   - **По статусу** — выберите нужный статус (например, «Выставлен», «Оплачен»).
   - **По плательщику** — найдите счета конкретного плательщика.
   - **По курсу** — отфильтруйте счета определённого курса.
   - **По периоду** — укажите даты выставления.
5. Нажмите на строку счёта для просмотра подробной информации.

![Страница счетов](images/invoices/invoices_page.png)

![Список счетов с деталями](images/invoices/invoice_list.png)

## Статусы счетов

Каждый счёт имеет статус, отражающий его текущее состояние:

| Статус | Описание |
|--------|----------|
| **Запланирован** | Счёт создан автоматически, но ещё не выставлен. Можно редактировать. |
| **Готов** | Счёт готов к выставлению. |
| **Выставлен** | Счёт отправлен плательщику. Редактирование заблокировано. |
| **Отправлен** | Уведомление по электронной почте доставлено. |
| **Оплачен** | Оплата получена. |
| **Просрочен** | Срок оплаты истёк, платёж не поступил. |
| **Отменён** | Счёт аннулирован. |

> **Важно:** После выставления счёта его нельзя изменить. Если необходимо внести правки, отмените текущий счёт и создайте новый.

## Выставление счетов

Для выставления запланированного счёта:

1. Откройте счёт со статусом **Запланирован** или **Готов**.
2. Проверьте корректность данных: плательщик, сумма, период, позиции счёта.
3. При необходимости отредактируйте позиции счёта.
4. Нажмите кнопку **Выставить счёт**.
5. Система автоматически:
   - Сформирует PDF-документ счёта.
   - Отправит уведомление плательщику по электронной почте.
   - Изменит статус на **Выставлен**.

> **Примечание:** Счета также могут выставляться автоматически по расписанию, если это настроено в параметрах биллинга.

### Массовая отправка с отслеживанием прогресса

Чтобы выпустить и разослать сразу все подготовленные счета за месяц:

1. На странице **Счета** выберите нужный месяц в селекторе вверху.
2. Нажмите кнопку **Отправить**. В диалоге подтверждения («Отправить счета?») будет показано, сколько счетов будет выпущено и отправлено родителям — подтвердите кнопкой **Да, отправить**.
3. Отправка идёт **в фоне через очередь** — счета обрабатываются по одному, страницу можно не держать открытой.
4. На экране отображается **прогресс**: сколько счетов отправлено, сколько с ошибками, сколько пропущено. Индикатор обновляется автоматически (каждые ~2 секунды).
5. При необходимости отправку можно **отменить** — уже отправленные счета останутся выставленными, оставшиеся не будут обработаны.

> **Примечание:** одновременно для организации выполняется одна массовая отправка. По завершении видно итоговую сводку (успешно / с ошибками).

## Настройки счетов

Настройки определяют, как система автоматически генерирует счета.

> **Первоначальная настройка:** Для новой организации настройки счетов ещё не созданы. При первом посещении страницы заполните форму и нажмите **Сохранить** — система создаст настройки. Без этого автоматическая генерация счетов невозможна.

> **Примечание:** Реквизиты компании (номер расчётного счёта, API-ключ платёжного шлюза) настраиваются отдельно на странице **Настройки → Организация**, а не здесь.

1. Перейдите в **Счета** > **Настройки** в боковом меню.
2. Доступные параметры:

### День генерации

Число месяца (1–28), когда система автоматически создаёт счета.

### Режим биллинга

- **За прошедший месяц** — счёт выставляется после оказания услуги (постоплата).
- **За следующий месяц** — счёт выставляется заранее (предоплата).

### Срок оплаты и пеня (Viivis)

- **Maksetähtaeg (срок оплаты, в днях)** — через сколько дней после выставления счёт должен быть оплачен. По умолчанию 10 дней.
- **Viivis (% в день)** — дневная ставка пени, которая выводится в PDF-счёте (переменная `[[LATE_PAYMENT_RATE]]` в шаблоне). Например `0.02` → в счёте напечатается `0.02%`. Если поле пусто — строка с пеней в PDF не печатается.
- **Включение начисления пени** — отдельно можно включить **автоматическое начисление** пени на просроченные счета (по умолчанию выключено для всей организации). После включения система ежедневно считает пеню на неоплаченные счета и показывает её на странице счёта. Подробнее — раздел [Пеня за просрочку (Viivis)](#пеня-за-просрочку-viivis).

### Шаблон счёта

Загрузите DOCX-шаблон для формирования PDF-счетов. Если шаблон не загружен, используется шаблон по умолчанию.

После загрузки система **автоматически проверит шаблон** и покажет блок «Малли контроль»:

- **Распознанные переменные** — список всех `[[ИМЯ]]`, которые система знает и подставит при рендере.
- **Неизвестные переменные** — пометки, которые не соответствуют ни одной системной переменной. Это либо опечатки, либо устаревшие имена — в счёте такие останутся пустыми. Проверьте и поправьте.
- **Авто-чистка** — Word при правке шаблона иногда вставляет невидимые маркеры проверки орфографии, которые ломают Jinja-директивы (`[% tr for ... %]`). Система их автоматически удаляет и сохраняет очищенную версию.
- **Цикл услуг** — если найдено `[% tr for s in services %]`, строки услуг будут повторяться автоматически.

Кнопка **«Проверить шаблон тестовыми данными»** (Testi malli näidisandmetega) рендерит PDF с подставленными синтетическими значениями: ваши реквизиты (название, IBAN, адрес) подставляются реальные, остальное (плательщик, ученик, курс) — случайные правдоподобные. Открывает PDF в новой вкладке, не сохраняя ничего на сервере — удобно проверить, как будут выглядеть значения в каждой ячейке.

### Банковские ссылки

Опция «Добавлять ссылки на банки в письма» доступна **только если настроен платёжный шлюз Montonio** в параметрах организации. Если шлюз не настроен, опция заблокирована.

### Напоминания об оплате

В блоке **«Автоматизация»** можно задать, через сколько дней после срока оплаты система автоматически отправит плательщику письмо-напоминание (поле количества дней):

- Значение `0` или пусто — авто-напоминания для организации **выключены**.
- Рассылка идёт **ежедневно в 09:00** по неоплаченным счетам, чей срок прошёл на указанное число дней, и только тем, кому ещё не отправляли (повторно одно и то же напоминание не уходит).
- Кнопка **«Отправить сейчас»** отправляет напоминания всем просроченным сразу, независимо от прошлых отправок.
- Текст письма берётся из шаблона **«Напоминание об оплате счёта»** (раздел **Уведомления → Шаблоны**) — без него рассылка не сработает.

3. После изменения настроек нажмите **Сохранить**.

![Настройки счетов](images/invoices/invoice_settings.png)

## Отчёт о генерации счетов

После автоматической генерации счетов система отправляет отчёт администраторам с правом управления настройками счетов. Отчёт содержит:

- Количество сгенерированных счетов
- Общую сумму
- Период и организацию
- Дату и время генерации

Шаблон отчёта настраивается в **Уведомления** > **Шаблоны** > **Отчёт о генерации счетов**.

## Скидки

Система поддерживает гибкую настройку скидок для студентов.

### Типы скидок

- **Процентная скидка** — уменьшает сумму на указанный процент (например, 10%).
- **Фиксированная скидка** — уменьшает сумму на фиксированную величину (например, 50 евро).

### Настройка скидки

1. Откройте заявку студента.
2. Перейдите в раздел **Скидки**.
3. Нажмите **Добавить скидку**.
4. Заполните параметры:
   - **Тип скидки** — процентная или фиксированная.
   - **Размер** — процент или сумма скидки.
   - **Дата начала действия** — с какого момента применяется скидка.
   - **Дата окончания действия** — когда скидка перестаёт действовать.
5. Нажмите **Сохранить**.
6. Счета будут автоматически пересчитаны с учётом скидки.

![Настройки скидок](images/invoices/discount_settings.png)

> **Примечание:** Можно добавить несколько скидок одновременно. Процентные и фиксированные скидки суммируются. При удалении скидки счета пересчитываются автоматически.

### Массовая скидка на курс

Если нужно применить скидку сразу ко всем студентам курса (например, акция или перерасчёт), можно воспользоваться массовой скидкой.

**Как добавить:**

1. Откройте страницу курса.
2. Нажмите на меню **⋮** (три точки) в правом верхнем углу.
3. Выберите **«Lisa allahindlus»**.
4. Введите процент скидки.
5. Нажмите **Сохранить**.

**Что произойдёт:**

- Скидка будет применена ко всем заявлениям курса, у которых есть **неотправленные** счета (статус «Запланирован» или «Готов»).
- Каждый затронутый счёт будет автоматически пересчитан.
- Скидка действует **только на период конкретного счёта** — она не влияет на счета за другие месяцы.

> **Важно:** Массовая скидка не затрагивает уже отправленные или оплаченные счета. Если счёт уже был отправлен родителю или в бухгалтерию, его нужно отменить и пересоздать отдельно.

## Пропорциональный расчёт (proration)

Когда студент регистрируется **в середине периода оплаты**, первый счёт выставляется не за полный период, а пропорционально — по количеству оставшихся уроков.

### Как это работает

Сумма первого счёта рассчитывается по формуле:

```
Сумма = Базовая цена × (Оставшиеся уроки / Всего уроков в периоде)
```

Это правило действует для **всех** частот оплаты: помесячная, квартальная, полугодовая и годовая.

### Пример: квартальная оплата

Допустим:
- Базовая цена за квартал: **489,99 €**
- Скидка за интенсивность: **20%**
- Всего уроков в квартале: **77**
- Студент пришёл в конце квартала, осталось: **14 уроков**

Расчёт:
1. Цена после скидки: 489,99 × 0,80 = **391,99 €**
2. Пропорция: 14 / 77 = **18,18%**
3. Итого к оплате: 391,99 × 0,1818 = **71,27 €**

> **Важно:** Следующий счёт будет за полный период (100%). Пропорция применяется только к первому счёту после регистрации.

### Как рассчитываются периоды

| Частота оплаты | Период охвата | Что считается |
|----------------|---------------|---------------|
| **Помесячная** | 1 календарный месяц | Уроки в этом месяце |
| **Квартальная** | 3 календарных месяца | Уроки за 3 месяца |
| **Полугодовая** | 6 календарных месяцев | Уроки за 6 месяцев |
| **Годовая** | 12 календарных месяцев | Уроки за 12 месяцев |

При квартальной оплате система суммирует все запланированные уроки за 3 месяца периода и считает, сколько из них приходится на период после регистрации студента.

### Пример расчёта квартала по месяцам

Квартал: январь — март. Студент зарегистрирован 10 марта.

| Месяц | Уроков в месяце | Из них оплачиваемых |
|-------|-----------------|---------------------|
| Январь | 26 | 0 (до регистрации) |
| Февраль | 24 | 0 (до регистрации) |
| Март | 27 | 14 (с 10 марта) |
| **Итого** | **77** | **14** |

Пропорция = 14 / 77 = 18,18%. Студент платит только за те уроки, которые он может посещать.

> **Примечание:** Если у курса нет расписания (уроки не запланированы), пропорция не применяется — счёт выставляется за полный период.

## Предпросмотр PDF счёта

Перед выставлением счёта можно просмотреть, как будет выглядеть PDF-документ:

1. Откройте счёт со статусом **Запланирован** или **Готов**.
2. Нажмите кнопку **Предпросмотр PDF**.
3. Система сформирует PDF на основе шаблона счёта (настраивается в **Настройки → Счета**).
4. PDF откроется в модальном окне для проверки.

> **Примечание:** Шаблон счёта загружается в формате DOCX на странице настроек счетов. Система подставляет данные счёта (номер, суммы, реквизиты) и конвертирует документ в PDF.

## Публичная ссылка на оплату

При выставлении счёта плательщику отправляется email со ссылкой на страницу оплаты. Эта ссылка **не требует входа в систему** — плательщик может оплатить счёт, просто перейдя по ссылке.

На странице оплаты отображаются:
- Номер и сумма счёта
- Реквизиты плательщика
- Кнопка **Оплатить** (перенаправляет на страницу банка)
- Возможность скачать PDF счёта

> **Важно:** Если платёжная система (Montonio) не настроена, вместо кнопки оплаты отобразится предупреждение. Настройте API-ключи в **Настройки → Счета**.

## Отчёты по счетам

Для анализа финансовых данных доступны отчёты:

1. Перейдите в раздел **Отчёты** в боковом меню.
2. Выберите **Отчёт по счетам**.
3. Настройте параметры отчёта:
   - **Период** — укажите диапазон дат.
   - **Статус** — отфильтруйте по статусу счетов.
   - **Курс** — выберите конкретный курс или все курсы.
4. Нажмите **Сформировать отчёт**.
5. Отчёт отобразит итоговые суммы, количество счетов по статусам и детализацию.

![Отчёт по счетам](images/invoices/invoice_report.png)

> **Совет:** Отчёты можно экспортировать в формате Excel для дальнейшей обработки.

## Отмена счёта (кредитарве)

Если счёт был выставлен ошибочно или клиент запросил отмену, используется механизм **кредитарве** — специальный отменяющий документ.

> **Закон:** По эстонскому законодательству (Raamatupidamise seadus § 10) выставленные счета нельзя удалять. Отмена возможна только через кредитарве.

### Как отменить счёт

1. Откройте счёт со статусом **Выставлен**, **Отправлен**, **Просрочен** или **Оплачен**.
2. Нажмите красную кнопку **Tühista** (Отмена) в правом верхнем углу.
3. Подтвердите действие в диалоговом окне.
4. Система автоматически:
   - Создаст **кредитарве** (отрицательный счёт) со ссылкой на оригинал.
   - Присвоит номер по шаблону (например, `KA-2026-0002`).
   - Обнулит остаток долга по оригинальному счёту.
   - Поставит оригинальный счёт в статус **Отменён**.
   - Создаст бухгалтерскую проводку (если настроена главная книга).

### Что происходит с деньгами

| Ситуация | Результат |
|----------|-----------|
| Счёт **не был оплачен** | Долг обнуляется, клиент ничего не должен |
| Счёт **был оплачен** | У клиента появляется **переплата** (кредит). Она автоматически зачтётся в следующий счёт |

### Пример

1. Выставлен счёт №2026-0001 на **89.00 €** → клиент оплатил.
2. Администратор отменяет → создаётся кредитарве **KA-2026-0002** на **-89.00 €**.
3. У клиента: кредит **89.00 €**.
4. Создаётся новый счёт №2026-0003 на **45.00 €** (со скидкой).
5. Система автоматически зачитывает кредит: 89.00 - 45.00 = **44.00 € остаётся**.
6. Счёт помечается как **Оплачен** (total ≤ 0 после зачёта).

### Где посмотреть

- **На странице счёта**: жёлтый баннер со ссылкой на кредитарве.
- **На странице отменённого счёта**: серый баннер «Отменён» со ссылкой.
- **В списке счетов**: кредитарве отображаются с отрицательной суммой.
- **В леджере**: записи ADJUSTMENT_CREDIT.

> **Нельзя** отменить: уже отменённый счёт, кредитарве, счёт со статусом «Ошибка».

---

## Пеня за просрочку (Viivis)

Если счёт не оплачен в срок, система может **автоматически начислять пеню** (viivis) за каждый день просрочки. Это помогает дисциплинировать оплату и при необходимости взыскать пеню официально.

### Включение для организации

Начисление пени включается **отдельно для каждой организации** (по умолчанию выключено):

1. Перейдите в **Счета** > **Настройки**.
2. В блоке биллинга включите начисление пени и задайте параметры:
   - **Ставка** — договорная ставка в % в день (например, `0.02`) **или** законная ставка (по ставке Европейского центрального банка + надбавка). Если на дату нет законной ставки — пеня просто не начисляется.
   - **Льготный период (дней)** — сколько дней после срока оплаты пеня ещё не начисляется (по умолчанию 0).
3. Нажмите **Сохранить**.

Пока начисление выключено — пеня не считается, и блок пени на счёте не отображается.

### Как начисляется

После включения система **каждую ночь** проходит по неоплаченным счетам (Выставлен / Отправлен / Просрочен) и пересчитывает накопленную пеню на сегодня. Пеня считается на непогашенное тело долга; если поступила частичная оплата — она по закону сначала засчитывается в счёт пени, остаток гасит основной долг.

> **Это информация, а не отдельный счёт.** Накопленная пеня — справочный показатель. Она не входит в сумму счёта автоматически и не требует от клиента немедленной оплаты, пока вы её не «начислите» (см. ниже).

### Панель пени на странице счёта

На неоплаченном просроченном счёте появляется блок **Viivis**:

- **накопленная сумма пени** на сегодня;
- **статус**: начисляется / приостановлено / отключено;
- **дата начала** начисления.

### Действия с пеней

| Действие | Что делает |
|----------|-----------|
| **Приостановить** | Замораживает рост пени. Уже накопленная сумма сохраняется. |
| **Возобновить (с текущей даты)** | Продолжает начисление с сегодняшнего дня; пропущенный во время паузы период не добирается. |
| **Возобновить (с даты паузы)** | Добирает пропущенные за время паузы дни, как будто паузы не было. |
| **Отключить** | Пеня по этому счёту больше не начисляется. |
| **Удалить** | Обнуляет накопленную пеню (например, если оплата всё-таки поступила). |
| **Начислить пеню** | «Замораживает» пеню и добавляет её к долгу клиента как официальное начисление — создаётся бухгалтерская проводка (Дебет: Дебиторка / Кредит: Доход от пени). После этого пеня становится обязательной к оплате. |

> **Важно:** все действия с пеней фиксируются в журнале действий (кто, когда, на какую сумму).

### Правовая основа

Реализованы требования эстонского закона (VÕS): пеня начисляется на просроченный долг (§113), может использоваться законная ставка (§94 — ставка ЕЦБ + надбавка), а поступивший платёж сначала погашает пеню, затем основной долг (§88(8)).

---

## Настройка нумерации счетов

Каждая организация может настроить формат номеров счетов, кредитарве и имён PDF-файлов.

### Где настроить

1. Перейдите в **Счета** > **Настройки** в боковом меню.
2. Прокрутите вниз до секции **Нумерация и имена файлов**.

### Шаблон номера счёта

Определяет, как формируется номер при создании нового счёта.

| Пример шаблона | Результат |
|----------------|-----------|
| `[[YYYY]]-[[SEQ]]` | `2026-0001`, `2026-0002`, ... |
| `ARV-[[YYYY]][[MM]]-[[SEQ]]` | `ARV-202603-0001` |
| `[[ID]]` | `3289` (просто ID из базы) |

### Шаблон номера кредитарве

Определяет формат номера для документов отмены.

| Пример шаблона | Результат |
|----------------|-----------|
| `KA-[[YYYY]]-[[SEQ]]` | `KA-2026-0003` |
| `KA-[[ORIG]]` | `KA-2026-0001` (номер оригинального счёта) |

### Шаблон имени PDF-файла

Определяет, как называется скачиваемый PDF.

| Пример шаблона | Результат файла |
|----------------|-----------------|
| `[[COURSE]]-[[STUDENT_CODE]]-inv-[[ID]]` | `klaveriope-50001010001-inv-3289.pdf` |
| `arve-[[NUMBER]]` | `arve-2026-0001.pdf` |
| `[[PAYER_NAME]]-[[PERIOD]]` | `jaan-maasikas-03-2026.pdf` |

### Доступные переменные

| Переменная | Описание | Где работает |
|------------|----------|-------------|
| `[[YYYY]]` | Год (4 цифры) | Номер + файл |
| `[[YY]]` | Год (2 цифры) | Номер + файл |
| `[[MM]]` | Месяц | Номер + файл |
| `[[SEQ]]` | Порядковый номер (сквозной, сбрасывается ежегодно) | Номер |
| `[[ID]]` | ID счёта | Номер + файл |
| `[[UUID]]` | UUID счёта | Номер |
| `[[ORIG]]` | Номер оригинального счёта | Только кредитарве |
| `[[COURSE]]` | Название курса | Только файл |
| `[[STUDENT_CODE]]` | Личный код ученика | Только файл |
| `[[STUDENT_NAME]]` | Имя ученика | Только файл |
| `[[PAYER_NAME]]` | Имя плательщика | Только файл |
| `[[NUMBER]]` | Номер счёта | Только файл |
| `[[PERIOD]]` | Период (ММ.ГГГГ) | Только файл |

### Как работает `[[SEQ]]`

Порядковый номер — это **сквозной счётчик** для всей организации:

- Счёт получает номер `2026-0001`
- Следующий счёт — `2026-0002`
- Кредитарве — `KA-2026-0003` (из того же счётчика!)
- **1 января** счётчик автоматически сбрасывается на 1

> **Важно:** Счета и кредитарве используют **общий** счётчик. Это гарантирует уникальность номеров и соответствие эстонским стандартам.

### Предпросмотр

При вводе шаблона под полем отображается **предпросмотр** с тестовыми данными. Это помогает проверить формат перед сохранением.

---

## Главная книга (бухгалтерские проводки)

Система ведёт двойную бухгалтерию по стандартам SmartAccounts/Merit. Каждая финансовая операция создаёт проводку.

### Где найти

В боковом меню: **Pearaamat** (Главная книга):

| Пункт | Описание |
|-------|----------|
| **План счетов** | Управление бухгалтерскими счетами и маппингами |
| **Пробный баланс** | Сальдо по всем счетам на дату |
| **Баланс** | Активы = Пассивы + Капитал |
| **Отчёт о прибылях** | Доходы минус расходы за период |
| **Выписка по счёту** | Детализация одного бухгалтерского счёта |

> **Примечание:** Пункт меню видим только пользователям с правом `gl.view` (обычно роль Manager).

### План счетов

Каждая организация имеет свой план бухгалтерских счетов. При первоначальной настройке создаются стандартные счета:

| Код | Название | Что отражает |
|-----|----------|--------------|
| 1010 | Pangakonto (põhi) | Основной банковский счёт |
| 1200 | Ostjatelt laekumata arved | Дебиторская задолженность (кто нам должен) |
| 2500 | Ostjatelt saadud ettemaksed | Предоплаты клиентов |
| 3060 | Maksuvaba müügitulu | Доход от обучения (õppemaks) |
| 4350 | Lootusetud debitoorsed võlad | Списание безнадёжных долгов |

### Что происходит автоматически

| Вы делаете | Система создаёт проводку |
|------------|--------------------------|
| Выставляете счёт | Дебет: Дебиторка +89€ / Кредит: Доход +89€ |
| Получаете оплату | Дебет: Банк +89€ / Кредит: Дебиторка -89€ |
| Отменяете счёт | Дебет: Доход +89€ / Кредит: Предоплата +89€ |
| Делаете возврат | Дебет: Дебиторка +89€ / Кредит: Банк -89€ |
| Списываете долг | Дебет: Расход +89€ / Кредит: Дебиторка -89€ |

> **Совет:** Если проводка не создалась (например, GL не настроен), операция (счёт, оплата) всё равно выполнится. Ошибка GL записывается в лог, но не блокирует работу.

### Настройка маппингов

В разделе **План счетов** → таблица **Маппинги** можно привязать каждый тип операции к конкретному бухгалтерскому счёту. Например:

- `ar.receivable` → 1200 (Дебиторка)
- `revenue.tuition` → 3060 (Доход от обучения)
- `bank.montonio` → 1020 (Банк Montonio)

Это позволяет адаптировать бухучёт под конкретную организацию без изменения кода.

### Счёт 2500 — Предоплаты клиентов

Счёт **2500** «Ostjatelt saadud ettemaksed». Создаётся автоматически и используется, когда:

- При отмене **оплаченного** счёта деньги клиента переходят в предоплату (2500)
- При оплате **больше** суммы счёта излишек уходит в предоплату (2500)
- При создании нового счёта предоплата автоматически зачитывается
- В отчётах видно сколько денег клиентов в предоплате

Если счёт не настроен — система работает как раньше, просто без детализации предоплат в бухучёте.

> Не путать с **2310** «Müügi käibemaks» — это счёт НДС с продаж, не предоплата.

**Как настроить (если маппинг отсутствует):**
1. Перейдите в **Pearaamat** > **План счетов**
2. Создайте новый счёт (код 2500, тип LIABILITY)
3. В таблице маппингов привяжите ключ `prepayment.customer` к новому счёту

---

## Внесение наличных

Если родитель оплатил наличными:

1. Откройте заявление студента.
2. Нажмите кнопку **Sularaha** (Наличные) рядом с разделом счетов.
3. В модальном окне укажите:
   - **Дату** получения
   - **Сумму** в евро
4. Нажмите **Salvestan** (Сохранить).
5. Платёж отразится в леджере и уменьшит задолженность по текущему счёту.

---

## Ручная отметка оплаты

Если оплата поступила вне системы (например, банковский перевод, который ещё не подтянулся автоматически), счёт можно вручную пометить как оплаченный:

1. Откройте счёт в статусе **Выставлен** или **Просрочен**, у которого есть непогашенный остаток.
2. Нажмите кнопку **Отметить оплаченным**.
3. Счёт перейдёт в статус **Оплачен**; если ведётся главная книга — создастся проводка о поступлении оплаты (банковский перевод).

> **Когда недоступно:** для счетов, которыми управляет бухгалтерская программа **Merit Aktiva**, кнопка скрыта — статус оплаты для них приходит автоматически из синхронизации с Merit (раз в час).

---

## Журнал проводок (Ledger)

Для просмотра всех финансовых операций:

1. Перейдите в **Счета** > **Журнал проводок** в боковом меню.
2. Доступные фильтры:
   - **Тип операции** — оплата, начисление, корректировка, списание.
   - **Сторона** — дебет или кредит.
   - **Метод оплаты** — банковский перевод, Montonio, наличные.
   - **Период** — даты.
   - **Счёт** — поиск по конкретному счёту.
3. Внизу таблицы отображаются итоги:
   - **Дебет** (красный) — сумма всех дебетовых операций.
   - **Кредит** (зелёный) — сумма всех кредитовых операций.
   - **Сальдо** — разница (положительное = долг, отрицательное = переплата).

---

## Шаблон описания позиции счёта

Позиция счёта (строка с суммой) имеет текстовое описание. По умолчанию оно формируется как «Название курса + период». Вы можете настроить свой формат.

### Где настроить

1. Перейдите в **Счета** > **Настройки**.
2. Найдите поле **Arve rea kirjelduse mall** (Шаблон описания позиции).
3. Введите шаблон с переменными в двойных квадратных скобках.
4. Нажмите **Сохранить**.

### Доступные переменные

| Переменная | Описание | Пример значения |
|------------|----------|-----------------|
| `[[COURSE]]` | Название курса | Klaveriõpe |
| `[[DISCIPLINE]]` | Дисциплина (предмет) | Klaver |
| `[[SPECIALIZATION]]` | Специализация | Muusikakool |
| `[[STUDENT_NAME]]` | Полное имя ученика | Mari Maasikas |
| `[[STUDENT_FIRST_NAME]]` | Имя ученика | Mari |
| `[[STUDENT_LAST_NAME]]` | Фамилия ученика | Maasikas |
| `[[STUDENT_CODE]]` | Личный код ученика | 50001010001 |
| `[[PERIOD]]` | Период (ММ.ГГГГ) | 03.2026 |
| `[[PERIOD_FULL]]` | Полный период | 03.2026 – 05.2026 |
| `[[TEACHER]]` | Преподаватель | Jaan Tamm |
| `[[LESSONS_COUNT]]` | Кол-во уроков в периоде | 8 |
| `[[INVOICE_DISPLAY_NAME]]` | Заданное «название курса в счёте» (если задано на курсе) | Klaveriõpe |

### Примеры шаблонов

| Шаблон | Результат в счёте |
|--------|-------------------|
| `[[COURSE]] [[PERIOD]]` | Klaveriõpe 03.2026 |
| `[[COURSE]] – [[STUDENT_NAME]] ([[PERIOD]])` | Klaveriõpe – Mari Maasikas (03.2026) |
| `[[DISCIPLINE]] / [[TEACHER]] / [[LESSONS_COUNT]] tundi` | Klaver / Jaan Tamm / 8 tundi |

> **Если шаблон не задан**, используется формат по умолчанию: `Название курса + период` (например, «Klaveriõpe 03.2026»).

> **Язык описания.** Названия курса/дисциплины/специализации в описании позиции выводятся на **контентном языке организации** (настраивается в настройках локалей), а не на языке сотрудника, выставляющего счёт. Поэтому описание одинаково у всех администраторов и совпадает с языком документов организации.

### Применить новый шаблон к существующим счетам

После сохранения нового шаблона **уже созданные счета** продолжают показывать старое описание — оно зафиксировано в базе на момент создания позиции. Если новый шаблон нужно применить ретроактивно, под полем шаблона есть блок **«Применить к неотправленным»** (Rakenda saatmata arvetele):

- Рядом отображается счётчик **«Затронуто счетов: N»** — сколько счетов попадает под пересчёт.
- Нажатие кнопки запускает пересчёт для всех счетов в статусах **PLANNED / READY / ISSUED** текущей организации.
- Счета в статусах **SENT / PAID / OVERDUE / CANCELED / FAILED** **не трогаются** — то, что уже отправлено или оплачено клиентом, должно совпадать с тем, что он увидел.
- Счета, выпущенные через **Merit Aktiva** (имеют `accounting_external_id`), **не пересчитываются** — для них PDF хранится у Merit и не пересоздаётся.
- После подтверждения появится сообщение «Описание обновлено в N счетах».

> **Совет:** перед нажатием убедитесь, что шаблон сохранён. Кнопка работает по **текущему** значению шаблона в БД.

---

## Как счёт попадает к плательщику

В зависимости от того, какие интеграции подключены, счёт может уходить плательщику по одному из четырёх сценариев. Во всех случаях счёт уходит в электронном виде (PDF). Различаются только: **кто формирует PDF**, **кто отправляет письмо** и **есть ли в письме ссылки на онлайн-оплату**.

> **Важно:** **Merit Aktiva** и **Montonio** — это сторонние сервисы, которые приобретаются и оплачиваются **отдельно**, не входят в стоимость нашей системы. Договор и тариф на каждый из сервисов школа заключает напрямую с поставщиком. В нашей системе настраивается только подключение по API.

### 1. Базовая система (без интеграций)

- Система рассчитывает стоимость и создаёт **предварительный счёт**.
- Генерирует **PDF-счёт** на своей стороне.
- После подтверждения отправляет плательщику **e-mail с PDF** и просьбой оплатить.
- 📎 Вложение: PDF · 🔗 Ссылки на оплату: нет.

### 2. Базовая система + Merit Aktiva

- Система рассчитывает стоимость и создаёт **предварительный счёт**.
- **PDF не генерируется** — счёт создаётся на стороне Merit.
- Данные счёта уходят в Merit. Далее **два варианта**:
  - **2a.** Плательщику **ничего не отправляется автоматически** — рассылку делает бухгалтер вручную из Merit.
  - **2b.** Merit сам формирует PDF и отправляет письмо плательщику.
- 📎 Вложение: PDF от Merit (только в 2b) · 🔗 Ссылки на оплату: нет.

### 3. Базовая система + Montonio

- Система рассчитывает стоимость и создаёт **предварительный счёт**.
- Генерирует **PDF-счёт** на своей стороне.
- После подтверждения отправляет плательщику **e-mail с PDF + ссылками** на эстонские банки и Apple Pay.
- 📎 Вложение: PDF · 🔗 Ссылки на оплату: да (наши, через Montonio).

### 4. Базовая система + Merit + Montonio

> Montonio подключается **внутри Merit** — ссылки на оплату генерирует сам Merit.

- Система рассчитывает стоимость и создаёт **предварительный счёт**.
- **PDF не генерируется** — счёт создаётся на стороне Merit.
- Данные счёта уходят в Merit. Далее **два варианта**:
  - **4a.** Плательщику **ничего не отправляется автоматически** — рассылку делает бухгалтер вручную из Merit.
  - **4b.** Merit формирует PDF **со ссылками на оплату** и отправляет письмо плательщику.
- 📎 Вложение: PDF от Merit (только в 4b) · 🔗 Ссылки на оплату: да, от Merit (только в 4b).

### Сводная таблица

| Сценарий | Кто делает PDF | Кто шлёт письмо плательщику | Ссылки на оплату |
|---|---|---|---|
| 1. Базовая | Наша система | Наша система | ❌ |
| 2a. Merit (ручная отправка) | Merit | Бухгалтер вручную из Merit | ❌ |
| 2b. Merit (авто-отправка) | Merit | Merit | ❌ |
| 3. Montonio | Наша система | Наша система | ✅ (наши) |
| 4a. Merit + Montonio (ручная) | Merit | Бухгалтер вручную из Merit | ❌ до отправки |
| 4b. Merit + Montonio (авто) | Merit | Merit | ✅ (от Merit) |

> **Юридический момент:** во всех сценариях счёт уходит в электронном виде (PDF). Структурированный e-arve (EVS 923) формируется только при подключённом Merit Aktiva — базовая система сама по себе e-arve не генерирует.

---

## Интеграция с Merit Aktiva

Система может автоматически отправлять выставленные счета в бухгалтерскую программу Merit Aktiva.

### Настройка

1. Перейдите в **Счета** > **Настройки**.
2. Включите переключатель **Merit Aktiva integratsioon**.
3. Заполните:
   - **Merit API ID** — из Merit: Seaded > API seaded.
   - **Merit API võti** — секретный ключ из Merit.
4. Нажмите **Сохранить**.
5. **Обязательно** выполните синхронизацию ставок НДС (обратитесь к администратору).

### Как работает

После включения интеграции:

1. Вы выставляете счёт как обычно (кнопка **Väljasta**).
2. Система **автоматически** отправляет счёт в Merit:
   - Создаёт или обновляет клиента в Merit.
   - Передаёт все позиции счёта с правильными ставками НДС.
   - Получает PDF счёта из Merit.
3. Merit отправляет счёт клиенту на email (настраивается в Merit).
4. Оплаты **автоматически синхронизируются** каждый час:
   - Если клиент оплатил в банке → система пометит счёт как «Оплачен».

### Статус экспорта

На странице счёта отображается статус отправки в Merit:

| Статус | Значение |
|--------|----------|
| *(пусто)* | Не отправлялся в Merit |
| **Ootel** (Ожидание) | В очереди на отправку |
| **Sünkroniseeritud** (Синхронизирован) | Успешно отправлен |
| **Ebaõnnestunud** (Ошибка) | Ошибка при отправке — см. описание ошибки |

### Массовая отправка

При массовом выставлении счетов все они автоматически отправляются в Merit. По завершении вы получите уведомление с отчётом: сколько отправлено успешно, сколько с ошибками.

### Что делать при ошибке

1. Откройте счёт — в поле ошибки будет описание проблемы.
2. Частые причины:
   - **«TaxId required»** — не синхронизированы ставки НДС. Обратитесь к администратору.
   - **«Invalid API credentials»** — проверьте API ID и ключ в настройках.
   - **«Customer validation failed»** — проверьте данные плательщика (имя, код).
3. После исправления повторно выставите счёт.

---

## Показатели на странице счетов

В верхней части страницы списка счетов отображаются информационные карточки:

| Карточка | Описание |
|----------|----------|
| **Väljastatud kokku** | Общая сумма всех выставленных счетов |
| **Makstud kokku** | Общая сумма оплаченных счетов |
| **Laekunud kokku** | Фактически поступившие денежные средства (из бухгалтерии). Показывается только если отличается от «Makstud kokku» |
| **Tasumata** | Общая сумма неоплаченных счетов |
| **Klientide ettemaksud** | Сумма переплат клиентов (кредит). Показывается только если есть переплаты |

> **Примечание:** Карточки «Laekunud kokku» и «Klientide ettemaksud» основаны на данных главной книги (GL). Они отображаются только если в организации настроена главная книга и есть соответствующие проводки.