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
← Schedule / Manufacturing order YGMSB-260401 / 1

YGMSB-260401 / 1

Work in progress Done Ingredients: Expected 2026-05-09 Overdue
Done ✓
Print job traveler
Planned qty
1,197 pcs
Completed
0 pcs
Rank
1 (scheduling priority)
Source sales order
YGMSB-260401 line 1
Customer
NatusVincere Marketing Sdn Bhd
Created
2026-04-01
Prod. deadline
2026-03-26
Delivery deadline
2026-04-30
Location
CTSB — 11, Balakong Jaya
Est. total cost
2,163.52 MYR

Ingredients

8 lines · BOM of [2024-04] Yes Global AlphaMax V+ × 1,197 pcs
# Ingredient Required Committed Actual In stock Expected Batch picks Status
1 Taurine / Nexus WiseAmino Acid 1,197,000 mg 1,197,000 mg 24,000,000 mg 202407088 · 1,197,000 mg Committed
2 AlphaMax Vit-Min Premix / VMP-2024-04Sub-assembly · made in-house (own MO)“Sieve before mixing — 40 mesh” 2,394,000 mg 2,394,000 mg 2,394,000 mg PMX-260322 · 2,394,000 mg Committed
3 Ascorbic Acid / ITS-LuweiVitamins & Minerals 2,475 mg 2,475 mg 216,961,000 mg LW2408196 · 2,475 mg Committed
4 Acesulfame Potassium (ACK) / Nexus WiseSweetener 59,850 mg 59,850 mg 12,360,360 mg 202407123 · 59,850 mg Committed
5 Apple Flavor / CK-1647Flavor“Add last — heat-sensitive” 556,200 mg 556,200 mg 28,817,999 mg APF02140925 · 556,200 mg Committed
6 Apple Juice Powder / Nexus Wise-DSB DelmarFruit Powder 3,591,000 mg 3,591,000 mg 28,920,000 mg AJP03150625 · 2,000,000 mg AJP04220525 · 1,591,000 mg Committed
7 Affron / NaVi-CN-HN-ZLKJ(China) Actives 1,197,000 mg 810,150 mg 810,150 mg AFR230511 · 810,150 mg Shortage
8 AlphaMax V+ Paper Box / 20g × 30 sachetsPackaging (Customer Paid) 1,197 pcs 0 pcs 0 pcs 2026-05-09 · PO-558 Expected 2026-05-09
Est. ingredient cost 2,163.52 MYR materials 607.42 + sub-assemblies 1,556.10 · required qty × current moving-average cost

Operations

7 steps · routing from product recipe
# Operation Type Resource Planned time Actual time Assigned to Status
1 Prepare Ingredients & Mixing Process Ribbon Blender 300L MX-01 · Mixing Room 4h 00m Unassigned Not started
2 Sachet Packing Process Sachet Filling Line 1 FL-01 · Filling Room 1 8h 00m Unassigned Not started
3 Print Expiry Date on Box/Pouch/Sachet Process 1h 30m Unassigned Not started
4 Pack into End Product Process 6h 00m Unassigned Not started
5 Shrink Wrap Process 2h 00m Unassigned Not started
6 Cartoning Process Cartoning Machine PK-01 · Packaging Room 2h 30m Unassigned Not started
7 QC Check & Batch Release Gaia Quality 1h 00m Unassigned Not started
Total planned time 25h 00m actual accrues from task tracking (Tasks view)

Cost

Component Planned (est) Actual
Materials 607.42 MYR
Sub-assemblies 1,556.10 MYR
Operations no operator rates configured in snapshot 0.00 MYR
Total 2,163.52 MYR

≈ 1.81 MYR / pcs planned. Actual cost is written at Mark done from the moving-average of each ingredient at consumption — the same 3-part roll-up (Materials + Sub-assemblies + Operations) shown on the Done tab.

Output

Finished good
[2024-04] Yes Global AlphaMax V+ / 2024-04 · 1,197 pcs

Notes

production notes — printed on the job traveler

Customer-paid paper boxes arrive with PO-558 (~2026-05-09) — start Mixing and Sachet Packing beforehand, hold at “Pack into End Product” until the boxes clear incoming QC. Affron shortage (386,850 mg) must be resolved before batch-record sign-off.

RichEditor in Filament — plain textarea in the mockup; printed on the job traveler

Project Gaia — static mockup in Filament v3 idiom. No backend. MO header data from Katana tenant snapshot 2026-04-12, location CTSB — 11, Balakong Jaya. Katana's MO card was never captured: ingredient & operation line detail is illustrative but kept consistent with the Inventory, Batches and Buy captures (real lot 202407123; 2,475 mg Ascorbic Acid and 556,200 mg Apple Flavor match the Committed quantities on the Inventory capture; PO-558 expected 2026-05-09 is a real open PO).

MO detail — field manifest

Filament: MoResource ViewRecord page — Infolist for the key-facts grid, IngredientsRelationManager and OperationsRelationManager for the two tables, header Actions with requiresConfirmation() modals (Book production / Commit ingredients / Mark done).

FieldFilament componentTypeSourceFK target
Order #Infolist TextEntry (page title)stringstored: mos.order_no — "<SO#> / <line>" for demand-chain MOs, MO-{seq} for manual
Production statusTextEntry::badge() + SelectAction inlineenumstored: mos.status (Not started / Work in progress / Blocked / Done)
Ingredients rollupTextEntry::badge() green/amber/redderived chipderived: availability across mo_ingredients — In stock / Expected <latest arrival> / Shortagemo_ingredients
Overdue flagTextEntry::badge() dangerderived boolderived: prod_deadline < today (2026-03-26 < snapshot 2026-04-12)
ProductTextEntry::url(item detail)FKstored: mos.product_variant_idvariants.id
Planned / Completed qtyTextEntry::numeric()qty + UoMstored: mos.planned_qty; derived: completed_qty from receipts
Source SO / lineTextEntry::url(so-detail)FK, nullablestored: mos.so_line_id (null for manual MOs)so_lines.id
CustomerTextEntry::url()derivedderived: so_line → sales_order → customercontacts.id
RankTextEntry (reorderable() on the Schedule list)intstored: mos.rank — manual scheduling priority
Prod. / Delivery deadlineTextEntry::date()->color(fn) red when overduedatestored: mos.prod_deadline (configurable rule); derived: delivery from SO
LocationTextEntryFKstored: mos.location_id (CTSB — 11, Balakong Jaya)locations.id
IngredientRelationManager TextColumn::url()FKstored: mo_ingredients.variant_id (copied from BOM at MO creation, editable per MO)variants.id
RequiredTextColumn::numeric()qty + UoMstored: mo_ingredients.required_qty = BOM qty/unit × planned_qty
CommittedTextColumn::numeric()qty + UoMstored: mo_ingredients.committed_qty — reserved stock, surfaces as "Committed" on Inventory
ActualTextColumn::numeric()qty + UoM, nullablestored: mo_ingredients.actual_qty — defaults to committed at Mark done, editable for consumption deviations ("—" while WIP)
Ingredient: NotesTextInput — rendered as small text / tooltip under the namestring, nullablestored: mo_ingredients.notes — per-line handling note ("Sieve before mixing"), printed on the job traveler
In stock / ExpectedTextColumn (live lookup)derivedderived: stock ledger at location; expected = earliest open PO/MO supply covering the gappo_lines / mos
Batch picksTextColumn chips (repeatable)1:n rowsstored: mo_ingredient_batches (mo_ingredient_id, batch_id, qty) — FEFO default, editablebatches.id
Line statusTextColumn::badge() + Action::button(Buy)derived enumderived: Committed / Expected <date> / Shortage; Shortage exposes a Buy action (draft PO for the gap)
Est. line cost— (dropped as column; shown only as tfoot total)money MYRderived: required_qty × current moving-average cost
Operation / TypeRelationManager TextColumn + badgestring / enumstored: mo_operations.name, .type (Process / Quality) — copied from routing; names match Tasks capture
ResourceTextColumn::url(machines) / Select on editFK, nullablestored: mo_operations.machine_id — routing resource ("—" = manual step); links the MO to the Machines / Maintenance pages, booked time writes machine_usage_logsmachines.id
Planned / Actual timeTextColumn::numeric()minutesstored: mo_operations.planned_minutes; actual_minutes accrues from task tracking (blank in snapshot — Planned Time empty on Make list)
Assigned to / Op statusSelectColumn / IconColumn + badgeFK / enumstored: mo_operations.assignee_id (Unassigned across snapshot), .status (Not started / WIP / Blocked / Done); labor costing may later need multiple operators per op (m2m mo_operation_operators)users.id
Cost roll-upInfolist section (planned vs actual)money MYRderived: Materials + Sub-assemblies + Operations = Total — the exact 3 cost columns of the Make Done capture; also surfaced as "Est. total cost" in the key-facts Infolist
NotesRichEditor (Infolist section)rich text, nullablestored: mos.notes — production notes, printed on the job traveler
FG batch / expiry / binTextInput (disabled until Mark done) / Selectstring / date / FKstored: mos.fg_batch_no + fg_expiry (assigned at Mark done), mos.receive_bin_idstorage_bins.id
Mark done: FG batch numberTextInput::required() in the Mark done modalstringstored: mos.fg_batch_no — mandatory, FG is batch/lot tracked (GMP); default matches the BMR batch (AMX-2604-01 on BMR-26-031)batches.id (created)
Mark done: ExpiryDatePicker::required()datestored: mos.fg_expiry — default = production date + 24 months (item shelf-life rule), editable
Mark done: Completed qtyTextInput::numeric()::required()qty + UoMstored: mos.completed_qty — actual yield; defaults to planned 1,197 pcs
Mark done: Receive toSelectFKstored: mos.receive_bin_id — where the FG batch is receivedstorage_bins.id
Mark done: Actual consumption (per line)Repeater of TextInput::numeric() (one row per mo_ingredient)qty + UoMstored: mo_ingredients.actual_qty — defaults to committed; deviations flagged (Affron short 386,850 mg, Paper Box awaiting PO-558) and recorded on BMR-26-031mo_ingredients
Mark done: Rolled-up cost summaryInfolist section inside the modal (read-only)money MYRderived: Materials 607.42 + Sub-assemblies 1,556.10 + Operations 0.00 = 2,163.52 MYR → 1.81 MYR / pcs unit cost of the mo_receipt

Engine notes

  • Commit = reserve: Commit ingredients writes mo_ingredients.committed_qty and allocates lots into mo_ingredient_batches. No movements are posted — the reservation surfaces as "Committed" on Inventory and reduces Calculated stock.
  • Mark done posts the ledger: one mo_issue movement per ingredient batch at the ingredient's moving-average cost at consumption, plus one mo_receipt movement for the FG at the rolled-up cost (Materials + Sub-assemblies + Operations); actual costs and completed_qty are written then, and the FG batch number + expiry are assigned.
  • MO numbering: demand-chain MOs created from an SO line are numbered <SO#> / <line> (capture: YGMSB-260401 / 1 and / 7 share the SO prefix); manual MOs use their own MO-{seq} series.
  • Ingredients rollup chip = availability across the BOM: green "In stock" when everything is committable, amber "Expected <date>" = latest arrival of missing supply (here PO-558, 2026-05-09), red when a shortage has no covering supply.
  • Sub-assembly lines (Vit-Min Premix) are produced by their own child MO; their cost rolls into the parent's "Sub-assemblies" bucket — Materials / Sub-assemblies / Operations are the same three cost columns Katana shows on the Done tab (84,766.75 MYR total in the capture, Operations always 0 because no operator rates were configured).
  • Deadline risk: prod deadline 2026-03-26 renders red / "Overdue" because it precedes the snapshot date 2026-04-12 — same red logic as the Make list capture.
  • Add ingredient (header CreateAction on the IngredientsRelationManager) inserts a new mo_ingredients row on this MO only — the product BOM/recipe is unchanged. Only batch/lot-tracked items are selectable; required qty is in the item's stock UoM (never typed) and "Pick batches now (FEFO)" reserves lots immediately, otherwise they allocate at the next Commit ingredients.
  • Batch picks default to FEFO (earliest expiry first) and split across lots when one is insufficient; every chip drills into Batch stock.
  • Add operation (header CreateAction on the OperationsRelationManager) inserts a new mo_operations row on this MO only — the product routing is unchanged. Type Process/Quality drives the badge (Quality renders blue and feeds the BMR in-process checks section); an optional machine Resource links booked time to machine_usage_logs; "Insert after" sets sequence while QC Check & Batch Release stays the final step (GMP release gate); assignee is optional (operators pick tasks from the Tasks view).
  • Buy (shortage row): the Shortage line's Buy action opens a CreateAction that drafts a purchase order for the gap — order qty rounds the 386,850 mg shortfall up to the supplier MOQ (500 g), defaults the item's default supplier and a moving-average est. cost, and creates a DRAFT purchase_orders row (demo: PO-560) linked to this mo_ingredients line. The Expected chip and the Ingredients rollup update once the PO is confirmed.
  • Re-pick batches (FEFO): re-orders mo_ingredient_batches by earliest expiry across CTSB stock without changing committed quantities or posting movements — only the weighing-sheet pre-print order. Re-pick runs automatically when a committed lot is quarantined or adjusted to zero; manual re-pick is available until Mark done.
  • Mark done modal: a single confirm posts everything — per-lot mo_issue movements at each lot's moving-average cost, one mo_receipt for the FG batch (AMX-2604-01, expiry 2028-04-12) at the rolled-up cost, writes completed_qty + actual costs, and moves the MO to the Done tab. Consumption deviations vs required are recorded as a deviation on BMR-26-031 (GMP).
  • Units rule: planned/required/actual quantities are stored in each item's base unit (ingredients mg / ml, FG pcs); display auto-scales. Units come from the admin-locked units table via the item — never typed on the MO; conversion factors are hard-coded.