Бухгалтерский учёт
Назначение
Финансовый учёт: план счетов, проводки (двойная запись), платежи за накладные и услуги, ПКО, акты услуг, типы внесений/изъятий, категории учёта. Контроль финансовых потоков и формирование бухгалтерской отчётности.
9 контроллеров, ~35 эндпоинтов. Поддерживает экспорт в Excel и PDF.
Сценарии
План счетов
Актор: Бухгалтер / Владелец
Иерархическая структура бухгалтерских счетов.
Типы счетов (superType): Актив, Пассив, Доходы, Расходы.
Особенности:
- Счета образуют иерархию (parent → children)
- Системные счета — создаются автоматически, не удаляются. Для стандартных операций (излишки, недостачи, списания, ДДС)
- Опциональная привязка к типу контрагента (поставщик/клиент)
- Мягкое удаление/восстановление
Где используются:
- В проводках (дебет/кредит)
- В инвентаризациях (счёт излишков/недостач)
- В актах списания (счёт списания)
- В актах реализации (счёт выручки/расходов)
- В типах внесений/изъятий (основной, корреспондентский, ДДС)
- В методах оплаты (ДДС-счёт)
Проводки
Актор: Бухгалтер
Двойная запись: дебет одного счёта + кредит другого на одну сумму.
Типы: MANUAL (создаёт бухгалтер) / AUTOMATIC (при платежах, инвентаризациях и т.д.)
Создание:
- Счёт дебета, счёт кредита, сумма, учётная дата
- Опционально: описание
- Опционально: аналитика (подразделение, юрлицо, контрагент, сотрудник, ДДС-счёт)
Бизнес-правила (агрегат PostingAggregate, static):
- Дебет ≠ кредит
- Сумма > 0, точность 2 знака
- Учётная дата не в заблокированном периоде (ни предварительная, ни окончательная)
Доменное событие: posting-changed
Платежи
Актор: Бухгалтер
Оплата за документ (накладную или акт услуг). При создании автоматически формируется проводка.
Пакетное создание:
- Дата, контрагент, юрлицо
- Позиции: документ-основание + сумма
- Для каждой: проверка → создание Payment → создание Posting
Отмена: платёж → cancelled, создаётся сторнирующая проводка (обратная).
Бизнес-правила (агрегат PaymentAggregate, static):
- Сумма > 0
- Документ не дублируется в пакете
- Нельзя отменить повторно
- Дата не в заблокированном периоде
Оплачиваемые документы — агрегированный эндпоинт PayableDocumentController для просмотра накладных и актов услуг с суммами оплат. Поддерживает экспорт в Excel/PDF через PayableDocumentExportService.
Акты услуг
Актор: Бухгалтер
Документ об оказании услуг (аренда, клининг, бухгалтерия). Основание для платежа.
DRAFT → POSTED / CANCELLEDБизнес-правила (агрегат ServiceActAggregate, static):
- Сумма > 0
- Срок оплаты ≥ дата документа
- Редактирование только в DRAFT
ПКО (приходный кассовый ордер)
Актор: Бухгалтер / Кассир
Объединяет несколько платежей в один кассовый документ.
Создание:
- Выбор платежей
- Контрагент, юрлицо, дата, номер
- Общая сумма = сумма платежей
- Может быть сводным (
isSummary)
Бизнес-правила (агрегат PaymentReceiptAggregate, static):
- Общая сумма > 0
- Список платежей не пуст
Типы внесений и изъятий
Актор: Управляющий / Бухгалтер
Предустановленные типы кассовых операций для POS: внесение (инкассация, размен) и изъятие из кассы.
Каждый тип привязан к трём счетам:
- Основной (chefAccount)
- Корреспондентский
- ДДС-счёт
Бизнес-правила (агрегат DepositWithdrawalTypeAggregate, static):
- Тип: DEPOSIT или WITHDRAWAL
- Лимит > 0 (если задан)
- Мягкое удаление/восстановление
Доменное событие: deposit-withdrawal-type-changed
Категории учёта
Актор: Бухгалтер
Группировка номенклатуры для бухгалтерии (себестоимость продуктов, расходные материалы, бытовая химия). Привязывается к номенклатуре. Перед удалением — проверка использования через ACL.
Финансовые потоки
НАКЛАДНАЯ ──── оплата ───► ПЛАТЁЖ ──── автоматически ───► ПРОВОДКА (дебет/кредит)АКТ УСЛУГ ──── оплата ───► ПЛАТЁЖ ──── автоматически ───► ПРОВОДКА
ПЛАТЁЖ ──── отмена ───► СТОРНИРУЮЩАЯ ПРОВОДКА (обратная)
ПЛАТЕЖИ ──── группировка ───► ПКО (приходный кассовый ордер)
ИНВЕНТАРИЗАЦИЯ (излишки/недостачи) ───► ПРОВОДКАСПИСАНИЕ ───────────────────────────► ПРОВОДКААКТ РЕАЛИЗАЦИИ ─────────────────────► ПРОВОДКАСвязи с другими контекстами
| Направление | Что | Зачем |
|---|---|---|
| Организация → Бухгалтерия | Даты блокировки, timezone | Запрет проводок в закрытых периодах |
| Склад → Бухгалтерия | Накладные | Основание для платежей |
| Меню → Бухгалтерия (через ACL) | Номенклатура | Проверка перед удалением категории |
| Бухгалтерия → Склад | Счета | Для инвентаризаций, списаний, реализации |
| Бухгалтерия → POS | Типы внесений/изъятий | Кассовые операции |
Сущности
| Сущность | Описание |
|---|---|
| Тип счёта (AccountType) | Актив, Пассив, Доходы, Расходы |
| Счёт (Account) | Бухгалтерский счёт. Иерархический, системный/пользовательский |
| Проводка (Posting) | Дебет + кредит + сумма + дата. MANUAL / AUTOMATIC |
| Аналитика проводки (PostingAnalytics) | Подразделение, юрлицо, контрагент, сотрудник, ДДС-счёт |
| Платёж (Payment) | Оплата за документ. Автоматическая проводка. Сторнирование |
| Акт услуг (ServiceAct) | Документ об услугах. Основание для платежа |
| ПКО (PaymentReceipt) | Группировка платежей в кассовый документ |
| Тип внесения/изъятия (DepositWithdrawalType) | Кассовая операция с привязкой к 3 счетам |
| Категория учёта (AccountingCategory) | Группировка номенклатуры для бухгалтерии |