Skip to content

CAP-COM-ORD-003Review the price and resolve purchase blockers

Markdown

CAP-COM-ORD-003

Review the price and resolve purchase blockers

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaCommerceModuleCustomer purchases, purchased benefits and vendor stockRevision1

Read atservices-commerce c8b66a98react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
The displayed summary supplies the price reference used by placement.The product should reveal foreseeable purchase blockers during preview.
Surfaces
consoleapi
Intent sources
services-commerce:docs/milestones/plans/COMM-M2-plan.md#2. Scopeservices-commerce:docs/milestones/COMM-M2-take-a-staff-order.md#Product purchase eligibility enforced (Platform PLAT-M11 D6; Andrew approved 2026-10-21)services-commerce:docs/milestones/plans/COMM-realignment-2026-10-22.md#D-T4services-commerce:docs/milestones/COMM-M2-take-a-staff-order.md#M2-S1services-commerce:docs/milestones/plans/COMM-M2-plan.md#D9services-commerce:docs/milestones/COMM-M1-set-up-what-you-sell.md#D14

Controls

27 controls apply, from the corpus control catalogue.

TC-IAM-006 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-CRY-001 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-004 TC-LOG-005 TC-AVL-004 TC-MON-001 TC-MON-002 TC-MON-004 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002

Permissions

KeyChecked atScope
commerce.checkouts.updateapitenant

Business Rules

12 rules, 12 to be proved before approval. A rule's product intent is derived from its origin: 12 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Preview obtains advice from selling applications, calculates the cart price and saves the resulting snapshot and totals with a preview event.
no proof recorded yet
calculationservicetest
services-commerce:modules/checkout/tests/e2e/checkouts.e2e.spec.js#stores the price snapshot on the checkout, with the totals, and leaves a previewed event
02must prove
Confirmed
Application refusals, missing currency prices and prohibited price rows appear as item problems in a successful preview response and prevent placement.
no proof recorded yet
validationservicetest
services-commerce:modules/checkout/tests/e2e/checkouts.e2e.spec.js#shows a participant’s refusal inline on the item rather than refusing the preview
03must prove
Confirmed
An application that cannot answer causes a retryable unavailable response for preview or placement, leaving the cart open.
no proof recorded yet
policyservicetest
services-commerce:modules/checkout/tests/e2e/participant-unavailable.e2e.spec.js#refuses the preview 503 participant_unavailable, retryable
04must prove
Confirmed
A product purchasing rule evaluates the purchaser, organization, acting contact and recipient context; ineligible or indeterminate results identify the blocked product, while an unbound product requires no evaluation.
origin: services-commerce:docs/milestones/COMM-M2-take-a-staff-order.md#Product purchase eligibility enforced (Platform PLAT-M11 D6; Andrew approved 2026-10-21)
no proof recorded yet
policyservicetest
services-commerce:modules/checkout/tests/e2e/product-purchase-eligibility.e2e.spec.js#previews with a product_not_eligible problem on the bound line alone, naming it and the engine's sentence
05must prove
Confirmed
A line that requires tax but lacks a tax address produces a blocking preview problem and prevents an order from being placed for either staff or portal buyers.
no proof recorded yet
validationservicetest
services-commerce:modules/checkout/tests/e2e/checkout-tax.e2e.spec.js#refuses a buyer with no preferred address while a zone could tax the line: a no_tax_address problem on the preview, a 409 on the placement
06must prove
Confirmed
The interim tax provider applies the most specific matching address zone to each item and saves the result; an unmatched address yields no tax and an explanatory warning.
no proof recorded yet
calculationservicetest
services-commerce:modules/checkout/tests/e2e/checkout-tax.e2e.spec.js#taxes each line at the most specific zone: state and city on the T-shirts, state alone on the membership
07must prove
Confirmed
Selecting a ship-to contact that no longer exists blocks the order and asks staff to choose a recipient again; buyer fallback applies only without a selected ship-to.
no proof recorded yet
validationservicetest
services-commerce:modules/checkout/tests/unit/checkout/ship-to-not-found.spec.js#is a blocking problem with the code and the message Andrew decided
08must prove
Confirmed
A selected ship-to contact without an address blocks a cart containing shippable items, but does not block a cart whose items need no shipping.
no proof recorded yet
validationservicetest
services-commerce:modules/checkout/tests/unit/checkout/ship-to-no-address.spec.js#is a blocking problem with the code and the message Andrew decided
09must prove
Confirmed
An order fee uses the policy’s fee product and tax class, receives no discount, and blocks preview and placement when that product is missing.
no proof recorded yet
calculationservicetest
services-commerce:modules/orders/tests/e2e/extension-line-adjustments.e2e.spec.js#previews the fee in the totals: $3.00 fee beside the line, nothing refused
10must prove
Confirmed
Store preprocessing modifies the cart before pricing; failure or an invalid response from a required extension stops preview and placement, while an optional failure is skipped and recorded.
no proof recorded yet
policyservicetest
services-commerce:modules/checkout/tests/e2e/checkout-preprocessing.e2e.spec.js#refuses the preview and the placement with EXTENSION_UNAVAILABLE (503) when the required extension answers outside its contract, placing nothing
11must prove
Confirmed
Buying a qualifying membership in the cart provisionally enables Member pricing on other items, with an explanation that names the same-order dependency.
no proof recorded yet
calculationservicedocumented
12must prove
Confirmed
The staff composer presents the returned preview amounts, offers store products and waits for a customer selection before pricing.
origin: services-commerce:docs/milestones/COMM-M2-take-a-staff-order.md#Andrew's note of 2026-10-22 (~11:10 ET): reuse the v0 New Order screen
no proof recorded yet
policyconsoletest
react-console:components/order-composer/__tests__/live-composer.test.tsx#shows exactly the figures Commerce's preview answered

Scenarios

IdGivenWhenThenProvenance
01Jane has no membership and has a Richmond address; Style Guide costs one hundred dollars with five-percent Virginia tax.Staff add the book and request the cart summary.The documented example shows the Standard price and five dollars of tax without a blocker.documented

Edge Cases

IdGivenWhenThenProvenance
02Accounting refuses a tax quote for the cart’s supplied facts.Request a preview using the Accounting tax provider.The item reports a refused tax quote and placement creates no order.test
services-commerce:modules/checkout/tests/e2e/accounting-tax.e2e.spec.js#is a tax_quote_refused problem on the preview and refuses the placement, placing nothing

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.