| Rank | table()->reorderable('rank') + TextColumn (drag handle is Filament's) | integer | stored: manufacturing_orders.rank — manual scheduling priority, drag-to-reorder persists | — |
| ⓘ info icon column | — (dropped: unlabeled UI-only alert slot, empty in capture) | icon | derived: row-level alert badges | — |
| Checkbox | automatic with BulkActions (export / print / delete) | ui | UI-only bulk select | — |
| Order # | TextColumn::searchable(isIndividual: true)->url() | string | stored: MO number '<SO #> / <line>' — auto-generated per sales-order line | manufacturing_orders.id |
| Customer | TextColumn::searchable(isIndividual: true)->url() | string, nullable | derived: linked sales order → customer, rendered 'Name (SO #)' | sales_orders.id / contacts.id |
| Product | TextColumn::searchable(isIndividual: true) | string | derived: FK product variant, display 'name / variant' | variants.id |
| Category | TextColumn (badge-style) + SelectFilter | string | derived: item master category of the product | categories.id |
| Completed | TextColumn::numeric()->summarize(Sum) | qty + UoM | derived: Σ quantity actually produced on the MO so far | — |
| Quantity | TextColumn::numeric()->summarize(Sum) | qty + UoM | stored: planned MO quantity | — |
| Planned time | TextColumn::placeholder('—') | duration, nullable | derived: Σ planned routing-operation time; blank in all 4 captured rows | — |
| Prod. deadline | TextColumn::date()->color(fn red when at risk) | date | stored/derived per 'Configure deadlines' rule; red on 2026-03-26 / 04-06 / 04-08, black on 04-14 | — |
| Del. deadline | TextColumn::date()->color(fn red when unmeetable) | date | derived: linked SO delivery deadline; red exactly when Ingredients Expected date falls after it | sales_orders.id |
| Ingredients | TextColumn::badge()->color(green | amber) | status chip | derived: BOM availability rollup — 'In stock' or 'Expected <date>' from open supply | — |
| Production | SelectColumn (inline-editable badge) | enum | stored: MO status; Open tab shows 'Work in progress', Done lives under the Done tab | — |