Skip to main content

Odoo Solutions

Odoo 19 Enterprise for school uniform manufacturing
Case study  /  Project Stitch

Odoo 19 Enterprise for a school uniform manufacturer and multi-store retailer

Contract manufacturing and walk-in retail on one system, where a school’s size curve is entered once on the quotation and carried all the way to the cutting table without being retyped.

Garment manufacturing
School uniforms
Contract & walk-in retail
India

Project snapshot

IndustryApparel and garment manufacturing
Sub-industrySchool uniform manufacturing and retail, contract supply and walk-in counters, plus bags, stationery and sports goods
RegionMadhya Pradesh, India
FootprintA production floor and two retail counters
PlatformOdoo 19 Enterprise, hosted on Odoo.sh
PartnerOchre, Official Odoo Partner
StatusDelivered, live on Odoo 19 Enterprise

Odoo modules in scope

SalesPurchaseInventoryManufacturingPoint of SaleAccountingEmployeesAttendances

How the build was tailored

  • Sizes modelled as product variants with an automatic price ladder, so a whole school size curve is quoted on a single line and prices itself
  • A size-wise bill of materials: each size variant carries its own fabric metres and its own collars, buttons and thread
  • Cutting, stitching and finishing set up as real work centres, with operators closing work orders on the Odoo Shop Floor tablet
  • One confirmed school order explodes into a manufacturing order per size, then rolls up into a single consolidated fabric purchase order in metres
  • Two Point of Sale counters drawing on the same stock and catalogue, with walk-in customers tagged to their school
  • Minimum-stock reorder rules and alerts on fabric, collars, buttons and thread, so a shortage is flagged before it stops a line

The business

This company makes and sells school uniforms, and it has two sides that pull in different directions. One side is contract manufacturing: a school signs up, and every student on the roll needs a full set, shirts, trousers, skirts, polo shirts, sweaters, ties, socks and blazers, in every size from the smallest to the largest. The other side is walk-in retail, where a parent buys a set for one child at the counter, often two weeks before session start when the shop is packed.

Alongside uniforms, the shops carry bags, stationery and sports items, so the same stock system has to handle bought-out goods and manufactured goods together.

What was breaking

The first working session with the promoters was not a software conversation. It was a walk through how a school contract actually gets delivered, and a few things came out of it quickly.

Size is the whole business, and nothing tracked it

A contract for a thousand students is never a thousand of anything. It is a size curve, different for every school and every garment. Order taking happened on paper and in spreadsheets, then got re-keyed for the cutting master. Anything lost between showed up months later as short supply in one size and dead stock in another.

Fabric was bought on instinct

The team knew the norms by heart and did the arithmetic manually per order. Trims were ordered when someone noticed the shelf was low. On a good year that meant excess fabric in the godown; on a bad year, a stitching line waiting on buttons.

Production was visible only in the room

Cutting is done size-wise by the master, stitching goes out to tailors, finishing means trimming, checking, ironing and a count check. Every stage had an owner, and none of it was recorded anywhere the next owner could see.

Counter and contract were two worlds

Stock sold at the shop and stock produced against a school contract came from the same pile, but nothing reconciled the two.

Why Odoo 19 Enterprise

Very few systems handle a size matrix, a size-wise bill of materials, a shop-floor tablet and a retail counter in one place without custom development holding it together. Odoo does. Ochre stayed close to Odoo standard and put the effort into modelling the business correctly, because in a garment operation the data model is where most projects go wrong. That kept the build honest, kept the cost of ownership low, and left the client with a system their own team can extend later.

Inside the build

Sizes as variants, with a price ladder

Sales · Inventory

Each garment is one product with a size attribute. A school contract is sold through the variant grid on the quotation, so the salesperson enters the whole size curve on a single line. Larger sizes carry an automatic price extra, so the quotation prices itself without anyone maintaining a separate rate card per size.

A bill of materials for every size

Manufacturing (BoM)

A blazer in a small size and a blazer in a large size do not consume the same fabric, so each size variant carries its own BoM with its own fabric metres and component list. The norms the team used to hold in their heads now sit in the system and drive procurement automatically.

Cutting, stitching and finishing as work centres

Manufacturing · Shop Floor

The routing follows the floor: cutting, then stitching, then finishing. Operators work from Odoo Shop Floor on a tablet, pick up the work order in front of them and close it when the piece is done. Expected duration per operation lets each work centre’s load be compared against capacity before a delivery date is promised.

One order, many MOs, one PO

Manufacturing · Purchase

Confirming a school contract explodes it into a manufacturing order per size. Odoo rolls the component demand from all of them into a single requirement, and the fabric requisition goes to the vendor as one purchase order in metres, not nine. On receipt, components flip from not available to available across every affected order at once, and cutting can start.

Two counters on the same stock

Point of Sale

Point of Sale runs at both shops, drawing from the same inventory and catalogue. Walk-in customers are recorded against the school they belong to, so the shop can see which schools its counter demand is actually coming from, useful at contract renewal time.

Reorder rules and alerts

Inventory

Fabric, collars, buttons and thread carry minimum-stock rules, and the team is notified before a shortage becomes a stopped line rather than after.

How an order moves now

1

Quote the size curve

Sales enters the size curve for each garment on the quotation grid and sends it. On confirmation, Odoo raises one manufacturing order per size with the right BoM behind each.

2

Buy what the order needs

Component demand is netted against stock, and the shortfall goes out as consolidated purchase orders to the fabric and trim vendors. Goods are received, and the orders show as ready.

3

Make and record on the floor

Cutting, stitching and finishing are executed and recorded on Shop Floor, work order by work order. Finished garments enter stock, dispatch goes to the school, and the invoice follows the order without re-entry.

4

Sell over the counter

Anything sold at either shop draws from the same stock and posts to the same books.

The result

The size curve survives the journey from sales to cutting table, entered once and carried through without being retyped, which removes the single most expensive error in this business. Fabric buying is calculated from the bill of materials rather than estimated, and goes out as one consolidated order. Production status is a screen rather than a phone call, showing how many pieces are cut, stitched and finished against a school contract and which stage is holding. Contract and counter are one set of numbers across manufacturing and both shops, and the same configuration takes another store or work centre without a redesign, which matters for a business that grows one location at a time.

Does your operation run on size grids and batch production?

Ochre models garment and multi-location retail businesses correctly on Odoo 19 Enterprise, from the size matrix and size-wise bill of materials to the shop floor and the retail counter, in one system.

Talk to Ochre