2.8.3¶
Released: TBD
Highlights¶
- Acted on the Accounting Placeholder Audit: re-verified all 42 findings against HEAD, fixed two real data-integrity bugs, removed dead code, and confirmed two suspected bugs were actually safe by design.
Added¶
- None.
Changed¶
- Removed dead/unused accounting code with no schema impact: the orphaned
pac_transactionsbytecode tree, the never-mappedSupplierDefault/client_defaultsmodels andAgeInvoiceenum, the orphanvalidate_supplier_defaults_accountsvalidator, the uncalledBankReconciliationRepository.last_closed, the never-traversedLedgerEntry.reversal_of/reversed_byORM relationships (the scalar FK columns are retained), and the deadRecurringInvoiceRunStatusenum.
Fixed¶
- Depreciation double-posting (audit #27).
FixedAssetService.run_periodnow refuses to post a period that already has a posted depreciation run, preventing doubled expense and accumulated depreciation when a month is run twice. - Account balances always showed zero (audit #11). The accounts landing page (
AccountQueryRepository.paginated_stmt) now computes each account's real posted general-ledger balance on its natural side instead of a hardcoded0.
Migrations¶
- None. No schema changes — no alembic revisions, no GraphQL surface changes.
Frontend impact¶
- The accounts list now returns a real
balanceper account instead of0; no contract change. Everything else is internal cleanup. A set of larger audit items (bank-reconciliation settlement, supplier-credit application, ledgeris_posteddrafts, project/office budget scoping, dead-enum cleanup) remain deferred pending product review.
Versioning notes¶
- PATCH bump (
uv run python scripts/bump_version.py 2.8.3 --changelog-stub): bug fixes plus dead-code removal, no breaking or additive schema changes.