Assets Reference Public

Asset Reports

Reports & Automation 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…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 11 min 3 views
Reports & Automation

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.

ℹ️
Read-only reporting. Nothing on any of the four report tabs creates, edits, or deletes data. The numbers come from work you do elsewhere in Safekeep — the Maintenance screen, the audit modal, the depreciation profiles plus the monthly depreciation cron, and the per-asset activity timeline on the asset detail page.

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 to ams/reports/maintenance_log, the first tab.
Base URL
ams/reports — opening it without a report name redirects to ams/reports/maintenance_log.
Who can open it
The Assets module must be enabled (Settings → Manage Modules) and the user needs the base asset permission ("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 labelURLAnswers 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?
⚠️
No filters — anywhere. None of the four reports has any filter control: no date range, no category, no location, no user picker. Each table loads its full, fixed dataset and offers only the DataTable's own search box, column sorting, and refresh button. The Audit-due look-ahead window (30 days) is hardcoded server-side and cannot be widened or narrowed from the UI. If you need a scoped cut, export what is exportable and slice it in a spreadsheet, or use the filterable Asset Registry instead.

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.
ColumnShowsNotes
"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.
????
Who should run it, how often: the IT admin / maintenance coordinator monthly, to review open work (rows with no completion date) and spot repeat offenders; Finance quarterly, exporting to Excel to total repair spend per vendor and to separate warranty work ("Warranty work" = Yes, which should have cost ₱0 or be reclaimable) from paid repairs.
ℹ️
Empty until you log work. The table shows rows only after someone with the 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.
ColumnShowsNotes
"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.
????
Who should run it, how often: the asset custodian / auditor weekly (or before each audit sweep) — sorted soonest-first, the top of the table is the walk-around list. Work each row by clicking its title, verifying the asset physically, and recording the audit from the detail page; the row drops out once its new next-audit date moves beyond the 30-day window.
ℹ️
How this relates to the reminders and the widget. The weekly "Remind asset audit due" cron (Mondays 08:00) notifies only the asset's holder, only within a 7-day window, and skips unassigned assets entirely; the "Assets needing attention" dashboard widget flags an audit only once it is due today or past. This report is the only place with the full 30-day forward view — and since no reminder is ever sent for an unassigned asset, its audits are visible only here and (once due) in the widget. Details: Widgets, Reminders & Settings. An asset with no next-audit date never appears here — empty means "nothing scheduled in the next 30 days", not "everything audited".

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.
ColumnShowsNotes
"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 decimals

So 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.

????
Who should run it, how often: Finance / accounting, shortly after the 1st of each month (right after the cron refreshes the values) — export to Excel for the fixed-asset register and month-end book-value totals. Also worth a periodic sweep by the IT admin: any high-value asset missing from this report has no depreciation profile, no cost, or no purchase date on record.

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.
ColumnShowsNotes
"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

Endorsed
EndorsedAn asset was checked out (endorsed) to a staff user — see Checkout & Check-in.
Acknowledged
AcknowledgedThe holder confirmed receipt of the asset.
Return requested
Return requestedA return of the asset was requested.
Returned
ReturnedThe asset came back and was checked in.
Audit
AuditA physical audit was recorded — see Auditing Assets.
Maintenance
MaintenanceWritten when a maintenance record is created; later edits or deletion of the record do not change or remove this event.
Checkout
Checkout / Check-inCustody-change events in the endorsement lifecycle.
Note
Note / IssueFree-form entries. The "Issue" label exists in the vocabulary, but no shipped screen records an issue event.
????
Who should run it, how often: auditors and the IT admin, on demand — this is the page to open when answering "who had this laptop in March?" or "who checked that projector in?". During an incident (lost/stolen asset), it reconstructs the custody chain in seconds: search the asset's id, read the events bottom-up. A monthly skim by the asset custodian also catches endorsements that were never acknowledged.
⚠️
The feed is append-only and outlives its sources. Events are never rewritten: editing a maintenance record, for example, leaves its original "Maintenance" event untouched, and deleting the record does not remove the event. Treat the Activity log as the historical record of what was true at the time, not a live mirror of current data.

Cheat sheet — which report, for whom, how often

ReportPrimary audienceSuggested cadenceExcel exportRow links
Maintenance logIT admin, Finance Monthly review; quarterly cost exportYesNone (asset shown as plain text)
Audit dueAsset custodian, Auditor Weekly / before each audit sweepNoTitle → asset view
Depreciation scheduleFinance Monthly, after the 1st-of-month cron runYes"Asset #id" → asset view
Activity logAuditor, IT admin On demand (investigations); monthly skimNo"Asset #id" → asset view
ℹ️
Roadmap. Additional report types (checked-out-per-user, warranty expiry, and later inventory-valuation / per-department rollups) are planned but not shipped. Only the four tabs documented above exist today, none has filter controls, and the audit-due window is not adjustable.
Was this guide helpful?

Report a content problem