ODOODISTRIBUTION2025

Case study

One inventory engine behind three sales channels

Wholesale, retail and e-commerce moved onto one Odoo inventory and pricing engine, with integration contracts, batch and expiry control, and margin reported at SKU and customer level.

Client
National FMCG distributor
Profile
Six warehouses · wholesale, retail and online
Duration
18 weeks
Services
Odoo ERP · Integrations · Master Data Governance · Custom Software
0Oversell incidents post go-live
14daysWorking capital released
3→1Channels on one stock engine

01 — CHALLENGE

What was actually broken

Three channels each held their own view of stock and price. The e-commerce storefront oversold weekly, and near-expiry stock was written off rather than moved.

  • Storefront stock was synced by a nightly file, so anything sold during the day could be promised twice.
  • Wholesale price lists, retail shelf prices and online prices were maintained separately, and drifted within days of every revision.
  • Batch and expiry were tracked in a parallel spreadsheet per warehouse, and near-expiry stock was routinely discovered after it had expired.
  • True margin per line was unknown because freight, damage and settlement discount sat outside the transaction.

02 — APPROACH

The sequence we used

A single inventory and pricing engine, then contracted interfaces to every channel that consumes it.

01

Master data and pricing unification

Product, customer and price-list masters deduplicated and rebuilt as one governed structure with channel-specific price rules derived from a single base, not maintained in parallel.

02

Warehouse configuration with FEFO

Bin locations, batch and expiry attributes, and first-expiry-first-out allocation across all six warehouses, with cycle-count schedules replacing the annual stock-take argument.

03

Integration contracts

Each interface documented before build — source of truth, field mapping, trigger, frequency, idempotency rule and failure behaviour — with real-time stock reservation replacing the nightly file.

04

Van sales application

A custom offline-tolerant mobile app for loading, delivery, returns and cash collection, reconciling to the depot automatically instead of the following morning.

05

Margin and ageing analytics

Landed cost, settlement discount and damage brought into the line, with net margin by SKU, customer and route, plus a stock-ageing dashboard with automated action thresholds.

03 — RESULT

Where it landed

One stock number serves all three channels, and near-expiry stock is now a decision instead of a write-off.

  • No oversell incidents recorded in the first two quarters after go-live, against a weekly baseline.
  • Around fourteen days of working capital released by FEFO discipline and ageing-triggered action.
  • Every interface monitored with a named owner, dead-letter replay and a daily automated reconciliation report.
  • Van sales reconciled same-day, ending the next-morning depot reconstruction.
  • Net margin visible at SKU, customer and route level, which changed the discount policy within one quarter.
We had eleven versions of our item master across three companies. Techlyst rebuilt it as one governed standard and then made sure it stayed that way. Stock accuracy went from an argument to a number.
Chief Operating Officer · National FMCG distributor

Next step

We would rather show you the working than the summary

Ask for the blueprint structure, the migration reconciliation approach, or a reference call with a client in your sector.

WhatsApp