Concept B · order-first
2 paid prescriptions cannot be ordered
Fulfillment
Set a quantity for each available preparation and the order takes shape beside you.
Order #15 draft
Not saved yet- 13 lines
- 82 paid fills
- 66 vials
- 30 covered from stock
- Created by
This panel counts the lines, paid fills, vials, and stock coverage as you type.
Available demand
| Preparation | Catalog item | Paid fills | On hand | Quantity on this order | Oldest paid |
|---|---|---|---|---|---|
| Semaglutide / B12 5 / 1 mg/mL · 3 mL | STR-SEM-3ML | 14 | 9 |
9 days | |
| Tirzepatide / B6 5 / 2 mg/mL · 2 mL | STR-TIR-2ML | 12 | 6 |
8 days | |
| BPC-157 3 mg/mL · 5 mL | STR-BPC-5ML | 11 | 1 |
7 days | |
| NAD+ 100 mg/mL · 5 mL | STR-NAD-5ML | 9 | 11 |
6 days | |
| Sermorelin Acetate 1 mg/mL · 5 mL | STR-SER-5ML | 8 | 5 days | ||
| Glutathione 200 mg/mL · 10 mL | STR-GLU-10ML | 7 | 5 days | ||
| Retatrutide 4 mg/mL · 3 mL | STR-RET-3ML | 6 | 4 days | ||
| PT-141 10 mg/mL · 5 mL | STR-PT1-5ML | 6 | 4 days | ||
| NAD+ 100 mg/mL · 10 mL | STR-NAD-10ML | 5 | 4 days | ||
| GHK-Cu 50 mg/mL · 5 mL | STR-GHK-5ML | 5 | 10 |
3 days | |
| Semaglutide 2 mg/mL · 3 mL | STR-SEM2-3ML | 4 | 3 days | ||
| Ipamorelin 2 mg/mL · 5 mL | STR-IPA-5ML | 3 | 2 days | ||
| Tesamorelin 2 mg/mL · 5 mL | STR-TES-5ML | 3 | 2 days | ||
| Methylcobalamin 5 mg/mL · 10 mL | STR-MET-10ML | 2 | 1 day | ||
| Tirzepatide 5 mg/mL · 2 mL | STR-TIR2-2ML | 1 | 1 day |
All 15 preparations are listed, and the individual fills sit on the order once it exists.
What this page assumes
- Demand is the first tab, not a step hidden behind a button. Scored as a pure order-first console, the 96 waiting fills were a banner with no row and no destination, and this screen was reachable only through "New order" — 2 clicks in scenario S1 against Concept A's zero. As the first tab it is a peer of the orders ledger, visible without a click. This is also the exact point where Concept B stops being pure order-first and becomes a hybrid; the tabbed variant buys the fix by giving up the claim that nothing exists but documents.
- The H1 stays "Fulfillment" and the tab says which surface you are on. One section, seven surfaces — To order, Drafts, Sent, Labels, To ship, Stock, All orders — and one heading. The breadcrumb this page used to carry — Orders › New order — is gone: a breadcrumb and an active tab naming the same location is duplicated chrome an operator has to reconcile before they can read anything. Breadcrumbs still earn their place one level down, on an order.
- The emerging document is visible while you build it. The left panel counts lines, fills and vials as you type, so the operator reads the thing being created rather than reconstructing it after the fact. The measured build shows nothing of the sort until after the order is committed.
- One row per preparation, and the grouping never changes. Preparation is the organising key here and on the order that results. The measured build regroups the same fills by patient in between, which is teardown finding F3.
- Quantity is an input, not a derivation. It defaults to the paid fill count and the operator can raise or lower it. No minimum quantity is imposed or displayed on this page; where RonanRx's own code holds a per-drug floor it is our constant, not a supplier fact, and it is not asserted here.
- "Not saved yet" is stated rather than implied. Sessions were observed lapsing mid-task (finding F12), and a 15-line selection is a lot of work to lose silently. The honest fix is a saved draft on first edit; this wireframe only labels the risk.
- The two catalog exceptions sit above the tabs, never inside one. They belong to no document, so in a pure ledger they had nowhere to live and got a sidebar box on this page. A tab would be worse than a box: it hides a stall behind a choice, and an operator who does not know a stall exists never picks the tab that would reveal it. Above the tab row they are unmissable on every surface without being modal. Only this concept has to admit they are outside its primary object.
- What the tabs still do not fix. Nothing on this surface says that order #14 has been an untransmitted draft for 4 days with 9 fills already on it. The Drafts tab makes it reachable and its count reads 1, but the ledger behind it sorts by recency rather than staleness, so a stale draft never announces itself the way a queue would. Creating order #15 from here is one click; noticing that #14 was never sent is still a habit rather than a prompt.
- The mobile layout keeps the work visible. At 560 px this table collapses to labelled cards, so the quantity field stays on screen instead of sitting past a horizontal scroll — the shared fix for finding F4. At 390 px the tab row wraps to two rows, and the active tab stays fully visible.
- Stock coverage needs PR #926. The "On hand" column and the panel's "covered from stock" figure both need PR #926's stock ledger. Without it, this page is buildable only without those two; PR #1059 alone does not carry a stock model.