Fixed Assets and IFRS 16 Leases
A standards-grade fixed asset register and IFRS 16 lessee engine for Odoo Community, with real persisted schedules and journal posting.
Why this module
Fixed Assets and IFRS 16 Leases
The hard parts, done right
IFRS 16 leases with present value measurement, modification remeasurement at the revised rate, and a schedule where principal plus interest always equals the payment. IAS 36 impairment with a dual reversal ceiling and automatic re-amortisation. Not field names that sound like standards, the actual mechanisms in shipped, tested code.
Every period is a record
Depreciation, lease and deferral schedules are real persisted lines, one per period with computed charge, accumulated balance and net book value. Queryable, exportable and audit ready. A last row true-up lands every closing balance exactly on target despite fixed per period rounding.
Yours to keep
LGPL-3 source on disk. No activation key, no phone-home, no recurring licence, and no paid Enterprise dependency. Read it, extend it, fork it if you need to. Free today and free at renewal, because there is no renewal.
Day in the life
A controller renegotiates a warehouse lease and revalues an impaired machine in the same close.
The warehouse lease is renegotiated mid term. The modify wizard remeasures the lease liability at the new incremental borrowing rate, moves the right of use asset by the same delta, and rebuilds the remaining schedule so principal plus interest still equals the payment and the final row trues the liability to zero, with nothing forced through P/L. On the production line, a machine is impaired under IAS 36. The charge posts, the remaining schedule is wiped and rebuilt over the same number of periods on the post event net book value, and when conditions improve later a reversal is capped at the depreciated historical cost the asset would have had if it had never been impaired, so it can never inflate above its original path. Overnight, the daily cron posts every running asset's due depreciation line, each asset isolated under its own savepoint, so one misconfigured asset never freezes the batch. All of it on Community, with every period sitting on disk as a real line the auditor can trace.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
An asset under construction accumulates cost with no schedule. When you capitalise it, a balanced asset to holding transfer entry posts, the in service date is set, the schedule is generated and depreciation begins, all in one action.
Instant asset write-off books a one shot full depreciable amount write-off in the first period regardless of useful life, salvage still honoured, for instant asset write-off and fast deduction regimes.
Reducing balance and diminishing value automatically switch to straight line on the remaining balance once that exceeds the declining amount, so the asset reaches salvage exactly at end of life rather than drifting above or below it.
An impairment reversal is blocked not only when it exceeds cumulative charges but also when it would lift the carrying amount above the depreciated historical cost the asset would have had with no impairment. The ceiling is enforced in code, so a reversal can never inflate the asset above its historical path.
After an impairment charge or reversal posts, the remaining schedule is wiped and rebuilt over the same number of remaining periods on the post event net book value. Manual, units of production, instant, pooled and deferred items are intentionally skipped.
A lease term that is not a whole multiple of the payment cadence is rejected at activation and modification with a clear error, rather than silently producing a schedule that never trues the liability to zero.
Every schedule carries a last row true-up: the final depreciation line absorbs accumulated rounding and the final lease principal row clears the full remaining liability, so accumulated and closing balances land exactly on target despite fixed per period rounding.
Transferring an asset into the low-value pool is blocked when its cost exceeds the pool threshold, and the annual pool depreciation line is idempotent per financial year, so a re-run cannot double charge the pool.
A posted asset cannot be sent back to draft and a disposed asset cannot reopen. Schedule regeneration is draft only and preserves already posted lines, so recomputing parameters never disturbs the ledger.
What is inside
Built to do the job, end to end.
- Asset register with four working methods. Straight line, reducing balance (declining) with an automatic switch to straight line, AU prime cost and AU diminishing value, plus a manual schedule. First period proration by days in service. Units of production is a preview.
- IAS 36 impairment. Impairment charge and reversal with a dual reversal ceiling (cumulative charge and depreciated historical cost) and automatic IAS 36.63 re-amortisation of the remaining schedule on the post event net book value.
- IFRS 16 lessee engine. Present value based ROU asset and lease liability, advance or arrears amortisation, code tested modification and termination wizards that keep principal plus interest equal to the payment and true the liability to zero.
- Disposal and gain or loss. Dispose at a price posts a balanced gain or loss entry, transfers accumulated depreciation and terminates the schedule. Disposing with zero proceeds writes off the remaining book value as a loss.
- Deferred revenue and deferred expense. The same schedule engine releases prepaid revenue into income or prepaid expense into the P/L over the schedule, posting a balanced two leg recognition entry each period via a single deferred_type switch.
- Specialised regimes. Asset under construction capitalisation, instant asset write-off, IAS 16 parent and child component roll-up, and an AU low-value pool with idempotent annual depreciation.
- Parallel reporting books. Additional tax, IFRS and management books each generate an independent parallel depreciation schedule on the same asset for the tax return or management pack.
- Scheduled posting. A daily cron posts each running asset's due lines under a per asset savepoint, a daily cron posts each active lease's due amortisation entries under per record try and except, plus a manual Post Due Lines action.
Honest about the edges
What this does not do, so nothing surprises you.
- Additional tax, IFRS and management books are reporting only. Each generates a parallel schedule, but only the asset's primary schedule posts to the general ledger.
- Each asset and lease carries its own currency and rounds every schedule amount to it, but there is no FX coupling inside this module. Foreign currency GL balances are revalued at period end by eh_account_fx_revaluation only if that module is installed.
- Units of production is a preview only. It does not generate a GL postable schedule. Sum of years digits is not implemented.
- There is no dedicated scrap action and no asset modify wizard. Scrap is disposal with zero proceeds, and schedule recomputation on asset parameter change happens by regenerating the draft schedule; the modify wizard applies to leases only.
- The manual Post Due Lines force post action has no manager group guard, so any user with write access can force post overdue lines. Revalue and dispose remain manager guarded.
Odoo 16 fixed assets, Odoo Community asset depreciation, IFRS 16 lease accounting Odoo, right of use asset Odoo, lease liability amortisation Odoo, asset disposal gain loss Odoo, asset revaluation impairment Odoo, IAS 36 impairment Odoo, deferred revenue recognition Odoo, deferred expense Odoo, AU diminishing value prime cost depreciation, Australian low-value pool depreciation, multi-book depreciation tax statutory, asset under construction CIP Odoo, fixed asset register Odoo Community no Enterprise
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Please log in to comment on this module