Who can do what with analytics and reports
36 is the full count of things PTRS can do in this module: 33 across the dashboard and reports areas, and 3 for funders. Every row below was checked directly against what actually enforces it, not assumed from the screen, and the reachable column was established by searching the product for a screen or control that actually calls it.
28 are called by something in the product. 8 are not. Five of the 28 cannot return a correct answer.
Who is admitted
Not one of the 36 actions narrows or widens the setting on the area it belongs to, and none skips the check entirely. Three settings, one per area, are the whole answer.
| Area | Actions | Setting | Roles admitted |
|---|---|---|---|
| Dashboard and reports | 18 | The reporting setting | Site Director, Regional Director, Org Admin, Super Admin |
| The reports screens | 15 | The reporting setting | Site Director, Regional Director, Org Admin, Super Admin |
| Funder records | 3 | The financial-management setting | Regional Director, Org Admin, Super Admin |
This is the flattest access pattern of any module the portal has read so far, the opposite of Health & Safety, where 37 of 57 actions there narrow their own setting individually. Staff, Parent and OCCL Auditor are refused by all 36, and so is a read-only account, even though the screen shows that account every panel.
The document export for a funder report is written alongside the reports-area code and actually runs under the dashboard area's own setting, both of which require the same reporting setting anyway, so nothing changes for who can use it. A reader working through the code top to bottom would expect a different address than the one the product actually uses. The screen itself calls the correct one.
How to read the "Reachable" column
| Value | Meaning |
|---|---|
| A screen or panel name | Something in the product calls this action in normal use |
| Nothing reaches it | The action is built correctly and no screen or control calls it |
Summary
| Count | |
|---|---|
| Actions in this module | 36 |
| Reachable by a screen | 28 |
| Reachable by nothing | 8 |
| …of which are complete, screen-shaped features with nothing pointed at them | 5: the executive dashboard read, its trend twin, program demographics, and the two exports of those |
| Can never return a correct answer | 5 |
| Narrow or widen the area's own setting | 0 |
| Skip the setting entirely | 0 |
Dashboard and reports (18 actions)
| Action | Reachable by | Note |
|---|---|---|
| Read the KPI strip | The dashboard | Two of the six figures are always zero |
| Read the attendance trend | The dashboard's Attendance Trends chart | Always empty |
| Read the enrolment trend | Nothing reaches it | The Program Enrollment panel calls the Programs module instead |
| Read demographics | The dashboard's Demographics chart | Not applicable |
| Read the compliance trend | The dashboard's Compliance Trend chart | Always empty |
| Read incident trends | The dashboard's Incident Trends chart | Not applicable |
| Read the funding breakdown | The dashboard's Funding Breakdown chart | Not applicable |
| Read staff retention | Nothing reaches it | The figure it would show cannot decrease, by construction |
| Read every funder | The funder reporting screen, the funder records screen, and the report preview | Not applicable |
| Read one funder | The funder detail page | Omits five stored fields |
| Read funder report history | The funder reporting screen | Not applicable |
| Read one funder report | Nothing reaches it | Returns attendance and enrolment fixed at zero |
| Generate a funder report | The funder reporting screen | Attendance is always zero |
| Read the attendance heatmap | The dashboard's Attendance Heatmap panel | The panel reads fields this reply does not send |
| Read the funder report templates | Nothing reaches it | Not applicable |
| Read incidents by type and location | The dashboard's Incident Trends chart | All time, no date filter |
| Read the incident heatmap | The dashboard's Incident Trends chart | Fixed at 90 days |
| Download a funder report as a document | The funder reporting screen and the report preview | Not applicable |
The save that generates a report, the read behind the Total Attendance card, and the document export all trace back to a table with no writer. The full chain is in why analytics figures read zero.
The reports screens (15 actions)
| Action | Reachable by | Note |
|---|---|---|
| Read the executive summary | Nothing reaches it | There is no executive dashboard screen; only its download exists |
| Download the executive summary | Download Report on the dashboard | Document only |
| Read the 90-day attendance trend | Nothing reaches it | The dashboard's own chart uses a different read instead |
| Download the attendance trend report | Nothing reaches it | Not applicable |
| Read program demographics | Nothing reaches it | Not applicable |
| Download program demographics | Nothing reaches it | Would return an address that fails without a sign-in token attached |
| Read the statistical report | The statistical report screen | Not applicable |
| Read locations for the statistical report | The statistical report screen's site picker | Not applicable |
| Read available years | The statistical report screen's year picker | The attendance half of this list is always empty |
| Download the statistical report | The statistical report screen | The document omits two sections the spreadsheets include |
| Read the operational report catalogue | The operational reports screen | Not applicable |
| Read one operational report | The operational reports screen | Not applicable |
| Download an operational report | The operational reports screen | Not applicable |
| Read the financial summary | The financial summary screen | Not applicable |
| Download the financial summary | The financial summary screen | Not applicable |
Funder records (3 actions)
| Action | Reachable by | Note |
|---|---|---|
| Create a funder | Add Funder on the funder records screen | Requires a name, type, frequency, due date and status; the grant amount must be zero or more; an email must be a valid shape |
| Edit a funder | The edit dialog on the funder detail page | Replaces every field, including five the read behind the same screen never actually returns |
| Remove a funder | The bin icon on the funder records screen | A soft removal. Its reports remain but drop out of Report History |
Requests that cannot succeed
Something in the product calls each of these five, and none of them can return a correct answer. None fails outright; each returns normally with a wrong or empty answer.
| Request | What happens | Why |
|---|---|---|
| Read the attendance trend | Always empty | Reads the daily summary table nothing writes to |
| Read the compliance trend | Always empty | Reads the compliance snapshot table, written only by the engine that fails first and by a development-only setup |
| Read the KPI strip | Two of six figures are always zero | The same two tables |
| Generate a funder report | Total attendance is always zero, and is fixed into the stored report | The same attendance table |
| Read the attendance heatmap | Returns correct data the panel cannot read | The panel expects different field names from the ones the reply actually sends |
Export format handling
Six actions accept a format choice, and none of them checks it. Each falls back to a default format silently rather than refusing an unrecognised one.
| Action | Recognises | Falls back to |
|---|---|---|
| Download the executive summary | A document | A spreadsheet |
| Download the attendance trend report | A document | A spreadsheet |
| Download program demographics | A document | A spreadsheet |
| Download the statistical report | A spreadsheet, a document | A workbook |
| Download the financial summary | A document, a spreadsheet | A workbook |
| Download an operational report | Not applicable, no format choice at all | A workbook |
PTRS's own error catalogue defines a message for an unsupported format and nothing ever returns it. Only one of the six errors this module defines is ever actually used, on the document export for a funder report. Everywhere else the module reports a different, generic failure instead, which is why an unrecognised operational report type comes back as "not found" rather than the "bad request" its own error catalogue describes for it.
Related
Checked against PTRS on 7 September 2026.