Skip to content

CAP-BIL-BIL-002Configure a notice and its recipients

Markdown

CAP-BIL-BIL-002

Configure a notice and its recipients

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationPartially observed

KindCapabilityProduct areaBillingModuleBillingRevision1

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
Recipient settings support resolving people for each target record.A notice selects a published message template rather than storing its own content.Send-notice references protect notices from deletion; installment-action references have a recorded gap.
Surfaces
consoleapi
Intent sources
services-accounting:docs/milestones/plans/ACCT-M4-plan.md#D10services-accounting:docs/milestones/ACCT-M4-contracts-and-events-for-commerce.md#M4-D13 (to be confirmed by Andrew)

Controls

22 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
accounting.billing-notices.readapitenant
accounting.billing-notices.createapitenant
accounting.billing-notices.updateapitenant
accounting.billing-notices.deleteapitenant

Business Rules

10 rules, 9 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
Direct-recipient notices require an empty role list, while role-recipient notices require one to fifty distinct roles and reject invalid combinations with a field explanation.
validationapi, service, databasetest
services-accounting:modules/billing/tests/unit/rules/billing-rules.spec.js#refuses a notice to roles naming fifty-one contact roles
02must prove
Proposed
Notices default to the billing-notice purpose and reject any purpose outside that sole supported choice, listing the available purpose.
validationapi, servicetest
services-accounting:modules/billing/tests/e2e/billing-notices.e2e.spec.js#answers 400 purpose_unknown to a purpose that is not on the pick-list
03must prove
Proposed
A notice selects the communications template it sends, cannot send without that selection, and loses the selection when a replacement omits it.
policyservicetest
04
Proposed
Message content belongs to the communications template rather than the billing notice.
origin: services-accounting:docs/milestones/plans/ACCT-M4-plan.md#4a (rule 47, D-2 Platform communications)
invariantservice, databasedocumented
05must prove
Proposed
A send-notice reference from any template prevents notice deletion, including references from inactive templates, with up to twenty dependent templates named.
lifecycleservicetest
06must prove
Proposed
An installment-only notice reference does not prevent deletion, leaving subsequent work blocked by the missing notice.
lifecycleservicetest
07must prove
Proposed
Notice names remain unique within the workspace, and whole-record replacement refuses a version older than the current notice.
no proof recorded yet
validationapi, service, databasetest
services-accounting:modules/billing/tests/e2e/billing-notices.e2e.spec.js#answers 409 StaleObject to a replacement at the version before the last
08must prove
Proposed
Notice readers may inspect configuration, while creation, replacement and deletion require administrator permissions.
permissionapitest
services-accounting:modules/billing/tests/e2e/billing-security.e2e.spec.js#is refused the billing notice create 403 permission_missing
09must prove
Proposed
The console has no communications-template selector and disables the message designer, so notices created there require template selection elsewhere before sending.
policyconsoleobserved
10must prove
Proposed
A full configuration lock refuses updates, and either lock refuses deletion.
no proof recorded yet
policyserviceobserved

Scenarios

IdGivenWhenThenProvenance
01The administrator supplies a notice name without optional settings.The notice is created.It defaults to active direct recipients, no roles and the billing-notice purpose.test
services-accounting:modules/billing/tests/e2e/billing-notices.e2e.spec.js#defaults the purpose to accounting.billing.notice, the contact roles to none and the notice to active
02A template uses a notice for direct sending.The administrator tries deletion, changes the template reference, then tries deletion again.The first attempt names the dependent template and refuses; the second removes the unreferenced notice.test

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.