Accrual Wizard from Open
Auto-accrue Goods-Received-Not-Invoiced (GRNI) at period close and auto-reverse next period
Odoo has no native goods-received-not-invoiced (GRNI) accrual, so finance teams either ignore the liability or spreadsheet it by hand every period close — distorting cost of sales and leaving auditors without cut-off evidence. This wizard fixes that. At your chosen cut-off date it scans open purchase orders and their stock receipts, computes the value of stock received but not yet invoiced at unit cost, and posts a single balanced accrual journal that credits a GRNI accrual account and debits each product's expense account. Every accrual is created to auto-reverse on the first day of the next period — and a scheduled cron does it for you — so it self-cancels the moment the supplier bill lands. A live aged-balance report and a full line-level audit trail give controllers and external auditors the defensible cut-off evidence they expect at year end.
Key Features
Cut-off-Aware GRNI Detection
action_compute scans purchase.order.line records in the 'purchase' or 'done' state, and _received_qty_until sums only stock moves done on or before the cut-off date. Quantity received minus invoiced is valued at unit cost to build each gb.grni.accrual.run.line.
Single Balanced Accrual Entry
_prepare_move_lines debits each line's counterpart (the company GRNI counterpart or the product's expense account) and credits the total to the accrual_account_id. action_post creates and posts one account.move so the whole period accrues in a single, balanced journal.
Automatic Period Reversal
On create the reversal_date defaults to the first day of the next month. action_reverse calls _reverse_moves on the reversal date so the accrual self-cancels once the supplier bill is recorded, leaving no manual cleanup at next close.
Scheduled Auto-Reverse Cron
The _cron_auto_reverse scheduled job finds every posted run whose reversal_date has passed and reverses it automatically. Set up the accrual once and the period-close reversal happens unattended on the right date.
Line-Level Audit Trail
Each run stores gb.grni.accrual.run.line records carrying the source PO line, vendor, product, GRNI quantity, unit cost and accrued amount, with computed line_count and total_accrued. Auditors get defensible cut-off evidence down to the receipt.
Live GRNI Ageing Analysis
gb.grni.balance.line.refresh_balances rebuilds an on-demand report of every PO line with an open received-not-invoiced balance, valuing it and bucketing by earliest-receipt age (0-30, 31-60, 61-90, 90+ days) in a list/pivot view to chase missing supplier invoices.
Use Cases
Screenshots
Generate Grni Accrual
Why Choose This Module
At period close the wizard scans open purchase orders and their receipts, computes the value of stock received but not yet invoiced, and posts a single accrual journal entry — crediting a GRNI accrual account and debiting the relevant expense/inventory account — that automatically reverses next period when the supplier invoice lands.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: account, purchase, stock
- Support: support@pokutsoft.com
Update date: 2026-07-02