Open-source Odoo modules maintained by Novalyft Solutions.
Following the standard Odoo / OCA convention, this repository uses one branch per Odoo major version:
19.0— current default- Future:
20.0,21.0, …
Check out the branch matching your Odoo version before installing. Each version branch is independently maintained — fixes to one are deliberately cherry-picked to the others rather than auto-propagated.
unearned_revenue_recognition — IFRS Unearned Revenue Recognition on Delivery
Defers revenue recognition from invoice posting to physical delivery, in line
with IFRS 15 / ASC 606. Customers are invoiced (often paid) upfront for
AR tracking, but the credit side is routed to an Unearned Revenue liability
account. Revenue is moved to Sales Revenue automatically when the
corresponding stock.picking is validated; returns reverse the recognition;
credit notes inherit the deferral account.
Highlights
- Three-level deferral-account fallback chain (product category → company default → Odoo Enterprise's native Deferred Revenue Account).
- Partial deliveries, backorders, returns, credit notes, multi-currency (invoice-date FX rate frozen), multi-company.
- Full audit trail via
x.revenue.recognition.line; idempotent re-validation. - Smart buttons on Sales Order, Customer Invoice, and Stock Picking forms.
- New report under Accounting → Reporting → Deferred Revenue.
- 22 unit tests.
- Compatible with Odoo 19 Community and Enterprise.
See the module README for the detailed configuration, walkthrough, and accounting pattern.
- Clone the branch that matches your Odoo version:
git clone -b 19.0 https://github.com/novalyft/odoo-addons.git
- Add the repository path to your Odoo
addons_path:addons_path = ...,/path/to/odoo-addons - Restart Odoo with
-u allor-i <module_name>and install via the Apps menu.
On Odoo.sh, link this repo to your project and configure it to track
the 19.0 branch. Modules become available automatically once the build
completes.
All modules in this repository are released under LGPL-3.
Issues and pull requests are welcome. Please make sure new code:
- Passes the existing tests (
--test-tags=<module_name>). - Includes tests for new behavior.
- Follows Odoo 19 conventions (no
_sql_constraints, no removed Odoo 18-era view-attrs, usemodels.Constraint, etc.).
Novalyft Solutions — Odoo implementations and custom development for the Levant, GCC, and beyond.