Skip to content

CAP-ACC-TRX-002Correct issued bills before posting

Markdown

CAP-ACC-TRX-002

Correct issued bills before posting

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 correct billing mistakes while preserving the customer’s document and financial trail.Voiding removes an eligible bill’s debt while retaining the document and explanation. Posting closes the amendment path and directs staff toward correcting documents.
Surfaces
consoleapi
Intent sources
services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-4services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-7services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-14services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D9services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D3

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-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-004 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.adjustapitenant
accounting.invoices.updateapitenant
accounting.invoices.voidapitenant

Business Rules

11 rules, 11 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
Staff can amend a live issued invoice before posting by adding lines, changing unapplied lines and correcting its commercial details.
lifecycleservice, databasetest
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it answers the invoice at revision 2 with the line added after the last, the line repriced and the totals re-derived
02must prove
Proposed
A line carrying a payment, credit, memo or write-off cannot be removed or repriced through an amendment.
validationservicetest
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it removes a line with nothing applied at the next revision, and refuses removing or repricing the paid line
03must prove
Proposed
Amendment advances the revision, records the receivable difference and change event, and recalculates tax only on added or repriced lines; rendered revisions appear from the second onward.
calculationservice, databasetest
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it writes the amended facts for the delta, the originals untouched, and the amend event with the delta
04must prove
Proposed
A posting, posted or downloaded batch prevents invoice amendment, date changes and voiding, leaving a correcting memo as the remedy.
lifecycleservicetest
05must prove
Proposed
Changing terms derives a due date from the invoice date unless the request supplies one, and no permitted due date precedes the invoice date.
calculationapi, servicetest
services-accounting:modules/transactions/tests/integration/services/invoices/details-terms-due-date.integration.spec.js#it answers the memo, the terms and the explicit due date, which wins over the terms’ own
06must prove
Proposed
Before voiding, descriptive details and terms can change together, with any invalid part rejecting the whole request.
policyservicetest
07must prove
Proposed
An issued invoice can move its dates into an open period before posting, with correcting receivable entries; the console provides no date-change control.
lifecycleservicetest
services-accounting:modules/transactions/tests/integration/services/document-edits/reassign-and-edit.integration.spec.js#it moves the invoice date of an issued, unposted invoice, re-dating its facts; refuses a date after its due date
08must prove
Proposed
Voiding requires a reason and an invoice with no payment, credit, memo or write-off applied, whether draft or issued.
validationservicetest
09must prove
Proposed
An issued invoice’s void preserves its commercial amounts, voids its lines and offsets the remaining receivable on today’s date; the void cannot be undone.
lifecycleservice, databasetest
services-accounting:modules/transactions/tests/integration/services/invoices/void.integration.spec.js#it appends an invoice_voided fact per line for minus the line’s balance, dated today
10must prove
Proposed
An update lock prevents invoice mutations, while a deletion lock prevents removal alone.
policyservicetest
11must prove
Proposed
Issue and amendment require adjust authority, details and terms require update authority, and voiding requires the separate void authority.
permissionapitest
services-accounting:modules/transactions/tests/e2e/invoices.e2e.spec.js#it is refused POST /invoices/{tenantId}/{id}/void without accounting.invoices.void (403)

Scenarios

IdGivenWhenThenProvenance
01The issued invoice remains unposted.Add a missing charge and change an eligible line price.Revision two contains recalculated totals and its e-mail identifies the revision.test
02No value has been applied to an issued invoice.Provide a reason and void the document.Void status and today’s offsetting receivable entries preserve the record.test
03A check has settled part of the invoice.Attempt to void the invoice.Applied money prevents voiding and the invoice remains open.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.