Sales Order Validation
What you shipped and never invoiced, in one list
Compares delivered quantity against invoiced quantity on every sales order and returns only the ones that disagree. Finds goods that left the warehouse and were never billed, and also what was over-invoiced.
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_validacion_de_pedidos /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 "Sales Order Validation"What it solves
The problem
Between shipping and invoicing there is a gap money falls through.
Part of the order ships and the whole thing gets invoiced. Part gets invoiced and the rest ships, but nobody goes back to close it. A delivery is cancelled after the invoice already went out. Each case is small and explainable; the problem is there is no screen where you see them all together.
Odoo knows — it stores delivered and invoiced quantity on every order line — but it doesn't tell you. Finding it means going order by order, and nobody goes order by order. So it surfaces by accident: months later, when a customer disputes an invoice they shouldn't have received, or when somebody notices an order has been "in progress" for a year.
How it works
You pick the date to review from, and run it. The report walks every sales order created since then, totals delivered and invoiced per order and product, and keeps only the combinations where the two numbers disagree.
The result is a table with the order, its date, the product, how much shipped, how much was invoiced and the difference. The difference carries a sign and a colour: green for what shipped and is still unbilled, red for what was over-invoiced. Those are two different problems and worth not confusing — one is money you didn't collect, the other is a credit note waiting for a customer to ask for it.
At the end it gathers the codes of every affected product, comma-separated, ready to paste straight into a search or an email to the team.
And when everything ties, it says so: the report returns a clean screen confirming there are no differences. Running it and finding nothing is information too.
What it does not do
It compares quantities, not money. Units shipped against units invoiced. If the invoice price didn't match the order price, this report doesn't see it.
It corrects nothing. It creates no missing invoices and no credit notes: it hands you the list, and the work stays with sales and accounting.
It doesn't warn on its own. It runs when somebody opens it and asks. Worth making it part of the monthly close.
It groups by order and product, so a product appearing on several lines of the same order is summed and evaluated as one. And only orders created after the date you set are included: to review the whole history, set the date at the start of operations.
What changes
The gap between shipped and invoiced stops being an accidental discovery. It becomes a list somebody reviews before closing the month, with the specific orders and the codes ready to act on.
On a database with a couple of years behind it, the first run is usually uncomfortable. And it usually pays for the development the same day.
What's included
- Compares delivered quantity against invoiced quantity on every sales order
- Shows only the order-and-product combinations where the two figures disagree
- Colour-separates shipped-but-unbilled from over-invoiced
- Details order, date, product, delivered, invoiced and difference
- Gathers the codes of every affected product at the end, ready to copy
- States explicitly when there is nothing to review
- Scopes the review from whichever date you choose
- Stores each run with its result, for comparison against the previous close
Requirements
- Sales module active
- Deliveries recorded in Odoo: the report reads delivered quantity from each order line
- Invoicing done from the sales order. Invoices entered separately are not reflected in invoiced quantity
- A cut-off date to review from. Orders created before it are not included
You might also need
Denied Products in Sales
What they asked for and you didn't have, recorded instead of deleted
Sales
Payment Allocator
You decide how much goes to each invoice, not the order of the list
Accounting & tax
Company Color Bar
Know which company you're in at a glance
Administration

