# ORDERS · flagship round 3 · brand-006 RJ Laravel Admin

**Sheet:** https://orders.pina-brand-006-rj-laravel-admin.pages.dev/ · **artboards:** /canvas/ · **r2:** /r2/ + /r2/canvas/ · **r1:** /r1/ + /r1/canvas/
**Why:** Frank's 18 points (2026-10-18/19). Design only; no code, no ledger, no commits.
**Source:** `r3/src/` (copy of r2 + an r3 block at the end of `o_pages.py` that overrides by name, `o_data.py` r3 additions, `orders.css` r3 block, `o_build.py` r3 board list). Outputs: `r3/shots/` (43) · `r3/canvas/` · `r3/contact-sheet.png`.
**Truth read at:** `RJmtm/3.0_Backend` origin/main `6787e7873` (`git show`), prod_dump (SELECT only). Real customer names in Frank's screenshots were not used; people stay initial + surname placeholders; ids are bare 4-digit.

## Feedback → change → source

| # | Frank said | What changed (board) | Source |
|---|---|---|---|
| 1 | Retailer chips too harsh | Light neutral tint chip `.rch` (no border, 12px), still scannable; truncates with full name on hover (O01, O09) | — |
| 2 | Column order; Factory off | Order # · Tags · Customer · Retailer · Product type · Pieces · Status · actions; Factory under Available, one tick (O01, O04) | `index.blade.php:975-992` factory + HF |
| 3 | Express column → Tags | Tags column: ⚡ `is_express` · R `is_returning_order` (+ `return_reason`) · + `plus_size_recheck_flag` (+ note); side by side; one tooltip lists all (O01, O12). Only these three are real per-order flags | `index.blade.php:906-993`; prod_dump return_reason set (skipped, fabric_change, seasonal_order, repeat_order, style_change, measurement_update, alterations, other); is_express on 213 / 4,373 |
| 4 | Keep peek, bulk, pop-outs | Kept; peek now has cloud pair + raise icon and per-group print state (O05, O06) | — |
| 5 | Overview row actions ≠ PDP | Row = fixed next-step slot (Assembly · Build · blue Resolve · Completed) + Cloud Print + Cloud Order icons + ⋯ (View · Edit · Measurement check · Quality check · Photos · Open PDF ▸ · Raise ticket · Void) (O01, O13, O14) | `index.blade.php:995-1157` |
| 6 | Cloud Print/Order most prominent | Dark cloud pair when there is no next step; tinted beside a next step (RFF, Build); legacy PDFs moved to ⋯ › Open PDF (D01, D02, D21) | `_header.blade.php` |
| 7 | Assembly = three tap buttons | Fabric Validated · Fit Validated · Designs Validated as dark buttons, each disappears when done (spec strip); DTC = Fit only. Index: "All three" checkbox group + factory per group + Update (D20, O13) | `_header.blade.php:47-60`; `popups/assembly-popup.blade.php` |
| 8 | Real Cloud Print / Cloud Order dialogs + states | Cloud Print: Order │ Shirt Code tabs with latest-job icon, All (required rows only), Garment · Combination · Fabric code · print state, "Order bill / Hang tag not required" dimmed but tickable, real footer counts; states nothing-ticked · Shirt Code · sending · dispatched (+ job ladder) · failed (stays open) · nothing required (D17, D23). Cloud Order: per-supplier rows (code count + Send) · Send all · footer; states loading · one sent · send all (+ skipped) · preview error + Retry · empty · send failed (D24, D25) | `partials/pdp/_cloud_modals.blade.php`; `OrderIndexGroupPresenter`; `CloudOrderPreviewResource` |
| 9 | Raise issue icon; blue Resolve on hold | Icon-only alert button, tooltip "Raise issue"; On Hold → standard blue Resolve in that slot, Raise issue moves to ⋯ (D01, D22, D02) | remove-hold `OrderController.php:121-170` |
| 10 | FitQ Transform on PDP | Kept in the header for Express accounts with FitQ codes only (D02 variant row) | `_header.blade.php:145-158` |
| 11 | D02/D03 are specs | Both titled "Spec ·", SPEC · NOT PRODUCT UI tag on page + card, dashed hatched card; D03 rebuilt on the r3 model (D02, D03) | — |
| 12 | Factories panel incoherent | One aligned grid row per piece: factory · piece · product · date; no "due" (tooltip); hand finishing in the same shape after a hairline with a small hand mark; date "—" until 3.5.1; r2 version shown as flagged (D01, D26) | `order_assigned_factories`, `order_assigned_hand_finish_factories` (same key + end_date, nullable since `2026_07_21_000003`); F3.5 = factories.id 14 |
| 13 | Tab order | Overview · Pricing · Garments · Designs · Measurements · Photos · Production │ Notes · Issues · Activity (last three lighter) (all detail boards) | — |
| 14 | Journey into front matter; no duplicates | Front matter = Retailer · Customer (name · city) · Created · Paid · Journey (4211 Original → 4398 → 4521, return reason). Removed: sub-line (created · customer · id), Status changed box (status pill tooltip), In production since + factory line, header Returning badge (journey says it) (D01) | `_journey.blade.php`, `GET orders/{order}/ancestry` |
| 15 | Designs stacked + bookmark nav | Products stacked full width; left floating navigator (scroll-spy) → hover/focus expands sections with Dock magnification → click jumps, row flashes, product header pinned; keyboard + reduced-motion in annotation (D05, D27, D28) | `_designs.blade.php` |
| 16 | Issues connect to orders? | Yes: `tickets.order_id` (592 of 867 prod tickets). List-by-order today only via `search=4521`, which also matches ticket #4521 and body text → `order_id` filter tagged needs backend (D11) | `Wave26/TicketController.php:93-115` |
| 17 | Taller issue editor | ~300px multi-line editor with resize grip; modal widened to 720 (D16) | `_raiseissue_modal.blade.php` |
| 18 | Keep Pricing + Settle, Activity, phone | Unchanged content; Pricing now 2nd tab; phone gets cloud pair at the thumb, Cloud Print sheet, blue Resolve (D08, D12, D18, D19, O10) | — |

**18 / 18 done.**

## What the code contradicted / corrected
- r2 journey said "return reason: reorder, same fit" — not a real value. Real `orders.return_reason` values are listed above; r3 uses `repeat_order` → "Repeat order".
- r2 status "changed 17 Oct from Build" contradicted "in production since 13 Oct"; fixed to 13 Oct. Fixture 4521 was not flagged returning on the index while the detail said Returning; fixed.
- The hand-finishing house has the same structure as a main factory row but **no date until HAND FINISHING 3.5.1** (dateless at Build) — the panel shows "—", not an invented due date.
- Cloud Print rows are **garment groups** (`4521-1-2 · JA + TR`), not pieces; "not required" rows are visible and tickable (L365), and **All ticks only required rows**.
- Cloud Order preview returns supplier + code **count only**, not the codes; the dialog shows counts (codes would need the preview to return them).
- Raise issue tickets already carry `order_id`; only the list filter is missing.

## Open questions
1. Index Resolve: blue as on the PDP (drawn) or keep it red/neutral on the row?
2. Build: should Bills Printed / Fabric Ordered stay as manual buttons once cloud covers them (drawn: real behaviour, dimmed), or hide them when a cloud job is running?
3. Tags: add the account type (Express / Express Pro) as a fourth tag? It is a retailer property, not an order flag, so it is not drawn.
4. Cloud Order: show which codes go to each supplier? Needs the preview endpoint to return `codes[]`.

## Tags alignment fix (Frank, 19 Oct)
Tags are now the kit family `tag-glyph` (F1 kit v4): fixed 20 px square (22 comfortable), 4 px gap, glyph centred (SVG icons + one optical nudge on R), one tint rule, fixed order ⚡ · R · +, left-aligned; column 88 px compact / 94 px comfortable (3 boxes + 2 gaps + 2×10 padding). Product type column 150 → 132 px to keep the retailer readable at 1280. Zoom proof: `r3/shots/tags-zoom-1440-1280.png`.
