Skip to content

2.11.0

Released: TBD

Highlights

  • Manual journal entries can be unposted and reposted, making the ledger's is_posted flag real. The last of the deferred Accounting Placeholder Audit feature builds.

Added

  • Unpost / repost manual journal entries (audit #31). New unpostLedgerEntry / postLedgerEntry mutations exclude a manual journal entry from the posted ledger (and every report) or restore it. Source-linked entries (invoices, payments, credits, …) are refused — they must be reversed. Both operations are recorded on the ledger audit chain. See Unpost / Repost Manual Journal Entries.

Changed

  • The ~dozen is_posted.is_(True) report filters are no longer vacuous — unposted manual entries are now correctly excluded from financial statements.

Fixed

  • None.

Migrations

  • None. No DB migration. LedgerAuditOperation gains an appended UNPOSTED member (stable smallint value, no reindex), and the additive postLedgerEntry / unpostLedgerEntry mutations are new GraphQL fields.

Frontend impact

  • A manual journal entry can be unposted (hidden from reports) and reposted. Unposting a source-linked entry returns a validation error directing the user to reverse it instead.

Versioning notes

  • MINOR bump (uv run python scripts/bump_version.py 2.11.0 --changelog-stub): additive GraphQL mutations and an additive audit-enum value, no breaking change.