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

Stock transfers

ST # Created date Origin Destination Value Expected arrival Status
5.92 MYR Total value (Sum summarizer, filtered set)
Showing 1–1 of 1 (full Open set from Katana snapshot) Showing 0 of 0

Project Gaia — static mockup in Filament v3 table idiom. No backend. Sample data: Katana tenant snapshot 2026-04-12; transfer-card capture 2026-07-07.

Stock transfers — field manifest

FieldFilament componentTypeSourceFK target
(row selector)Checkbox column (BulkAction plumbing)uiUI-only; no bulk-action bar visible in capture
ST #TextColumn::searchable(isIndividual)->url()string doc numberstored: auto-numbered 'ST-' prefixstock_transfers.id
Created dateTextColumn::date()->sortable() (default DESC)datestored: document creation date
OriginTextColumn::searchable(isIndividual)string via FKstored: source location, rendered as address stringlocations.id
DestinationTextColumn::searchable(isIndividual)string via FKstored: target location, rendered as address stringlocations.id
ValueTextColumn::numeric()->summarize(Sum)money MYRderived: Σ line qty × moving-average cost at origin (not user-entered)
Expected arrivalTextColumn::date()->color(fn: red when past due)datestored: user-entered planned arrival
Expected dispatchDatePicker on the card; TextColumn::date()->toggleable(isToggledHiddenByDefault) as an optional list columndatestored: user-entered planned dispatch (defaults to today on the card). NEW: exists nowhere in Gaia today — only on the transfer card in Katana
StatusTextColumn::badge() (inline dropdown chip in Katana → SelectColumn candidate)enum workflow statestored: only 'Created' observed on Open tab
Tabs Open / DoneTabs (lifecycle partition, same resource)enum filterderived: Done set empty in snapshot — rendered as in-page tab with empty state

Transfer card fields (capture: [ST-31], 2026-07-07)

FieldFilament componentTypeSourceFK target
Stock transfer #TextInput::disabled()string doc numberread-only — auto-numbered 'ST-' sequence assigned at creation (capture: ST-31)stock_transfers
Origin / DestinationSelect::relationship() ×2, both requiredFK"Choose location" placeholders, red until picked; origin ≠ destination validationlocations.id
Created dateDatePickerdatestored: document creation date, defaults to today
Item (line)Select::relationship()->searchable(), Repeater rowFKtransfer line item, variant-level ("Search item")item_variants.id
Quantity (line)TextInput::numeric()decimalqty to move in the item's stock UoM ("Type quantity")
Current in stock at destination (line)Placeholder (read-only)derivedlookup: item's current stock at the destination location, refreshed on item/destination changestock_movements
Cost per unit (line)Placeholder (read-only)money MYR, derivedderived: item's moving-average cost at the ORIGIN location — not user-editable (unlike adjustment lines)
Transfer value (line)Placeholder (derived)money MYRderived: qty × cost per unit; card "Total" = Σ lines = the list's Value column / Sum summarizer
Availability (line)TextColumn::badge()-style checkderived enumderived: does the origin hold enough stock to dispatch the line ("In stock" / "Not enough stock")
Batch (line)Select::relationship() — Gaia additionFK, required when batch-trackedper-line batch picker — deliberate batch-first Gaia deviation from Katana's batchless transfer linesbatches.id
Total units / TotalPlaceholder footer ×2derivedΣ line quantities (in pcs) and Σ transfer values (MYR) — the MYR total is what the list sums
Additional infoRichEditor (choice: capture shows a B/I/U/link/lists toolbar, so Gaia keeps RichEditor here — contrast the plain Textarea on stock adjustments)text/HTML, nullablestored: stock_transfers.additional_info

Engine notes

  • Record-count label above the table: "1 order" — stock transfers are counted as orders.
  • Katana pins a "Total:" row at the top of the table summing only the Value column (5.92 MYR, sum over the filtered rowset) — rendered here as a Filament tfoot Sum summarizer.
  • Value is a derived document total — sum of line quantities × item cost (moving average at the origin location), not user-entered.
  • Expected arrival 2026-04-09 renders red — overdue expected-arrival highlighting on open transfers.
  • Open vs Done tabs partition transfers by lifecycle: only status "Created" appears under Open; completing a transfer (which moves stock out of Origin into Destination) lands it in Done.
  • Default sort: Created date descending.
  • Origin/Destination are location references displayed as full address strings, implying a locations table with address fields.
  • Transfer card captured 2026-07-07 as [ST-31] (new, unsaved) — the sequence advanced past the April list snapshot's ST-15; the "+ Stock transfer" button opens that ST-31 state, the ST-15 row opens the filled card.
  • Gaia adds a per-line Batch column on transfer lines — a deliberate batch-first deviation from Katana's batchless lines (a transfer moves specific lots, keeping the batch ledger location-accurate).
  • Units rule: line qty is entered in the item's stock UoM and stored in the base unit (mg / ml / pcs) — the unit rides on the item (admin-locked units table, never typed); conversion factors are hard-coded, display auto-scales.

Stock transfer

Not saved Created

Read-only — auto-numbered at creation.

Planned dispatch — NEW field, exists nowhere in Gaia today.

# Item Quantity stock UoM Current in stock at destination Cost per unit Transfer value Availability Batch Gaia

Total units: pcs

Total: MYR

RichEditor — the capture shows a B/I/U/link/lists toolbar (stored as HTML in stock_transfers.additional_info).