Stock is not frozen during counting — movements posted after the created date shift variances. Complete promptly. Counts are per batch / lot for batch-tracked items (GMP).
6 counting lines · one line per batch / lot (batch-tracked items) · unit mgSystem qty snapshot at line generation — unit rides on the item (admin-locked units list)
#
Item
SKU
Batch
Bin
System qty at count start
Counted qty
Variance qty
Cost / unit
Variance value
Status
mg
mg
MYR
MYR
CountedPending
Variance total (counted lines):
MYR
Completing writes ONE stock adjustment covering all variance lines; zero-variance lines post nothing.
— enter counted qty to enable Complete
Project Gaia — static mockup in Filament v3 idiom. No backend. Counting lines are illustrative — batches CK4548-2603A, G04112343 and 25050306-BG04 are real snapshot lots, ACK-240718 / AF1647-2601A / S390-2512 illustrative; the variance total −269.05 MYR reconciles with SA-519 in the Stock adjustments capture. demo: reset sheet
Complete stocktake STK-63?
Writes counted quantities into the ledger via stock adjustment SA-519 (next SA number, same SA- sequence as Stock adjustments), valued at each item's moving-average cost — variance −269.05 MYR at 29, Balakong Jaya. This locks the counting sheet; corrections go through a new stocktake (cf. STK-33 "Amend STK-15").
stored: stocktake_lines.system_qty — snapshot at line generation (stock not frozen)
—
Line: Counted qty
TextInput::numeric() (inline editable)
decimal, nullable
stored: stocktake_lines.counted_qty — null = Pending; captured in the item's stock UoM (base unit)
—
Line: Cost / unit
TextColumn::numeric(decimalPlaces: 5)
decimal(20,10) MYR
stored: stocktake_lines.cost_snapshot — moving-average cost at line generation
—
Line: Variance qty / value
TextColumn::color(fn) red − / green +
derived
derived: counted_qty − system_qty; × cost_snapshot — never stored
—
Engine notes
Completion auto-creates the linked Stock adjustment carrying the STK number as its Reason (matches the Stock adjustments rows: SA-519 / 'STK-63'). One SA covers all variance lines; zero-variance lines post nothing.
Status flips to In progress on the first counted line; Completed date is set on completion and can lag Created by days (STK-63: 2026-03-17 → 2026-03-25).
Stock is not frozen during the count — system_qty is a snapshot at line generation, so movements posted mid-count shift variances. Complete promptly.
Counted quantities are captured in the item's stock UoM (base unit mg / ml / pcs). The unit rides on the item from the admin-locked units list — never typed; conversion factors are hard-coded system knowledge.
Batch-tracked items generate one counting line per batch / lot (Gaia GMP superset — Katana counts at item level only); the variance adjustment posts per batch.
Variance is valued at each line's cost_snapshot (moving average at generation); completing posts a 'stocktake' type movement per line via the SA, keeping the ledger append-only and audit-safe (GMP).
Corrections after completion go through a new stocktake (cf. STK-33 'Amend STK-15') — the counting sheet locks on completion.