# 1. Revenue Recognition — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: revenue_recognition.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 |
|---------|--------------------|----------|
| 1.1 Revenue Recognition Tracking | Revenue recognition: the recognition (the revenue is recognized, the source, the amount, the date) | TC-SA-16-01-001 |
| 1.1 Revenue Recognition Tracking | Revenue source: the source (the source of the revenue, e.g., the subscription, the one-time purchase) | TC-SA-16-01-002 |
| 1.1 Revenue Recognition Tracking | Revenue amount: the amount (the amount of the revenue, the currency) | TC-SA-16-01-003 |
| 1.1 Revenue Recognition Tracking | Recognition period: the period (the period of the recognition, e.g., the monthly, the quarterly) | TC-SA-16-01-004 |
| 1.1 Revenue Recognition Tracking | Recognition record: the record (the revenue, the source, the amount, the date, the period) | TC-SA-16-01-005 |
| 1.1 Revenue Recognition Tracking | Recognition view: the view (the revenue, the sources, the periods) | TC-SA-16-01-006 |
| 1.1 Revenue Recognition Tracking | Recognition export: the export (the revenue, the format, the period) | TC-SA-16-01-007 |
| 1.1 Revenue Recognition Tracking | Audit logging of the revenue recognition tracking | TC-SA-16-01-008 |
| 1.1 Revenue Recognition Tracking | Rule: the revenue recognition is the record (the revenue is recognized, the source, the amount, the date); the recognition is the proof | TC-SA-16-01-001 |
| 1.1 Revenue Recognition Tracking | Rule: the revenue source is the origin (the source of the revenue, e.g., the subscription, the one-time purchase); the source is the origin | TC-SA-16-01-002 |
| 1.1 Revenue Recognition Tracking | Rule: the revenue amount is the value (the amount of the revenue, the currency); the amount is the measure | TC-SA-16-01-003 |
| 1.1 Revenue Recognition Tracking | Rule: the recognition period is the scope (the period of the recognition, e.g., the monthly, the quarterly); the period is the control | TC-SA-16-01-004 |
| 1.1 Revenue Recognition Tracking | Rule: the revenue is visible (the revenue, the sources, the periods); the tracking is managed | TC-SA-16-01-006 |
| 1.1 Revenue Recognition Tracking | Rule: revenue recognition tracking is audit-logged with the revenue, source, and timestamp | TC-SA-16-01-008 |
| 1.2 Revenue by Course, Time Period, and Region | Revenue by course: the breakdown (the course, the revenue, the amount) | TC-SA-16-01-009 |
| 1.2 Revenue by Course, Time Period, and Region | Revenue by time period: the breakdown (the period, the revenue, the amount) | TC-SA-16-01-010 |
| 1.2 Revenue by Course, Time Period, and Region | Revenue by region: the breakdown (the region, the revenue, the amount) | TC-SA-16-01-011 |
| 1.2 Revenue by Course, Time Period, and Region | Breakdown filter: the filter (the filter by the course, the period, the region) | TC-SA-16-01-012 |
| 1.2 Revenue by Course, Time Period, and Region | Breakdown comparison: the comparison (the comparison of the revenue, the courses, the periods, the regions) | TC-SA-16-01-013 |
| 1.2 Revenue by Course, Time Period, and Region | Breakdown export: the export (the breakdown, the format, the period) | TC-SA-16-01-014 |
| 1.2 Revenue by Course, Time Period, and Region | Breakdown record: the record (the course, the period, the region, the revenue, the amount) | TC-SA-16-01-015 |
| 1.2 Revenue by Course, Time Period, and Region | Audit logging of the revenue breakdown viewing | TC-SA-16-01-016 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: the revenue by course is the detail (the course, the revenue, the amount); the breakdown is the segment | TC-SA-16-01-009 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: the revenue by time period is the detail (the period, the revenue, the amount); the breakdown is the segment | TC-SA-16-01-010 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: the revenue by region is the detail (the region, the revenue, the amount); the breakdown is the segment | TC-SA-16-01-011 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: the breakdown filter is the scope (the filter by the course, the period, the region); the filter is the control | TC-SA-16-01-012 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: the revenue is visible (the revenue, the courses, the periods, the regions); the viewing is managed | TC-SA-16-01-009 |
| 1.2 Revenue by Course, Time Period, and Region | Rule: revenue breakdown viewing is audit-logged with the course, period, and timestamp | TC-SA-16-01-016 |

## 1.1 Revenue Recognition Tracking

### TC-SA-16-01-001 — Revenue recognition: the recognition (the revenue is recognized, the source, the amount, the date); the recognition is the proof
**Type:** Positive
**Covers:** 1.1 → Revenue recognition: the recognition (the revenue is recognized, the source, the amount, the date); Rule: the revenue recognition is the record (the revenue is recognized, the source, the amount, the date); the recognition is the proof
**Preconditions:** Revenue has been recognized from multiple sources.
**Steps:**
1. View the revenue recognition tracking: the revenue (the revenue, the source, the amount, the date), the sources (the subscription, the one-time purchase), and the period (the period of the recognition).
2. Verify the revenue is recognized and shown with the source, the amount, and the date.
3. Verify the recognition is the record and is the proof.
**Expected Result:** The revenue recognition is shown — the revenue is recognized with the source, the amount, and the date.
**Priority:** Critical

### TC-SA-16-01-002 — Revenue source: the source (the source of the revenue, e.g., the subscription, the one-time purchase); the source is the origin
**Type:** Positive
**Covers:** 1.1 → Revenue source: the source (the source of the revenue, e.g., the subscription, the one-time purchase); Rule: the revenue source is the origin (the source of the revenue, e.g., the subscription, the one-time purchase); the source is the origin
**Preconditions:** Revenue exists from both subscription and one-time purchase sources.
**Steps:**
1. View the revenue by source: the source (the source of the revenue, e.g., the subscription, the one-time purchase).
2. Verify the subscription revenue is shown separately from the one-time purchase revenue.
3. Verify the source is the origin and is labeled correctly.
**Expected Result:** The revenue source is shown — the source of the revenue (the subscription, the one-time purchase) is the origin.
**Priority:** High

### TC-SA-16-01-003 — Revenue amount: the amount (the amount of the revenue, the currency); the amount is the measure
**Type:** Edge
**Covers:** 1.1 → Revenue amount: the amount (the amount of the revenue, the currency); Rule: the revenue amount is the value (the amount of the revenue, the currency); the amount is the measure
**Preconditions:** Revenue exists in multiple currencies.
**Steps:**
1. View the revenue amounts — verify the amount of the revenue (the currency) is shown for each recognition.
2. Verify the amounts are correct per currency (no rounding errors, no currency mixing).
3. Verify the amount is the value and is the measure.
**Expected Result:** The revenue amount is shown — the amount of the revenue in the currency is the measure.
**Priority:** High

### TC-SA-16-01-004 — Recognition period: the period (the period of the recognition, e.g., the monthly, the quarterly); the period is the control
**Type:** Positive
**Covers:** 1.1 → Recognition period: the period (the period of the recognition, e.g., the monthly, the quarterly); Rule: the recognition period is the scope (the period of the recognition, e.g., the monthly, the quarterly); the period is the control
**Preconditions:** Revenue recognition exists across monthly and quarterly periods.
**Steps:**
1. View the recognition by period: the period (the period of the recognition, e.g., the monthly, the quarterly).
2. Verify the monthly recognition is shown separately from the quarterly recognition.
3. Verify the period is the scope and is the control.
**Expected Result:** The recognition period is shown — the period of the recognition (the monthly, the quarterly) is the control.
**Priority:** High

### TC-SA-16-01-005 — Recognition record: the record (the revenue, the source, the amount, the date, the period); the record is the proof
**Type:** Positive
**Covers:** 1.1 → Recognition record: the record (the revenue, the source, the amount, the date, the period)
**Preconditions:** Revenue recognition has occurred.
**Steps:**
1. Open the recognition record.
2. Verify it shows the revenue, the source, the amount, the date, and the period.
**Expected Result:** The recognition is recorded — the revenue, the source, the amount, the date, and the period are shown.
**Priority:** High

### TC-SA-16-01-006 — Recognition view: the view (the revenue, the sources, the periods); the tracking is managed
**Type:** Positive
**Covers:** 1.1 → Recognition view: the view (the revenue, the sources, the periods); Rule: the revenue is visible (the revenue, the sources, the periods); the tracking is managed
**Preconditions:** Revenue recognition exists across multiple sources and periods.
**Steps:**
1. View the recognition: the revenue, the sources, the periods — verify the revenue is visible.
2. For a source (a specific source), view the source's revenue (the revenue, the amounts, the dates, the period) — verify the revenue is the detail.
**Expected Result:** The recognition view works — the revenue, the sources, and the periods are visible.
**Priority:** High

### TC-SA-16-01-007 — Recognition export: the export (the revenue, the format, the period); the export is the record
**Type:** Positive
**Covers:** 1.1 → Recognition export: the export (the revenue, the format, the period)
**Preconditions:** Revenue recognition exists for a period.
**Steps:**
1. Export the recognition: the export (the revenue, the format, the period).
2. Verify the export is generated in the selected format.
3. Verify the exported data matches the recognition view.
**Expected Result:** The recognition is exported — the revenue in the selected format for the period is generated.
**Priority:** Medium

### TC-SA-16-01-008 — Revenue recognition tracking is audit-logged with the revenue, source, and timestamp
**Type:** Positive
**Covers:** 1.1 → Audit logging of the revenue recognition tracking; Rule: revenue recognition tracking is audit-logged with the revenue, source, and timestamp
**Preconditions:** Revenue recognition tracking events have occurred.
**Steps:**
1. Open the audit trail and filter by "revenue recognition".
2. Verify entries show the revenue, the source, and the timestamp.
**Expected Result:** The revenue recognition tracking is audit-logged with the revenue, source, and timestamp.
**Priority:** Critical

## 1.2 Revenue by Course, Time Period, and Region

### TC-SA-16-01-009 — Revenue by course: the breakdown (the course, the revenue, the amount); the breakdown is the segment
**Type:** Positive
**Covers:** 1.2 → Revenue by course: the breakdown (the course, the revenue, the amount); Rule: the revenue by course is the detail (the course, the revenue, the amount); the breakdown is the segment; Rule: the revenue is visible (the revenue, the courses, the periods, the regions); the viewing is managed
**Preconditions:** Revenue exists for multiple courses across multiple periods and regions.
**Steps:**
1. View the revenue breakdown: the revenue (the course, the period, the region, the amount), the filters (the course, the period, the region), and the period (the period of the breakdown).
2. View the revenue by course: the breakdown (the course, the revenue, the amount) — verify the breakdown is the detail.
3. Verify the revenue is visible for the courses, the periods, and the regions.
**Expected Result:** The revenue by course is shown — the course, the revenue, and the amount are the segment.
**Priority:** Critical

### TC-SA-16-01-010 — Revenue by time period: the breakdown (the period, the revenue, the amount); the breakdown is the segment
**Type:** Positive
**Covers:** 1.2 → Revenue by time period: the breakdown (the period, the revenue, the amount); Rule: the revenue by time period is the detail (the period, the revenue, the amount); the breakdown is the segment
**Preconditions:** Revenue exists across multiple time periods.
**Steps:**
1. View the revenue by time period: the breakdown (the period, the revenue, the amount) — verify the breakdown is the detail.
2. Verify the revenue is shown per period (monthly, quarterly).
**Expected Result:** The revenue by time period is shown — the period, the revenue, and the amount are the segment.
**Priority:** High

### TC-SA-16-01-011 — Revenue by region: the breakdown (the region, the revenue, the amount); the breakdown is the segment
**Type:** Positive
**Covers:** 1.2 → Revenue by region: the breakdown (the region, the revenue, the amount); Rule: the revenue by region is the detail (the region, the revenue, the amount); the breakdown is the segment
**Preconditions:** Revenue exists across multiple regions.
**Steps:**
1. View the revenue by region: the breakdown (the region, the revenue, the amount) — verify the breakdown is the detail.
2. Verify the revenue is shown per region.
**Expected Result:** The revenue by region is shown — the region, the revenue, and the amount are the segment.
**Priority:** High

### TC-SA-16-01-012 — Breakdown filter: the filter (the filter by the course, the period, the region); the filter is the control
**Type:** Negative
**Covers:** 1.2 → Breakdown filter: the filter (the filter by the course, the period, the region); Rule: the breakdown filter is the scope (the filter by the course, the period, the region); the filter is the control
**Preconditions:** Revenue exists for multiple courses, periods, and regions.
**Steps:**
1. Set the breakdown filter: the filter (the filter by the course, the period, the region).
2. Verify only the matching revenue is shown.
3. Apply a filter combination that matches no revenue — verify an empty result is shown (no error).
**Expected Result:** The breakdown filter works — only the matching revenue is shown; an empty result is handled.
**Priority:** High

### TC-SA-16-01-013 — Breakdown comparison: the comparison (the comparison of the revenue, the courses, the periods, the regions); the comparison is the analysis
**Type:** Positive
**Covers:** 1.2 → Breakdown comparison: the comparison (the comparison of the revenue, the courses, the periods, the regions)
**Preconditions:** Revenue exists for multiple courses, periods, and regions.
**Steps:**
1. Compare the revenue: the comparison (the comparison of the revenue, the courses, the periods, the regions) — verify the comparison is the analysis.
2. Verify the comparison shows the revenue across the selected dimensions.
**Expected Result:** The breakdown comparison works — the comparison of the revenue across the courses, the periods, and the regions is shown.
**Priority:** Medium

### TC-SA-16-01-014 — Breakdown export: the export (the breakdown, the format, the period); the export is the record
**Type:** Positive
**Covers:** 1.2 → Breakdown export: the export (the breakdown, the format, the period)
**Preconditions:** Revenue breakdown exists for a period.
**Steps:**
1. Export the breakdown: the export (the breakdown, the format, the period).
2. Verify the export is generated in the selected format.
3. Verify the exported data matches the breakdown view.
**Expected Result:** The breakdown is exported — the breakdown in the selected format for the period is generated.
**Priority:** Medium

### TC-SA-16-01-015 — Breakdown record: the record (the course, the period, the region, the revenue, the amount); the record is the proof
**Type:** Positive
**Covers:** 1.2 → Breakdown record: the record (the course, the period, the region, the revenue, the amount)
**Preconditions:** Revenue breakdown exists.
**Steps:**
1. Open the breakdown record.
2. Verify it shows the course, the period, the region, the revenue, and the amount.
**Expected Result:** The breakdown is recorded — the course, the period, the region, the revenue, and the amount are shown.
**Priority:** High

### TC-SA-16-01-016 — Revenue breakdown viewing is audit-logged with the course, period, and timestamp
**Type:** Positive
**Covers:** 1.2 → Audit logging of the revenue breakdown viewing; Rule: revenue breakdown viewing is audit-logged with the course, period, and timestamp
**Preconditions:** Revenue breakdown viewing events have occurred.
**Steps:**
1. Open the audit trail and filter by "revenue breakdown".
2. Verify entries show the course, the period, and the timestamp.
**Expected Result:** The revenue breakdown viewing is audit-logged with the course, period, and timestamp.
**Priority:** Critical
