Skip to content

URS-075 · Per-account product availability via enablement flag

Title: Per-account product availability via enablement flag Date: 2026-09-29T02:30:58.711Z Duration: 168.3s Overall Status: ✅ PASS

The system shall control per-account product availability via an enablement flag: products whose catalog entry requires per-account enablement default to disabled on new accounts, must be explicitly enabled before they appear in billing workflows, and can be disabled at any time to remove them from billing without deleting the pricing record.

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: Disabled by default — ✅ PASS

Section titled “1. Step 1: Disabled by default — ✅ PASS”

What this step proves:

Documents that LL516RE (LiraLock® RE Series) is configured with requires_account_enablement=true on its catalog entry, and that its pricing row on the ROSS account starts with enabled=false. The product is absent from the bill-only product picker while disabled, proving that the enablement gate is active.

Audit events generated by this step:

(Evidence scoped to step execution window: 2026-09-29T02:31:08.434Z → 2026-09-29T02:31:30.394Z)

TimeTypeActionUserOrgPerformed
2026-09-29 02:31:15Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group—
2026-09-29 02:31:27Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupno

Screenshots:

step 01 product settings

step 01 disabled on account

step 01 product absent from picker

Video recording:


2. Step 2: Standard product baseline — ✅ PASS

Section titled “2. Step 2: Standard product baseline — ✅ PASS”

What this step proves:

Shows that standard products (requires_account_enablement=false, e.g. IK2025LL) appear in the bill-only product picker without any explicit enable action. This proves that the enabled=true default is intact for products that do not require per-account enablement.

Screenshots:

step 02 standard products in picker

Video recording:


What this step proves:

An administrator enables LL516RE on the ROSS account using the pricing page toggle. The pricing row flips to enabled=true immediately. The database check in Phase 3 confirms the toggle persisted correctly.

Screenshots:

step 03 before enable

step 03 after enable

Video recording:


4. Step 4: Bill enabled product — ✅ PASS

Section titled “4. Step 4: Bill enabled product — ✅ PASS”

What this step proves:

After being enabled, LL516RE appears in the bill-only product picker and a bill-only order is submitted successfully. The billing order item records the stored approved price, proving that the product is fully billable once enabled.

Audit events generated by this step:

(Evidence scoped to step execution window: 2026-09-29T02:32:44.219Z → 2026-09-29T02:32:50.304Z)

TimeTypeActionUserOrgPerformed
2026-09-29 02:32:47Zdecisionbill_only_order.direct_po_import_on_createblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:47Zbilling_orderstatus_changeblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:47ZdecisionbasicErp.deriveSalesOrderblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:47Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupno
2026-09-29 02:32:47Zdecisionbill_only.link_purchase_orderblair.bennett@corvetasurgical.comCorveta Surgical Groupno
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis—
2026-09-29 02:32:47Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:47Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisno
2026-09-29 02:32:47Zdecisionbill_only_order.inventory_items_decrementblair.bennett@corvetasurgical.comVantisyes
2026-09-29 02:32:49Zdecisionbill_only.notifications.cc_incident_recipients—Vantisno
2026-09-29 02:32:49Ztransactional_emailnew_bill_only—Corveta Surgical Group—

Screenshots:

step 04 product in picker

step 04 product selected

step 04 review

step 04 submitted

Video recording:


What this step proves:

An administrator disables LL516RE on the ROSS account using the same toggle. The pricing row flips to enabled=false immediately. LL516RE disappears from the bill-only product picker, proving that the gate can be re-activated after enablement.

Audit events generated by this step:

(Evidence scoped to step execution window: 2026-09-29T02:32:55.922Z → 2026-09-29T02:33:45.498Z)

TimeTypeActionUserOrgPerformed
2026-09-29 02:33:32Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group—
2026-09-29 02:33:42Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupno

Screenshots:

step 05 before disable

step 05 after disable

step 05 product absent after disable

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.

LL516RE catalog entry has requires_account_enablement=true — ✅ PASS

Section titled “LL516RE catalog entry has requires_account_enablement=true — ✅ PASS”

Assertion: LL516RE has requires_account_enablement=true and allow_billing=true

SELECT p.sku, p.active AS product_active,
pci.requires_account_enablement, pci.allow_billing, pci.active AS catalog_active
FROM org_products p
JOIN product_catalog_items pci ON pci.product_id = p.id AND pci.active = true
WHERE p.id = $1 AND p.active = true
skuproduct_activerequires_account_enablementallow_billingcatalog_active
LL516REtruetruetruetrue

LL516RE has an active pricing row on ROSS — ✅ PASS

Section titled “LL516RE has an active pricing row on ROSS — ✅ PASS”

Assertion: LL516RE pricing row exists on ROSS with status=effective

SELECT id, price, status, active, enabled
FROM sales_account_approved_pricing
WHERE org_product_id = $1 AND sales_account_id = $2 AND active = true
idpricestatusactiveenabled
01a0eb02-11b4-719e-8aa6-86660516c50d750.00effectivetruefalse

Bill-only order was created for LL516RE while it was enabled — ✅ PASS

Section titled “Bill-only order was created for LL516RE while it was enabled — ✅ PASS”

Assertion: At least one billing order item for LL516RE exists with a positive unit_price

SELECT bo.id, boi.unit_price, bo.status
FROM billing_orders bo
JOIN billing_order_items boi ON boi.billing_order_id = bo.id
WHERE boi.product_id = $1 AND bo.notes LIKE $2
idunit_pricestatus
01a0eb01-f02c-7a7d-bda2-c9fd10bef842750.00submitted

LL516RE active pricing row on ROSS is enabled=false after re-disabling via the UI — ✅ PASS

Section titled “LL516RE active pricing row on ROSS is enabled=false after re-disabling via the UI — ✅ PASS”

Assertion: enabled=false (the UI disable toggle set it; billing is now blocked)

SELECT enabled FROM sales_account_approved_pricing
WHERE org_product_id = $1 AND sales_account_id = $2 AND active = true
enabled
false

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:30:56.758Z

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

24 event(s) captured:

TimeTypeActionUserOrgObject IDPerformedReason
2026-09-29 02:31:04Zuser_loguser:loginalex.admin@vantismedical.comVantis——
2026-09-29 02:31:15Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:31:27Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:31:34Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:31:45Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:32:22Zuser_loguser:loginalex.admin@vantismedical.comVantis——
2026-09-29 02:32:31Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:32:41Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:32:47Zdecisionbill_only_order.direct_po_import_on_createblair.bennett@corvetasurgical.comVantis01a0eb01-f02c-7a7d-bda2-c9fd10bef842noNo uploaded PO documents
2026-09-29 02:32:47Zbilling_orderstatus_changeblair.bennett@corvetasurgical.comVantis01a0eb01-f02c-7a7d-bda2-c9fd10bef842—
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb01-f052-7a68-bb9d-d6ec3d9c245b—
2026-09-29 02:32:47ZdecisionbasicErp.deriveSalesOrderblair.bennett@corvetasurgical.comVantis01a0eb01-f02c-7a7d-bda2-c9fd10bef842noflag_disabled
2026-09-29 02:32:47Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345nono_same_day_candidates
2026-09-29 02:32:47Zdecisionbill_only.link_purchase_orderblair.bennett@corvetasurgical.comCorveta Surgical Group01a0eb01-f02c-7a7d-bda2-c9fd10bef842nono_purchase_order_selected
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb01-f059-7729-a7b1-9025942f27ef—
2026-09-29 02:32:47Zscheduled_taskscheduled_task.scheduledblair.bennett@corvetasurgical.comVantis01a0eb01-f056-726e-9f27-a724798b053d—
2026-09-29 02:32:47Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:32:47Zdecisionrepresentatives.gate_rep_actionblair.bennett@corvetasurgical.comVantisa1b2c3d4-e5f6-7890-abcd-ef1234567890nono_blocking_relationship
2026-09-29 02:32:47Zdecisionbill_only_order.inventory_items_decrementblair.bennett@corvetasurgical.comVantis01a0eb01-f02c-7a7d-bda2-c9fd10bef842yesinventory_items_decremented
2026-09-29 02:32:49Zdecisionbill_only.notifications.cc_incident_recipients—Vantis01a0eb01-f02c-7a7d-bda2-c9fd10bef842noorder has no no-charge item with an incident reason
2026-09-29 02:32:49Ztransactional_emailnew_bill_only—Corveta Surgical Group01a0eb01-f02c-7a7d-bda2-c9fd10bef842—
2026-09-29 02:32:53Zuser_loguser:loginalex.admin@vantismedical.comVantis——
2026-09-29 02:33:32Zuser_loguser:loginblair.bennett@corvetasurgical.comCorveta Surgical Group——
2026-09-29 02:33:42Zdecisionbill_only_order.duplicate_submission_blockblair.bennett@corvetasurgical.comCorveta Surgical Groupfea7b8c9-d0e1-2345-0123-456789012345noall_candidates_vetoed

The following screencast recordings were captured but could not be matched to a specific test step. Step-matched recordings appear inline in their respective step sections above.