Skip to content

ATS-ACC-BKS-002Enable supported foreign currencies for a business unit: Capability Test Specification

Markdown

ATS-ACC-BKS-002

Enable supported foreign currencies for a business unit: Capability Test Specification

Markdown
  • DocumentProposed
  • Product intentProposed

KindAcceptance test setProduct areaAccountingModuleBooks, Business Units and Chart of AccountsRevision2

Read atservices-accounting f47cb263react-console baf6dae3

Coverage

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

Test Scenarios

15 scenarios proving CAP-ACC-BKS-002; 8 bound to an existing test.

01 Require currencies before enablementtransitionapinegativetest
Proves
BR-CAP-ACC-BKS-002-01
Preconditions
There is no saved unit.
Steps
Create with defaults, create enabled without currencies, and enable an existing empty set.
Expected
Default enablement is off and both empty-set attempts receive the legacy refusal.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/integration/services/persistence/business-units.integration.spec.js#creates a unit with Enable Multicurrency off by default
02 Reject foreign currency in single-currency moderuleunitnegativetest
Proves
BR-CAP-ACC-BKS-002-02
Preconditions
Multicurrency is disabled.
Steps
Evaluate the base, foreign and listed currencies.
Expected
The base passes; foreign use is refused because the switch governs eligibility.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/unit/rules/multi-currency-rules.spec.js#refuses a foreign currency when the flag is off, with 1.0’s sentence
03 Validate the supported setvalidationapinegativetest
Proves
BR-CAP-ACC-BKS-002-03 INV-DOM-ACC-BKS-001-03
Preconditions
The base currency is USD.
Steps
Submit duplicate CAD, base USD, unknown XXX and a 201-entry set.
Expected
Each invalid set is refused with its reason.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 400 to a supported currency named twice, in Rhythm 1.0’s words
04 Retain per-currency policyruleapitest
Proves
BR-CAP-ACC-BKS-002-04
Preconditions
A unit supports foreign currencies.
Steps
Submit complete and defaulted settings, an invalid rate source and settings on the base row.
Expected
Valid defaults apply; the unsupported source and base-row settings are refused.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/integration/services/persistence/business-units.integration.spec.js#answers each supported currency with its settings, the defaults for one that stated none, and the codes beside them
05 Preserve currencies already in useinvariantapinegativetest
Proves
BR-CAP-ACC-BKS-002-05 INV-DOM-ACC-BKS-001-04
Preconditions
CAD has a GL account and EUR has a merchant account.
Steps
Remove each currency and disable multicurrency.
Expected
The refusals name the dependent currencies and record kinds and preserve the saved set.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 409 naming the currency, the unit and the kinds of account that use it
06 Restrict account currenciesvalidationapinegativetest
Proves
BR-CAP-ACC-BKS-002-06 INV-DOM-ACC-BKS-002-02
Preconditions
The unit supports CAD but not GBP.
Steps
Create GL, bank and merchant accounts denominated in GBP.
Expected
Each request receives the configured-currency refusal.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers 400 to a currency the unit is not enabled for, in Rhythm 1.0’s words
07 Resolve simultaneous removal and account creationconcurrencybrowsernegativetest
Proves
BR-CAP-ACC-BKS-002-08
Preconditions
Two administrators share a EUR-enabled unit.
Steps
Race EUR removal against creation of a EUR account.
Expected
One succeeds, the other receives a refusal, and no account is stranded in an unsupported currency.
Data
Two independent administrator sessions.
Bound to
Source
react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0007.spec.ts#ACT-ACC-0007
08 Begin foreign-currency tradinginteractionbrowserproposed
Proves
AS-JNY-ACC-BKS-006-01 AS-JNY-ACC-BKS-006-02 AS-JNY-ACC-BKS-006-03
Preconditions
A unit keeps its base books in USD.
Steps
Complete the foreign-currency setup journey.
Expected
Read-back confirms policies, foreign accounts and rates; account usage protects its currency.
Data
The setup needs no extra fixture records.
Source
react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0006.spec.ts#ACT-ACC-0006
09 Exercise the grants for enable supported foreign currencies for a business unitpermissionapinegativeproposed
Proves
BR-CAP-ACC-BKS-016-01
Preconditions
An application-authorized reader and administrator share the run-owned setup. A third principal lacks the relevant resource grant.
Steps
Read the relevant configuration as the reader, attempt each supported mutation, then repeat with the matching administrator grants. Repeat the reads without their resource grants.
Expected
The permission outcomes match the cited authorization rule, and refused mutations leave every configured value unchanged.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/configuration-security.e2e.spec.js#is refused the create 403 permission_missing
10 Supported-set size endpointsboundaryapinegativeproposed
Proves
BR-CAP-ACC-BKS-002-03
Preconditions
An isolated workspace has records needed for both eligible and ineligible examples.
Steps
Submit the largest offered set, then a repeated entry and a synthetic set beyond the declared size limit.
Expected
The offered set persists; duplicate and excessive membership are refused without changing the saved set.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 400 to a supported currency named twice, in Rhythm 1.0’s words
11 Refuse the second replacement of a shared read versionconcurrencyapinegativeproposed
Proves
BR-CAP-ACC-BKS-016-05
Preconditions
Two administrators read the same version of the relevant mutable record. Each prepares a different otherwise valid replacement.
Steps
Release both replacement requests from a barrier. Read the record again and retry the losing payload at its original version.
Expected
One replacement commits, the other is stale, and repeating the stale request preserves the winning values.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/payment-terms.e2e.spec.js#answers 400 naming is_active to a replacement that leaves it out
12 Stored rates protect their enabled currencyinteractionapiproposed
Proves
BR-CAP-ACC-BKS-002-05 BR-CAP-ACC-BKS-004-02
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Create a dated foreign quote, try removing its currency, delete the quote and repeat removal.
Expected
The quote blocks removal; after it is removed, unused currency removal succeeds.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 409 naming the currency, the unit and the kinds of account that use it,services-accounting:modules/books/tests/integration/services/persistence/exchange-rates.integration.spec.js#refuses changing the unit, the currency or the day: a rate’s identity is write-once
13 Foreign accounts protect their enabled currencyinteractionbrowsertest
Proves
BR-CAP-ACC-BKS-002-05 BR-CAP-ACC-BKS-002-06 BR-CAP-ACC-BKS-005-01
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Enable CAD, create a CAD chart account and attempt to remove CAD from the unit.
Expected
The account reads back in the configured currency and prevents its removal.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Bound to
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 409 naming the currency, the unit and the kinds of account that use it,services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers 400 to a currency the unit is not enabled for, in Rhythm 1.0’s words,services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#stores the code trimmed and upper-cased, under the id from the lower-cased code
14 Receiving destinations use the enabled currency setinteractionapiproposed
Proves
BR-CAP-ACC-BKS-002-06 BR-CAP-ACC-BKS-007-01
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Create local bank and merchant destinations in an enabled foreign currency, then try an unsupported one.
Expected
The enabled destinations save and the unsupported ones leave no receiving records.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers 400 to a currency the unit is not enabled for, in Rhythm 1.0’s words,services-accounting:modules/books/tests/e2e/bank-accounts.e2e.spec.js#answers 400 to another unit’s GL account, naming both units
15 Invalid content selection preserves currency settingsinteractionapiproposed
Proves
BR-CAP-ACC-BKS-002-04 BR-CAP-ACC-BKS-015-04
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Change a supported currency policy while selecting unusable content in the same unit replacement, then read its policies.
Expected
The complete rejected replacement preserves the earlier currency policy.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/integration/services/persistence/business-units.integration.spec.js#answers each supported currency with its settings, the defaults for one that stated none, and the codes beside them,services-accounting:modules/books/tests/e2e/document-templates.e2e.spec.js#answers 400 to a business unit naming an inactive template

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.