Skip to content

CAP-ACC-TRX-006Record receipts collected outside Rhythm

Markdown

CAP-ACC-TRX-006

Record receipts collected outside Rhythm

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleTransactionsRevision1

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
Staff record checks, cash and transfers as identifiable customer money.Invalid account, currency, period or batch choices prevent recording. The receipt’s core financial identity remains protected afterward.
Surfaces
consoleapi
Intent sources
services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D4services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D5services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D6services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D12services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-9services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-01

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-TEN-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 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.payments.createapitenant
accounting.payments.readapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Proposed
Received money must be positive and denominated in a currency supported by its business unit.
validationapi, service, databasetest
02must prove
Confirmed
A method must exist, be active and support the selected channel; a required reference applies to direct method selection except imports, while legacy aliases retain reference-free entry.
validationserviceobserved
03
Confirmed
During compatibility support, retired method values map to configured methods, and conflicting direct and alias selections are rejected.
policyservicetest
04must prove
Proposed
Offline receipts require a bank account in the receipt’s unit and currency.
validationapi, servicetest
05must prove
Proposed
A receipt requires an eligible explicit batch or an assignment-rule selection; failure to find either records nothing.
validationservice, databasetest
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses a payment naming no batch in a unit with no batch assignment rule (batch_required), writing nothing
06must prove
Proposed
Offline receipts succeed immediately, default to today and use an accounting date covered by an open fiscal period.
validationservicetest
07must prove
Proposed
The payment sequence begins at one million and allows unused numbers.
policyservice, databasetest
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it numbers the tenant’s first payment 1,000,000, succeeded, in the bank account and the unit’s batch
08must prove
Proposed
Unallocated value remains on the receipt and reduces the customer’s net debt until someone explicitly turns it into credit.
calculationservice, databasetest
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it writes the payment item’s facts: minus the whole amount, then plus each allocation, summing to minus the unapplied money
09must prove
Proposed
An offline receipt may identify a different payer by CRM identity or name; that write-once attribution does not expand the eligible invoice population.
policyservice, databasetest
services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it writes the payer once: the write-once trigger refuses a change (RHF01)
10must prove
Proposed
Recorded method, behavior, amount, customer and cash destination cannot be changed.
invariantdatabasetest
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses any other writer a change of a payment’s method (the write-once trigger, RHF01)
11
Proposed
The payment form prevents mixed-currency invoice selection and filters bank choices to the payment currency.
validationconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01A member’s check arrives without allocation instructions.Record the entire receipt without invoice targets.The numbered successful payment belongs to the unit’s batch with its full value available.test
02An employer supplies a check for the member’s dues.Record the member as customer and the employer as payer.Payer attribution identifies the employer and financial standing separately counts the third-party money.test
services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it counts the unapplied money another party sent in Ada’s summary: Metro’s and the lockbox’s, not her own

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.