A salesperson asks a simple question: how many units can I promise this customer today? In many businesses the answer is one number on a report. Part of it is reserved for another customer, part sits in a distant branch, part is a return awaiting inspection and part has not yet arrived from the supplier.

The answer that serves your decision is to read stock through three separate questions: what is physically there, what is expected in and out, and what can actually be promised from its location and condition. Once the team agrees on that split, sales can commit to delivery dates it can meet, purchasing can base decisions on available stock, forecasts and demand, and managers can see the reason for a shortage before the customer does.

At ToDoOps, we build inventory projects around that outcome. To see how we introduce Odoo to Saudi businesses, start from the ToDoOps homepage.

How do you know what is available to sell in Odoo?

The Odoo 19 Forecasted report shows on-hand, incoming, outgoing and forecast quantities across time, for products whose inventory is tracked 2. It turns “we have stock” into questions you can answer:

  • What is here now? The quantity of a product, in its unit, at a specific location.
  • What can I promise? What remains after reservations, in a location and condition fit for delivery.
  • What is expected later? Confirmed purchase and sales operations, with their dates.

A request for quotation does not count toward the forecast as confirmed supply, while a confirmed purchase order affects it according to its arrival date. When reservations already appear in the outgoing quantity you are reading, count them once.

The result is more reliable delivery promises and clearer purchasing decisions. To size the project before any conversation, you can estimate time and budget with the ToDoOps calculators, which are optional and not a condition for contact.

What does a barcode label tell you about the goods in your hands?

In the GS1 standard, field (01) carries a 14-digit GTIN that identifies a trade item, and field (00) carries an 18-digit SSCC that identifies a logistic unit 1. The difference is practical. Does the label identify a product, a carton or a pallet? And what will the team record when it is scanned: a product with a quantity and unit, or a whole shipping unit?

At ToDoOps, we suggest starting with an actual label from your goods and following it from receipt to transfer to delivery. That settles what must be recorded at each step before you buy any device.

One product, clear units: buy in cartons, sell in pieces

Give every product a stable identifier and separate the product from its packaging and supplier reference. Odoo provides a stock unit, purchase and sales units and conversions between them 2, so you can buy a carton and sell a piece without the carton becoming a different product. Test conversion and rounding in your own setup before importing data, and clean duplicate names and near-identical products before migration.

Odoo stock across branches: location, condition and ownership

Map warehouses, branches and the receiving, transit, inspection and damaged-goods areas. A transfer between branches then changes distribution while the company total stays the same. If you hold consigned goods or goods owned by a customer, design explicit handling so they do not blend into your own quantity and value.

Decide who receives, who edits and who approves count differences, then test permissions with an ordinary employee account rather than an administrator’s.

Odoo lot and serial-number traceability

A lot groups units, and a serial number identifies one. Tracking works when the identifier is recorded at receipt and carried through transfer and delivery, so you can trace any movement to its source and destination. Enable it for products that need recall, warranty, expiry or unit-level follow-up.

For dated products, FEFO picks lots by the configured removal date 2, so stock leaves in the order your policy sets. Inspection and release are a separate policy that you design and test on its own.

Odoo replenishment: when should you buy?

Reordering rules work from forecast quantities and thresholds you set per product and location. On the Buy route the rule creates a request for quotation, which then goes through review, confirmation and receipt 2. Decide which products replenish automatically and which purchasing reviews, and give a slow-moving critical spare a different threshold from a fast-selling consumable with a nearby supplier.

How does inventory connect to the rest of the cycle?

Receipts feed purchasing and accounting, deliveries feed sales and invoicing, and returns flow back into both. You can see this connection in the Try Odoo interactively demo, a guided simulation with hypothetical data for a sales and inventory path. It helps you understand a cycle that crosses departments before we discuss your setup. The applications that work together are on the Odoo apps page, and the industries page shows how the cycle differs for a distributor, a store and a manufacturer.

A hypothetical carton, transfer and return

This example only illustrates the arithmetic. A distributor receives ten cartons of twelve pieces, so the balance is 120. It delivers 15 pieces, leaving 105. It then transfers two cartons, 24 pieces, to a branch: 81 at the main location and 24 at the branch, with the company total still 105.

Next, one damaged piece comes back from that earlier delivery. The company accepts it as its own and holds it in an inspection location under a procedure that prevents it from being issued. Physical stock is now 106, split as 81, 24 and one held. Saleable stock stays at 105. The credit note and any refund are reviewed financially on their own.

How do we accept the cycle before go-live?

We run the normal case and then the exception with your team, each with an owner and evidence:

Case What you should see
Partial receipt Received quantity and remainder both visible
Transfer between branches Location changes, company total holds
Damaged return Goes to inspection and stays out of available stock
Wrong lot at delivery Clear trace and a correctable record
Count difference Adjustment explained by an approved decision
Employee without edit rights Action blocked and escalation path known

Opening inventory when implementing Odoo

Agree the cutoff moment, count method, goods in transit and the valuation basis with the finance team. Compare imported figures with the count at product and location level, because matching totals can hide quantities in the wrong place, and run the first sale and first receipt after migration. The data migration guide explains this step, and the retail guide connects the same foundation to sales and returns across branches.

Devices, barcodes and external stores are implemented and tested on the actual interface with the provider’s permissions, and they appear as separate items in the proposal. Effort is set by data quality, units, locations, tracking and integrations, not by the number of products alone.

Frequently asked questions

Should we enable tracking on every product?

Enable it where recall, warranty, expiry or unit follow-up matters and where staff can record the identifier at every movement.

Is it enough that the import total matches the count?

Also check the distribution across products, locations and units, and run the first transactions after migration.

Does a replenishment suggestion mean the supplier will deliver?

The purchase rule creates a request for quotation. Supplier confirmation and physical receipt follow.

Does FEFO stop a blocked product from being sold?

FEFO orders lot selection by removal date. Blocking and release are designed and tested as separate policies.

Can we buy in cartons and sell in pieces?

Yes, by configuring units, conversions and rounding and testing them in your setup.

Sources and references

[1] GS1 Ireland. Original source. What are Application Identifiers?, the table for fields (00) and (01). It sets out the data formats carried by GS1 labels.

[2] Odoo — official documentation, version 19.0. Forecasted report, Units of measure, Reordering rules, Lots and FEFO removal. These sections document the configuration and workflows described here.

Next step: start with the stock question your team cannot answer confidently

Tell us whether the difficulty is available quantity, units, branch movements, traceability, returns or replenishment. We need no stock export, customer files or logins at first contact. Talk to ToDoOps about your Odoo inventory and we will define a cycle you can try and accept with a clear scope. You can also begin with an estimate in the ToDoOps calculators or explore the ToDoOps Odoo solution.