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

Replenishment

Projection: wk 16–41 · snapshot 2026-04-12
6 items need action · 5 Buy · 1 Make · earliest stockout: now → 2 draft POs (grouped per supplier) + 1 draft MO
Item Unit Calculated stock First stockout Shortfall Suggested action Suggested qty Supplier / Recipe Lead time Needed by
6 lines need action2 draft POs (1 NaVi-CN · 1 packaging — lines merged per supplier) + 1 draft MO (Count summarizer over the needs-action set; mixed units — no qty total)
Showing of suggestions

Project Gaia — static mockup in Filament v3 table idiom. No backend. Sample data: Katana tenant snapshot 2026-04-12, location 11, Balakong Jaya. Katana's Replenishment tab was not captured — suggestions here are derived from the captured Inventory + Planning data; pack sizes and packaging lead times illustrative.

Replenishment — field manifest

No new tables. This screen is a derived query over variant_location (calculated stock), the Planning projection, and variant_supplier (MOQ / pack size / lead time). Katana's own Replenishment tab was not captured — this is Gaia's proposal on captured data.

FieldFilament componentTypeSourceFK target
ItemTextColumn::searchable(isIndividual) ->url() ->description(category)string (item / variant)derived: item.name + variant.codevariants.id
UnitTextColumn (muted)FK (mg | pcs in this dataset)stored: variants.uom_id → admin-locked units table — never typedunits.id
Calculated stockTextColumn::color(fn) red when negativeqty + UoMderived: in_stock + expected − committed − safety_stock (same engine as Inventory)stock_movements
First stockoutTextColumn::date(), "Now" red when already negativedate | "Now"derived: first week with projected stock < 0 in the Planning projection
ShortfallTextColumn::numeric() redqty + UoMderived: deepest projected deficit within selected horizon, net of scheduled inbound
Suggested actionTextColumn::badge() — Buy amber, Make blue, OK greenenumderived: variant has active recipe → Make, else Buy; no shortfall → OKrecipes.id
Suggested qtyTextInputColumn::numeric() (editable before drafting)qty + UoMderived: max(safety − calculated, shortfall to horizon), rounded up to MOQ / pack sizevariant_supplier
Supplier / RecipeSelectColumn (assign when empty) / TextColumn::url() to recipeFK, nullablestored: items.default_supplier_id (empty across snapshot → inline assign) or recipe linksuppliers.id / recipes.id
Lead timeTextColumn::suffix(' d')int days, nullablestored: variant_supplier.lead_time_days (only NaVi-CN captured, 21 d)
Needed byTextColumn::date()->icon(warning), red when needed_by < today + lead_timedate | "Now"derived: first stockout date (trough date when already negative)
Row actionAction::button() Draft PO | Draft MOactioncreates a draft purchase order / manufacturing order pre-filled from the rowpurchase_orders / mos
Supplier groupingTable::groups( Group::make('supplier.name'))displayderived: default supplier ?? "Packaging suppliers" fallback; recipe items → Make groupsuppliers.id
HorizonSelectFilter (4 / 8 / 12 weeks / full)filterderived: re-evaluates shortfall + needed-by against the Planning projection
Needs action / All itemsTabs (badge counts)filterderived: calculated < 0 now OR projected < 0 within horizon; OK rows hidden by default

Engine notes

  • No new tables — suggestion rows are derived: calculated stock + planning projection + moq / lead_time on variant / supplier.
  • Suggestion qty = max(safety − calculated, shortfall to horizon) rounded up to MOQ / pack size (Affron: shortfall 189,850 mg → 1,000,000 mg = one 1 kg pack).
  • Scheduled inbound is netted in: STC30 (New) trough −5,342.4 at wk 18 clears when ~+9,539 pcs land wk 19 (open MO/PO from the capture) — the suggestion covers the trough only, then re-checks wk 29.
  • Lead-time warning (red) when needed-by < today + lead time: Affron is needed now but has a 21 d lead → earliest arrival 3 May 2026.
  • Actions create DRAFT POs — selected Buy lines merged into one PO per supplier — and draft MOs (one per recipe). Nothing is committed until the draft is confirmed in Buy / Make.
  • Needs action = calculated < 0 now OR projected < 0 within the selected horizon; healthy rows show OK and are hidden on the default tab.
  • Units rule: Suggested qty is edited in the item's stock UoM (base unit mg / ml / pcs); pack rounding (1 kg = 1,000,000 mg pack) uses the hard-coded factors plus per-item MOQ/pack data — staff never type units or conversions.
  • Location-scoped like Planning (11, Balakong Jaya); flat weekly forecast rates come from the Planning grid (67.2/wk Gad Candy, 84/wk Gad Pouch, 460.6/wk STC30, 3.5/wk Yes Global Sunset).
  • Make actions create draft mos + mo_ingredients/mo_operations snapshots; nothing reserves stock until Commit ingredients on the MO card.
  • Buy actions raise Filament Action::requiresConfirmation modals that POST a draft purchase_orders row + po_lines; drafts surface on Buy's Draft tab.