Aggregated vs tracked batches
Two warehouses can hold the same product and look completely different on the Batch Update table. One shows several rows — one per batch, each with its own expiry — while the other shows a single row tagged Aggregated. That difference comes from one warehouse setting: batch & expiry tracking.
Batch tracking ON — a row per batch
When a warehouse tracks batch and expiry, every distinct batch of a product is its own inventory record. The table shows each batch separately, with its batch number, expiry date, and its own Soon / Expired badge when relevant. This is the right model for pharmacy stock, where FEFO (first-expiry-first-out) depends on knowing exactly which batch is which.
Here you can edit the batch number and expiry on each line independently.
Batch tracking OFF — one Aggregated row
When a warehouse does not track batch and expiry, the batches would otherwise appear as many near-identical rows with no batch to tell them apart. Instead, Batch Update aggregates them: it sums the quantities into a single row per product and warehouse, tags it Aggregated, and hides the batch and expiry fields (there is nothing meaningful to edit there).
On an aggregated row:
- Batch shows the Aggregated pill; Expiry shows —.
- Editing price updates all the underlying records together, so the product’s price stays consistent.
- A decrease in quantity is spread across the underlying records automatically, draining the largest first.
The edit drawer shows a short amber note when a row is aggregated, so you always know which mode you are in.
Why it matters
If you are hunting for a specific batch and the warehouse doesn’t track batches, you won’t find one — that’s expected, not a bug. And if you change the price on an aggregated row, remember it moves every underlying record for that product at once. When you need per-batch control, the warehouse must have batch tracking enabled.