Бухгалтерский счёт ledger2 (двойная запись).
- table: accounts (ledger2)
id — со смещением *1000: 51 → 51000, 80 → 80000, 86 → 86000.
account_type определяется планом счетов LEDGER2_ACCOUNT_MAP и сохраняется в записи при первой проводке. Формула сальдо — стандартная российская бухгалтерия:
- 0 = ACTIVE → balance = debit_balance − credit_balance (актив растёт по дебету; положительное сальдо означает реальный остаток средств/имущества)
- 1 = PASSIVE → balance = credit_balance − debit_balance (пассив растёт по кредиту; положительное сальдо означает реальный остаток капитала/обязательств)
- 2 = ACTIVE_PASSIVE → balance = debit_balance − credit_balance (знаковая) > 0 → чистый актив (Dr преобладает), < 0 → чистый пассив (Cr преобладает). В MVP после удаления счёта 99 ACTIVE_PASSIVE фактически не используется, но тип сохранён для будущих случаев (любой счёт расчётов, способный менять знак).
Хранятся одновременно ОБОРОТЫ (debit_balance, credit_balance) и САЛЬДО (balance) — чтобы и сверка инварианта Σ Dr == Σ Cr была доступна, и текущее сальдо счёта читалось без вычислений на стороне читателя.
balance обновляется атомарно вместе с debit_balance / credit_balance в actions debit / credit контракта ledger2.