# Inventory Count

## Overview

Inventory Count manages the process of verifying physical stock against system records through full physical inventories and cycle counts. A full physical inventory counts every item at a location, while a cycle count targets a subset of items on a rolling schedule — typically driven by ABC classification, location zone, or product group.

The count workflow follows a structured lifecycle: plan the count, optionally freeze stock movements, execute the physical count, review variances (counted quantity minus system quantity), approve results, and automatically generate inventory adjustments for approved variances. Cycle counts can be scheduled to run continuously, ensuring stock accuracy is maintained without the disruption of a full physical inventory.

## Business Purpose

- **Regulatory compliance**: Periodic physical verification is required by accounting standards and auditors to validate inventory balances on the balance sheet
- **Stock accuracy**: Identifies and corrects discrepancies between system records and actual physical quantities, improving fulfillment reliability
- **Loss detection**: Surfaces shrinkage, damage, misplacement, and theft through systematic variance analysis
- **Continuous improvement**: Cycle counts enable rolling accuracy checks without halting warehouse operations, unlike full physical inventories that may require a stock freeze
- **Downstream reliability**: Accurate inventory feeds into purchasing (reorder points), sales (available-to-promise), and finance (inventory valuation)
- **Root cause analysis**: Variance data collected over time reveals patterns in stock discrepancies, enabling process improvements

## Process Flow

```mermaid
flowchart TD
    A[Create Count Document] --> B[Select Location / Warehouse]
    B --> C{Freeze Stock?}
    C -- Yes --> D[Block Inbound/Outbound Movements]
    C -- No --> E[Snapshot System Quantities]
    D --> E
    E --> F[Distribute Count Sheets]
    F --> G[Execute Physical Count]
    G --> H[Enter Counted Quantities]
    H --> I[Calculate Variances]
    I --> J{Variances Within Tolerance?}
    J -- Yes --> K[Auto-Approve]
    J -- No --> L[Manager Reviews Variances]
    L --> M{Recount Required?}
    M -- Yes --> G
    M -- No --> N[Approve / Reject Line Items]
    K --> O[Generate Inventory Adjustments]
    N --> O
    O --> P[Post Adjustments]
    P --> Q{Stock Frozen?}
    Q -- Yes --> R[Unfreeze Stock Movements]
    Q -- No --> S[Count Completed]
    R --> S
```

## Scenario Patterns

- **Annual full physical inventory**: All items at a warehouse are counted at fiscal year-end with stock movements frozen to ensure an accurate snapshot for financial reporting
- **ABC cycle count**: High-value A-items are counted weekly, B-items monthly, and C-items quarterly, distributing count workload evenly across the year
- **Location-based cycle count**: A specific warehouse zone or bin range is counted on a rotating schedule, ensuring every location is verified within a defined period
- **Blind count**: Counters are not shown system quantities during counting to prevent bias; variances are calculated only after all counts are entered
- **Recount on high variance**: When a counted quantity deviates beyond a configured tolerance threshold, a mandatory recount is triggered before the variance can be approved
- **Multi-counter reconciliation**: Two independent counters verify the same items; discrepancies between their counts trigger a third-party recount before variance approval
- **Post-count adjustment**: Approved variances automatically generate inventory adjustment records that update on-hand quantities and post corresponding financial entries

## Test Cases

- Creating a count document captures the target location, count type (full or cycle), and planned date
- Snapshot records the system on-hand quantity for each item at the moment the count is initiated
- Variance is calculated as counted quantity minus system quantity for each count line
- Variances within the configured tolerance are auto-approved without manager review
- Variances exceeding tolerance require explicit approval or rejection by an authorized user
- Rejecting a variance line triggers a recount for that item without affecting other approved lines
- Approved variances generate corresponding inventory adjustment records with reason code "inventory-count"
- Generated adjustments update on-hand stock quantities and post to the inventory valuation ledger
- Freezing stock blocks new inbound and outbound movements for the counted location until the count is completed
- Unfreezing stock resumes normal movement processing after count completion
- Cycle count policies can be configured by ABC classification, location, or product group with independent frequencies
- Scheduled cycle counts automatically generate count documents on their configured frequency
- A count document cannot be finalized until all lines are either approved, rejected, or marked for recount
- Blind count mode hides system quantities from the count entry interface
- Count documents maintain a complete audit trail of who counted, when, and what values were entered

## Reference Links

- [SAP Physical Inventory (MI01/MI04/MI07)](https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f42e4a8abfc34ed6b11ab15478b79e78/4e2dd7c6b24e3857e10000000a174cb4.html)
- [Oracle Cycle Counting](https://docs.oracle.com/en/cloud/saas/supply-chain-and-manufacturing/25a/famie/cycle-counting.html)
- [Odoo Inventory Adjustments](https://www.odoo.com/documentation/17.0/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.html)
