# 3. Multi-Currency Management — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: multi_currency_management.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature,
  expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 3.1 Multi-Currency Support | Currency: the currency (the currency, the code, the symbol) | TC-SA-16-03-001 |
| 3.1 Multi-Currency Support | Currency code: the code (the code of the currency, e.g., the USD, the ZAR) | TC-SA-16-03-002 |
| 3.1 Multi-Currency Support | Currency symbol: the symbol (the symbol of the currency, e.g., the $, the R) | TC-SA-16-03-003 |
| 3.1 Multi-Currency Support | Currency rate: the rate (the rate of the currency, the exchange rate) | TC-SA-16-03-004 |
| 3.1 Multi-Currency Support | Currency configuration: the configuration (the currency, the code, the symbol, the rate) | TC-SA-16-03-005 |
| 3.1 Multi-Currency Support | Currency record: the record (the currency, the code, the symbol, the rate, the date) | TC-SA-16-03-006 |
| 3.1 Multi-Currency Support | Currency view: the view (the currencies, the rates, the period) | TC-SA-16-03-007 |
| 3.1 Multi-Currency Support | Audit logging of the multi-currency configuration | TC-SA-16-03-008 |
| 3.1 Multi-Currency Support | Rule: the currency is the unit (the currency, the code, the symbol); the currency is the measure | TC-SA-16-03-001 |
| 3.1 Multi-Currency Support | Rule: the currency code is the identifier (the code of the currency, e.g., the USD, the ZAR); the code is the reference | TC-SA-16-03-002 |
| 3.1 Multi-Currency Support | Rule: the currency symbol is the mark (the symbol of the currency, e.g., the $, the R); the symbol is the display | TC-SA-16-03-003 |
| 3.1 Multi-Currency Support | Rule: a currency change (the rate updated) is recorded (the new rate, the time); it is auditable | TC-SA-16-03-008 |
| 3.1 Multi-Currency Support | Rule: the currencies are visible (the currencies, the rates, the period); the support is managed | TC-SA-16-03-007 |
| 3.1 Multi-Currency Support | Rule: multi-currency configuration is audit-logged with the currency, rate, and timestamp | TC-SA-16-03-008 |
| 3.2 Currency Conversion and Settlement | Currency conversion: the conversion (the conversion, the from-currency, the to-currency, the rate, the amount) | TC-SA-16-03-009 |
| 3.2 Currency Conversion and Settlement | Settlement: the settlement (the settlement, the currency, the amount, the date) | TC-SA-16-03-010 |
| 3.2 Currency Conversion and Settlement | Conversion rate: the rate (the rate of the conversion, the exchange rate) | TC-SA-16-03-011 |
| 3.2 Currency Conversion and Settlement | Conversion configuration: the configuration (the from-currency, the to-currency, the rate, the amount) | TC-SA-16-03-012 |
| 3.2 Currency Conversion and Settlement | Conversion record: the record (the conversion, the from-currency, the to-currency, the rate, the amount, the date) | TC-SA-16-03-013 |
| 3.2 Currency Conversion and Settlement | Settlement record: the record (the settlement, the currency, the amount, the date) | TC-SA-16-03-014 |
| 3.2 Currency Conversion and Settlement | Conversion view: the view (the conversions, the settlements, the period) | TC-SA-16-03-015 |
| 3.2 Currency Conversion and Settlement | Audit logging of the currency conversion and settlement | TC-SA-16-03-016 |
| 3.2 Currency Conversion and Settlement | Rule: the currency conversion is the exchange (the conversion, the from-currency, the to-currency, the rate, the amount); the conversion is the action | TC-SA-16-03-009 |
| 3.2 Currency Conversion and Settlement | Rule: the settlement is the finalization (the settlement, the currency, the amount, the date); the settlement is the completion | TC-SA-16-03-010 |
| 3.2 Currency Conversion and Settlement | Rule: the conversion rate is the measure (the rate of the conversion, the exchange rate); the rate is the control | TC-SA-16-03-011 |
| 3.2 Currency Conversion and Settlement | Rule: a conversion change (the rate updated) is recorded (the new rate, the time); it is auditable | TC-SA-16-03-016 |
| 3.2 Currency Conversion and Settlement | Rule: the conversions and settlements are visible (the conversions, the settlements, the period); the handling is managed | TC-SA-16-03-015 |
| 3.2 Currency Conversion and Settlement | Rule: currency conversion and settlement are audit-logged with the conversion, rate, and timestamp | TC-SA-16-03-016 |

## 3.1 Multi-Currency Support

### TC-SA-16-03-001 — Currency: the currency (the currency, the code, the symbol); the currency is the measure
**Type:** Positive
**Covers:** 3.1 → Currency: the currency (the currency, the code, the symbol); Rule: the currency is the unit (the currency, the code, the symbol); the currency is the measure
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Configure the multi-currency support: the currency (the currency, the code, the symbol), the code (the code of the currency, e.g., the USD, the ZAR), the symbol (the symbol of the currency, e.g., the $, the R), and the rate (the rate of the currency, the exchange rate).
2. Set the currency: the currency (the currency, the code, the symbol) — verify the currency is the unit.
3. Verify multiple currencies can be added (e.g., USD, ZAR, EUR).
**Expected Result:** The currency is set — the currency, the code, and the symbol are the unit.
**Priority:** Critical

### TC-SA-16-03-002 — Currency code: the code (the code of the currency, e.g., the USD, the ZAR); the code is the reference
**Type:** Negative
**Covers:** 3.1 → Currency code: the code (the code of the currency, e.g., the USD, the ZAR); Rule: the currency code is the identifier (the code of the currency, e.g., the USD, the ZAR); the code is the reference
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Set the currency code: the code (the code of the currency, e.g., the USD, the ZAR) — verify the code is the identifier.
2. Set a duplicate currency code (e.g., USD twice) — verify it is rejected with a validation error.
3. Set an invalid currency code (e.g., "XYZ123") — verify it is rejected with a validation error.
**Expected Result:** The currency code is set — the code of the currency is the reference; duplicate and invalid codes are rejected.
**Priority:** High

### TC-SA-16-03-003 — Currency symbol: the symbol (the symbol of the currency, e.g., the $, the R); the symbol is the display
**Type:** Positive
**Covers:** 3.1 → Currency symbol: the symbol (the symbol of the currency, e.g., the $, the R); Rule: the currency symbol is the mark (the symbol of the currency, e.g., the $, the R); the symbol is the display
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Set the currency symbol: the symbol (the symbol of the currency, e.g., the $, the R) — verify the symbol is the mark.
2. Verify the symbol is displayed correctly in the platform (e.g., $ for USD, R for ZAR).
**Expected Result:** The currency symbol is set — the symbol of the currency is the display.
**Priority:** High

### TC-SA-16-03-004 — Currency rate: the rate (the rate of the currency, the exchange rate); the rate is the conversion
**Type:** Edge
**Covers:** 3.1 → Currency rate: the rate (the rate of the currency, the exchange rate)
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Set the currency rate: the rate (the rate of the currency, the exchange rate) — verify the rate is the conversion.
2. Set a rate of 0 — verify it is rejected with a validation error (a zero exchange rate is invalid).
3. Set a very large rate — verify it is accepted or flagged per the documented behavior.
**Expected Result:** The currency rate is set — the rate of the currency is the conversion; a zero rate is rejected.
**Priority:** Critical

### TC-SA-16-03-005 — Currency configuration: the configuration (the currency, the code, the symbol, the rate); the support is explicit
**Type:** Positive
**Covers:** 3.1 → Currency configuration: the configuration (the currency, the code, the symbol, the rate)
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Configure the currency: the configuration (the currency, the code, the symbol, the rate).
2. Save; verify the multi-currency support is live and the transactions are in multiple currencies.
3. View the currency configuration — verify the currency, the code, the symbol, and the rate are shown.
**Expected Result:** The currency configuration is saved — the currency, the code, the symbol, and the rate are configured and live.
**Priority:** Critical

### TC-SA-16-03-006 — Currency record: the record (the currency, the code, the symbol, the rate, the date); the record is the proof
**Type:** Positive
**Covers:** 3.1 → Currency record: the record (the currency, the code, the symbol, the rate, the date)
**Preconditions:** A currency has been configured.
**Steps:**
1. Open the currency record.
2. Verify it shows the currency, the code, the symbol, the rate, and the date.
**Expected Result:** The currency is recorded — the currency, the code, the symbol, the rate, and the date are shown.
**Priority:** High

### TC-SA-16-03-007 — Currency view: the view (the currencies, the rates, the period); the support is managed
**Type:** Positive
**Covers:** 3.1 → Currency view: the view (the currencies, the rates, the period); Rule: the currencies are visible (the currencies, the rates, the period); the support is managed
**Preconditions:** Multiple currencies have been configured.
**Steps:**
1. View the currencies: the currencies, the rates, the period — verify the currencies are visible.
2. Verify the view is complete for the period.
**Expected Result:** The currency view works — the currencies and the rates for the period are visible.
**Priority:** High

### TC-SA-16-03-008 — Multi-currency configuration is audit-logged with the currency, rate, and timestamp
**Type:** Positive
**Covers:** 3.1 → Audit logging of the multi-currency configuration; Rule: a currency change (the rate updated) is recorded (the new rate, the time); it is auditable; Rule: multi-currency configuration is audit-logged with the currency, rate, and timestamp
**Preconditions:** Currencies have been configured and a rate has been updated.
**Steps:**
1. Open the audit trail and filter by "currency".
2. Verify entries show the currency, the rate, and the timestamp for the configuration.
3. For a currency change (the rate updated), verify the change is recorded (the new rate, the time) and is auditable.
**Expected Result:** The multi-currency configuration is audit-logged with the currency, rate, and timestamp.
**Priority:** Critical

## 3.2 Currency Conversion and Settlement

### TC-SA-16-03-009 — Currency conversion: the conversion (the conversion, the from-currency, the to-currency, the rate, the amount); the conversion is the action
**Type:** Positive
**Covers:** 3.2 → Currency conversion: the conversion (the conversion, the from-currency, the to-currency, the rate, the amount); Rule: the currency conversion is the exchange (the conversion, the from-currency, the to-currency, the rate, the amount); the conversion is the action
**Preconditions:** Multiple currencies are configured with exchange rates.
**Steps:**
1. Configure the conversion: the conversion (the conversion, the from-currency, the to-currency, the rate, the amount) — verify the conversion is the exchange.
2. A transaction is made in a foreign currency — verify the conversion is applied (the conversion is made, the rate is applied, the amount is converted).
3. Verify the converted amount is correct per the rate.
**Expected Result:** The currency conversion works — the conversion, the from-currency, the to-currency, the rate, and the amount are the action.
**Priority:** Critical

### TC-SA-16-03-010 — Settlement: the settlement (the settlement, the currency, the amount, the date); the settlement is the completion
**Type:** Positive
**Covers:** 3.2 → Settlement: the settlement (the settlement, the currency, the amount, the date); Rule: the settlement is the finalization (the settlement, the currency, the amount, the date); the settlement is the completion
**Preconditions:** A currency conversion has been made.
**Steps:**
1. Set the settlement: the settlement (the settlement, the currency, the amount, the date) — verify the settlement is the finalization.
2. Verify the settlement is made (the amount is settled in the to-currency).
3. Verify the settlement is recorded with the currency, the amount, and the date.
**Expected Result:** The settlement works — the settlement, the currency, the amount, and the date are the completion.
**Priority:** Critical

### TC-SA-16-03-011 — Conversion rate: the rate (the rate of the conversion, the exchange rate); the rate is the control
**Type:** Edge
**Covers:** 3.2 → Conversion rate: the rate (the rate of the conversion, the exchange rate); Rule: the conversion rate is the measure (the rate of the conversion, the exchange rate); the rate is the control
**Preconditions:** Multiple currencies are configured.
**Steps:**
1. Set the conversion rate: the rate (the rate of the conversion, the exchange rate) — verify the rate is the measure.
2. Verify the rate is applied consistently to all conversions between the from-currency and the to-currency.
3. Update the rate — verify new conversions use the new rate (existing conversions retain the old rate).
**Expected Result:** The conversion rate is set — the rate of the conversion is the control, applied consistently.
**Priority:** Critical

### TC-SA-16-03-012 — Conversion configuration: the configuration (the from-currency, the to-currency, the rate, the amount); the handling is explicit
**Type:** Positive
**Covers:** 3.2 → Conversion configuration: the configuration (the from-currency, the to-currency, the rate, the amount)
**Preconditions:** Super Admin is logged in.
**Steps:**
1. Configure the conversion and settlement: the configuration (the from-currency, the to-currency, the rate, the amount).
2. Save; verify the conversion and settlement is live and the currencies are converted and settled.
3. View the conversion configuration — verify the from-currency, the to-currency, the rate, and the amount are shown.
**Expected Result:** The conversion configuration is saved — the from-currency, the to-currency, the rate, and the amount are configured and live.
**Priority:** Critical

### TC-SA-16-03-013 — Conversion record: the record (the conversion, the from-currency, the to-currency, the rate, the amount, the date); the record is the proof
**Type:** Positive
**Covers:** 3.2 → Conversion record: the record (the conversion, the from-currency, the to-currency, the rate, the amount, the date)
**Preconditions:** A currency conversion has been made.
**Steps:**
1. Open the conversion record.
2. Verify it shows the conversion, the from-currency, the to-currency, the rate, the amount, and the date.
**Expected Result:** The conversion is recorded — the conversion, the from-currency, the to-currency, the rate, the amount, and the date are shown.
**Priority:** High

### TC-SA-16-03-014 — Settlement record: the record (the settlement, the currency, the amount, the date); the record is the proof
**Type:** Positive
**Covers:** 3.2 → Settlement record: the record (the settlement, the currency, the amount, the date)
**Preconditions:** A settlement has been made.
**Steps:**
1. Open the settlement record.
2. Verify it shows the settlement, the currency, the amount, and the date.
**Expected Result:** The settlement is recorded — the settlement, the currency, the amount, and the date are shown.
**Priority:** High

### TC-SA-16-03-015 — Conversion view: the view (the conversions, the settlements, the period); the handling is managed
**Type:** Positive
**Covers:** 3.2 → Conversion view: the view (the conversions, the settlements, the period); Rule: the conversions and settlements are visible (the conversions, the settlements, the period); the handling is managed
**Preconditions:** Conversions and settlements exist across a period.
**Steps:**
1. View the conversions and settlements: the conversions, the settlements, the period — verify they are visible.
2. Verify the view is complete for the period.
**Expected Result:** The conversion view works — the conversions and the settlements for the period are visible.
**Priority:** High

### TC-SA-16-03-016 — Currency conversion and settlement are audit-logged with the conversion, rate, and timestamp
**Type:** Positive
**Covers:** 3.2 → Audit logging of the currency conversion and settlement; Rule: a conversion change (the rate updated) is recorded (the new rate, the time); it is auditable; Rule: currency conversion and settlement are audit-logged with the conversion, rate, and timestamp
**Preconditions:** Conversions and settlements have occurred and a rate has been updated.
**Steps:**
1. Open the audit trail and filter by "currency conversion".
2. Verify entries show the conversion, the rate, and the timestamp.
3. For a conversion change (the rate updated), verify the change is recorded (the new rate, the time) and is auditable.
**Expected Result:** The currency conversion and settlement are audit-logged with the conversion, rate, and timestamp.
**Priority:** Critical
