Skip to content

CAP-ACC-TRX-019Maintain customer-specific collection choices

Markdown

CAP-ACC-TRX-019

Maintain customer-specific collection choices

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleTransactionsRevision1

Read atservices-accounting f47cb263

The Formal Contract

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

Outcomes
Finance records exceptions to default collection behavior for a CRM party.Removing the exception restores default behavior. Commerce reads these choices during checkout, while the product should provide a dedicated staff editor.
Surfaces
api
Intent sources
services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-06services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-02

Controls

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

Permissions

KeyChecked atScope
accounting.customer-terms.readapitenant
accounting.customer-terms.manageapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
A contact or organization without saved terms receives marked defaults, and each party can have at most one saved terms record.
policyservice, databasetest
services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it answers the defaults, saying so, before Acme has a record
02must prove
Confirmed
Creation omits a version and replacement requires the version read; duplicate creation and stale saves fail, while omitted settings revert to defaults.
validationservicetest
03must prove
Confirmed
Collection choices use fixed vocabularies, allow-lists permit at most fifty unique options with empty meaning unrestricted, and default payment terms must be active within the workspace.
validationapi, service, databaseobserved
04must prove
Confirmed
Removing terms restores default behavior, and a stale version prevents deletion.
lifecycleservicetest
05must prove
Confirmed
Payment terms referenced as a customer default are protected from deletion.
invariantdatabasetest
06must prove
Confirmed
Terms read and manage authorities are separate, and Commerce can retrieve terms through its billing service at checkout.
permissionapitest
services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it refuses the write and the delete without accounting.customer-terms.manage (403), the reader’s key not enough
07
Proposed
The product should provide a staff editor for customer terms; the current console only shows them alongside financial standing.
policyconsoleinferred
08must prove
Proposed
An update lock blocks replacing or deleting customer terms, while a deletion-only lock blocks removal.
validationserviceobserved

Scenarios

IdGivenWhenThenProvenance
01An employer remits for staff and uses forty-five-day terms.Save its customer terms and create an invoice without requested terms.Financial standing includes the saved choices and the invoice derives its forty-five-day due date.test
services-accounting:modules/transactions/tests/integration/services/invoices/customer-terms-precedence.integration.spec.js#it takes the bill-to’s default terms when the request names none, the due date 45 days after the invoice date
02Two editors started from the same terms version.Save the second editor’s replacement after the first succeeds.The obsolete version is rejected and the first saved state remains.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.