> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Inventory counts

> Count real stock against a frozen snapshot, review the variances, and post the differences as adjustments.

An inventory count compares a frozen on-hand snapshot with physical stock and posts the variance. Select a location and optionally filter by storage unit or item type. Alforse creates count lines from the snapshot, counters enter observed quantities, and posting records each difference as an inventory adjustment in the item ledger.

## The count lifecycle

A count moves through three statuses in order. Posting is atomic, so a count is never left half-applied.

<details>
  <summary>**Draft**</summary>

  The count is being set up and counted. Alforse has snapshotted on-hand into the lines, and counters enter what they physically find. Lines can still be regenerated from scratch while the count is Draft.
</details>

<details>
  <summary>**Pending**</summary>

  Counting is confirmed and the count is queued to post. The entered quantities are locked in for review; nothing has hit the ledger yet.
</details>

<details open>
  <summary>**Posted**</summary>

  Every non-zero variance has been booked as a Positive or Negative Adjustment, tracked-entity quantities updated, and a journal written. This is the pivotal transition.
</details>

A Posted count cannot be reopened. To fix an incorrect posted movement, use **Correct Quantity** on the Stock Movements screen. Alforse posts an offsetting movement for the difference, links it to the original, and uses the original posting date. Both entries remain visible.

## Creating a count

Every count is scoped to one **location**. From there you can narrow it two ways, both optional:

FieldType

<details>
  <summary>**Storage units**</summary>

  Limit the count to specific bins. Leave it empty to count the whole location.
</details>

<details>
  <summary>**Item type**</summary>

  Restrict to one of `Part`, `Material`, `Tool`, or `Consumable` — the stockable item types. Services are never counted (they hold no inventory).
</details>

<details>
  <summary>**Blind Count**`boolean`</summary>

  When on, system quantities are hidden until the review step. Use it so the system number can't bias what they write down.
</details>

A **full count** covers an entire location. A **cycle count** covers selected bins or one item type. Scope determines which lines Alforse generates; both use the same count document and lifecycle.

When you generate the lines, Alforse aggregates on-hand from the item ledger into one line per item, storage unit, and lot. It **excludes Rejected and Consumed lots** — a count never lists stock that has already been scrapped or used up. Each line records the frozen **system quantity**; that snapshot is what the variance is measured against later, not live on-hand.

## Counting

A counter walks the lines and enters what they find. Two rules matter:

NOTE

A **blank** counted quantity means "not counted" and is skipped at post — it leaves that stock untouched. An explicit **0** is a real count that zeroes the line. The two are different: don't leave a line blank when you mean the shelf is empty.

HEADS UP

Serial-tracked lines can only be counted **0 or 1** — a serial number is a single unique unit. The counted-quantity field caps a serial line at 1, and a post that is rejected flags the offending lines so you can fix them before trying again.

Counted quantities are non-negative, so a count can never drive on-hand below zero.

## What posting does

Posting reconciles against the **frozen snapshot**, not live on-hand. For each counted line Alforse computes the variance as `counted − systemQuantity` and posts a single adjustment for it:

* A shortfall books a **"Negative Adjmt."**, an overage a **"Positive Adjmt."**, written to the item ledger with the document type **"Inventory Count"**.
* Cost layers are maintained on every variance. When accounting is [turned on](/docs/reference/accounting.md#turning-accounting-on), one journal is written for the whole post, debiting or crediting inventory against the inventory adjustment account, valued at the item's approved cost. A count that raises a line above its snapshot needs an approved valuation for that line.
* For a tracked lot, the same variance is applied to the entity's quantity — the delta is added, not set — so any receipt or shipment that posted between the snapshot and the post survives the count rather than being clobbered.

NOTE

Reconciling against the snapshot delta (not live on-hand) is deliberate. If a receipt or shipment lands while the count is open, the correction is applied *on top of* it instead of erasing it. The counter's variance is exactly what they reviewed.

## Count vs. a direct adjustment

Both end in the same place — a Positive or Negative Adjustment on the ledger, and the same journal. The difference is the workflow:

FieldType

<details>
  <summary>**Inventory count**</summary>

  A **bulk, reviewable document**. Snapshot many lots at once, count them, review the variances, then post them all in one atomic transaction. It has a Draft → Pending → Posted lifecycle.
</details>

<details>
  <summary>**Manual adjustment**</summary>

  A **single, immediate movement** on one item in one storage unit. No snapshot, no review step, no lifecycle — you enter a delta or a *Set Quantity* target and it posts on the spot.
</details>

Use a count to reconcile multiple items or an area. Use a manual adjustment to correct one known quantity.

## Related

**Inventory & locations**

On-hand as a ledger, storage units, and the manual adjustment a count is the bulk version of.

[Open](/docs/reference/inventory.md)

**Traceability**

How serial and batch lots are tracked — the entities a count snapshots and adjusts.

[Open](/docs/reference/traceability.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.