Asset Reports
Four read-only roll-up tables under one "Asset Reports" screen — the maintenance history of your fleet, the assets whose physical audit is coming up, every depreciable asset's current book value, and the org-wide chain-of-custody feed of everything that has ever happened to any asset.
Access & navigation
- Screen heading
- "Asset Reports" — one heading shared by all four tabs.
- Sidebar entry
- Safekeep → Asset Reports (icon
fa-bar-chart). The menu item deep-links straight toams/reports/maintenance_log, the first tab. - Base URL
ams/reports— opening it without a report name redirects toams/reports/maintenance_log.- Who can open it
- The Assets module must be enabled (Settings → Manage Modules) and the user needs the base
assetpermission ("Assets: Entries"). There is no per-report permission — anyone who can see assets can open all four reports, including cost and book-value figures. See Permissions & Roles.
The tab strip
A shared tab strip sits under the "Asset Reports" heading on every report page. Each tab is a normal link — switching tabs loads a new page, so the browser back button works between reports. The four tabs, in order:
| # | Tab label | URL | Answers the question |
|---|---|---|---|
| 1 | "Maintenance log" | ams/reports/maintenance_log |
What maintenance / repair work has been done, on what, by which vendor, at what cost? |
| 2 | "Audit due" | ams/reports/audit_due |
Which assets need a physical audit soon — or are already overdue? |
| 3 | "Depreciation schedule" | ams/reports/depreciation_schedule |
What is each depreciable asset's current book value? |
| 4 | "Activity log" | ams/reports/activity_log |
What has happened across all assets, when, and by whom? |
1 · Maintenance log
The question it answers: "What maintenance, repair, and upgrade work has been done, on which assets, by which vendor, and what did it cost?" It is the fleet-wide, read-only twin of the Maintenance screen — the same rows, minus the edit/delete options column, so it is safe to hand to people who should see history but never touch it.
- URL
ams/reports/maintenance_log- Filters
- None.
- What's listed
- Every non-deleted maintenance record, across all assets and all time.
- Default sort
- Start date, newest first.
- Excel export
- Yes — all 8 data columns.
| Column | Shows | Notes |
|---|---|---|
| "Asset" | The linked asset's title. | Plain text here — not a link to the asset view. |
| "Title" | The maintenance record's title. | |
| "Maintenance Type" | The stored type, Title-Cased. | One of Maintenance, Repair, Upgrade, Calibration, Hardware Support, Software Support — or blank if none was picked. |
| "Vendor" | The supplier's name. | From the shared vendors catalog. |
| "Start date" | Formatted date. | "-" if empty. |
| "Completion date" | Formatted date. | "-" if empty. A row with a start date but no completion date is still open — maintenance has no explicit status field; the dates are the lifecycle. |
| "Cost" | The cost as a plain decimal number. | No currency symbol is shown; "-" if empty. |
| "Warranty work" | "Yes" / "No" | Whether the "Warranty work" checkbox was ticked on the record. |
asset_maintenance permission has used "Add Maintenance" on the
Maintenance screen. Also note: the maintenance form's "URL" and "Notes"
fields are not shown in this report (notes surface only as the body of the asset's timeline
event), and editing or deleting a maintenance record does not update the "Maintenance" entry it
originally wrote into the Activity log.
2 · Audit due
The question it answers: "Which assets need a physical audit within the next 30 days — and which ones are already overdue?" This is the work queue for your audit cadence: everything whose Next Audit date falls on or before today + 30 days, which inherently includes anything already overdue. The 30-day window is fixed in the controller.
- URL
ams/reports/audit_due- Filters
- None. The 30-day look-ahead is hardcoded.
- What's listed
- Assets with a next-audit date ≤ today + 30 days (overdue included).
- Default sort
- Next Audit, ascending — soonest (and overdue) first.
- Excel export
- No — no export button appears on this table.
| Column | Shows | Notes |
|---|---|---|
| "Title" | The asset title, as a link to the asset detail page. | If the next-audit date is before today, a red Overdue badge is appended after the link. |
| "Asset Tag" | The asset's tag. | |
| "Category" | The asset's category name. | |
| "Endorsed to" | The legal name of the current holder. | "-" if the asset is unassigned. |
| "Last Audit" | Date of the most recent recorded audit. | "-" if the asset has never been audited. |
| "Next Audit" | The scheduled next-audit date. | Set automatically when an audit is recorded (see Auditing Assets) or entered on the asset itself. |
3 · Depreciation schedule
The question it answers: "What is each depreciable asset's current book value?" One row per asset that qualifies for depreciation. To appear, an asset needs all three of: a depreciation profile attached, a cost greater than 0, and a purchase date. Assets missing any of these are silently excluded.
- URL
ams/reports/depreciation_schedule- Filters
- None.
- What's listed
- Every non-deleted asset with a depreciation profile + cost > 0 + purchase date.
- Default sort
- Asset, ascending.
- Excel export
- Yes — all 7 data columns.
| Column | Shows | Notes |
|---|---|---|
| "Asset" | A link to the asset view, displayed as "Asset #<id>". | The asset's title is not shown — the underlying query selects only the id (a known rough edge). Click through to see which asset it is. |
| "Cost" | Acquisition cost, plain decimal. | "-" if empty (in practice always set, since cost > 0 is an inclusion rule). |
| "Purchase date" | Formatted date. | The start of the depreciation clock. |
| "Useful life (months)" | The profile's term in months. | |
| "Residual / minimum value" | The floor value from the profile. | Book value never drops below this. |
| "Current value" | The last book value computed by the depreciation cron. | Shows "-" until the cron has run at least once for this asset. |
| "Computed at" | Date-time of the last cron computation. | "-" if never computed. This is your freshness stamp — trust the figure only as of this moment. |
Where the "Current value" comes from
The report does no math of its own — it only displays the result stored by the
"Compute asset depreciation" cron job (slug compute_asset_depreciation), which runs
monthly, on the 1st at 01:10, using straight-line depreciation:
current value = cost − (cost − residual) × (months elapsed ÷ useful-life months)
— floored at the residual value, rounded to 2 decimalsSo figures are only as fresh as the last monthly run. Newly registered depreciable assets show "-" for
Current value and Computed at until the next 1st-of-the-month run (or until an admin triggers
php erpat cron:run compute_asset_depreciation manually). See
Depreciations for the profiles and
Widgets, Reminders & Settings for the cron.
4 · Activity log
The question it answers: "What has happened across all assets, when, and by whom?" This is the org-wide chain-of-custody feed: every event ever recorded against any asset — endorsements, acknowledgements, return requests, returns, audits, maintenance entries, notes — in one reverse- chronological table. The per-asset slice of this same feed is the Activity timeline on the asset detail page; this report is the union of all of them.
- URL
ams/reports/activity_log- Filters
- None — use the table search box to narrow by type, title, or person.
- What's listed
- Every asset event, across all assets and all time.
- Default sort
- Date, descending — newest events first.
- Excel export
- No — no export button appears on this table.
| Column | Shows | Notes |
|---|---|---|
| "Date" | When the event occurred (date-time). | Falls back to the moment the event record was created if no occurrence time was stored. |
| "Asset" | A link to the asset view, displayed as "Asset #<id>". | "-" if the event is not tied to an asset. As on the Depreciation schedule, the asset title is not shown — click through to identify it. |
| "Type" | The event kind, translated to its display label. | See the legend below. Unknown kinds fall back to a Title-Cased form of the raw value. |
| "Title" | The event's title. | E.g. the maintenance record's title for "Maintenance" events. |
| "Created by" | Full name of the acting user. | Who performed the checkout, audit, etc. — the accountability column. |
Event types you will see in the "Type" column
Cheat sheet — which report, for whom, how often
| Report | Primary audience | Suggested cadence | Excel export | Row links |
|---|---|---|---|---|
| Maintenance log | IT admin, Finance | Monthly review; quarterly cost export | Yes | None (asset shown as plain text) |
| Audit due | Asset custodian, Auditor | Weekly / before each audit sweep | No | Title → asset view |
| Depreciation schedule | Finance | Monthly, after the 1st-of-month cron run | Yes | "Asset #id" → asset view |
| Activity log | Auditor, IT admin | On demand (investigations); monthly skim | No | "Asset #id" → asset view |