URS-010 · Submit different order types (Bill-Only, Trunk Stock, Direct, Drop-ship)
Title: Submit different order types (Bill-Only, Trunk Stock, Direct, Drop-ship) Date: 2026-09-29T02:31:02.000Z Duration: 112.6s Overall Status: ✅ PASS
User Requirement
Section titled “User Requirement”The system shall allow reps to submit different order types (Bill‑Only, Trunk Stock, Direct, Drop‑ship).
Source: User_Requirement_Specifications_Vantis_DeviceFlow.xlsx — the run below proves the system meets this requirement.
Environment
Section titled “Environment”- Inbox URL: http://localhost:42897
- Database: localhost:40549/cc_repinbox_dev
Status: ✅ PASS
Test Steps
Section titled “Test Steps”Each step below corresponds to one Playwright test that ran sequentially. Screenshots and video recordings provide visual evidence of the UI behaviour.
1. Step 1: Login and navigate — ✅ PASS
Section titled “1. Step 1: Login and navigate — ✅ PASS”What this step proves:
Proves that Blair Bennett (Corveta sales rep) can authenticate and reach the order creation form. Establishes the user context used for every subsequent submission.
Screenshots:


Video recording:
2. Step 2: Bill-Only order — ✅ PASS
Section titled “2. Step 2: Bill-Only order — ✅ PASS”What this step proves:
A Bill-Only order is created and submitted end-to-end via the /billing/new flow. The rep selects ROSS Surgical as the sales account, uses their own trunk (TRUNK-36) as the inventory source, and adds NovaPatch with the seeded lot. The success screen confirms the bill-only submission landed as a billing_orders row. A “New Bill-Only Order” notification email is dispatched to the rep confirming the submission.
Audit events generated by this step:
(Evidence scoped to step execution window: 2026-09-29T02:31:30.231Z → 2026-09-29T02:31:44.960Z)
| Time | Type | Action | User | Org | Performed |
|---|---|---|---|---|---|
| 2026-09-29 02:31:40Z | decision | basicErp.deriveSalesOrder | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:31:40Z | decision | bill_only_order.duplicate_submission_block | blair.bennett@corvetasurgical.com | Corveta Surgical Group | no |
| 2026-09-29 02:31:40Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | no |
| 2026-09-29 02:31:40Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:31:40Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:31:40Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | yes |
| 2026-09-29 02:31:40Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:31:40Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:31:41Z | decision | bill_only.notifications.cc_incident_recipients | — | Vantis | no |
| 2026-09-29 02:31:42Z | transactional_email | new_bill_only | — | Corveta Surgical Group | — |
Emails triggered by this step:
(Evidence matched by declared name — step timing not available or no events fell in window)
Email 1: New Bill-Only Order - 9/29/2026 - Vantis BO-1
Template: New_Bill-Only_Order_-_9_29_2026_-_Vantis_BO-1

Screenshots:





Video recording:
3. Step 3: Consignment order — ✅ PASS
Section titled “3. Step 3: Consignment order — ✅ PASS”What this step proves:
A consignment order is created and submitted end-to-end via /orders/requests/new. The rep selects ROSS Surgical as the delivery location and picks the Consignment order type. The success screen confirms the order_requests row was accepted with order type “Consignment”.
Audit events generated by this step:
(Evidence scoped to step execution window: 2026-09-29T02:31:56.427Z → 2026-09-29T02:32:02.355Z)
| Time | Type | Action | User | Org | Performed |
|---|---|---|---|---|---|
| 2026-09-29 02:32:02Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:32:02Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:32:02Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | yes |
Screenshots:




Video recording:
4. Step 4: Direct order — ✅ PASS
Section titled “4. Step 4: Direct order — ✅ PASS”What this step proves:
A direct sales order is created and submitted end-to-end via /orders/requests/new. The rep selects Cedar Crest Hospital as the delivery location and switches the order type to Direct Order. The success screen confirms the order_requests row was accepted with order type “Direct”.
Audit events generated by this step:
(Evidence scoped to step execution window: 2026-09-29T02:32:14.340Z → 2026-09-29T02:32:20.103Z)
| Time | Type | Action | User | Org | Performed |
|---|---|---|---|---|---|
| 2026-09-29 02:32:19Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:32:19Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | yes |
| 2026-09-29 02:32:19Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | no |
Screenshots:




Video recording:
5. Step 5: Drop-ship order — ✅ PASS
Section titled “5. Step 5: Drop-ship order — ✅ PASS”What this step proves:
A drop-ship order is created and submitted end-to-end via /orders/requests/new. The rep selects Lakeside Orthopaedic Surgery Center as the delivery location and switches the order type to Drop-ship, which reveals the Receiving Rep selector. The success screen confirms the order_requests row was accepted with order type “Drop-ship”.
Audit events generated by this step:
(Evidence scoped to step execution window: 2026-09-29T02:32:32.004Z → 2026-09-29T02:32:37.818Z)
| Time | Type | Action | User | Org | Performed |
|---|---|---|---|---|---|
| 2026-09-29 02:32:37Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | — |
| 2026-09-29 02:32:37Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | no |
| 2026-09-29 02:32:37Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | yes |
Screenshots:




Video recording:
6. Step 6: Orders summary — ✅ PASS
Section titled “6. Step 6: Orders summary — ✅ PASS”What this step proves:
Both the /orders/requests and /billing lists are opened after all submissions. Evidence screenshots show that the consignment, direct, drop-ship, and bill-only orders all persisted and are visible in their respective list views.
Screenshots:


Video recording:
Database Validations
Section titled “Database Validations”The following SQL queries ran against the application database after the Playwright scenarios completed. Each query asserts a specific condition that proves the feature under test persisted its data correctly.
Bill-Only order created — ✅ PASS
Section titled “Bill-Only order created — ✅ PASS”Assertion: A billing_orders row tagged URS-010 should exist for Blair
SELECT bo.id, bo.order_number, bo.status, bo.sales_account_id, bo.notes, bo.created_at FROM billing_orders bo WHERE bo.created_by_user_id = $1 AND bo.notes LIKE '%URS-010%' ORDER BY bo.created_at DESC LIMIT 5| id | order_number | status | sales_account_id | notes | created_at |
|---|---|---|---|---|---|
| 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | BO-1 | submitted | fea7b8c9-d0e1-2345-0123-456789012345 | URS-010 validation: bill-only | 2026-09-29T02:31:40.613Z |
Bill-Only item pulls from Blair’s trunk with the seeded lot — ✅ PASS
Section titled “Bill-Only item pulls from Blair’s trunk with the seeded lot — ✅ PASS”Assertion: A billing_order_items row should reference TRUNK-36 and lot URS010-SP-001
SELECT boi.id, boi.billing_order_id, boi.location_id, boi.lot_number, op.title AS product_name, rwl.name AS location_name, rwl.type AS location_type FROM billing_order_items boi JOIN billing_orders bo ON boi.billing_order_id = bo.id LEFT JOIN org_products op ON boi.product_id = op.id LEFT JOIN real_world_locations rwl ON boi.location_id = rwl.id WHERE bo.created_by_user_id = $1 AND bo.notes LIKE '%URS-010%' AND boi.lot_number = $2 ORDER BY bo.created_at DESC LIMIT 10| id | billing_order_id | location_id | lot_number | product_name | location_name | location_type |
|---|---|---|---|---|---|---|
| 01a0eb00-e99f-7ff6-b24e-a8bd98379e48 | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | a6e7f8a9-b0c1-2345-0123-456789012345 | URS010-SP-001 | NovaPatch® PET | TRUNK-36 | trunk_stock |
Consignment order submitted — ✅ PASS
Section titled “Consignment order submitted — ✅ PASS”Assertion: A consignment order_request tagged URS-010 should exist
SELECT id, request_number, order_type, status, sales_account_id, notes FROM order_requests WHERE requested_by_user_id = $1 AND order_type = 'consignment' AND notes LIKE '%URS-010%' ORDER BY created_at DESC LIMIT 1| id | request_number | order_type | status | sales_account_id | notes |
|---|---|---|---|---|---|
| 01a0eb01-3dac-778f-86c3-e32b89f7b6c0 | OR-2 | consignment | submitted | fea7b8c9-d0e1-2345-0123-456789012345 | URS-010 validation: consignment |
Direct order submitted — ✅ PASS
Section titled “Direct order submitted — ✅ PASS”Assertion: A direct order_request tagged URS-010 should exist
SELECT id, request_number, order_type, status, sales_account_id, notes FROM order_requests WHERE requested_by_user_id = $1 AND order_type = 'direct' AND notes LIKE '%URS-010%' ORDER BY created_at DESC LIMIT 1| id | request_number | order_type | status | sales_account_id | notes |
|---|---|---|---|---|---|
| 01a0eb01-8300-7186-ae36-e9979465d600 | OR-3 | direct | submitted | 1fb8c9d0-e1f2-3456-1234-567890123456 | URS-010 validation: direct |
Drop-ship order submitted — ✅ PASS
Section titled “Drop-ship order submitted — ✅ PASS”Assertion: A dropship order_request tagged URS-010 should exist
SELECT id, request_number, order_type, status, sales_account_id, notes FROM order_requests WHERE requested_by_user_id = $1 AND order_type = 'dropship' AND notes LIKE '%URS-010%' ORDER BY created_at DESC LIMIT 1| id | request_number | order_type | status | sales_account_id | notes |
|---|---|---|---|---|---|
| 01a0eb01-c824-71cb-9e1f-e6ba1b282445 | OR-4 | dropship | submitted | 2ac9d0e1-f2a3-4567-2345-678901234567 | URS-010 validation: dropship |
All four order types submitted — ✅ PASS
Section titled “All four order types submitted — ✅ PASS”Assertion: All four order types should be present: consignment, direct, dropship (order_requests) plus at least one billing_orders row (Bill-Only)
SELECT (SELECT COUNT(DISTINCT order_type)::int FROM order_requests WHERE requested_by_user_id = $1 AND notes LIKE '%URS-010%' AND order_type IN ('consignment', 'direct', 'dropship')) AS request_type_count, (SELECT COUNT(*)::int FROM billing_orders WHERE created_by_user_id = $1 AND notes LIKE '%URS-010%') AS billing_order_count| request_type_count | billing_order_count |
|---|---|
| 3 | 1 |
Audit & Email Assertion Ledger
Section titled “Audit & Email Assertion Ledger”Per-declaration outcome of every expectedAuditActions and expectedEmailTemplates entry written into the orchestrator. Missing evidence here is a real test failure, not a soft warning.
Audit Action Assertions
Section titled “Audit Action Assertions”Each row asserts that a declared expectedAuditActions entry produced a matching row in audit_events. A ❌ flips overall status to FAIL — the declaration is real proof, not just an annotation.
| Step | Expected Audit Action | Found |
|---|---|---|
| Step 2: Bill-Only order | decision:bill_only_order.inventory_items_decrement | ✅ |
| Step 2: Bill-Only order | billing_order:status_change | ✅ |
Email Template Assertions
Section titled “Email Template Assertions”Each row asserts that a declared expectedEmailTemplates entry was matched (case-insensitive substring) by a captured email subject or template. A ❌ flips overall status to FAIL.
| Step | Expected Template | Found |
|---|---|---|
| Step 2: Bill-Only order | bill-only | ✅ |
Audit Log Events
Section titled “Audit Log Events”Every row written to audit_events while this test was running (scoped to the demo organizations). Provides compliance evidence that user actions are traced end-to-end (URS-003).
Capture window start: 2026-09-29T02:31:00.186Z
SELECT ae.created_at, ae.event_type, ae.action, ae.user_id, u.email AS user_email, ae.organization_id, o.name AS organization_name, ae.object_id, ae.secondary_object_id, ae.payload, ae.route, ae.trace_id FROM audit_events ae LEFT JOIN users u ON u.id = ae.user_id LEFT JOIN organizations o ON o.id = ae.organization_id WHERE ae.created_at >= $1 AND ae.organization_id = ANY($2::uuid[]) ORDER BY ae.created_at ASC30 event(s) captured:
| Time | Type | Action | User | Org | Object ID | Performed | Reason |
|---|---|---|---|---|---|---|---|
| 2026-09-29 02:31:06Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — | |
| 2026-09-29 02:31:16Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — | |
| 2026-09-29 02:31:28Z | decision | bill_only_order.duplicate_submission_block | blair.bennett@corvetasurgical.com | Corveta Surgical Group | fea7b8c9-d0e1-2345-0123-456789012345 | no | no_same_day_candidates |
| 2026-09-29 02:31:28Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:31:40Z | decision | basicErp.deriveSalesOrder | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | no | flag_disabled |
| 2026-09-29 02:31:40Z | decision | bill_only_order.duplicate_submission_block | blair.bennett@corvetasurgical.com | Corveta Surgical Group | fea7b8c9-d0e1-2345-0123-456789012345 | no | no_same_day_candidates |
| 2026-09-29 02:31:40Z | decision | bill_only.link_purchase_order | blair.bennett@corvetasurgical.com | Corveta Surgical Group | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | no | no_purchase_order_selected |
| 2026-09-29 02:31:40Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:31:40Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:31:40Z | decision | bill_only_order.inventory_items_decrement | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | yes | inventory_items_decremented |
| 2026-09-29 02:31:40Z | decision | bill_only_order.direct_po_import_on_create | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | no | No uploaded PO documents |
| 2026-09-29 02:31:40Z | billing_order | status_change | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | — | |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-ea02-7e64-995e-2397f7648dbf | — | |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-ea0a-7214-8302-f22eb487cc91 | — | |
| 2026-09-29 02:31:40Z | scheduled_task | scheduled_task.scheduled | blair.bennett@corvetasurgical.com | Vantis | 01a0eb00-ea14-7e0d-961b-fec9ce1b5988 | — | |
| 2026-09-29 02:31:41Z | decision | bill_only.notifications.cc_incident_recipients | — | Vantis | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | no | order has no no-charge item with an incident reason |
| 2026-09-29 02:31:42Z | transactional_email | new_bill_only | — | Corveta Surgical Group | 01a0eb00-e9b6-79b6-907f-ab8dc5fa847f | — | |
| 2026-09-29 02:31:47Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — | |
| 2026-09-29 02:32:02Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-3dbd-7d7c-8f6f-e408ff276acc | — | |
| 2026-09-29 02:32:02Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:32:02Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-3dac-778f-86c3-e32b89f7b6c0 | yes | Order request OR-2 created (importSource=manual) |
| 2026-09-29 02:32:05Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — | |
| 2026-09-29 02:32:19Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-830c-7932-85f5-699b531664a6 | — | |
| 2026-09-29 02:32:19Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-8300-7186-ae36-e9979465d600 | yes | Order request OR-3 created (importSource=manual) |
| 2026-09-29 02:32:19Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:32:23Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — | |
| 2026-09-29 02:32:37Z | checklist | checklists.create | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-c830-7088-a873-65fcd7e6885c | — | |
| 2026-09-29 02:32:37Z | decision | representatives.gate_rep_action | blair.bennett@corvetasurgical.com | Vantis | a1b2c3d4-e5f6-7890-abcd-ef1234567890 | no | no_blocking_relationship |
| 2026-09-29 02:32:37Z | decision | order_request_created | blair.bennett@corvetasurgical.com | Vantis | 01a0eb01-c824-71cb-9e1f-e6ba1b282445 | yes | Order request OR-4 created (importSource=manual) |
| 2026-09-29 02:32:40Z | user_log | user:login | blair.bennett@corvetasurgical.com | Corveta Surgical Group | — | — |
Email Evidence
Section titled “Email Evidence”1 notification email(s) were captured during this test run. Each email is rendered as a screenshot for compliance review.
1. New Bill-Only Order - 9/29/2026 - Vantis BO-1
Section titled “1. New Bill-Only Order - 9/29/2026 - Vantis BO-1”Template: New_Bill-Only_Order_-_9_29_2026_-_Vantis_BO-1
