Spinning and weaving mills present a specific ERP configuration challenge: the raw material (cotton fibre), intermediate products (sliver, roving, yarn), and finished products (grey fabric, finished fabric) are all measured in different units, and the production yield at each stage is never exactly 100%. Processing waste (noil, fibre loss, yarn breakage, loom waste) means that 1,000 kg of cotton fibre does not produce 1,000 kg of yarn, and 1,000 kg of yarn does not produce 1,000 metres of grey fabric at the expected weight.
ERP that tracks quantities without tracking yields is a liability in textile manufacturing. It gives you numbers that slowly drift from physical reality — until the annual physical stock count reveals that the system says you have 45,000 kg of 30s count yarn and the warehouse has 38,000 kg. Odoo handles this correctly when configured with accurate BOM yield percentages and consistent production quantity recording. This guide shows you how.
For the manufacturing module foundation, see the Odoo manufacturing module setup guide for Bangladesh factories. For inventory valuation methods that apply to yarn stock, see the Odoo inventory valuation cheatsheet.
In a textile mill, the gap between theoretical yield and actual yield is not a rounding error — it is the difference between a profitable mill and a loss-making one. ERP must measure it precisely.
Spinning mill ERP challenges
- Units of measure complexity: Cotton is purchased by bale (170–220 kg per bale). Yarn is produced by kg and sold by cone or by kg. Fabric is sold by metre, sometimes by kg for weight-based fabric. The ERP must handle all these UoMs and their conversions within a single production flow.
- Yarn count as a product attribute: A spinning mill produces yarn in multiple counts (10s, 16s, 20s, 30s, 40s). Higher count = finer yarn = different machine settings, speed, and yield. The same cotton fibre produces different count yarns at different output rates. Each count must be tracked separately in inventory but the raw material is the same.
- Processing waste at every stage: From cotton to finished yarn, typical waste levels: blowroom/carding (3–5%), combing (12–18% for combed yarn), drawframe/roving (0.5–1%), ring spinning (1.5–3%), winding/cone winding (0.5–1%). The BOM yield factor must reflect these stage losses. If the BOM assumes 100% yield when actual yield is 85%, your system cost per kg is understated and your inventory balance drifts upward from reality.
- Production orders span multiple days: A spinning frame producing 30s count yarn may run for 5–7 days to complete a production batch of 5,000 kg. Production orders in Odoo span this period, with daily production quantities recorded each shift.
- Multiple semi-finished products: The intermediate stages (sliver, roving, drawn sliver) are rarely tracked in ERP by smaller mills — they are produced and consumed within the day or week. Odoo handles this correctly through the BOM structure: if you do not track sliver separately, include it in the spinning BOM as a "phantom" sub-assembly consumed directly in the ring spinning MO.
Yarn inventory setup in Odoo
Product master setup for yarn:
| Configuration | Setting | Why |
|---|---|---|
| Product template name | "100% Carded Cotton Yarn" (one template per composition) | Group all counts of the same composition under one template using variants |
| Product variant attribute | Count: 10s, 16s, 20s, 24s, 30s, 40s | Each count is a separate variant but managed under one product template |
| Unit of measure | Kg (for internal production), Cone (for sales to garment factories) | Internal production is weight-based; customers buy by cone — set up both UoMs with conversion factor |
| Tracking | By Lot (for traceable production batches) | Lot = production batch. Enables cotton → yarn → fabric traceability and quality recall if count deviation found post-shipment |
| Costing method | Average Cost (AVCO) | Yarn cost varies by cotton quality season, energy costs, and count. AVCO smooths cost across production runs. FIFO for export if lot-specific cost is needed. |
| Route | Manufacture (for internally produced yarn) | Production orders are generated from manufacturing demand. Reordering rules trigger when yarn stock drops below the minimum for each count. |
Set up separate product templates for each composition family:
- 100% Carded Cotton Yarn (variants: counts 10s–40s)
- 100% Combed Cotton Yarn (variants: counts 20s–80s)
- PC Yarn (Polyester-Cotton 65/35) (variants: counts 20s–40s)
- CVC Yarn (Cotton-rich Polyester 60/40) (variants: counts 20s–40s)
- 100% Polyester Yarn (variants: counts 20s–150 denier)
BOM for yarn production
The spinning BOM takes cotton fibre (or cotton + polyester for blended yarn) and produces yarn at the relevant count. The critical configuration is the yield factor — the ratio of output (yarn) to input (fibre). A typical BOM for 1 kg of 30s carded cotton yarn:
| Component | UoM | Qty per 1 kg yarn | Notes |
|---|---|---|---|
| Cotton Fibre — Shankar-6 (31mm staple) | Kg | 1.095 | 9.5% waste — blowroom + carding + drafting loss combined |
| Cone (plastic, 150g) | Pcs | 0.5 | 1 cone holds ~2 kg of 30s yarn (2 kg/cone = 0.5 cones/kg) |
| Carton (12 cone) | Pcs | 0.042 | 1 carton / 24 kg (12 cones × 2 kg) = 0.042 cartons per kg |
| Packing material (wrapper, tape) | Set | 0.042 | One set per carton |
For combed yarn, add a separate line for comber noil (waste that is sold separately as a by-product). In Odoo, comber noil can be configured as a by-product in the BOM (Manufacturing → Configuration → Settings → enable "By-Products"). The by-product line specifies that 0.12 kg of comber noil is produced for every 1 kg of combed yarn. Noil is received into stock (as a low-value by-product) and sold to papermaking and wadding industries.
For blended yarn (PC or CVC), the BOM has two fibre inputs:
- PC 65/35 yarn: 0.67 kg polyester staple + 0.37 kg cotton fibre per 1 kg yarn (accounting for blend ratio + waste)
- CVC 60/40 yarn: 0.62 kg cotton fibre + 0.43 kg polyester staple per 1 kg yarn
Loom routing configuration for weaving mills
For weaving mills (or spinning mills with integrated weaving), configure the manufacturing routing in Odoo Manufacturing → Configuration → Routings. Create one routing per fabric construction type:
Qty tracked: beam length (m)
Qty tracked: beams drawn
Qty tracked: metres/shift
QC check: grade + defect points
Finished goods: Grey Fabric lot created
Grey to finished fabric tracking
The grey fabric to finished fabric flow in Odoo involves two Manufacturing Orders:
MO 1: Yarn → Grey Fabric
Input: warp yarn (by kg) + weft yarn (by kg) + sizing starch (for warp sizing, if applicable). Output: grey fabric (by metre, with weight-per-metre GSM specification). This MO covers warping, sizing, drawing-in, and weaving. The grey fabric produced is assigned a lot number (e.g., GF-2026-05-001 = Grey Fabric batch 001, May 2026).
MO 2: Grey Fabric → Finished Fabric
Input: grey fabric (by metre) + dyeing chemicals/dyes + finishing chemicals. Output: finished fabric (by metre). This MO covers scouring, bleaching, dyeing, finishing (stenter, sanforizing). The finished fabric lot (dye lot) is assigned here.
If wet processing is outsourced to a dye house:
- Configure the Grey → Finished BOM as a Subcontracting BOM
- Create a subcontracting PO to the dye house: grey fabric sent as the component, finished fabric received as the product
- Odoo tracks grey fabric quantity sent, finished fabric received, and the processing loss (typically 3–6% for woven fabric)
- The dye house invoice is the cost of the subcontracting operation — post it against the subcontracting PO in Odoo
Quality control setup for spinning mills
In Odoo, configure these as Quality Check Points in the Quality module (Manufacturing → Quality → Control Points). Attach each check point to the relevant work order in the routing: cotton checks attach to the "Receipt" operation, in-process yarn checks attach to the "Ring Spinning" work order, finished yarn checks attach to the "Winding" or "Packing" work order. Failed checks create a Quality Alert assigned to the QC manager, and the production lot is blocked from moving to the next stage until the alert is resolved.
Yarn inventory valuation
Use Average Cost (AVCO) for yarn inventory valuation in most spinning mill setups. AVCO is appropriate because:
- Cotton prices fluctuate significantly by season (pre-harvest, post-harvest) and by quality. AVCO smooths the cost impact across the cotton inventory on hand.
- Production batches vary in actual yield. AVCO absorbs yield variation into the average cost over time rather than creating large cost variances per batch.
- Most domestic yarn sales in Bangladesh are not lot-specific — customers buy 30s count yarn, not specifically Lot-001 or Lot-002. AVCO matches this commercial reality.
For export yarn sales where lot-specific cost is required for duty drawback or international customer documentation, use FIFO instead. FIFO tracks the cost of specific lots, which enables accurate cost reporting per export consignment.
For detailed inventory valuation configuration and journal entry structure, see the Odoo inventory valuation cheatsheet — it covers AVCO vs FIFO, landed cost accounting, and the stock journal entry flow that applies directly to yarn and fabric inventory.
Bangladesh spinning mill — specific configuration notes
- Cotton import under bond: Many Bangladesh spinning mills import cotton under a bonded warehouse arrangement (similar to EPZ) to defer import duty until the yarn is sold domestically (duty applicable) or exported (duty exempt under drawback). Configure bonded cotton stock as a separate Odoo location ("Bonded Cotton Store") and non-bonded as "Regular Cotton Store". Transfers from bonded to production trigger duty liability tracking. Odoo's location-based stock allows this separation without a complex configuration.
- By-product sale (comber noil, cotton waste): Combing waste (noil) is a valuable by-product sold to the nonwoven, paper, and mattress industries. Carding waste (fly, droppings) is sold as low-grade filler. In Odoo, configure these as by-products in the spinning BOM. When the MO is completed, the by-product quantity is received into a "Waste Products" stock location and can be sold via a separate sales order. This ensures by-product revenue is captured and the main product cost is correctly calculated (by-product value offsets main product cost in AVCO calculations).
- Power cost as a major production cost: Spinning mills are energy-intensive — electricity accounts for 30–40% of yarn production cost. While Odoo does not have a built-in energy cost tracking module, you can approximate this by including electricity as a work centre cost rate in the manufacturing routing (set a BDT/hour rate on each work centre that reflects the electricity cost per operating hour). This feeds into the manufacturing overhead absorbed into product cost.
- Seasonal cotton procurement: In Bangladesh, cotton is primarily available for purchase during the post-harvest period (November–February for Indian Shankar varieties, January–April for US/Australian cotton arrivals). Mills that buy all their annual requirement during the harvest season carry large cotton inventory on their balance sheets for much of the year. Odoo's AVCO costing and the stock valuation report are essential for monitoring the cotton inventory value throughout the procurement cycle.
- Customer yarn specification as sales order attributes: Yarn customers (primarily RMG factories) specify their requirements precisely: "30s/1 carded cotton, cone winding, 2 kg cone, Uster <12%". Record these specifications in the sales order line notes and ensure the production order is created to match them. If you produce multiple quality grades, the sales order must clearly specify the grade to avoid wrong-grade delivery.
The three configurations that matter most for a Bangladesh spinning mill in Odoo are: (1) accurate BOM yield factors that reflect actual fibre-to-yarn conversion losses at each stage; (2) yarn count variant management that keeps your product master clean and manageable across multiple counts and compositions; and (3) quality check integration at ring frame and final winding stages to catch count deviation before shipment rather than after customer complaint. These three directly address the most common operational and financial measurement failures in spinning mill ERP. Need help configuring Odoo for your textile mill? Get in touch →
Frequently asked questions
How to manage yarn inventory in Odoo for a spinning mill?
Use Product Variants with Count as the attribute (10s, 16s, 20s, 30s, 40s) under one product template per composition (e.g., "100% Carded Cotton Yarn"). Set UoM to Kg for internal production; add Cone as a secondary UoM with a conversion factor for sales to garment factories. Enable lot tracking per production batch. Set AVCO costing to handle seasonal cotton price variation. Configure minimum reordering rules per count to trigger production MOs when yarn stock drops below the safety threshold for each count variant.
How to set up loom routing in Odoo for a weaving mill?
Create Work Centres for each major loom group (Rapier, Jacquard, Air-Jet, Shuttle) with their capacity (looms × running speed in m/hour) and cost rate (BDT/hour). Define a Routing with work orders: Warping → Drawing-in → Weaving → Grey Inspection → Folding. Attach quality checks to the Weaving and Inspection work orders. Each Manufacturing Order for a fabric style follows this routing, generating separate work orders per stage. Daily production entry: supervisor records metres woven per loom per shift in the MO's work order. This gives you loom efficiency (actual vs theoretical metres/day) in real time.
How to track grey fabric to finished fabric in Odoo?
Use two linked Manufacturing Orders: MO1 (Yarn → Grey Fabric) covers warping, weaving, and inspection. MO2 (Grey Fabric → Finished Fabric) covers wet processing (scouring, dyeing, finishing). If wet processing is outsourced, set MO2 as a Subcontracting BOM — grey fabric is the component sent to the dye house, finished fabric is what comes back. Each MO produces a lot number: grey fabric lot tracks the weaving batch, finished fabric lot tracks the dye lot. Full traceability from yarn lot → grey lot → finished lot → customer delivery is available in Odoo's Traceability report.
What quality checks should be configured in Odoo for a spinning mill?
Three QC points: (1) Cotton receipt — micronaire, staple length, fibre strength, trash content. Reject out-of-spec bales at receipt stage. (2) Ring frame in-process — actual count vs nominal (±2% tolerance), CSP (count-strength product), TPI (twists per inch), elongation at break. Check one sample per frame per shift. (3) Finished yarn before delivery — Lea count test, Uster % evenness, imperfections per km. For fabric: GSM, width, defect grade. Configure these as Odoo Quality Check Points attached to the relevant work order in the manufacturing routing. Failed checks create alerts that block the lot from moving forward until resolved.