G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPAdminInsights
← Batches / Lot trace

Lot CK4548-2603A — Angelica Sinensis Extract / CK-4548

In stock: 4,148,000 mg Expiry 2027-09-30 CoA on file
1

Origin — supplier receipt

the po_receipt movement that created this lot
Purchase order
Supplier
Supplier lot
ASE-260218-07
Received
2026-03-06 10:05
Qty received
5,000,000 mg
Unit cost
0.000260 MYR (1,300.00 MYR)
CoA ref
Received by
Lily
Storage bin
(Level 2 Office) Raw Mat Room 2
Expiry
2027-09-30
2

Consumed by

every issue movement carrying this batch_id
Document Type Product produced Qty consumed Date FG output lot
YGMSB-260401 / 1 mo_issue [2024-04] Yes Global AlphaMax V+ / 2024-04 −828,000 mg 2026-04-06 AMX-2604-01
TRL-26-014 rnd_issue F-0007 Collagen Peach Boost v3 — R&D trial −24,000 mg 2026-04-01 — expensed to R&D, no FG lot
Received 5,000,000 − consumed 852,000 = in stock 4,148,000 mg ✓ −852,000 mg
3

Where the finished goods went

shipment movements of the FG lots produced from this material lot
FG lot Shipment Sales order Customer Qty Shipped
AMX-2604-01 SHP-26041 In delivery YGMSB-260401 Yes Global 960 pcs 2026-07-05
AMX-2604-01 RD-26-060 Van / Transit RS-26-038 retail Herbs & Health PJ 60 pcs 2026-07-04 packed — redelivery 07 Jul
AMX-2604-01 Still in FG stock 177 pcs
FG lot AMX-2604-01 output: 1,197 pcs (MO YGMSB-260401 / 1) — 960 shipped (OEM) + 60 in van custody (retail) + 177 on hand ✓ 1,197 pcs
Supplier lot → MOs → FG lots → customers: forward + backward trace in two clicks — NPRA mock-recall requirement.

Project Gaia — static mockup in Filament v3 table idiom. No backend. Sample data: Katana tenant snapshot 2026-04-12, location 11, Balakong Jaya. Lot-level detail illustrative — consistent with the stock movement ledger for this material (received 5,000,000 mg on PO-549, 4,148,000 mg remaining).

Batch trace — field manifest

FieldFilament componentTypeSourceFK target
Lot numberTextEntry (Infolist header)string, unique per variantstored: batches.lot_no
VariantTextEntry::url() (H1 suffix)FKstored: batches.variant_idvariants.id
In stock (badge)TextEntry::badge() successqty + UoMderived: Σ stock_movements.qty_delta WHERE batch_id = lotstock_movements
Expiry (badge)TextEntry::badge() gray, danger when < 6 months (FEFO)date, nullablestored: batches.expiry
CoA on file (badge)IconEntry / badge (media exists)bool derivedderived: batches has CoA attachment (Spatie MediaLibrary)media
Received viaInfolist "Origin" section (PO, supplier, date, qty, cost, by, bin)FKstored: batches.received_via → the po_receipt movement; PO/supplier joined through document morphstock_movements.id
Supplier lotTextEntrystring, nullablestored: batches.supplier_lot_no (from CoA)
Consumed by (card 2)RelationManager (ConsumedBy) — read-only tablederived rowsderived: stock_movements WHERE batch_id = lot AND type IN (mo_issue, rnd_issue); no separate consumption tablemos / rnd_trials
FG output lotTextColumn::url() (batch page)FK derivedderived: same MO's mo_receipt movement → its batch_idbatches.id
Where FG went (card 3)RelationManager (FgDistribution) — read-only tablederived rowsderived: shipment movements of the FG batch_ids, joined shipment → SO → customershipments / sos / customers
Created date— (dropped: shown as Received; identical for purchased lots)timestampstored: batches.created_at

Engine notes

  • batches = (lot_no, variant_id, expiry, received_via movement FK). Batch consumption is derived from stock_movements.batch_id — the ledger is the only quantity source, batches never store balances.
  • Trace = two queries over stock_movements joined through mo_id: backward (movements where batch_id = this lot) and forward (mo_receipt of those MOs → FG batch → its shipment movements).
  • NPRA mock-recall report = this screen printed: one supplier lot resolves to every customer shipment in two clicks, and the reverse from any FG lot.
  • Filament: Resource view page — Infolist section (Origin) + two read-only RelationManagers (ConsumedBy, FgDistribution); header actions Download CoA / Print mock-recall (browser print of this page).
  • Split issues write one movement row per batch consumed, so partial-lot picks (FEFO) trace exactly.