You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Beyond the summary, asset managers need targeted reports to act on specific risks: warranties about to expire, high maintenance costs, and underutilised assets. These feed into the advanced reports page (FE-19) and can be exported as PDF/Excel (BE-53).
All report endpoints must support ?departmentId, ?categoryId, and date range (?from, ?to) filters
Acceptance Criteria
GET /reports/warranty-expiring with ?days=30 (default) — returns assets where warrantyExpiration is within the next N days, sorted by warrantyExpiration ASC. Response includes assetId, name, warrantyExpiration, department.name, assignedTo
GET /reports/maintenance-costs with ?from and ?to date range — total maintenance spend per asset and per department, sorted by cost DESC. Sums MaintenanceRecord.cost and WorkOrder.actualCost in the period
GET /reports/depreciation — all depreciating assets with: purchasePrice, currentValue, totalDepreciation (purchasePrice - currentValue), depreciationMethod, usefulLifeYears, grouped by category with subtotals
GET /reports/asset-utilisation — assets by utilisation: total days checked out vs total days in the period, percentage utilised, assets never used (0 checkouts)
All endpoints are paginated and apply RBAC department scoping
Overview
Beyond the summary, asset managers need targeted reports to act on specific risks: warranties about to expire, high maintenance costs, and underutilised assets. These feed into the advanced reports page (FE-19) and can be exported as PDF/Excel (BE-53).
Context
?departmentId,?categoryId, and date range (?from,?to) filtersAcceptance Criteria
GET /reports/warranty-expiringwith?days=30(default) — returns assets wherewarrantyExpirationis within the next N days, sorted bywarrantyExpiration ASC. Response includesassetId,name,warrantyExpiration,department.name,assignedToGET /reports/maintenance-costswith?fromand?todate range — total maintenance spend per asset and per department, sorted by cost DESC. SumsMaintenanceRecord.costandWorkOrder.actualCostin the periodGET /reports/depreciation— all depreciating assets with:purchasePrice,currentValue,totalDepreciation(purchasePrice - currentValue),depreciationMethod,usefulLifeYears, grouped by category with subtotalsGET /reports/asset-utilisation— assets by utilisation: total days checked out vs total days in the period, percentage utilised, assets never used (0 checkouts)