Asset Maintenance & TCO
Usage readings, asset costs, Total Cost of Ownership, and asset retirement.
Overview
The asset maintenance surfaces live on an individual asset's asset detail page. They track how much the asset has been used, what it has cost to keep, its Total Cost of Ownership, and its eventual retirement. These panels sit alongside the equipment test surfaces (see EquipmentTests & Maintenance).
Usage readings
Capture cumulative meter values — running hours, mileage, cycles — per asset and usage metric. Readings must be monotonic: a normal reading cannot be below the current value, and a regression is rejected with a message naming the current reading. To correct a mistaken reading, record a correction, which is append-only and may be lower; the latest reading by timestamp becomes the new baseline. Usage readings drive usage-based equipment test due computation.
The asset detail page shows the reading history and an inline record form.
Asset costs & TCO
Record typed costs against an asset — parts, labour, external services, consumables, and shipping — as decimal amounts stored in integer minor units with a currency snapshot. The asset's Total Cost of Ownership panel rolls up:
- the purchase price,
- accumulated costs to date,
- a per-type breakdown, and
- catalogue item-average TCO for comparison.
Cost figures are gated by cost visibility: users without costs.view see the asset without cost amounts. Costs landed by receiving a maintenance parts purchase order appear here automatically with the PO as their source.
Raising a parts purchase order
From the Asset Costs panel you can Raise a Parts PO — a maintenance-type purchase order linked to the asset (or an equipment test result). Receiving the PO lands the parts cost against the asset through the standard cost path, feeding TCO. See Sub-Hire & Procurement for the PO lifecycle.
Retirement & disposal
Retire an asset when it is sold, scrapped, or otherwise removed from service. Retirement is supply-side: a retired asset drops out of stock counts, availability reads, and allocation validation — it does not carry a perpetual demand. Retirement records a final TCO snapshot.
- Active/future bookings block retirement unless you hold the override permission (the same displacement permission used for shortages and repair displacement).
- Reinstatement reverses a retirement and restores the asset to stock.
- A barcoded repair write-off creates the retirement through this same single path.
The retirement UI is available from the asset detail page and via the retirements index. The retirement show page includes an Audit Timeline panel. Retirement is also fully exposed over REST — see the Asset Retirements API.
Permissions
| Permission | Grants |
|---|---|
usage-readings.view / .create |
View and record usage readings |
asset-costs.create |
Record a cost (no costs.view required; amounts stay hidden without it) |
asset-costs.view / .update / .delete |
View/list and mutate existing costs (also require costs.view) |
asset-retirements.view / .create |
View and retire assets |
asset-retirements.void |
Void/reinstate retirements |
API
Usage readings, asset costs, and asset retirements are exposed via the Usage Readings API, Asset Costs API, and Asset Retirements API.