Reports, KPIs & notifications

An operational report catalogue filtered by your role — stock and valuation, sales and purchasing registers, receivables and payables aging, ledger and financial statements, HR and project reports. Run, filter, export to CSV, or schedule for delivery. Plus the notification inbox, per-user preferences, and an SMS gateway.

In this module
  • Role-filtered catalogue with CSV export
  • AR / AP aging and statements
  • HR, payroll, and project reports
  • Notification inbox and SMS gateway

Reports read from the same ledgers the screens do, filtered by the same permissions. Two people running the same report on the same day see the same numbers — narrowed to what each is allowed to see.

What is in it

  • Stock on hand, valuation, near-expiry, and slow-moving
  • Sales and purchase registers, customer and supplier statements
  • AR and AP aging with the usual buckets
  • General ledger, trial balance, and financial statements
  • HR, payroll, and project reports
  • Dashboard KPIs, saved views, and scheduled distribution

Every report exports to CSV. Record visibility can hide individual documents from a role in the transactional lists, but reports always count every record — a report that quietly omits rows is a report that lies.

Module shape

How Reports, KPIs & notifications fits the rest of the system

Bounded

The module owns its tables and its service interface. Other modules reach in only through services and async events — never SQL.

Test-vector verified

Every domain rule has two implementations — Dart and Java — and a single shared test vector. CI fails on any divergence.

Audit-logged

Every command writes an entry to the append-only audit log with a chain hash. The daily verifier proves the log has not been tampered with.