Skip to main content
Alforse represents individual serials and batches as . Consumption and production records create a genealogy that supports backward tracing from a finished unit and forward tracing from a suspect lot.

Tracked entities

A tracked entity is a tracked quantity of an item. A item gets one entity per unit (quantity 1); a item gets one entity per lot. The serial or batch number, and where it came from, live on the entity’s attributes. An entity carries a status as it moves:

Where entities come from

Receiving a tracked item creates entities On Hold; posting the receipt releases them to Available, unless the item needs inspection. Then they stay On Hold until it clears, or become Rejected if it fails. On the make side, a job reserves its output entity up front and flips it to Available when the unit is produced.

Genealogy

Every material event (consume, produce, split, ship) is recorded as an activity with inputs (what was consumed) and outputs (what was produced). Parent and child link through the activity, so the graph is built as work happens and walked later to trace a unit’s ancestry or descendants. Consuming part of a batch records a split, linking the original lot to the consumed portion and the remainder. The inverse is a merge, which combines lots of one item into a single lot carrying their summed quantity and the earliest expiry date among them. Both lots stay in the graph as inputs to that merge, so the new lot traces back through each of them. Operation batching merges the members a run completed under one batch number; lots kept separate can still be merged from the batch’s drawer.

Shelf life

Tracked items can carry a shelf life: a fixed duration, a date set at receipt, or one calculated from the earliest-expiring component consumed. Alforse stamps the resulting expiration date on the entity, and picking favors the earliest expiry first (FEFO). Shelf life applies only to Serial and Batch items. There has to be a per-unit record to stamp.