# 4. Professional Courses & Discounts

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*

---

## 4. Professional Courses & Discounts

### 4.1 Professional Course Purchase
**What it does:** Lets the Student purchase additional Professional courses individually (course-wise pricing). The Student browses Professional courses by category and sub-category, views the course detail and price, and purchases a course. Purchased courses are added to the Student's library with full access.

**Sub-features:**
- Browse Professional courses by category and sub-category
- Course detail view (outline, duration, price)
- Purchase a Professional course
- Course added to the Student's library on purchase
- Full access to a purchased course
- Purchased courses list
- Purchase event logging (viewed, purchased)
- Audit logging of the professional course purchase

**Student User Journey:**
1. Student opens "Professional courses" and browses by category.
2. Student opens a course and views the outline, duration, and price.
3. Student purchases the course.
4. On success, the course is added to the Student's library.
5. Student has full access to the course content.
6. The purchased course appears in the purchased courses list.
7. Student opens Profile → "Activity" and confirms the purchase events are recorded.

**Rules & Edge Cases:**
- Professional courses are priced course-wise.
- A purchase requires a successful payment.
- A purchased course is added to the library with full access.
- The purchased courses list shows all owned courses.
- Purchase events (viewed, purchased) are logged with the course and the timestamp.
- The professional course purchase is audit-logged with the account, the course, and the timestamp.

### 4.2 Discount Codes and Promotions
**What it does:** Lets the Student apply discount codes and see active promotions. The Student enters a discount code at checkout to get a discount, and the platform shows active promotional campaigns. Discount codes are validated for eligibility, expiry, and usage limits.

**Sub-features:**
- Enter a discount code at checkout
- Discount applied to the order total
- Active promotions shown
- Code validated for eligibility
- Code validated for expiry
- Code validated for usage limits (single-use, max uses)
- Discount amount shown before confirming
- Discount event logging (applied, rejected)
- Audit logging of the discount codes and promotions

**Student User Journey:**
1. Student reviews an order and sees a "Have a code?" field.
2. Student enters a discount code; the discount is applied to the total.
3. The discount amount is shown before confirming.
4. For an invalid or expired code, Student sees a rejection message.
5. Student sees an active promotion on the plans page.
6. Student completes the order with the discount.
7. Student opens Profile → "Activity" and confirms the discount events are recorded.

**Rules & Edge Cases:**
- A discount code is validated for eligibility, expiry, and usage limits.
- A single-use code cannot be reused.
- The discount amount is shown before confirming.
- An invalid or expired code is rejected with a message.
- Discount events (applied, rejected) are logged with the code and the timestamp.
- The discount codes and promotions is audit-logged with the account, the code, and the timestamp.

### 4.3 Subscription Status and Access
**What it does:** Shows the Student their current subscription status and what content they have access to. The Student sees the active plan, its expiry, the included subjects/courses, and any content that is locked (requires an upgrade or purchase). The status is the single source of truth for access.

**Sub-features:**
- Current subscription status (active, expiring, lapsed)
- Active plan and its expiry date
- Included subjects and courses listed
- Locked content indicated (requires upgrade/purchase)
- Access restored on renewal
- Status available on web and mobile
- Status event logging (viewed)
- Audit logging of the subscription status and access

**Student User Journey:**
1. Student opens "Subscription" → "Status" and sees the active plan.
2. The expiry date and included subjects are shown.
3. Locked content is indicated with an "Upgrade to unlock" prompt.
4. On renewal, access is restored and the status updates.
5. Student sees the status on the mobile app.
6. Student opens Profile → "Activity" and confirms the status events are recorded.

**Rules & Edge Cases:**
- The status is active, expiring, or lapsed.
- Included subjects and courses are listed per the plan.
- Locked content requires an upgrade or purchase to access.
- Access is restored on renewal.
- Status events (viewed) are logged with the subscription and the timestamp.
- The subscription status and access is audit-logged with the account, the subscription, and the timestamp.
