Skip to content
Knowledge ERP Docs

API Reference ↗
Reporting

Reporting & Dashboards

A configurable home dashboard plus a library of cross-module reports — with saved filter presets, CSV export, and scheduled email delivery.

Knowledge ERP ships a library of operational and financial reports, a customizable home dashboard, and the plumbing to filter, export, and schedule them.

The home dashboard #

The main dashboard is configurable: choose which widgets appear from the widget library, and your layout is remembered per user. It's the at-a-glance view of the numbers you care about most.

You will only be offered the widgets whose data you are allowed to see. The dashboard itself is always reachable — a widget you lack the permission for is simply not there, and does not appear in the Customize list.

Section dashboards #

Several modules have a dashboard of their own — Sales, Purchasing, Manufacturing and Appointments — and each one is the first item in its section of the sidebar, so the section opens on its numbers rather than on a list. The main dashboard stays at the top of the sidebar as before.

The report library #

Pre-built reports and dashboards span every module, including:

  • Inventory — valuation, low stock
  • Sales — sales dashboard, sales summary, top customers, quote pipeline, sales pipeline, sales forecast
  • Receivables / payables — invoice aging, AP aging, cash flow
  • Purchasing — purchasing dashboard, vendor performance
  • Manufacturing — manufacturing dashboard, work-in-progress (WIP)
  • Appointments and Feedback surveys — operational dashboards and survey results

The valuation report #

Inventory → Movement Log → Valuation Report values your stock product by product: how many units, how much that adds up to, the unit cost, and the cost and retail value of the lot. It exports to CSV.

It values stock wherever it is, not only what is on the shelf. A unit that is Checked Out — including one out on loan or rent — or On Hold, or In Transit on a transfer, is still an asset of the business, so it is valued here. That is why the column says Quantity Valued rather than naming a shelf, and why these figures can read higher than a stock count of what is physically in your bins. The page says as much above the table.

What the columns add up:

  • Missing units are left out altogether. Stock nobody can find is a realised loss, and carrying it as an asset in an unknown place is how shrinkage stays invisible.
  • Every other unit is included, at the quantity its own record says is left. Quantity Valued adds those quantities up. Cost Value and Retail Value are what the same units come to in money, worked out unit by unit, so they need not equal Quantity Valued times the Unit Cost beside them. The total above the table says Units Valued because that is what it counts: the unit records these figures were worked out over.

A unit shipped on a sales order is left at 0% full, so it adds nothing here — the same as a unit written off with Discard or Donate. Shipping has not always done this: a unit shipped before it did still holds the quantity it had, and is still valued here.

So the report is as right as the unit records behind it. If a figure looks too high, open the product's units and open one: a unit whose % Full still says 100% is valued as a full one, and being marked Out of Stock does not change that.

Like the other reports, it is narrowed to the locations you are allowed to see, so two people can read different totals on the same day and both be right.

The aging reports #

Invoice Aging (money in) and AP Aging (money out) are the same report pointed at opposite ledgers, and both are drawn up as at a date.

That date is the whole point of them. A debtors figure you cannot produce a second time is a figure nobody can close a month on, so "as at 31 August" means what it means in a ledger:

  • balances are aged against that date, not against today;
  • a document raised after it is not on the report;
  • money collected after it has not been collected yet. An invoice settled in September was still owing on the 31st of August, and the August report keeps saying so however many times you run it.

Each report shows the bucket totals, a Summary by Customer (or by Vendor) — one row per party with a column per bucket, which is the sheet to hand somebody — and then the documents themselves, bucket by bucket. Every money figure is shown to the cent.

Save Filter / Load Filter keep an as-at date, and Export CSV takes the whole thing to a spreadsheet.

The single-customer version of this is the Statement on the customer's own page, which ages the same way and can be emailed, printed or saved as a PDF. See Customers.

Who can see a report #

A report is gated by the view_any permission for every kind of data it shows, not just one of them — Cash Flow needs both customer and vendor payment permissions, because it puts money in and money out on the same screen. Without them the report is absent from the navigation and refuses if you go to its URL directly. Module access is checked as well: the permissions alone will not open a report belonging to a module your plan does not include.

The full report-by-report list is in Users, Roles & Permissions.

Filters #

The filter bar at the top of a report applies as soon as you change it — there is no Apply button to press. Change a date, pick a person, and the figures below redraw against the new range.

When a filter leaves a report with nothing to show, the empty message names the filter it applied, so an idle week and a broken report cannot be mistaken for one another.

Saved filters #

Reports that support filtering let you save filter presets — name a set of filters once (a location, a date range, a status) and reapply it in a click, instead of re-entering the same parameters every time.

CSV export #

Every tabular report can be exported to CSV, so you can pull the underlying numbers into a spreadsheet or hand them to another system. Visual dashboards (Sales, Purchasing, Manufacturing, Appointments) display charts and summaries without a CSV export option.

Exported files are written to be added up, not read. Money and quantities leave as plain numbers — no currency symbol and no thousands separator — so a column of them totals correctly instead of a spreadsheet treating 1,990.36 as text and silently dropping it from a SUM(). Dates leave in YYYY-MM-DD form, which sorts as a date rather than alphabetically. Anything a person typed that a spreadsheet would otherwise execute as a formula is neutralised on the way out. The screen keeps its readable formatting; only the file is changed.

Scheduled delivery #

Set up a report schedule to have a report emailed to recipients on a cadence (for example, a weekly low-stock report or a monthly aging report). A background command (reports:deliver-scheduled) sends them automatically. Reports → Scheduled Reports lists only the reports your role lets you open.

A scheduled report is generated with the permissions of the person who set it up, whoever it is sent to. If they can no longer open the report, or can no longer sign in, it is not sent: the schedule shows Failed with the reason, and it is sent again at its next scheduled time once they can.

On the roadmap #

Today's reports are pre-built. A fully configurable report builder and user-defined KPIs are planned — until then, if you need a cut that isn't covered, the REST API lets you pull the raw data and build it yourself.