Why an asset management system needs one record, not two
Ask finance how many generators the company owns and you’ll get a number from the fixed asset register. Ask the workshop and you’ll get a different number, from a spreadsheet or a whiteboard. Both are sort of right. One includes the unit that was written off but still gets used for spares. The other includes the unit bought on a credit card and never capitalised.
That gap is what an asset management system should close. It isn’t about fancier depreciation. It’s about both teams looking at the same record and trusting it.
What ERPNext and Odoo give you before any custom code
ERPNext is strong here out of the box. The Asset DocType handles purchase, depreciation (straight line, written down value, double declining balance or manual) and disposal, with Asset Category holding accounts and defaults. Newer versions keep schedules in a separate Asset Depreciation Schedule. Asset Movement, Asset Repair, Asset Value Adjustment and Asset Maintenance cover most of what the workshop does.
Odoo splits the job by edition. Depreciation lives in account.asset, which is Enterprise. The Maintenance app, with maintenance.equipment and maintenance.request, is in Community. Linking the two is left to you.
So the gaps are specific. Meter-based servicing isn’t really there on either platform. Linking equipment to the financial asset on Odoo takes work. And capitalisation rules are your accountant’s opinion, not a platform default.
What erpfly adds sits in its own app or addon. On ERPNext that means a Frappe app with a Meter Reading DocType, custom fields on Asset shipped as fixtures, and hooks that raise Asset Maintenance tasks when a reading crosses the interval. On Odoo it’s an addon that inherits the equipment model, adds a scheduled action through ir.cron, and extends the stock form and list views instead of replacing them. Access rules are written out explicitly, because technicians should be able to log a reading without seeing what the machine cost.
None of this edits core files. When you move to the next major version, your register and your service history come along, and the tests tell you if a field you rely on has been renamed.
Worked example: plant hire with hour meters
Picture a hire company with around 60 generators and compact excavators, operating from two depots.
A new 100 kVA generator costs $18,000. Salvage value is $3,000 and useful life 5 years, straight line. That’s $15,000 over 60 months, or $250 of depreciation a month, and it posts without anyone touching it.
Service is due every 250 running hours. When the unit returns from a hire, the yard hand reads the meter and enters 1,142. The last service was at 890. That’s 252 hours since service, so the scheduled job raises a preventive maintenance request that night. Busy units on long hires run about 70 hours a week, which puts them in the workshop roughly every three and a half weeks.
In month 14 the alternator fails. The repair costs $1,650, above the company’s $1,000 threshold, and the workshop manager records that it extends the unit’s life by a year. It’s capitalised, and the remaining depreciation is spread across the new remaining life. A $300 fuel pump swap the week after just posts as an expense.
One record holds all of it. Finance sees book value. The workshop sees hours to next service.
Where we’d push back on scope
Some asset projects try to track everything, and they end up tracking nothing well.
Don’t register $40 office chairs as individual assets. Set a capitalisation threshold with your accountant and expense everything below it.
Don’t start with live sensor feeds. Manual readings for a month will show you which meters are broken, which staff skip the reading, and whether the intervals make sense.
And don’t write your own depreciation engine. Both ERPNext and the Odoo asset modules handle the maths, including the awkward mid-year disposals. Build the rules around them, not a replacement.
Where assets meet the rest of the ERP
Vehicles are assets with extra paperwork, so the fleet management module shares a lot with this one. Depreciation and capitalised repairs land in your accounting ledgers. Production equipment ties into manufacturing workstations, and our page for manufacturers covers downtime tracking in more detail.
On Odoo and planning to link Maintenance to Enterprise assets? Odoo module development explains how we structure the addon.