Skip to content

CAP-ACC-PRD-001Understand the available product kinds

Markdown

CAP-ACC-PRD-001

Understand the available product kinds

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleProductsRevision4

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

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

Outcomes
Product kinds guide appropriate configuration.
Surfaces
consoleapi
Intent sources
services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D4services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#R8services-accounting:docs/migrations/accounting-modernization/products-shared/README.md#D-1

Controls

17 controls apply, from the corpus control catalogue.

TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 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-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001

Permissions

KeyChecked atScope
accounting.products.readapitenant

Business Rules

8 rules, 6 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
01must prove
Proposed
All workspaces share a release-managed register of product kinds that application callers cannot modify.
invariantdatabasetest
02must prove
Proposed
Accounting kinds appear first: Accounting Products use fixed prices and support bundles, Donation Products take the giver’s amount, and Legacy Products use fixed prices but are never sold.
✓ Legacy Products remain visible as a kind even though they are unsellable.✗ A workspace cannot register an additional Accounting kind for itself.
policydatabase, servicetest
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers the three Accounting types first, in display order, with their labels and legacy types
03must prove
Proposed
The register identifies Membership, Commerce and Events kinds by owner and extension record, with membership add-ons and Events kinds inactive.
policydatabasetest
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers the domains’ types after them, each with its owning service and extension table, the Events ones inactive
04
Proposed
A kind declares its pricing model and whether its products support selling, shipping, inventory, deferral, installments and bundles.
policydatabasetest
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers each type’s pricing model and capabilities
05must prove
Proposed
Registry reads return every kind in display order with a count and fail if the register exceeds two hundred entries.
policyserviceobserved
06must prove
Proposed
Access to the product-kind register requires product read permission.
permissionapitest
07must prove
Proposed
The Accounting Products page provides tabs only for Accounting Products, Donation Products and Legacy Products.
policyconsoleobserved
08
Proposed
The console creates active Accounting-owned kinds except Legacy Products, which require API creation.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01The workspace catalogue is empty.A controller visits Products.The page offers Accounting, Donation and Legacy tabs and explains that legacy items are not sold.observed
02Membership kinds are available and Events kinds remain inactive.A caller requests the kind register.Packages and chapter dues appear active, while Events entries appear inactive.test
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers the domains’ types after them, each with its owning service and extension table, the Events ones inactive

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.