Skip to main content

Multi-Warehouse Stock ETA

Purpose​

Multi-Warehouse Stock ETA helps Sales compare a quotation's stock demand across eligible warehouses, inspect dated incoming stock and identify delays before discussing a delivery promise. It records a snapshot on the quotation and offers a single-warehouse recommendation or a minimum practical split.

This guide follows the Odoo 19 workflow source and a targeted Odoo 20 comparison. No database workflow or demo was run. The calculation is planning guidance: it does not reserve stock, execute a split or create transfers.

Before you start​

Install corvus_sale_stock_promise with native sale_stock and purchase_stock for your Odoo major version. No Enterprise-only or other Corvus addon dependency is declared. Your hosting must allow custom addons.

Keep warehouse stock, reservations and dated stock moves accurate. The forecast considers positive quotation quantities for storable products. Services and other non-storable products receive No Forecast; zero/negative quantities are not forecast demand.

Access and policy setup​

Inventory Administrators configure Inventory → Configuration → Stock Promise Policies and warehouse eligibility. Sales Managers also have a Sales → Configuration → Stock Promise Policies menu, but editing still requires Inventory Administrator rights. Sales users can read policies and analyze accessible quotations in their active companies. Normal quotation and inventory access remains necessary; the addon does not grant blanket stock-data access.

Create one policy per company. Set Forecast Horizon Days (default 180; allowed 1–730), Snapshot Ttl Minutes (default 15; allowed 1–1440), and Max Warehouses (default and hard maximum 12). Link same-company warehouses, enable Eligible for Sales Promises, and set Promise Priority. Lower priority values win applicable ties. At least one active, eligible warehouse is required.

Workflow​

  1. Open a saved quotation and set Requested Delivery Date beside Warehouse. A blank date means today. Dates must be today or later and within the policy horizon; the cutoff is the end of that date in the user's timezone.
  2. Choose Check Stock Promise. This calculates and stores the quotation/line snapshot, then opens Quotation Stock Promise with the warehouse matrix, Order Promise, earliest complete date and recommendation.
  3. Compare each line/warehouse row. Review Free, On Hand, Available by Date, confirmed incoming, Draft Incoming (Informational), shortage, earliest date and status. Some columns are optional. Quantities are expressed in the sales line's unit. Repeated lines for the same product consume cumulative demand in line order, so the same free units are not reused for each line.
  4. Read the result with its scope. Available Now means enough free stock for that line; Available by Date includes qualifying stock events by the requested cutoff. Incoming Later means full demand is reached later within the horizon. Partial or Shortage means full coverage was not found for the selected line/warehouse result. No Forecast does not promise availability.
  5. Review the suggested warehouse and Minimum Practical Split. A complete single warehouse is preferred, with the quotation's current warehouse favoured among complete candidates before date/priority ties. Split guidance seeks the smallest eligible warehouse subset that covers forecastable demand by the cutoff. If none covers it, all eligible warehouses are shown with residual shortage. Individual line results still describe one recommended warehouse, so a partial line can coexist with a useful combined split.
  6. If a single warehouse can fulfil the quotation, select I confirm applying the live single-warehouse recommendation, then Apply Suggested Warehouse. This requires write access and a draft or sent quotation. The action recalculates live, refuses an incomplete or changed recommendation, and changes the quotation's native Warehouse field. It adds a chatter entry and refreshes the snapshot. It does not build transfers, reserve stock or apply the suggested split.
  7. Use Recalculate after changes or before relying on the result. Promise Delays opens delaying lines for that quotation. Sales → Reporting → Stock Promise Exceptions provides list, pivot and graph views of stored incoming/partial/shortage exceptions. Recalculate quotations to refresh those results.
  8. Choose Print Promise Sheet in the matrix or Print Promise on the quotation. A calculation is required first. A stale snapshot can still print, with a prominent stale warning; printing does not recalculate it.

Practice scenario​

In an authorised training database, make two fictional warehouses eligible. A quotation requests ten Units of “Harbor Sensor”. Warehouse A has four free units and six confirmed incoming units dated before the requested delivery date. Warehouse B has three free units and only a draft incoming move. The expected comparison shows A covering ten by the date, while B's draft receipt remains informational. Recalculate, inspect the incoming date and compare the promise sheet. This source-derived exercise has not been executed.

Troubleshooting and limits​

A missing-policy or no-eligible-warehouse error requires an Inventory Administrator to configure the quotation's company. A company mismatch, inactive company or inaccessible inventory is not solved by changing the displayed promise fields; snapshots and matrix values are server-managed.

Snapshot Fresh becomes false when inputs change, the configured lifetime expires or the stock signature changes. Recalculate after quantity, product, unit, route, warehouse, policy or stock changes. Applying a warehouse also performs a live check, so a previously displayed recommendation can be refused.

Confirmed incoming stock contributes within the bounded horizon; draft incoming is informational. The calculation starts from free stock and accounts for unreserved outgoing demand without subtracting existing reservations twice. It uses warehouse stock-location subtrees and dated movements, not supplier guarantees or a transport/carrier calendar. Average Residual Shortage is the mean unmet-demand ratio across forecastable products, not a sum of units or a value-weighted percentage.

Catalogue-qualified versions are Odoo 15, 16, 18, 19 and 20. Odoo 17 source is present but not catalogue-qualified. The walkthrough is reviewed for 19.0; 15–18 workflows remain unreviewed here. The targeted 20.0 comparison adapts units, access declarations and line views. Its movement calculation uses immediate destinations and removes the 19.0 final-destination check for internal chain legs, so internal logistics configurations need version-specific verification.

Use the Odoo 19 demo selector for this catalogue-qualified pair. The listing was verified; no demo was launched. Purchase the exact version through the Corvus apps catalogue. See Product Substitutes for approved alternatives and Sales MOQ & Pack Rules for quantity constraints.