Who uses this module
| User | Role | How they use it |
|---|---|---|
| Warehouse Supervisor | Primary user | Receiving, picking, adjustments, count |
| Production | Daily user | Material issues against job orders |
| Cost Accountant | Daily user | Period costing, variance analysis |
| QA Inspector | Daily user | Quarantine, release, rejection |
| Operations Manager | Viewer | Stock status, aging, turnover |
The business problem
Inventory is where F&B factories win or lose. Common failures:
- Lot tracking doesn’t exist. When a quality complaint comes in, tracing which raw material batch went into which finished product takes 3-4 hours using paper records.
- Expiry dates aren’t enforced. Old stock sits behind new stock; sometimes expired product ships. Customer complaints. Recalls. Brand damage.
- Cost is a guess. Manual cost entry drifts from reality. Some items are costed at last-year prices; FX variance is ignored. Margin reports are fiction.
- Multi-warehouse is painful. Cold storage, dry storage, finished goods — each in its own Excel file. Transfers between them are manual entries, often missing.
- Count adjustments disappear into a black hole. Physical count shows 450 bottles; system shows 480. The 30-bottle difference gets “adjusted” with no root-cause analysis.
Key features
Item Master
- Hierarchical categories (Raw Material, Packaging, Finished Goods, Work-in-Process)
- Lot-tracked vs. non-lot-tracked per item
- Expiry tracked — for perishable goods with configurable shelf life
- Serial-tracked — for high-value or regulated items
- Multiple units of measure (purchase UoM, stock UoM, sales UoM) with conversions
- Minimum/maximum stock levels per warehouse, reorder points
- Halal certification tracking, country of origin
Lot / Batch Management
- Every movement captures the lot — receipt, issue, transfer, adjustment, ship
- Expiry dates per lot with aging reports
- Lot status — released, quarantine, hold, rejected
- Halal cert number attached to lots (for batches sourced from certified suppliers)
- Backward traceability — FG lot → job order → raw material lots → PO receipts → suppliers
- Forward traceability — raw material lot → job orders → FG lots → shipments → customers
Multi-Warehouse
- Sub-inventories per warehouse (e.g., Cold Storage A vs. B, Dry Storage, Bonded)
- Temperature zones with threshold alerts
- Inter-warehouse transfers with approval and GL posting
- Warehouse-specific item costs (period average per item per warehouse)
Costing
- Period average costing — every receipt adds to the running average; issues use the period average
- FX variance captured on foreign-currency receipts
- Landed cost — freight, customs, insurance rolled into item cost
- Cost layer history — prior periods’ costs locked and queryable
Receiving
- From POs (links to Procurement)
- Lot number capture
- Expiry date capture
- Country of origin, halal cert
- Quarantine routing (QA inspection before release)
- Over/under receipt handling with tolerance
Picking
- FIFO / FEFO enforced — oldest lot or nearest-expiry first
- Pick lists generated from sales orders or job orders
- Mobile/tablet-friendly pick screens
- Exception handling (stock not found, damaged, etc.)
Physical Count
- Cycle counting — sample a subset each day, rotate through all items over the month
- Full count — typically year-end
- Variance analysis — flagged adjustments require a reason code and approval
- Blind count — counter doesn’t see system quantity until after entry
Transfers & Adjustments
- Inter-warehouse transfers with GL posting
- Adjustments (shrinkage, damage, obsolescence) with reason codes
- All adjustments require approval above threshold
F&B scenario
Mango concentrate lot traceability. A customer in Jeddah calls: “A bottle of Oasis mango juice from the batch I bought last week tastes off.”
- AR clerk pulls the shipment to that customer. Finished goods lot:
FG-001-2026-0617-A. - Click Where Used (Backward). System shows: produced in job order
JO-2026-00123. - Click through: job order consumed raw material lots including
MAN-2026-0512-EGY(mango concentrate from Cairo Citrus Co.). - Click forward from
MAN-2026-0512-EGY: also used in job ordersJO-2026-00127andJO-2026-00134, which became FG lotsFG-001-2026-0620-BandFG-001-2026-0625-C. - Both those FG lots went to 6 other customers (retail chains + distributors).
- Total time: 45 seconds. Decision: quarantine all remaining stock of the suspect concentrate lot, contact the 6 customers, coordinate a targeted recall.
Without lot tracking, the factory would have faced a blanket recall of 3 days’ production, at ~300,000 SAR in cost.
Integration with other modules
- Procurement — PO receipts create inventory
- Manufacturing — material issues decrement raw inventory, completions create FG inventory
- AP — receipt triggers AP accrual via Inventory SLA
- Sales — shipments decrement FG and post COGS
- GL — every inventory movement is a journal entry
Reports out of the box
| Report | What it shows |
|---|---|
| Stock Status | Current balance per item per warehouse |
| Aging by Item | Stock age (for expiring items, slow movers) |
| Lot Traceability | Forward + backward for any lot |
| Stock Movement | All movements per item, period-filtered |
| Cost History | Period average cost trend per item |
| Cycle Count Variance | Physical vs. system differences |
| Expiring Stock | Items approaching expiry (30/60/90 day windows) |
| Slow Movers | Items with no movement in N days |
| Dead Stock | Items with zero movement in N months |
All bilingual, exportable, drillable.
Compliance
- Food safety (SFDA, Egypt FSA) — full lot traceability forward + backward
- Halal compliance — supplier cert tracking + batch linkage
- Export documentation — country of origin, lot, expiry on shipping docs
- VAT — stock valuation aligned to accounting period
vs. alternatives
| Feature | Excel | Odoo | SAP B1 | AION |
|---|---|---|---|---|
| Lot/batch tracking | ❌ | ✅ | ✅ | ✅ |
| Expiry + FEFO picking | Manual | ✅ | ✅ | ✅ |
| Period average costing | Manual | Limited | ✅ | ✅ |
| Multi-temperature zones | ❌ | Add-on | ✅ | ✅ |
| Full traceability (both directions) | Paper | ✅ | ✅ | ✅ |
| Cycle counting | ❌ | ✅ | ✅ | ✅ |
| Arabic lot labels | Depends | Partial | Partial | ✅ native |
Where this module lives in the code
aion-erp/apps/api/src/modules/inventory/ Ready to see it live?
Log in with admin / Admin123 and try this module in the juice factory scenario, or reach out for a guided walkthrough.
Related modules
General Ledger
Close books in 2 days, not 2 weeks. Every transaction auto-posts. Full audit trail.
Accounts Payable
Three-way match, automatic accrual, duplicate invoice prevention, bulk payment runs.
Accounts Receivable
Credit limits, aging, statements, and ZATCA-ready Arabic invoices with QR codes.
Manufacturing
Formulas with versioning, job orders, material issue/backflush, batch costing, scrap tracking.