Skip to content
Back to catalog
ModuleSalesNew

Denied Products in Sales

What they asked for and you didn't have, recorded instead of deleted

When a quotation asks for more than the warehouse holds, it records the shortfall — product, customer, salesperson and quantities — before adjusting the line. Turns the sale that didn't happen into a purchasing list instead of letting it vanish.

Compatibility
Odoo 19Odoo 18Odoo 17Odoo 16

How you get it

Every development works in all three Odoo environments. The only thing that changes is how we deliver it.

Nothing to install

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.

Install it today

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_productos_negados_en_la_venta /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 "Denied Products in Sales"

What it solves

The problem

A customer asks for ten units and there are four. The salesperson drops the line to four, or deletes it outright, and carries on with the quotation. The order closes on what was actually there and everyone gets on with their day.

In that five-second adjustment, the most valuable data the sales floor produces is lost: what they asked for and you didn't have.

Nobody writes it down, because there is nowhere to write it. The order ends up clean, balanced, and with no trace of the gap. At month end you know precisely what you sold, and have no way of knowing what you failed to sell — which is exactly what purchasing needs to decide what to bring in.

What little survives lives in the salesperson's memory and reaches the meeting as an anecdote: "people ask me for that one all the time". Without quantities, customers or dates, you cannot buy on that.

How it works

Two buttons on the quotation, while it is still a draft.

Analyse stock checks every line against the warehouse's genuinely available quantity — what is there, minus what is already reserved for other orders — and returns a line-by-line breakdown: what ships in full, what covers only part, and what is at zero, with quantity requested, available and short. It changes nothing; it just tells you where you stand before promising a date.

Remove out-of-stock performs the adjustment the salesperson was going to make anyway, without throwing the information away. For every line that falls short it:

  • records the shortfall with product, customer, salesperson, warehouse and the three quantities: requested, available and unfulfilled;
  • if some stock exists, drops the line to what you can actually deliver;
  • if there is none, removes the line from the order.

It asks for confirmation first, because it really does modify the order. And the quotation is left ready to confirm, with no lines the warehouse cannot fill.

What builds up

Each shortfall becomes a record of its own, tied to the order that produced it. And that accumulation is what turns a daily annoyance into information.

Grouped by product, it is a purchasing list ranked by what the market asked you for and you couldn't supply. By customer, it tells you who you let down and how often — usually the best predictor of who is trying your competitor. By salesperson and by month, it tells you whether the problem is growing or being fixed.

What it does not do

It only sees what somebody typed. If the salesperson already knows there's none and never enters the line, nothing is recorded. This is the most important limitation and it decides whether this is for you: the record is only as complete as the discipline of quoting what the customer asked for, not what can be supplied.

It doesn't buy or suggest. It delivers the input; what to do with it stays with purchasing.

It modifies the order. It reduces or deletes lines, which is exactly what makes it useful, but worth knowing before putting it in the hands of the whole team. Hence the confirmation prompt, and why the button only appears on drafts.

It measures against one warehouse and only considers storable products. And it ships no reports of its own: shortfalls are grouped and exported with Odoo's standard tooling.

What changes

"What should we be stocking that we don't have?" stops being answered by whichever salesperson talks loudest, and starts being answered by a list ranked by units denied.

And something appears that never existed before: a record of the sale that didn't happen. In a distribution business that number tends to be larger than anyone suspected — and this is the first time anybody gets to see it.

What's included

  • Checks every quotation line against available stock, net of what is already reserved
  • Sorts each line into full, partial or none, with requested, available and short quantities
  • Records the shortfall with product, customer, salesperson, warehouse and all three quantities
  • Drops the line to what is actually there when stock covers only part
  • Removes lines the warehouse cannot fill from the order
  • Asks for confirmation before modifying the order, and only acts on drafts
  • Leaves the quotation ready to confirm, with no undeliverable lines
  • Builds a history of unmet demand, groupable by product, customer or salesperson
  • Keeps each shortfall tied to the order that produced it, so you can go back to the case

Requirements

  • Sales and Inventory modules active
  • Deciding which warehouse availability is measured against: today it is fixed and set at implementation
  • Storable products. Services and consumables are not analysed
  • Salespeople entering what the customer asked for before adjusting it. Without that there is nothing to record