Skip to content

2.10.0

Released: TBD

Highlights

  • Depreciation runs can now be reversed, units-of-production assets are rejected instead of silently never depreciating, and empty runs are no longer left in a vestigial DRAFT state. The third of the deferred Accounting Placeholder Audit feature builds.

Added

  • Reverse a depreciation run (audit #24). New reverseDepreciationRun(runId) mutation reverses the run's GL entry, marks the run REVERSED, and restores affected assets' book value. See Depreciation Completeness.

Changed

  • Units-of-production depreciation is rejected at registration (audit #25) with a clear validation error, instead of booking an asset that would never depreciate.
  • Depreciation runs are always posted (audit #26): an empty period no longer leaves a misleading DRAFT run; it is closed as POSTED and covered by the duplicate-run guard.

Fixed

  • Disposal now ignores reversed runs: _accumulated_depreciation counts only POSTED runs, matching net-book-value, so a reversed run is fully undone for disposal as well.

Migrations

  • None. No schema/data migration; the only schema change is the additive reverseDepreciationRun mutation.

Frontend impact

  • A new "reverse depreciation run" action (reverseDepreciationRun) is available, gated by the FIXED_ASSETS permission. Registering an asset with the units-of-production method now returns a validation error.

Versioning notes

  • MINOR bump (uv run python scripts/bump_version.py 2.10.0 --changelog-stub): additive GraphQL mutation plus behaviour fixes, no breaking change.