Skip to content

CAP-ACC-TRX-015Keep transaction batches and details correct

Markdown

CAP-ACC-TRX-015

Keep transaction batches and details correct

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 maintain posting placement and descriptive information without rewriting money history.Posting prevents financial placement and date changes while permitted text corrections remain available. Unsupported lifecycle or batch choices are refused.
Surfaces
consoleapi
Intent sources
services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-6services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-7services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D9services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D12

Controls

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

Permissions

KeyChecked atScope
accounting.invoices.updateapitenant
accounting.credit-memos.updateapitenant
accounting.debit-memos.updateapitenant
accounting.write-offs.updateapitenant
accounting.payments.updateapitenant
accounting.credits.updateapitenant
accounting.credit-applications.updateapitenant

Business Rules

8 rules, 8 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
A destination must be an open or in-error transaction batch in the record’s unit; closed, posted, period-close and foreign-unit destinations are refused.
validationservicetest
services-accounting:modules/transactions/tests/integration/services/batches-for-documents.integration.spec.js#it refuses a system batch, which is period close’s: a transaction batch only (batch_not_open)
02must prove
Proposed
Without explicit batch selection, the unit’s assignment rules choose an active recurring batch for the record kind, and unusable or absent assignment is refused.
policyservicetest
services-accounting:modules/transactions/tests/integration/services/batches-for-documents.integration.spec.js#it is refused batch_required once the chosen recurring batch’s active batch is closed (BA-12), naming the reason
03must prove
Proposed
Eligible records move only between unposted batches of the same unit; posting, posted and downloaded batches block movement, while selecting the current batch is a no-op.
lifecycleservicetest
04must prove
Proposed
Moving a receipt also moves allocations sharing its batch and records an audit event without changing receivable value.
policyservicetest
05must prove
Proposed
Drafts and void records cannot move, and quotes receive no batch until conversion.
validationservicetest
06must prove
Proposed
Supported reference, memo and note fields remain editable and can be cleared, but required reasons cannot become blank.
policyservicetest
07must prove
Proposed
Unposted date corrections require an open period and append opposing old-date and replacement new-date receivable entries.
lifecycleservicetest
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it negates the facts on the old accounting date and restates them on the new one, the originals untouched
08must prove
Proposed
Each record kind’s update authority governs movement and details, and payment Edit Details is connected in the console.
permissionapi, consoletest
services-accounting:modules/transactions/tests/e2e/payments.e2e.spec.js#it is refused the batch and details routes without accounting.payments.update (403)

Scenarios

IdGivenWhenThenProvenance
01A payment’s batch is closed but not posted.Select another eligible batch in the same unit.The receipt and associated applications move together with an event identifying both batches.test
02The check reference and business date were entered incorrectly.Correct both before posting.The new reference is retained and correcting entries move its receivable effect to the selected date.test
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it moves the payment date and the accounting date while the payment is unposted

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.