Skip to content

CAP-COM-CAT-012Configure product purchasing and price adjustments

Markdown

CAP-COM-CAT-012

Configure product purchasing and price adjustments

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaCommerceModuleCatalog and Selling ConfigurationRevision1

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
Staff can select rank-based pricing when imported configuration requires it.Activating or deactivating the registered product function controls adjustment use through configuration.
Surfaces
consoleapi
Intent sources
services-commerce:docs/milestones/COMM-M1-set-up-what-you-sell.md#D4services-commerce:docs/milestones/COMM-M1-set-up-what-you-sell.md#D14services-commerce:docs/milestones/COMM-M1-set-up-what-you-sell.md#D-REC-9 (to confirm)services-commerce:docs/milestones/plans/COMM-M1-plan.md#2. Scope (item 5)

Controls

28 controls apply, from the corpus control catalogue.

TC-IAM-006 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-005 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.product-purchasing-settings.readapitenant
commerce.product-purchasing-settings.updateapitenant
commerce.product-purchasing-settings.createapitenant
commerce.product-purchasing-settings.deleteapitenant
commerce.product-purchasing-settings.bulkapitenant
commerce.product-extensions.readapitenant
commerce.product-extensions.updateapitenant
commerce.product-extensions.deleteapitenant
commerce.product-extensions.createapitenant
commerce.product-extensions.bulkapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01
Proposed
Purchasing settings select the schedule, audience-price selection method, promotion exclusion, priced buyer or recipient, purchase or service qualification date, and allowed organization purchasing roles.
origin: COMM-M1 D4 (docs/milestones/COMM-M1-set-up-what-you-sell.md)
policyapi, servicedocumented
services-commerce:docs/milestones/plans/COMM-M1-plan.md#D4. Let staff see and set a product's purchasing settings
02must prove
Proposed
Absent settings use buyer pricing, lowest-price selection, promotion inclusion, purchase-date qualification, no roles and no schedule; replacement resets omitted settings to those defaults.
origin: COMM-M1 D4 (docs/milestones/COMM-M1-set-up-what-you-sell.md)
no proof recorded yet
policyservice, databasetest
services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#gives a setting the PUT leaves out its default, the whole record being stated
03must prove
Proposed
Lowest-price selection chooses the cheapest qualifying audience with lower rank breaking ties, while rank selection takes the first qualifying audience in rank order.
origin: COMM-M1 plan A4 (member pricing Q-09) (docs/milestones/plans/COMM-M1-plan.md)
no proof recorded yet
calculationservicetest
services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#prices the same buyer at the member price under rank, Member coming before Student members
04must prove
Proposed
Unknown schedules or organization roles and unsupported setting values produce a refusal without changing purchasing settings.
no proof recorded yet
validationapi, servicetest
services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#refuses an unknown organization role id with 400 naming it, and stores nothing (COM-ACC-0799)
05
Proposed
The product Pricing panel exposes its schedule read-only and edits audience selection, promotion exclusion and organization roles; other purchasing settings remain API-managed.
origin: COMM-M1 walkthrough ruling R5 (docs/debt/pricing-schedules-owned-by-event.md)
policyconsoletest
06must prove
Proposed
Each product may reference one registered pricing handler rather than a web address, active by default and ignored when inactive.
no proof recorded yet
policyapi, servicetest
services-commerce:modules/pricing/tests/e2e/product-extensions.e2e.spec.js#keeps the row and ignores it when it is put inactive: back to $20.00
07must prove
Proposed
Pricing-function requests reject mismatched products, workspaces or extension points, missing handler references and handler-owned properties without writing a record.
no proof recorded yet
validationapitest
services-commerce:modules/pricing/tests/e2e/product-extensions.e2e.spec.js#refuses an unknown property such as a timeout, which belongs to the handler
08must prove
Proposed
Any period-and-currency price grid containing prices requires Standard coverage, supplied directly, inherited from Always or explicitly prohibited.
origin: COMM-M1 D6 (docs/milestones/COMM-M1-set-up-what-you-sell.md)
no proof recorded yet
validationconsole, servicetest
react-console:lib/commerce/pricing/__tests__/rules.test.ts#refuses a period with a Member price and no Standard price, naming the cell
09
Proposed
Grid warnings flag missing Member coverage, prices above Standard, prohibited Standard cells and entirely computed foreign-currency tabs without blocking a save.
policyconsoletest
react-console:lib/commerce/pricing/__tests__/rules.test.ts#warns when a cell is dearer than Standard
10must prove
Proposed
Reading purchasing settings and pricing functions requires their read permissions, while changes require their administrator permissions.
origin: COMM-M1 D4 (docs/milestones/COMM-M1-set-up-what-you-sell.md)
no proof recorded yet
permissionapi, consoletest
services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#lets a read-only principal read, and refuses it the PUT, 403 permission_missing, the settings as they were

Scenarios

IdGivenWhenThenProvenance
01The buyer qualifies for lower-ranked Member and cheaper Student pricingCompare lowest-price and rank selectionLowest uses Student and rank uses Membertest
services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#prices the same buyer at the member price under rank, Member coming before Student members
02The t-shirt’s price row is twenty dollarsRegister an active 2.50-dollar product adjustmentThe following quote returns 22.50 dollarstest
services-commerce:modules/pricing/tests/e2e/product-extensions.e2e.spec.js#adds the function’s $2.50 to the next quote: $20.00 price row and $2.50 extension, $22.50

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.