Valued Inventory Report
What your stock is worth, lot by lot, today or on the date you ask for
Values stock lot by lot using each lot's own cost, not an average. Runs against today's inventory or against any past date, which it rebuilds by rewinding later movements.
How you get it
Every development works in all three Odoo environments. The only thing that changes is how we deliver it.
Odoo Online (SaaS)
You do not need the ability to install modules. A Millora consultant comes in with temporary access that you authorize and implements it with Odoo Studio. When they are done, you revoke the access.
Odoo.sh or your own server
You receive the module and the installation guide by email as soon as payment clears. Install it yourself, or we install it with you.
Installation · shell
# 1 · copia el módulo a tu addons_path
cp -r millora_reporte_de_inventario_valuado /mnt/extra-addons/
# 2 · reinicia y actualiza la lista de apps
odoo-bin -u all -d tu_base --stop-after-init
# 3 · instala desde Apps
# busca "Valued Inventory Report"What it solves
The problem
Two lots of the same product almost never cost the same. One came in at one exchange rate, the other three months later; one carried freight, the other came consolidated. On paper they are the same part number.
When stock is valued per product, that difference disappears inside an average cost. And with it disappears the question that actually matters: which of the stock sitting on your shelves was the expensive one.
On top of that, the value of inventory on a past date — month-end, cut-off day — is not stored anywhere. It gets pulled by hand, exporting and cross-referencing in a spreadsheet.
How it works
Two buttons, two questions.
Current inventory walks the company's stock in internal locations and builds one line per lot with a positive balance: product, category, lot, quantity, that lot's unit cost and the line's total cost.
Inventory as of a date does the same for a moment in the past. Since Odoo does not store stock as of an earlier date, it rebuilds it: it starts from what is there today and rewinds every movement made after the date you asked for. Inbounds are subtracted, outbounds added back, and what remains is what was there that day. Lots that have since run out reappear with the quantity they held then.
The top carries the three figures that summarise everything: how many lots, how many units and how much it is worth. Below, the full detail, and from any line you can reach the movement that brought that lot in.
The report is read-only: nothing is typed, nothing is edited and stock is never touched. In multi-entity databases each report stays inside its own company.
How it differs from Odoo's valuation
Worth stating plainly, because it is the immediate question. Odoo values per product, using whichever costing method you configured. This report values per lot, using each lot's cost. They are two different things answering two different questions.
It does not replace accounting valuation and will not necessarily tie to it: it is a separate calculation for operations and purchasing, not for closing the books.
What it does not do
It only sees lots. A product not tracked by lot or serial number never appears. If your catalogue isn't lot-tracked, this isn't your report.
It only counts positive balances in internal locations. Anything in transit, at the customer, or negative falls outside.
The historical view has a floor date, set at implementation based on when your database's movements became reliable. Before that, it cannot be queried.
And it runs when somebody asks: there is no automatic cut-off and no alerts.
What changes
The conversation with purchasing changes tone. Instead of "we're carrying a lot of stock" you can say which lot, from when, and how much money is sitting still. And the value of inventory at cut-off stops being assembled in a spreadsheet the day someone asks for it.
What's included
- Values stock lot by lot, using each lot's cost rather than a product average
- Rebuilds inventory as of any past date by rewinding later movements
- Recovers lots that have since run out, with the quantity they held on that date
- Summarises the report in three figures: lot count, total units and total value
- Details product, category, lot, quantity, unit cost and total cost per line
- Leads from any line to the movement that brought that lot in
- Counts only internal locations of the company being queried
- Stores each run so it can be reopened without recalculating
- Keeps reports separated by company in multi-entity databases
Requirements
- Inventory module active
- Products tracked by lot or serial number. Untracked products do not enter the report
- Cost loaded at lot level: it is the figure each line is valued with
- If you want a cut by commercial line or another classification of your own, that tag must exist in your product catalogue
You might also need
Negative Stock Control
No stock, no movement
Inventory & warehouse
Instant Out — Stockout Report
What ran out, at which location, and at exactly what time
Inventory & warehouse
Warehouse Occupancy Report
How many slots are free, not how many units
Inventory & warehouse

