| Drag handle | Table::reorderable('rank') grip | icon | UI: drag-to-reorder production priority | — |
| Rank | TextColumn (sort key of reorderable()) | int 1–15 | stored: sales_orders.rank — manual priority, drives stock allocation | — |
| Checkbox | Table bulk selection (BulkAction Edit / Delete, both requiresConfirmation()) | select | UI: Edit = bulk field patch (blank = keep); Delete skips rows with linked MOs/shipments | — |
| Created date | TextColumn::date()->sortable() + Filter (date range) | date | stored: sales_orders.created_date; list sorted ascending by it | — |
| Order # | TextColumn::searchable(isIndividual)->url() | string, user-editable | stored: sales_orders.order_no — free text, prefixes NVMSB- / YGMSB-, "(2026)" disambiguator | — |
| Customer | TextColumn::searchable(isIndividual) | string | stored: sales_orders.customer_id | customers.id |
| Total amount | TextColumn::numeric()->summarize(Sum) | money MYR | derived: Σ order line totals; 0.00 MYR orders allowed | so_lines |
| Delivery deadline | TextColumn::date()->color(fn at-risk ⇒ danger) | date | stored: promised-delivery date; red when fulfillment at risk (14 of 15 rows) | — |
| Sales items | TextColumn::badge() (In stock green / Not available red) | derived status | derived: finished-goods availability of order lines vs inventory | stock_movements |
| Ingredients | TextColumn::badge() (Picked / In stock / Expected date / Not available) | derived status | derived: material availability for making the items; Expected date from linked PO arrival | po_lines / mos |
| Production | TextColumn::badge()->url() when Done; Action::button() "Make..." when no MO | derived status / action | derived from linked manufacturing orders; Done drills into the MO | mos.id |
| Invoice | SelectColumn (inline dropdown, badge-styled) | enum: Invoiced / Not invoiced | stored: invoicing status, inline-editable; likely synced with accounting integration | invoices |
| Delivery | SelectColumn (inline dropdown, badge-styled) | enum: Ready for packing / Packed / Partially delivered / Not shipped | stored: fulfillment status; "Ready for packing" auto-derived when items In stock | — |