Things you charge for that aren't physical stock — no inventory, no recipe.
services · sold as lines on OEM quotes & SOs
Service
Code
Type
Default price (MYR)
Tax scope
Used on
Service
Showing of services — the full list filtered to items.type = service.
Project Gaia — static mockup in Filament v3 table idiom. No backend. Services are sell-only items: a price with no stock, no BOM and no FEFO — every service line books revenue at zero COGS.
Services — field manifest
Field
Filament component
Type
Source
FK target
Service
TextColumn::searchable()->url()->sortable()
string (item)
stored: items.name — one row per service item; no variant fan-out (a service carries a single thin variant)
variants.id
Code
TextColumn::searchable()
string
stored: variants.sku (SVC-TOLL, SVC-RND) — house prefix SVC- for service items
stored: items.type = service (vs product | material) — this list is the master filtered to type = service
—
Default price
TextColumn::money('MYR')->placeholder('quoted')
money MYR, nullable
stored per variant list price; left unset ("quoted per job / project") for these two — priced live on the quote line
—
Default cost
— (not a column here)
money MYR, nullable
stored: variants.default_cost — services never touch the stock ledger, so there is no moving-average to derive; default_cost stands in (usually 0 → revenue at zero COGS)
—
Tax scope
TextColumn::badge()
enum / FK
stored: items.tax_code — services fall under SST (services), separate from goods SST
tax_codes.id
Used on
TextColumn (informational)
derived
derived: where the service is referenced — service lines on OEM quotes & sales orders
quote_lines / so_lines
Engine notes
A service is items.type = service — the same items/variants tables as products and materials, this screen just filters to type = service.
No stock, no BOM, no FEFO. Service items never create stock_movements, never carry a recipe, and never expire — nothing to net, batch or count.
With no movements there is no moving-average cost to roll up, so variants.default_cost stands in for the missing derived cost (typically 0).
On the item detail the card collapses to a thin variant — name, code, price / default cost, notes — with no Recipe / Operations / Variants / Stock tabs (see the item-detail engine note).
Service lines on quotes / SOs book revenue with zero COGS — price flows to the top line, cost is default_cost (0), so the whole line is margin.
Two seeded services (founder-confirmed): Manufacturing / tolling fee (SVC-TOLL) and R&D / formulation development (SVC-RND) — both priced live on the quote, not from a fixed list price.
Tax: services sit under SST (services) — a distinct tax scope from the goods SST applied to product lines.