Inventory NRV Write-down (IAS 2)
Carry inventory at the lower of cost and net realisable value, post only the period movement to a write-down expense against an allowance, and reverse recoveries capped at the amount previously recognised.
Why this module
Inventory NRV Write-down (IAS 2)
Lower of cost and NRV, done properly
Each line records cost and net realisable value; the required write-down is the excess of cost over NRV, floored at zero so it never carries inventory above cost. The run totals the closing write-down and shows the exact movement before you post anything.
Recoveries that cannot overshoot
When NRV recovers, the module reverses the write-down but only up to the amount previously recognised. Because every line floors its write-down at zero, a recovery can release the allowance back toward zero and no further, so the new carrying amount is the lower of cost and the revised NRV.
Posted figures that stay put
Once a run is posted it recognises a balanced, sealed ledger movement. Its date, accounts, journal and inventory lines are frozen against ORM writes, line inserts, moves and deletes. To change it you reverse it, and only an EH Accounting Manager can do that.
Day in the life
A period-end inventory review, start to ledger
At close you open a new NRV run for the reporting date, add a line per finished-goods or raw-material group, and enter each item's cost and net realisable value. The run rolls the opening write-down forward from the last posted run for the same product and flags any line whose opening does not tie out. You compute, review the movement, then post: the manager-gated entry debits the write-down expense and credits the allowance, or releases the allowance on a recovery, capped at what was recognised before. The run and its entry are stamped, sealed and frozen for the audit file.
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.
Each line floors its write-down at zero, so a net realisable value recovery can only release the allowance back toward zero and can never push inventory above cost (IAS 2.33).
The run posts the closing write-down less the opening position, not the gross figure, so re-running a period does not double-charge the profit and loss account.
The opening write-down defaults to the prior posted run's closing write-down for the same product, and a manual override is flagged so a later product or date change does not silently discard the value you entered.
A per-line opening tie-out flag lights when the opening write-down disagrees with the prior posted run's closing figure for the same product, surfacing broken roll-forwards instead of hiding them.
A missing expense or allowance account, a missing journal, a wrong state, or a nil movement each raise an explicit message rather than posting a partial or empty entry.
What is inside
Built to do the job, end to end.
- eh.nrv.run. The period-end assessment model with draft, computed, posted, reversed and cancelled states, computed totals for cost, closing write-down and movement, audit stamps for who computed and posted and when, and a unique constraint of one run per company per reporting date. Defined in models/nrv_run.py.
- eh.nrv.line. One inventory item or group with cost, net realisable value, an optional product link, a computed required write-down floored at zero, a rolled-forward opening write-down, and a movement column. A cost-not-negative database check guards the input. Defined in models/nrv_line.py.
- Movement posting engine. action_post validates the journal and both accounts, builds a balanced general entry (expense against allowance for a charge, allowance against expense for a recovery), marks it sealed and posts it. Reversal uses the native reverse-moves flow dated the day after the reporting date.
- Security and isolation. User, manager and auditor access rows in ir.model.access.csv give auditors read-only sight, and global record rules in eh_isolation_rules.xml scope both models to the user's companies. Posting, reversal and any state change on a posted run require the EH Accounting Manager group.
- Views and audit trail. A list and a form under an Inventory NRV menu with a status bar, a movement-entry stat button, a warning-decorated opening column and a chatter. Runs are numbered from an NRV per-year sequence, and mail.thread tracks state, dates, accounts and stamps.
Honest about the edges
What this does not do, so nothing surprises you.
- It does not read stock valuation or quantities from Inventory automatically; you enter cost and net realisable value per line, optionally linking a product for the roll-forward.
- It does not calculate net realisable value for you; the estimated selling price less costs to complete and sell is your input.
- It posts the write-down and its reversal only; it does not adjust the inventory stock valuation layers or the standard or average cost on the product.
- It does not group or net write-downs across similar items automatically; you decide the line granularity, one line per item or per group.
- It does not produce a separate inventory disclosure note or financial statement; it recognises the ledger movement and keeps the audit trail.
- It does not import prior write-downs from outside this module; the roll-forward reads only prior posted runs recorded here.
odoo 19 inventory write down, IAS 2 net realisable value, lower of cost or NRV odoo, inventory impairment odoo, stock write-down allowance, NRV reversal accounting, net realisable value odoo community, inventory write-down journal entry, period-end inventory assessment, IAS 2 write-down reversal cap, write-down expense allowance account, odoo accounting IFRS inventory
Inventory net realisable value runThe IAS 2 lower of cost and net realisable value test per line, writing each item down to net realisable value and totalling the write-down to profit or loss.
Please log in to comment on this module