Skip to content

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

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.

Status: ✅ PASS

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:

step 01 logged in

step 01 order creation form

Video recording:


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)

TimeTypeActionUserOrgPerformed
2026-09-29 02:31:40ZdecisionbasicErp.deriveSalesOrderblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:31:40Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupno
2026-09-29 02:31:40Zdecisionbill_only.link_purchase_orderblair.bennett@corvetasurgical.comCorveta Surgical Groupno
2026-09-29 02:31:40Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:31:40Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:31:40Zdecisionbill_only_order.inventory_items_decrementblair.bennett@corvetasurgical.comVantisyes
2026-09-29 02:31:40Zdecisionbill_only_order.direct_po_import_on_createblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:31:40Zbilling_orderstatus_changeblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:31:41Zdecisionbill_only.notifications.cc_incident_recipients—Vantisno
2026-09-29 02:31:42Ztransactional_emailnew_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

New Bill-Only Order - 9/29/2026 - Vantis BO-1

Screenshots:

step 02 bill only devices

step 02 bill only product

step 02 bill only documents

step 02 bill only review

step 02 bill only submitted

Video recording:


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)

TimeTypeActionUserOrgPerformed
2026-09-29 02:32:02Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:02Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:02Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantisyes

Screenshots:

step 03 consignment step2

step 03 consignment products

step 03 consignment review

step 03 consignment submitted

Video recording:


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)

TimeTypeActionUserOrgPerformed
2026-09-29 02:32:19Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:19Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantisyes
2026-09-29 02:32:19Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno

Screenshots:

step 04 direct step2

step 04 direct products

step 04 direct review

step 04 direct submitted

Video recording:


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)

TimeTypeActionUserOrgPerformed
2026-09-29 02:32:37Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:37Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:37Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantisyes

Screenshots:

step 05 dropship step2

step 05 dropship products

step 05 dropship review

step 05 dropship submitted

Video recording:


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:

step 06 orders list

step 06 billing list

Video recording:


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.

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
idorder_numberstatussales_account_idnotescreated_at
01a0eb00-e9b6-79b6-907f-ab8dc5fa847fBO-1submittedfea7b8c9-d0e1-2345-0123-456789012345URS-010 validation: bill-only2026-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
idbilling_order_idlocation_idlot_numberproduct_namelocation_namelocation_type
01a0eb00-e99f-7ff6-b24e-a8bd98379e4801a0eb00-e9b6-79b6-907f-ab8dc5fa847fa6e7f8a9-b0c1-2345-0123-456789012345URS010-SP-001NovaPatch® PETTRUNK-36trunk_stock

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
idrequest_numberorder_typestatussales_account_idnotes
01a0eb01-3dac-778f-86c3-e32b89f7b6c0OR-2consignmentsubmittedfea7b8c9-d0e1-2345-0123-456789012345URS-010 validation: consignment

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
idrequest_numberorder_typestatussales_account_idnotes
01a0eb01-8300-7186-ae36-e9979465d600OR-3directsubmitted1fb8c9d0-e1f2-3456-1234-567890123456URS-010 validation: direct

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
idrequest_numberorder_typestatussales_account_idnotes
01a0eb01-c824-71cb-9e1f-e6ba1b282445OR-4dropshipsubmitted2ac9d0e1-f2a3-4567-2345-678901234567URS-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_countbilling_order_count
31

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.

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.

StepExpected Audit ActionFound
Step 2: Bill-Only orderdecision:bill_only_order.inventory_items_decrement✅
Step 2: Bill-Only orderbilling_order:status_change✅

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.

StepExpected TemplateFound
Step 2: Bill-Only orderbill-only✅

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 ASC

30 event(s) captured:

TimeTypeActionUserOrgObject IDPerformedReason
2026-09-29 02:31:06Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:31:16Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:31:28Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:31:28Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:31:40ZdecisionbasicErp.deriveSalesOrderblair.bennett@corvetasurgical.comVantis01a0eb00-e9b6-79b6-907f-ab8dc5fa847fnoflag_disabled
2026-09-29 02:31:40Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:31:40Zdecisionbill_only.link_purchase_orderblair.bennett@corvetasurgical.comCorveta Surgical Group01a0eb00-e9b6-79b6-907f-ab8dc5fa847fnono_purchase_order_selected
2026-09-29 02:31:40Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:31:40Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:31:40Zdecisionbill_only_order.inventory_items_decrementblair.bennett@corvetasurgical.comVantis01a0eb00-e9b6-79b6-907f-ab8dc5fa847fyesinventory_items_decremented
2026-09-29 02:31:40Zdecisionbill_only_order.direct_po_import_on_createblair.bennett@corvetasurgical.comVantis01a0eb00-e9b6-79b6-907f-ab8dc5fa847fnoNo uploaded PO documents
2026-09-29 02:31:40Zbilling_orderstatus_changeblair.bennett@corvetasurgical.comVantis01a0eb00-e9b6-79b6-907f-ab8dc5fa847f—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb00-ea02-7e64-995e-2397f7648dbf—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb00-ea0a-7214-8302-f22eb487cc91—
2026-09-29 02:31:40Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb00-ea14-7e0d-961b-fec9ce1b5988—
2026-09-29 02:31:41Zdecisionbill_only.notifications.cc_incident_recipients—Vantis01a0eb00-e9b6-79b6-907f-ab8dc5fa847fnoorder has no no-charge item with an incident reason
2026-09-29 02:31:42Ztransactional_emailnew_bill_only—Corveta Surgical Group01a0eb00-e9b6-79b6-907f-ab8dc5fa847f—
2026-09-29 02:31:47Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:32:02Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis01a0eb01-3dbd-7d7c-8f6f-e408ff276acc—
2026-09-29 02:32:02Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:32:02Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantis01a0eb01-3dac-778f-86c3-e32b89f7b6c0yesOrder request OR-2 created (importSource=manual)
2026-09-29 02:32:05Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:32:19Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis01a0eb01-830c-7932-85f5-699b531664a6—
2026-09-29 02:32:19Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantis01a0eb01-8300-7186-ae36-e9979465d600yesOrder request OR-3 created (importSource=manual)
2026-09-29 02:32:19Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:32:23Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:32:37Zchecklistchecklists.createblair.bennett@corvetasurgical.comVantis01a0eb01-c830-7088-a873-65fcd7e6885c—
2026-09-29 02:32:37Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:32:37Zdecisionorder_request_createdblair.bennett@corvetasurgical.comVantis01a0eb01-c824-71cb-9e1f-e6ba1b282445yesOrder request OR-4 created (importSource=manual)
2026-09-29 02:32:40Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——

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

New Bill-Only Order - 9/29/2026 - Vantis BO-1