Skip to content

ATS-ACC-TRX-006Record receipts collected outside Rhythm: Capability Test Specification

Markdown

ATS-ACC-TRX-006

Record receipts collected outside Rhythm: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaAccountingModuleTransactionsRevision1

Read atservices-accounting f47cb263react-console baf6dae3

Coverage

  • Rule covered
  • Transition gap: FND-ACC-TRX-071
  • Validation covered
  • Permission gap: FND-ACC-TRX-071
  • Edge covered
  • Failure covered
  • Boundary covered
  • Concurrency gap: FND-ACC-TRX-071
  • Invariant covered
  • Interaction covered

Test Scenarios

10 scenarios proving CAP-ACC-TRX-006; 9 bound to an existing test.

01 Invalid money cannot become a receiptboundaryapinegativetest
Proves
BR-CAP-ACC-TRX-006-01 INV-DOM-ACC-TRX-003-01
Preconditions
The unit supports USD.
Steps
[ { "do": "Submit EUR value and noninteger minor-unit value.", "provenance": "test", "source": "services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses an amount in another currency (currency_mismatch)" } ]
Expected
Both requests fail before recording payment.
Data
A USD financial context.
Bound to
Source
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses an amount in another currency (currency_mismatch)
02 Unavailable methods prevent receipt entryvalidationapinegativetest
Proves
BR-CAP-ACC-TRX-006-02
Preconditions
Unknown, inactive, channel-excluded and reference-required methods are available as cases.
Steps
[ { "do": "Enter receipts against each invalid choice.", "provenance": "test", "source": "services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses a paper check named by id without its number, 400 payment_reference_required, writing nothing" } ]
Expected
Each method refusal leaves payment data untouched.
Data
Configured method variants.
Bound to
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses a method the tenant does not have, 404 payment_method_not_found, writing nothing
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses an inactive method, 409 payment_method_inactive, writing nothing
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses an offline method in the portal, 409 payment_method_unavailable, writing nothing
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses a paper check named by id without its number, 400 payment_reference_required, writing nothing
Source
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it refuses a paper check named by id without its number, 400 payment_reference_required, writing nothing
03 Offline destination matches the receipt contextvalidationapinegativetest
Proves
BR-CAP-ACC-TRX-006-04 INV-DOM-ACC-TRX-003-02
Preconditions
Accounts belong to another unit or currency.
Steps
[ { "do": "Select each for a check, then omit an account.", "provenance": "test", "source": "services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses a bank account of another unit (cash_account_mismatch)" } ]
Expected
All choices fail the cash-destination check.
Data
Bank destinations in multiple contexts.
Bound to
Source
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses a bank account of another unit (cash_account_mismatch)
04 Receipt batching follows explicit or assigned choiceruleapitest
Proves
BR-CAP-ACC-TRX-006-05
Preconditions
One unit has assignment rules and another has none.
Steps
[ { "do": "Omit batch selection in both, then select an eligible batch explicitly.", "provenance": "test", "source": "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" } ]
Expected
Assignment chooses the active batch, absence fails, and explicit selection is retained.
Data
Recurring assignment configuration.
Bound to
services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js#it puts a check that names no batch in the rule’s active batch, and a card in the default’s
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
Source
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
05 Uncovered accounting dates prevent receipt entryfailureapinegativetest
Proves
BR-CAP-ACC-TRX-006-06
Preconditions
The chosen date has no open period.
Steps
[ { "do": "Record the check using that date.", "provenance": "test", "source": "services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses a date in no open period (period_not_open)" } ]
Expected
Period eligibility refuses the payment.
Data
A fiscal calendar lacking the chosen date.
Bound to
Source
services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it refuses a date in no open period (period_not_open)
06 Receipt numbering advances in its own sequenceruleapitest
Proves
BR-CAP-ACC-TRX-006-07 INV-DOM-ACC-TRX-003-03
Preconditions
No receipt numbers have been allocated.
Steps
[ { "do": "Record two successful checks.", "provenance": "test", "source": "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" } ]
Expected
References advance from one million to its next number.
Data
A newly provisioned workspace.
Bound to
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
Source
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
07 Excess receipt value remains heldinvariantapitest
Proves
BR-CAP-ACC-TRX-006-08
Preconditions
An invoice owes 1,000.00.
Steps
[ { "do": "Receive 2,500.00 and settle only the debt.", "provenance": "test", "source": "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" } ]
Expected
The remaining 1,500.00 agrees with the negative sum of payment receivable facts.
Data
An issued outstanding invoice.
Bound to
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
Source
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
08 Payer attribution is limited and immutableedgeapitest
Proves
BR-CAP-ACC-TRX-006-09
Preconditions
An organization can be identified as sender.
Steps
[ { "do": "Record CRM and named offline payers, attempt processor payer entry and later payer editing.", "provenance": "test", "source": "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)" } ]
Expected
Offline attribution is retained, processor input fails and later mutation is blocked.
Data
An employer organization.
Bound to
services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it refuses a payer on a card payment, writing no intent: payer_offline_only
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)
Source
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)
09 Method identity cannot change after recordinginvariantunitnegativetest
Proves
BR-CAP-ACC-TRX-006-10 INV-DOM-ACC-TRX-003-04
Preconditions
A payment already retains its method and behavior.
Steps
[ { "do": "Try method updates through the application and another database writer.", "provenance": "test", "source": "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)" } ]
Expected
Grant restrictions and the write-once constraint prevent either change.
Data
Database writer identities.
Bound to
services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it gives the application no UPDATE of a payment’s method or behaviour at all (42501)
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)
Source
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)
10 A recorded receipt survives placement and later returninteractionapiproposed
Proves
BR-CAP-ACC-TRX-006-08 BR-CAP-ACC-TRX-006-10 BR-CAP-ACC-TRX-008-04 BR-CAP-ACC-TRX-008-06 BR-CAP-ACC-TRX-009-03 BR-CAP-ACC-TRX-009-05 BR-CAP-ACC-TRX-013-03 BR-CAP-ACC-TRX-013-04 BR-CAP-ACC-TRX-015-03 BR-CAP-ACC-TRX-015-04
Preconditions
An isolated workspace has eligible customers, products, matching accounts, an open period and two open batches. Each branch owns separate financial records.
Steps
[ { "do": "Receive 100.00 for an 80.00 bill, move the receipt to another open batch, reallocate its applied value to an equivalent bill, then void an eligible receipt in a separate branch. Complete another bill through credit and an offline settlement.", "provenance": "proposed", "source": "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; 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); rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04" } ]
Expected
The moved receipt and its allocations retain their value; relocation restores the first bill and pays the second; void restores debt; settlement keeps payment and credit application separate.
Data
Separate command keys, two customers, invoice lines, receipts and credit; controlled processor outcomes and a fixed calendar where the branch requires them.
Source
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; 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); rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04

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.