Skip to Content
Skip to content
Case study ยท Distribution

Pharma & Medical Devices Distribution

Batch and expiry on every invoice line, FEFO, cold-chain putaway, drug-licence checks and quarantine for returns and near-expiry stock.

Odoo InventoryOdoo SalesOdoo PurchaseOdoo QualityOdoo Studio

Implementation blueprint based on the patterns of real Odoo projects. Company names are illustrative, so the configuration and the lessons apply directly to your business.

1. Company profile

"MediCare Pharma Distributors" (fictional): stockist for 30 pharma companies, supplies 1,200 chemists and hospitals; schedule H drugs; cold-chain vaccines; medical devices with serial numbers.

2. Regulatory and operational needs

  • Batch number + expiry on every invoice line (legal requirement in India).
  • Near-expiry returns to manufacturers; expired stock quarantine.
  • Drug licence numbers on customer and vendor records; block sales to unlicensed buyers.
  • Cold-chain locations; temperature logs.
  • Schemes from manufacturers (e.g., 10+1 free goods).

3. Apps

Inventory (lots/serials/expiry), Purchase, Sales, Accounting (GST, e-invoice, e-way bill), Barcode, Quality (incoming inspection), Studio (licence fields, report changes), Documents, Sign.

4. Design decisions

Topic Decision
Tracking Lots for medicines with expiry dates; serials for devices
Removal FEFO
Locations Stock / Cold-room (2โ€“8 ยฐC) / Quarantine / Near-expiry; putaway rules by product category (vaccines โ†’ cold room)
Licence check Studio fields Drug Licence No. and Valid Until on contacts; automation rule/blocking warning when expired
Invoice layout Lot and expiry printed on invoice lines (setting Display lots & serial numbers on invoices)
Free goods schemes Loyalty/promotions "Buy 10 get 1 free" on purchase side via vendor pricelist; on the sales side via promotions
Returns Customer returns โ†’ Quarantine location; return to vendor or scrap
Near expiry Expiry alert dates; weekly report of lots expiring in 90 days; move to "Near-expiry" location and sell with a discount pricelist
Pricing MRP-based pricing, PTR/PTS margins via pricelist formulas

5. Configuration steps

  1. Inventory settings: Lots & Serials โœ”, Expiration dates โœ”, Multi-locations โœ”, Quality โœ”; Display Lots & Serial Numbers on Invoices โœ” (Accounting/Sales setting).
  2. Categories: Schedule H, OTC, Vaccines (cold chain), Devices; FEFO removal.
  3. Putaway rules: Vaccines โ†’ Cold-room.
  4. Studio: licence fields; automation "On SO confirmation, if licence expired โ†’ raise error" (or a blocking sale warning maintained by the automation).
  5. QCP on receipts: check batch/expiry vs documents, temperature for cold chain.
  6. India localisation: e-invoice (IRN) & e-way bill integration.
  7. Reports: expiry ageing, batch-wise stock, sales by manufacturer.

6. Pitfalls

  • Never allow negative stock with lots; it breaks traceability.
  • Train receivers to scan GS1 barcodes (the barcode app parses lot and expiry from GS1).
  • Keep returns and expired stock in separate locations excluded from saleable stock.

7. Version notes

v18 v19 v20
FEFO, GS1 barcodes Forecast shows expired products; lot properties in barcode Traceability report upstream/downstream, bulk lot/serial generation in barcode

Planning an Odoo project like this one?

I have implemented these flows for real businesses. Let's map your process and see how Odoo fits, free discovery call.