Held for Sale & Discontinued (IFRS 5)
Classify a non-current asset or disposal group as held for sale, remeasure it to the lower of carrying amount and fair value less costs to sell, cease its depreciation, and post the disposal gain or loss on sale, all inside Odoo 18 Community.
Why this module
Held for Sale & Discontinued (IFRS 5)
Lower-of, done right
On classification the item is remeasured to the lower of carrying amount and fair value less costs to sell, and the shortfall posts as a write-down (IFRS 5.15). A stored writedown field always shows the excess.
Depreciation actually stops
Classification sets depreciation_ceased, and when a fixed asset is linked it is paused through its own API so the depreciation cron skips it while held (IFRS 5.25). Cancellation resumes only an asset this record paused itself.
Clean gain or loss on sale
Recording a sale posts proceeds against the carrying amount and books the difference to the gain or loss account, then zeroes the carrying amount. The item can carry a discontinued-operation flag for separate presentation (IFRS 5.33).
Day in the life
From classification to sale, on the ledger
A manager opens a held-for-sale record, links the store's fixed asset, and clicks Classify. The carrying amount is seeded from the asset's net book value, a write-down to fair value less costs to sell posts through the asset's impairment engine, and depreciation is paused. At the next reporting date a Remeasure records a further fall, or a partial reversal capped at the cumulative write-downs already booked. When the sale completes, Record Sale posts the proceeds, derecognises the asset and books the gain or loss, all under manager control and stamped to the audit trail.
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.
A remeasurement upward reverses prior write-downs but is capped at the cumulative net debit posted to the impairment account for this item, so the carrying amount is never lifted above pre-classification value (IFRS 5.22). Excess is held at the ceiling, not posted.
When a fixed asset is linked, the carrying amount is taken from the asset's ledger net book value rather than a hand-keyed figure, the asset is paused, and write-downs route through the asset engine so the asset subledger and the held-for-sale carrying amount cannot diverge.
Once classified, the carrying amount is locked against hand edits; it can only change through the sanctioned Remeasure action. A raw attempt to reset a held or sold item back to draft is blocked unless a manager drives it through Cancel.
An asset already paused when classified is left untouched and not stamped, so a later cancellation does not wrongly reactivate an asset the user had deliberately paused itself.
A missing asset, impairment, proceeds, gain or loss account, a missing journal, or a sale of an unclassified item each raise an explicit message instead of posting a half-formed entry.
What is inside
Built to do the job, end to end.
- eh.held.for.sale model. The core record in models/held_for_sale.py with draft, held, sold and cancelled states, a computed and stored writedown, the classify, remeasure, sell and cancel actions, and a cumulative-write-down helper backing the IFRS 5.22 cap.
- Fixed-asset integration. Optional asset_id link (depends on eh_account_assets_pro) that seeds the carrying amount from net book value, pauses the asset, and posts write-downs through eh.asset.impairment so both subledgers reconcile.
- Sealed journal entries. Disposal and remeasurement moves are created on account.move with an eh_held_for_sale_id link and eh_sealed flag, and surfaced through the Entries stat button and journal-entries action.
- Access and isolation. security/ir.model.access.csv grants read to users and auditors and write or unlink to managers, security/eh_isolation_rules.xml enforces per-company record isolation, and posting actions check the EH Accounting Manager group.
- Sequences and menus. data/sequences.xml supplies the eh.held.for.sale reference sequence, with list and form views and a menu entry for the register.
Honest about the edges
What this does not do, so nothing surprises you.
- It does not automate the twelve-month completion, active-marketing or highly-probable-sale assessment; you decide when an item qualifies for classification and click Classify.
- It does not build the face of the statement of comprehensive income or the discontinued-operations note; it flags items as discontinued for you to present, it does not lay out the statement.
- It does not allocate a disposal-group write-down across the individual assets and liabilities inside the group; measurement and posting are at the held-for-sale record level.
- It has no foreign-currency translation, deferred-tax or minority-interest handling for the disposal; those belong to their own modules.
- It requires the EH Accounting base and fixed-asset modules (eh_account_base, eh_account_assets_pro); it is not a standalone add-on to plain Odoo accounting.
odoo 19 held for sale, IFRS 5 odoo, discontinued operations odoo, fair value less costs to sell, disposal group accounting, cease depreciation held for sale, non-current asset disposal odoo, impairment write-down reversal, asset disposal gain loss odoo, held for sale journal entry, odoo community IFRS accounting, fixed asset held for sale
Held for sale, remeasured to fair value less costsAn IFRS 5 non-current asset held for sale, written down from its carrying amount to fair value less costs to sell, with the write-down and any disposal gain or loss booked to the ledger.
Please log in to comment on this module