Stock valuation dashboard

When a company has physical assets, such as inventory, they often want to know approximately how much has been spent on these goods, or how much they are worth at the moment. This process of assigning a monetary value to account for inventory is known as stock valuation.

This value is often reported for accounting purposes. For instance, an insurance company may want to know the value of goods stored in a warehouse, in the event of a flood or fire.

Stock valuation typically utilizes one of two accounting systems:

  • Perpetual: The inventory is constantly (perpetually) being updated, and the value is constantly changing.

  • Periodic: The inventory value is checked on an occasional (periodic) basis, and the value is set at this occasional time.

Using tracked inventory in Odoo necessitates a perpetual inventory accounting system because of the need to know when and where inventory exists, and how much of it is available or forecasted. There are a few common stock valuation methods used in Odoo: standard price, average cost (AVCO), and first in, first out (FIFO) accounting. It is important to know that the valuation method chosen for a product impacts the calculation of several fields in the stock valuation reports.

Open the dashboard

Odoo’s Stock Valuation dashboard displays the financial value of all tracked inventory, according to each product’s stock valuation method. This report can provide insights into potential issues in the supply chain, such as sunken purchase costs or delays in profitability. To access the dashboard, go to Inventory app ‣ Reporting ‣ Valuation.

Important

The Reporting menu in Inventory is only accessible to users with admin access.

This dashboard has three different views, or inventory reports — list view (i.e. the default stock valuation report), pivot view (i.e. the stock aging report), and graph view. Each view can be customized with different fields to break down inventory valuation by product, operation type, date, or company.

All three views can be filtered by various fields. To apply filters, click into the search bar at the top of the report, or click the drop-down arrow next to it. For example, selecting the filter Has Remaining Qty will show only products that are currently in stock.

List view: stock valuation

By default, the Stock Valuation dashboard displays in list view, represented by the (list) icon. This report shows a detailed record of stock movements and their valuations.

Configure

The following columns are displayed by default:

  • Date: the date and time when the stock move was created. The valuation report is sorted by this field by default, emphasizing the importance of time when valuing inventory. To sort the report by a different column, simply click on the column title.

  • Reference: the reference document associated with this stock move (e.g., a warehouse receipt, a delivery order, or a manual inventory adjustment).

  • Product: the product that is being moved and valued.

  • Quantity: the number of units by which this product’s stock has increased or decreased in this particular stock move.

  • Total Value: the value of the product’s stock in this particular stock move, calculated by multiplying the Quantity and Unit Value.

Note

If a Reference document includes several goods, there will be a separate line item generated on the report for each good.

There are additional fields that can be added to this view to provide more insight into the stock’s valuation. To add fields, click the (adjust) icon, and select the desired fields:

  • Lot/Serial Number: the uniquely identifying lot or serial number for this product.

  • Company: for businesses that operate with multiple companies, this field displays the company by which this stock move took place.

  • Remaining Quantity: the number of units remaining for this valuation of the product, after demand has been accounted for (even from other stock moves). This field can be especially helpful for FIFO and AVCO accounting, as it conveys which units of stock came into a warehouse first and the value of said stock.

  • Unit Value: the cost of one unit of the product for the company (not the price to consumers).

  • Description: a description of the reason for this stock valuation (typically, a stock move has occurred). By default, this field is set as the concatenation of the Reference and Product fields. However, the field may also display other important messages for this line item, such as a note stating that the line item is an adjustment due to a change in the product’s inventory valuation method.

  • Remaining Value: the value of this product’s current stock levels for this particular stock move, after demand has been accounted for. Along with Remaining Quantity, this field can be especially helpful for FIFO and AVCO accounting, as they convey which stock came into a warehouse first and the value of said stock.

Tip

Some of these settings may not appear unless first enabled in Settings application.

screenshot: inventory-aging-valuation-list
menu
Inventory ‣ Reporting ‣ Valuation
shows
The Stock Valuation report in list view with the Date, Reference, Product, Quantity and Total Value columns, and the optional-column selector open showing Lot/Serial Number, Company, Remaining Quantity, Unit Value, Description and Remaining Value.
highlight
The optional-column selector (red frame).
data
Valuation layers of two or three products from receipts and deliveries.
module
stock_account
notes
English UI, light theme, 1440px width, full list view with the selector open.

Stock valuation layers (SVLs)

Each line item in the Stock Valuation report represents a record in Odoo’s system known as a stock valuation layer (SVL). SVLs are generated when products move in a way that impacts their stock valuation. Specifically, the stock moves that generate SVLs are warehouse receipts, deliveries, dropshipping orders, and dropshipping returns. These stock moves must first be validated (by clicking the Validate button) for the SVL to be created.

If a product’s inventory valuation method changes on the product form, new line items are generated on the Stock Valuation report to reflect the resulting SVLs. For example, if the valuation method changes from standard price to either AVCO or FIFO accounting, revaluation entries will be automatically posted to reflect the change in pricing for goods that remain in stock. One entry will be negative to “remove” the old pricing, and the second entry will be positive to record the new pricing. These entries are connected to journal entries in Odoo’s Accounting app.

Below is an example of what the Stock Valuation table shows when a few stock moves have occurred for a product using standard price accounting.

screenshot: inventory-aging-standard-price-layers
menu
Inventory ‣ Reporting ‣ Valuation
shows
The Stock Valuation table for one product under standard-price accounting: each layer valued at the same unit cost.
highlight
The identical unit values (red frame).
data
A product with three moves, all valued at the standard price.
module
stock_account
notes
English UI, light theme, 1440px width, crop to the product's lines.

Conversely, the following image depicts what the Stock Valuation Report table might look like after a product has switched from standard price to FIFO accounting.

screenshot: inventory-aging-fifo-revaluation-layers
menu
Inventory ‣ Reporting ‣ Valuation
shows
The Stock Valuation table for the same product after switching from standard price to FIFO: two extra revaluation layers appear, one negative removing the old price and one positive recording the new one.
highlight
The two revaluation lines (red frame).
data
The same product as the previous screenshot, costing method changed to FIFO.
module
stock_account
notes
English UI, light theme, 1440px width, crop to the product's lines.

Example

The Remaining Value and Remaining Quantity fields are derived from what occurs at the SVL level in Odoo and, as such, are better understood with an example.

Frankie’s Consignment Shop buys sweaters at the cost, or Unit Value, of 5.00 dollars. For the first time, Frankie’s purchases and receives a Quantity of 100.00 sweaters in one stock move, then re-sells and delivers -10.00 sweaters in a second stock move.

In the first stock move line item, the Remaining Quantity will change from 100.00 to 90.00, once the second stock move is recorded. This change reflects that, although 100 sweaters were originally purchased, only 90 of those sweaters remain in stock and should be counted in the valuation. Similarly, the Remaining Value will drop from $500.00 to $450.00. The Total Value will remain at $500.00, regardless of subsequent transactions.

On the other hand, the Remaining Quantity of the second stock move line item will be recorded and remain at 0.00 because the quantity of -10.00 was sold. In the system, because the SVL was a sale, there is no stock left that needs to be valued from that transaction.

screenshot: inventory-aging-remaining-quantity
menu
Inventory ‣ Reporting ‣ Valuation
shows
Two Stock Valuation lines of one product where the Remaining Quantity and Remaining Value of the receipt layer dropped after a delivery, while its Total Value stayed unchanged, and the delivery layer's remaining quantity is 0.00.
highlight
The "Remaining Quantity" and "Remaining Value" columns (red frame).
data
100 sweaters received at 5.00, then 10 delivered: remaining quantity 90, remaining value 450.00, total value 500.00.
module
stock_account
notes
English UI, light theme, 1440px width, crop to the two lines with the optional columns shown.

Change the valuation date

To see the valuation of stock moves at a specific date and time, click the Valuation At Date button, located in the top-left corner of the Stock Valuation page. The report will show the Quantity and Total Value of each stock move.

Note

The Remaining Quantity and Remaining Value of the stock moves will not be point-in-time for any dates chosen in the past. The stock moves shown when selecting a past date will still display the current on-hand quantity and value of the products.

Example

A business has 100 sofas in stock on January 1st and sells 20 of those sofas on February 1st. The Remaining Quantity of the SVL will drop from 100.00 to 80.00 on February 1st. If no other stock moves take place, and on February 1st, the Valuation at Date is selected as January 1st, the Remaining Quantity will still show as 80.00.

Pivot view: stock aging

From the Stock Valuation dashboard, access pivot view by clicking the (pivot) icon. This view is essentially a stock aging report, and it shows the on-hand quantity and value of inventory by purchase date, which can help monitor products with expiration dates.

Configure

By default, the pivot view shows the value of all product categories by day and month. Clicking the (plus) icon in each column or row will reveal a drop-down list of options to create a more granular breakdown of the inventory valuation. The drop-down options include: Product, Lot/Serial Number, Product Category, Date, Company, or Add Custom Group Clicking the (minus) icon collapses the field back to an empty state.

In the table, the Remaining Qty column displays the number of on-hand items, and Remaining Value displays the total cost of purchasing these items.

screenshot: inventory-aging-pivot
menu
Inventory ‣ Reporting ‣ Valuation ‣ (pivot view)
shows
The Stock Valuation report in pivot view, with product rows and day/month columns, showing the Remaining Qty and Remaining Value measures.
highlight
None.
data
Several products received over two or three different months.
module
stock_account
notes
English UI, light theme, 1440px width, full pivot view.

Graph view

The stock value can be depicted graphically by clicking the (graph) icon. By default, the graph is displayed in line chart view and filtered to show the cumulative total of all inventory value over time in Odoo.

At the top of the report, a bar chart or pie chart view can be selected instead.

Valuation cockpit, valuation at date and snapshots

Next to the standard Valuation report, the eYssen Stock Accounting module (eyssen_stock_accountant) adds four valuation reports for period closing. They are available both to inventory managers under Inventory app ‣ Reporting and to accountants under Accounting app ‣ Reporting, where their names are prefixed with Stock:

Report

In Inventory

In Accounting

Valuation cockpit

Valuation Cockpit

Stock Valuation Cockpit

Valuation at date

Valuation at Date

Stock Valuation at Date

Snapshots

Valuation Snapshots

Stock Valuation Snapshots

Snapshot comparison

Compare Snapshots

Compare Stock Valuation Snapshots

Note

These reports are restricted to users with the Inventory / Administrator or the Accounting / Billing Administrator access right.

Valuation cockpit

The Valuation Cockpit is a single-screen overview of the inventory value as of a chosen date. Change the As of date at the top to recompute everything below it.

Four indicators are shown:

  • Total Inventory Value: the sum of all valuation layers up to the chosen date, in the company currency.

  • Products: the number of products carrying a valuation.

  • Categories: the number of product categories involved.

  • an anomaly counter for products whose valuation is negative, which normally points at stock that was delivered before it was received, or at a missing cost.

Below the indicators, Value by Category breaks the total down per product category (the smallest categories are collapsed into a single Other slice), Top Products by Value lists the ten most valuable products, and a trend chart shows the cumulative inventory value at the end of each of the last twelve months.

screenshot: inventory-aging-valuation-cockpit
menu
Inventory ‣ Reporting ‣ Valuation Cockpit
shows
The Valuation Cockpit with the "As of" date field, the four indicator tiles (Total Inventory Value, Products, Categories, anomaly count), the "Value by Category" chart, the "Top Products by Value" list and the twelve-month value trend chart.
highlight
The "As of" date field and the indicator tiles (red frames).
data
Demo company "YourCompany HU" with valuation layers spread over at least twelve months and several product categories.
module
eyssen_stock_accountant
notes
English UI, light theme, 1440px width, full screen.

Valuation at date

Valuation at Date opens a wizard that rebuilds the inventory valuation as it stood at a given moment. Fill in:

  • Valuation Date (required): the cut-off date and time.

  • Company.

  • Product Category, Warehouse and Product: optional filters to narrow the report.

Then choose one of the three buttons:

  • Generate Report computes the result and opens it as a list, which can also be switched to graph or pivot view. Each line shows the Product, its Internal Reference, Category, Quantity, Value, Unit Cost and an Anomaly flag.

  • Export Excel downloads the same result as an XLSX workbook.

  • Save Snapshot freezes the result into a permanent snapshot.

The Anomaly column flags two situations that usually need to be resolved before closing a period:

  • Negative Value: stock on hand carrying a negative valuation.

  • Zero Value / Positive Qty: an on-hand quantity with a (near-)zero value.

Warning

When a Warehouse filter is used, revaluation entries are excluded from the result, because a revaluation is not tied to a warehouse. The title of the generated report says so explicitly. For a figure that must reconcile with accounting, run the report without a warehouse filter.

screenshot: inventory-aging-valuation-at-date-wizard
menu
Inventory ‣ Reporting ‣ Valuation at Date
shows
The "Stock Valuation at Date" wizard with the Valuation Date, Company, Product Category, Warehouse and Product fields, and the "Generate Report", "Export Excel" and "Save Snapshot" buttons.
highlight
The three action buttons (red frame).
data
Valuation date set to the last day of the previous month, no filters set.
module
eyssen_stock_accountant
notes
English UI, light theme, 1440px width, crop to the wizard.
screenshot: inventory-aging-valuation-at-date-lines
menu
Inventory ‣ Reporting ‣ Valuation at Date ‣ Generate Report
shows
The generated valuation-at-date list with the Product, Internal Reference, Category, Quantity, Value, Unit Cost and Anomaly columns, sorted by value, with at least one flagged anomaly row.
highlight
The "Anomaly" column (red frame).
data
At least one product with a negative valuation so the anomaly flag is visible.
module
eyssen_stock_accountant
notes
English UI, light theme, 1440px width, full list view.

Snapshots and snapshot comparison

A snapshot is a stored copy of a valuation-at-date result. Because the product reference and category are frozen at the moment the snapshot is taken, the figures stay comparable even if a product is later renamed or moved to another category.

Saved snapshots are listed under Valuation Snapshots, with their Valuation Date, the filters used, the number of Products, the Total Quantity, the Total Value and the number of Anomalies. Opening a snapshot gives access to its lines through the Products and Anomalies smart buttons, and a Note field is available for documenting what the snapshot was taken for.

Compare Snapshots puts two snapshots side by side: select Snapshot A and Snapshot B, click Compare, and the result lists, per product, the quantity and value in both snapshots and the difference (Qty Δ and Value Δ). This is the quickest way to explain why the inventory value changed between two closing dates.

screenshot: inventory-aging-snapshot-compare
menu
Inventory ‣ Reporting ‣ Compare Snapshots
shows
The snapshot comparison result with the "Snapshot A" and "Snapshot B" fields at the top and the per-product lines below showing Qty A, Qty B, Qty Δ, Value A, Value B and Value Δ.
highlight
The "Value Δ" column (red frame).
data
Two snapshots taken one month apart, with a handful of products whose value changed.
module
eyssen_stock_accountant
notes
English UI, light theme, 1440px width, full list view.

Tip

The same module adds an optional Total Cost column to the Moves History report, which shows the accounting value of each move line. It is hidden by default; enable it from the list’s optional-column selector.

Note

The module also keeps the stock interim (input/output) accounts out of the bank reconciliation proposals, since those accounts are cleared by inventory postings and never by a bank statement line.