Stock Audits (Opname)
1. Overview & Purpose
What is Stock Opname?
2. When to Use Stock Opname
Fiscal Month-End Full Warehouse Freeze (100% Wall-to-Wall)
Routine end-of-month inventory counting requiring temporary suspension of transactions to establish precise balance sheet stock valuations.
High-Value SKU Rolling Cycle Counting (Smartphones / Cosmetics)
A retail chain audits high-shrinkage category merchandise weekly without shutting down customer sales or closing store operations.
Blind Counting Verification to Prevent Bias
Store management prevents stock counters from being influenced by expected system quantities during physical counting.
Facility Incident & Post-Theft Investigation
A retail store suffers a suspected overnight break-in or roof leak over pallet racking requiring immediate inventory verification.
Multi-Zone Concurrent Counting with Discrepancy Aggregation
A 2.000 sqm warehouse deploys 4 counting teams across Zone A, Zone B, Zone C, and Cold Storage simultaneously.
3. Data Dictionary & Fields
Schema structure for the stock_opnames and stock_opname_items tables:
| Field / Column | Input Type | Requirement | Description & Operational Guide |
|---|---|---|---|
number | String (Auto-generated) | Required | System-generated audit voucher identifier for tracking physical counting events. Example: SO-2026-0501 |
branchId | Foreign Key (Branches) | Required | The operating branch where the audit event is conducted. Example: Jakarta Central Branch (ID: 1) |
locationId | Foreign Key (Locations) | Required | Specific facility, warehouse, or retail store under audit. Example: Retail Store Bandung (ID: 3) |
opnameDate | Date | Required | Official physical counting execution date. Example: 2026-05-31 |
status | Enum (OpnameStatus) | Required | Audit phase state: DRAFT, FROZEN, COMPLETED, ADJUSTED, or CANCELLED. Example: FROZEN, COMPLETED |
productId | Foreign Key (Products) | Required | Catalog product item included in the counting manifest. Example: Kopi Arabika 250g (ID: 88) |
storageId | Foreign Key (Storages) | Required | Storage bin or shelf location audited by staff. Example: Rack B-02 |
systemQuantity | Decimal | Required | Snapshot of digital book stock captured at the exact moment of freezing. Example: 100.00 |
quantity | Decimal | Required | Actual physical count entered by warehouse counting personnel. Example: 97.00 |
differenceQuantity | Decimal | Required | Variance calculation: actual counted quantity minus system book quantity. Example: -3.00 |
costPrice | Decimal | Required | Item valuation rate used to calculate monetary exposure of discrepancies. Example: 32000.00 |
batchNumber | String | Optional | Physical batch number verified on carton packaging during counting. Example: BATCH-2026-A1 |
expiryDate | Date | Optional | Expiry date observed on physical packaging. Example: 2027-03-31 |
remarks | String | Optional | Auditor observations, warehouse condition notes, or variance explanations. Example: Damaged packaging found behind rack backboard |
4. Interface Preview
Visual interface layout showing physical audit sessions, snapshot freeze indicators, counting inputs, and status lifecycle badges.
Screen Preview: Stock Opnames Interface
Visual interface illustration and control layout for menu Route: /admin/inventories/stock-opnames
5. Creating Opname & Inventory Freezing
Navigate to Stock Opname
Menu > Inventories > Stock OpnamesFrom the main navigation bar, select Inventories > Stock Audits (Opname).
Initialize Audit Document
Add Stock OpnameClick Add Stock Opname. Choose operating Branch, Location, and Audit Date.
Populate Audit Manifest
Add Item > SaveAdd products and storage bins targeted for physical counting. Save the document in Draft status.
Execute Snapshot Freeze
Action > FreezeClick Freeze from the action menu. The system captures immutable snapshots of system quantities.
6. Blind Physical Counting & Input
Deploy Counting Teams
Print Count SheetDistribute physical count sheets to counting staff. Staff count items blindly without seeing expected numbers.
Input Verified Physical Counts
Action > Count ItemsClick Count Items or Edit. Enter actual physical counts verified per storage bin, batch, and SKU.
Save Count Data
Save CountClick Save Count to record counted figures. Additional counts can be refined until final supervisor sign-off.
7. Finalizing & Automatic Adjustment Sync
Snapshot Freeze Rule
Complete Audit Phase
Action > CompleteOnce all aisles and bins have been tallied, click Complete from the audit actions menu.
Generate Discrepancy Stock Adjustment
Create Stock AdjustmentIn the completed audit detail view, click Create Stock Adjustment to auto-generate a Stock Adjustment for all variances.
8. Cross-Module Impact
| Target Subsystem | Relational & Transactional Effect |
|---|---|
| Stock Adjustments | Directly spawns an OPNAME-type Stock Adjustment carrying all line discrepancy quantities. |
| Stock Balances | Provides the foundation for aligning digital on-hand balances with verified physical reality. |
| Stock Movement Ledger | Resulting adjustments generate OPNAME_IN and OPNAME_OUT movements linking back to the Opname voucher. |
| Audit & Compliance Reporting | Provides historical audit trail logs verifying physical audit compliance for internal and external auditors. |
Operational Best Practices
- Always freeze opnames immediately prior to physical counting to capture exact cut-off book balances.
- Use blind counting sheets without system quantities so counting staff are not biased by expectations.
- Require a second recount for any high-value item exhibiting more than 2% discrepancy before finalizing.