Skip to Content

New era of stock valuation in Odoo 19: Simpler, yet broader in scope

Duration: 21:39


🧾 Analytical Summary

🚀 The Inventory Valuation Revolution

Jilmer Mer, an inventory expert at Odoo, introduces what he calls the "inventory valuation revolution" in Odoo 19. While inventory valuation worked well in Odoo 18, feedback from accountants revealed they were "starting to fight against the system." Through dialogue, Odoo's team identified legitimate pain points and agreed changes were needed.

The core problems accountants faced:

Too Much Manual Work: Manual valuation processes created excessive accounting overhead.

Data Overload: Automated inventory valuation generated too many journal entries and journal items, creating clutter without adding value.

Valuation Layers Created Constraints: The technical structure of valuation layers created unnecessary constraints, including the inability to back-date transfers—a significant operational limitation.

Odoo 19 addresses these issues with a radical redesign philosophy: "Do more with less." The result is a simpler structure with fewer constraints and more features.

✨ What's Changed: The Core Architectural Shift

No More Valuation Layers: The biggest structural change—valuation is no longer tracked in separate valuation layer records.

Valuation Stored on Stock Moves: Inventory valuation is now stored directly on stock moves, the fundamental transaction records in Odoo's inventory system. This eliminates redundant data structures.

Fewer Journal Items: Only accounting entries accountants truly need are generated, reducing database bloat and improving clarity.

Guided Closing Interface: A new tool assists accountants with period-end closing processes.

Back-Dating Transfers Now Possible: Previously impossible, this highly requested feature is now supported.

Terminology Update: Odoo 19 shifts from "Continental vs. Anglo-Saxon accounting" terminology to "Periodic vs. Perpetual accounting"—clearer, more universally understood terms.

🔄 Historical Context: How Valuation Worked Before

In Odoo 18, every product movement generated a valuation layer:

Incoming products: Created a valuation layer with positive quantity and value, increasing inventory valuation.

Outgoing products: Created a valuation layer with negative quantity and value, decreasing valuation.

Valuation calculation: Sum of incoming layers minus sum of outgoing layers.

This approach worked functionally but created redundant data—valuation layers essentially repeated information already present in stock moves. Odoo 19 eliminates this redundancy by storing valuation directly on the stock moves themselves.

⚙️ Configuration: Perpetual Accounting

Jilmer demonstrates two accounting models, starting with perpetual accounting (formerly "Anglo-Saxon" or "automated").

In Settings > Inventory Valuation:

Perpetual at Invoicing: Selected for US perpetual accounting. Inventory valuation in stock and accounting synchronizes whenever bills are received or invoices created.

Valuation Method: Average cost (same as before).

Valuation Journal: Records all valuation entries.

Valuation Account: Critically, configured as an expense account. This account stores: - Value of products received but not yet billed - Value of products delivered but not yet invoiced

This temporary holding account bridges the timing gap between physical inventory movements and accounting transactions.

📦 Demo: Perpetual Accounting in Action

Purchase Order: Jilmer creates a PO for product "AFCO" at unit price €10 and confirms. At this point, nothing happens in accounting.

New Valuation Menu: Odoo 19 introduces a comparison menu showing valuation in inventory vs. accounting side-by-side. Initially, both show zero.

Receiving Products: Upon validating receipt, the valuation menu shows €10 in inventory, €0 in accounting—creating a €10 difference. The system displays this difference should be recorded in the expense account (the valuation account).

Moves Analysis: Navigating to the new Moves Analysis menu reveals the stock move with valuation stored directly on it. No valuation layers. The information is simply additional data on stock moves, eliminating redundancy.

Receiving the Bill: Uploading and confirming the bill causes synchronization. The valuation menu updates, showing €10 in both inventory and accounting. In perpetual accounting, every bill/invoice triggers synchronization.

Sales Order: Creating a sales order and delivering the product generates an outgoing stock move valued at €10. The valuation menu now shows €10 in accounting, €0 in inventory (the single unit was delivered), with a €10 difference representing delivered but not yet invoiced products.

Issuing the Invoice: Confirming the sales invoice synchronizes again—both sides return to €0, perfectly aligned.

This demonstrates perpetual accounting's real-time synchronization between physical inventory and financial records, triggered by bills and invoices.

📊 Configuration: Periodic Accounting

Switching to periodic accounting (formerly "Continental" or "manual"), Jilmer shows a different configuration in Settings > Inventory Valuation:

Periodicity Options: Even in periodic mode, you can choose: - Manual: Accountants manually create journal entries - Daily: System generates entries daily - Monthly: System generates entries monthly

Valuation Account: Same as perpetual—stores inventory valuation.

Variation Account: New in periodic mode—stores all quantity changes for which inventory valuation entries haven't been recorded yet. Since periodic accounting only records valuation once per period, this account accumulates changes until period-end processing.

🛠️ Demo: Periodic Accounting and Data Analysis

Multiple Receipts with Different Prices: Jilmer creates three purchase orders for product "54": - First receipt: 1 unit at €100 - Second receipt: 1 unit at €200 - Third receipt: 1 unit at €200

Total: 3 units valued at €100 + €200 + €200 = €500.

New Stock Menu: Instead of analyzing valuation on stock moves (though it's technically stored there), Odoo 19 introduces a dedicated Stock menu showing valuation (€400 initially displayed) with details of all contributing moves. This provides a cleaner, purpose-built interface for valuation analysis.

Price Correction on Bill: Uploading a bill that shows the first unit actually cost €600 (not €100) automatically updates the stock menu valuation—demonstrating that bill prices override PO prices for valuation.

Manual Valuation Adjustment: In the Moves Analysis list view, Jilmer selects a specific stock move showing a value of €200 and changes it to €280 using "Adjust Valuation." Saving this instantly updates the Stock menu valuation—showing that manual adjustments propagate automatically throughout the system.

This demonstrates that everything possible in Odoo 18 remains possible in Odoo 19, with improved interfaces.

🔐 Guided Closing: Accountant's Best Friend

A major new feature in Odoo 19 is the guided closing interface for period-end processing.

Scenario: In the Belgian periodic company, Jilmer shows the valuation interface displaying €0 in accounting, €980 in inventory.

Physical Inventory Adjustment: He records a physical inventory adjustment for a product with a standard price of €25, adding 4 units. The system records this as an inventory loss in the stock variation account—the temporary holding account for changes not yet recorded in accounting.

Generate Entry Button: Clicking this button pre-configures a journal entry to record the valuation. Since manual inventory valuation was selected, the accountant reviews and posts manually. If daily or monthly valuation was configured, the system generates and posts entries automatically.

This guided interface simplifies period-end closing, providing clarity on exactly what needs to be recorded and why.

⏪ Back-Dating Transfers: The Game-Changing Feature

One of the most requested features, previously impossible due to valuation layer constraints, is now available: back-dating transfers.

Scenario: Jilmer creates two purchase orders for product "AFCO," both received and validated. The Stock Valuation menu shows €2,000 total.

Realizing a Mistake: He remembers the first receipt occurred on a different date. Navigating back to the receipt, he changes the effective date from September 18 to September 10 and applies.

Updating Stock Valuation: Refreshing the stock menu shows no immediate change. But when he performs an inventory update with a cutoff date of September 16, the system correctly accounts for the back-dated transfer in the inventory valuation.

Critical Use Case: This is invaluable for year-end inventory counts. Companies performing physical counts in early January can now back-date them to December 31, ensuring they're properly reflected in the previous year's accounting—something previously impossible.

💡 Key Benefits and Q&A Insights

Simpler Structure: No valuation layers, fewer technical constraints, more readable data.

Less Data Overload: System doesn't create excessive stock moves, journal entries, or journal items—only what's needed.

Better Accountant Support: Guided closing interface and back-dating capability address real-world accounting workflows.

Purchase Order Price Changes: Changing a PO price after creation has no impact on inventory valuation. What matters is the bill price. If a bill arrives with a different price than the PO, it automatically updates inventory valuation.

Landed Costs: Work exactly as before—adding a landed cost updates valuation on stock moves, regardless of whether you're using FIFO, AVCO, or other methods.

Consignment: Shouldn't be affected—consigned items aren't valued in inventory valuation since they don't belong to the receiving company.

Revaluing Products: Simply navigate to Moves Analysis, select the stock move with an error, click "Adjust Valuation," enter the correct value, and save. Changes propagate automatically to stock valuation.

Inventory Adjustments: In periodic accounting, valuation changes are recorded in the variation account on the location and can be recorded later. In perpetual accounting, adjustments automatically update accounting when adjustments, scraps, or production orders occur.

Invoice Date vs. Stock Move Date: Inventory valuation is calculated based on physical dates (stock move dates), not accounting posting dates. Accounting entries are simply translations of inventory logic—all calculations use inventory dates, not accounting dates.

Fixing Costs After Posting: If costs change after creating account entries, changes are automatically reported to the first day of the next accounting period if the prior period is closed—standard accounting practice.

Adjusting Already-Delivered Products: You can adjust the valuation of products no longer in the warehouse by modifying the associated stock move in Moves Analysis, using "Adjust Valuation."

🎯 The Bottom Line: Reassurance and Progress

Jilmer's closing message emphasizes reassurance: "We are going in the right direction." Odoo 19's inventory valuation redesign delivers:

  • Simpler architecture without unnecessary technical layers
  • Fewer constraints, enabling previously impossible workflows
  • More features, particularly for accountants managing period-end processes
  • Better data readability with purpose-built interfaces

The system maintains full backward compatibility—everything possible in Odoo 18 works in Odoo 19—while adding capabilities that genuinely improve accounting and inventory workflows.

🧠 Viewpoint: Odoo Perspective

⚠️ Disclaimer: AI-generated creative perspective inspired by Odoo's vision.

When accountants tell you they're fighting your system, you listen. The valuation layer architecture was technically correct but practically burdensome—generating mountains of data that obscured rather than clarified. Odoo 19's redesign reflects our core philosophy: simplicity through intelligence. Storing valuation directly on stock moves isn't just elegant engineering—it's respecting the accountant's cognitive load. The guided closing interface and back-dating capability aren't features for the sake of features; they're responses to real pain points in year-end workflows. Shifting from Continental/Anglo-Saxon to Periodic/Perpetual terminology might seem minor, but clarity in language creates clarity in thinking. We didn't just refactor code—we reimagined inventory valuation from the accountant's perspective, proving you can have simpler structure with broader capability. That's the Odoo promise: less complexity, more power.

🏢 Viewpoint: Competitors (SAP / Microsoft / Others)

⚠️ Disclaimer: AI-generated fictional commentary. Not an official corporate statement.

Odoo's valuation redesign addresses legitimate usability issues and brings their architecture closer to enterprise standards. Eliminating redundant data structures is sound engineering. However, the presentation glosses over critical enterprise considerations. Multi-GAAP reporting requirements mean you can't simply choose "periodic or perpetual"—enterprises need both simultaneously, with parallel ledgers for statutory, tax, and management reporting. The "guided closing" is a helpful wizard for small businesses, but enterprises require sophisticated reconciliation tools, automated variance analysis, and audit trail capabilities that meet SOX, IFRS, and local regulatory standards. Back-dating transfers, while useful, raises significant control concerns—enterprises need approval workflows, segregation of duties, and immutable audit logs when historical transactions are modified. The simplification of reducing journal entries is appropriate for SMBs but problematic for enterprises requiring detailed cost center allocations, intercompany eliminations, and profitability analysis at granular levels. Storing valuation on stock moves rather than separate layers is fine for basic scenarios, but lacks the flexibility for complex manufacturing cost flows, multi-level BOM explosions, and activity-based costing that large manufacturers require. Odoo is improving their target market solution, but "simpler" doesn't always mean "enterprise-ready."


Disclaimer: This article contains AI-generated summaries and fictionalized commentaries for illustrative purposes. Viewpoints labeled as "Odoo Perspective" or "Competitors" are simulated and do not represent any real statements or positions. All product names and trademarks belong to their respective owners.

Share this post
Archive
Sign in to leave a comment
Warehouse management: Unit of measures & packaging