Inventories & Stock ModuleOptional Module

Stock Adjustments

1. Overview & Purpose

What are Stock Adjustments?
Stock Adjustments record variance corrections between digital ledger balances and physical inventory counts. The module supports both periodic stock opname reconciliations and ad-hoc operational adjustments for damage, expiry, loss, or item discovery.
Menu Location:/admin/inventories/stock-adjustments

2. When to Use Stock Adjustments

Liquid Spillage, Breakage & Perishable Expiry Write-Downs

Glass beverage bottles break on the warehouse floor or chilled dairy products surpass their expiration date and must be legally destroyed.

Recommended Action:Create a Stock Adjustment with reason set to DAMAGE or EXPIRED to decrement physical stock and book the cost directly to Inventory Waste / Shrinkage expense.

Post-Stock Opname Physical Discrepancy Reconciliation

A cyclic end-of-month inventory opname audit reveals variances across 30 SKUs between physical floor counts and recorded software ledger balances.

Recommended Action:Select adjustment type OPNAME and bind the verified Stock Opname document ID; the system automatically populates discrepancy rows with accurate cost valuations.

Unexplained Retail Shrinkage & Pilferage

Retail store inventory audit discovers 3 missing high-value apparel items likely lost to shoplifting or untracked shrinkage.

Recommended Action:Issue a negative adjustment with reason SHRINKAGE to reflect physical floor reality, updating inventory on-hand while flagging loss prevention logs.

Recovered / Found Inventory Re-Induction

Warehouse staff discover a misplaced carton of 24 units of coffee beans tucked behind high-bay pallet racking during aisle maintenance.

Recommended Action:Issue a positive adjustment with reason FOUND to re-induct the items into the active storage bin with historical average landed cost valuation.

Packaging De-Bulk & Repackaging Unit Variances

Breaking down a master carton of bulk dry goods into smaller retail pouches incurs minor gram weight loss due to packing dust.

Recommended Action:Post a negative stock adjustment with reason CORRECTION to account for minor packing process loss without distorting sales COGS.

Store Showroom Display & Sample Item Expensing

A retail boutique takes 2 bottles of perfume or 1 jacket off the retail rack to use as tester displays for customer sampling.

Recommended Action:Create a stock adjustment with reason SAMPLE to remove items from saleable inventory and charge their cost to Promotional Marketing expense.

3. Data Dictionary & Fields

Schema structure for the stock_adjustments and stock_adjustment_items tables:

Field / ColumnInput TypeRequirementDescription & Operational Guide
number
String (Auto-generated)Required
Unique sequential document tracking number for the inventory adjustment.
Example: ADJ-2026-0001
branchId
Foreign Key (Branches)Required
The operating branch responsible for the inventory variance.
Example: Jakarta Central Branch (ID: 1)
locationId
Foreign Key (Locations)Required
Specific warehouse facility or retail outlet where discrepancy occurred.
Example: Main Distribution Hub (ID: 2)
adjustmentType
Enum (OPNAME | MANUAL)Required
Origin type: OPNAME (driven by completed audit) or MANUAL (ad-hoc warehouse correction).
Example: MANUAL, OPNAME
adjustmentReason
Enum (DAMAGE | EXPIRED | LOST | CORRECTION | FOUND | OTHER)Required
Categorization explaining root cause for variance reporting and financial expense categorization.
Example: DAMAGE, EXPIRED, CORRECTION
stockOpnameId
Foreign Key (StockOpnames)Optional
Reference to the parent stock opname audit when adjustment type is OPNAME.
Example: OPN-2026-0501 (ID: 14)
adjustmentDate
DateRequired
Transaction date for chronological inventory and accounting ledger entry.
Example: 2026-05-19
status
Enum (AdjustmentStatus)Required
Workflow state: DRAFT, POSTED, or CANCELLED.
Example: DRAFT, POSTED
totalAdjustmentValue
DecimalRequired
Monetary sum of all line variances calculated as differenceQuantity multiplied by costPrice.
Example: -240000.00
productId
Foreign Key (Products)Required
Target product catalog item receiving variance correction.
Example: Sirup Vanilla 750ml (ID: 64)
storageId
Foreign Key (Storages)Required
Storage bin where discrepancy was detected.
Example: Rack C-03
systemQuantity
DecimalRequired
Current software on-hand balance before applying the adjustment.
Example: 20.00
quantity
DecimalRequired
Actual verified physical count remaining after adjustment.
Example: 18.00
differenceQuantity
DecimalRequired
Net variance (quantity minus systemQuantity) applied to the ledger.
Example: -2.00
costPrice
DecimalRequired
Historical or average unit cost used to calculate line monetary valuation.
Example: 60000.00
batchNumber
StringOptional
Specific inventory batch receiving the variance entry.
Example: LOT-2026-V1
expiryDate
DateOptional
Perishable item expiry date attached to the batch.
Example: 2026-11-30
remarks
StringOptional
Supervisor notes, incident report references, or write-off justifications.
Example: Damaged by forklift impact during pallet unloading

4. Interface Preview

Interface display showing adjustment registry, reason categories, automatic total value calculation, and posting actions.

Menu Location:Route: /admin/inventories/stock-adjustments

Screen Preview: Stock Adjustments Interface

Visual interface illustration and control layout for menu Route: /admin/inventories/stock-adjustments

1Add Adjustment Button2Adjustment Type & Reason3System vs Actual Quantities4Post Adjustment Action
Stock adjustment voucher table displaying difference quantities, adjustment types, financial impact, and posting lifecycle.

5. Drafting Stock Adjustments

1

Navigate to Stock Adjustments

Menu > Inventories > Stock Adjustments

Go to Inventories in the left sidebar and select Stock Adjustments to view historical adjustments.

2

Launch Adjustment Drawer

Add Adjustment

Click the Add Adjustment button in the page toolbar.

3

Set Adjustment Parameters

Branch / Type / Reason

Select operating Branch, Location, Adjustment Type (Manual or Opname), Reason, and Adjustment Date.

If selecting type Opname, pick the completed audit from the dropdown to automatically load items.
4

Add Adjustment Items

Add Item > Actual Qty

For manual adjustments, click Add Item, choose product, variant, storage bin, and enter actual verified physical quantity.

The form displays current System Qty and automatically computes Difference Qty and Total Adjustment Value.
5

Save Draft Adjustment

Save Adjustment

Click Save Adjustment to persist the voucher in Draft status for inventory controller review.

6. Posting Discrepancies & Journal Entries

1

Review Variance Quantities and Valuations

Action > Detail

Inspect the summary of positive and negative discrepancy quantities and aggregate financial impact in Detail modal.

2

Post Stock Adjustment

Action > Post

Click Post from the row actions or detail view. Confirm the warning dialog that balances will be altered.

Posting updates Stocks balances, writes ADJUSTMENT_IN or ADJUSTMENT_OUT movement logs, and posts accounting journals.

7. Reopening & Cancellation Controls

Posted Balance Lock
Once posted, an adjustment cannot be edited or reopened because stock quantities and general ledger journals have been permanently committed. If an erroneous adjustment was posted, issue a new offsetting adjustment to correct the balance.
1

Cancel Draft Adjustment

Action > Cancel

If an adjustment was entered by mistake or rendered obsolete prior to posting, click Cancel from the actions menu.

2

Reopen Cancelled Document

Action > Reopen

If a cancelled adjustment requires re-evaluation, authorized managers can click Reopen to return it to Draft status.

Once an adjustment is POSTED, it cannot be reopened or cancelled. A compensatory counter-adjustment must be issued instead.

8. Cross-Module Impact

Target SubsystemRelational & Transactional Effect
Stock BalancesDirectly adjusts physical on-hand quantity by the difference quantity in the designated storage bin.
Stock Movement LedgerLogs immutable ADJUSTMENT_IN (positive) or ADJUSTMENT_OUT (negative) movements with cost valuations.
Stock Opname AuditsWhen linked to an Opname, transitions the parent audit status to ADJUSTED and completes reconciliation.
Accounting General LedgerGenerates automated journal vouchers debiting Inventory Shrinkage/Loss expense accounts and crediting Inventory Asset accounts.
Operational Best Practices
  • Always link Stock Opname audits directly when reconciling physical counts to maintain unbroken audit linkage.
  • Use specific reasons such as EXPIRED or LOST rather than generic OTHER to produce meaningful shrinkage reporting.
  • Confirm that cost prices on discrepancy items align with standard valuation before posting to avoid COGS distortion.