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&DMakeBuyStockPlanItemsGMPOpsAdminInsights

Factories & locations

Companies / entities — set the stacks: base currency, enabled modules, numbering series & accounting (QuickBooks) mapping per legal entity
Retail runs under NVMSB only. Gaia prepares the monthly consolidated B2C total; the e-invoice itself is issued by QuickBooks (MyInvois) under NatusVincere Marketing Sdn Bhd — Gaia hands QBO the consolidated summary + entity tag and never submits e-invoices. No other entity can enable the Retail module.
The topbar shows only the current location's enabled modules. At a CTSB factory the topbar hides Retail & Sell; in the NVMSB commercial context it hides Make, Buy, Stock & GMP — so staff only see what their site does. (The real Filament build filters the nav by the tenant's enabled_modules; this mockup's own topbar is left full for demonstration.)
Legal name Code Base currency Enabled modules Factories mapped Numbering series Accounting (QuickBooks) Configure

Base currency is admin-locked per entity (CTCNGZ = CNY; the three Malaysian entities = MYR); documents snapshot their own currency + FX rate at issue. Enabled-module sets, series prefixes and QuickBooks file names shown are illustrative. E-invoicing (MyInvois / fapiao) is handled in QuickBooks — Gaia stores no TIN and only tags the entity + prepares the retail consolidation total.

4 entities as Filament tenants · physical sites, storage bins, QuickBooks file & user access (the module-enablement & accounting mapping for the same 4 is in the Companies card above)
Code Legal entity Type Compliance Locations / bins Currency QBO file Users Status
NVMSB NatusVincere Marketing Sdn Bhd (NaVi) Sales & purchasing VO5-05-08 Sunway Velocity, KL (office) — real Katana location MYR NVMSB (separate file) 4 Active
CTSB Cyto Tech Sdn Bhd (CT1) Factory ISO 22000HACCPHalal CYTO-11 — 11, Jln Perindustrian Balakong Jaya 2/3 · CYTO-29 — 29, Jln Balakong Jaya 8, Seri Kembangan · RM Rooms 1-2, Packaging, FG Store · CYTO-33 — FG Overflow Warehouse (new) MYR CTSB (separate file) 5 Active
CTWSB Cyto Tech Wellness Sdn Bhd (CTW) Factory PIC/S GMP (NPRA)Halal CYTOWELL-54 — 54, Jln Taming 8, Balakong 43300 · 6 bins MYR CTWSB (separate file) 4 Active
CTCNGZ Cyto Tech China (Guangzhou) Factory local licences CYTOCNGZ-602 — Guangzhou · 3 bins (not in Katana — new in Gaia) CNY CTCNGZ (separate file) 2 Active

Project Gaia — static mockup in Filament v3 idiom. No backend. Locations under CTSB are the real ones from the Katana snapshot; bins/user counts illustrative. Other NaVi entities (NaVi Consultancy, NaVi Tech, Pet Dayz, Skin Lovers) can be added as tenants later if they touch operations.

Factories & locations

New location

Not saved

A location always belongs to exactly one entity — the stock-ledger boundary.

House convention: SITE-streetnumber (CYTO-11, CYTO-29, CYTOWELL-54, CYTOCNGZ-602).

QUARANTINE bin auto-added — returned and on-hold stock lands there first, never sellable stock (GMP quarantine-first).

Companies / entities

— configure

Not saved

Code = Filament tenant key = stock-ledger boundary. Not editable after creation.

fixed per entity

Base currency is admin-locked per entity — documents snapshot their own currency + FX rate at issue, so it is never changed here.

topbar/nav filter

The topbar/nav at this entity's locations shows only the modules toggled on here — e.g. a manufacturing site hides Retail & Sell; the NVMSB commercial context hides Make, Buy, Stock & GMP. Retail stays locked to NVMSB.

One series per entity per document type — the full editor lives in Settings → Document numbering. Prefixes are illustrative.

QuickBooks company file —

read-only

Accounting and e-invoicing (MyInvois / fapiao) are handled in QuickBooks. Gaia tags the entity and prepares the monthly retail consolidation total — it never stores a TIN or submits e-invoices itself.

Config mockup — no backend

Companies & factories — field manifest

FieldFilament componentTypeSourceFK target
Companies / entities (config hub)
Legal name / CodeTextInput / TextColumnstringstored: entities.legal_name / .code — code is the Filament tenant key, immutable after create
Base currencyTextColumn badge · Select disabled on editISO codestored: entities.base_currency — admin-locked per entity (CTCNGZ=CNY, MY entities=MYR)
Enabled modulesToggle ×11 (Filament Toggle)set: 11 topbar modules (Retail…Insights)stored: enabled_modules json — drives the Filament topbar/nav filter (a location shows only its entity's modules); Retail is locked to NVMSB. enabled_channels (Retail/OEM/Make) is the commercial subsetentity_modules.entity_id
Factories mappedRelationManager · TextColumn::counts()relation (hasMany)stored: factories.entity_id — each entity owns its factories/sites (NVMSB has none, commercial)factories.entity_id
Numbering seriesTextInput (full editor in Settings)string(s)stored: number_series (entity_id, doc_type, format) — prefixes illustrativenumber_series.entity_id
Accounting (QuickBooks)TextEntry / Placeholder (read-only)labelstored: entities.qbo_realm; display qbo_company_file — e-invoicing (MyInvois/fapiao) lives in QuickBooks; Gaia only tags the entity + prepares the retail consolidation total. No TIN stored in Gaia
Factories / locations (physical sites)
Code / Legal entityTextColumnstringstored: factories.code / .legal_name
TypeTextColumn badgeenum factory/salesstored: factories.type
ComplianceTextColumn badges (RepeatableEntry on detail)liststored: factory_certifications (type, cert no, expiry)factories.id
Locations / binsTextColumn::counts() → relation managerrelationstored: locations (factory_id) → storage_bins (location_id)locations / storage_bins
CurrencyTextColumnISO codestored: factories.base_currency
QBO fileTextColumnstringstored: factories.qbo_realm — QuickBooks stays the ledger; Gaia is operations only
UsersTextColumn::counts(users)intderived: user_factories pivot countuser_factories

Engine notes

  • Entity (company) is the top of the tree — one row per legal Sdn Bhd / company, carrying base_currency, enabled_modules (and its commercial enabled_channels subset) and qbo_realm, and owning its factories (entities 1—▶ factories). entity = Filament tenant = stock-ledger boundary.
  • Per-entity module enablement drives the topbar. enabled_modules is the set of the 11 topbar modules a location runs; the Filament nav filters by the current tenant's set, so a CTSB factory hides Retail & Sell and the NVMSB commercial context hides Make/Buy/Stock/GMP — staff only see what their site does. Locations inherit their entity's set.
  • Retail is an NVMSB-only module. enabled_modules carries Retail for NatusVincere Marketing Sdn Bhd alone; the Configure slide-over locks the Retail toggle for every other entity. The monthly consolidated B2C total is prepared in Gaia and the e-invoice is issued by QuickBooks (MyInvois) under NVMSB — other entities run OEM Sell / Make only.
  • base_currency is admin-locked per entity (CTCNGZ = CNY; the three MY entities = MYR) and is never set from a document. Every document snapshots its own currency + FX rate at issue (Settings → Currencies), so the entity base can change defaults going forward without ever renumbering or re-rating issued documents.
  • E-invoicing is QuickBooks' job, not Gaia's: QuickBooks owns accounting and e-invoicing — MY entities' MyInvois submissions and the Guangzhou entity's China fapiao all run in QBO (or locally for CTCNGZ). Gaia stores no TIN; it only tags the entity + prepares the retail consolidation total that QBO issues under NVMSB. Series prefixes and QBO file names shown are illustrative.
  • Configure (per entity row) is a Filament EditAction slide-over on the CompanyResource; its Save is a deliberate stub in this config mockup (no backend).
  • Factory = tenant = stock ledger boundary. Moving-average cost is per factory+location, matching the Katana evidence that paired transfer adjustments don't net to zero across locations.
  • Inter-company stays manual by design (NaVi salespeople create SOs directly in factory tenants) — no automated PO→SO bridge in v1.
  • Document numbering is per entity (see Settings) — the Katana snapshot already shows per-entity SO series (NVMSB-, YGMSB-, ROYKL-, TSLSB-).
  • Zero invoices in Gaia: each entity keeps its own QuickBooks file for all accounting.
  • + Location writes locations (factory_id, code, name, address, type, is_default) → storage_bins (location_id, code). Because moving-average cost is per factory+location, a new location opens its own ledger at zero; it appears in transfer/adjustment location pickers immediately.