SOQ International Academy

Module Exemption & Fee Waiver

Module Exemption & Fee Waiver - Operator Guide

### Module Exemption & Fee Waiver

Package `soq-sg-module-exemption` - permissions 90150-90153 (90154-90159 reserved) - implementation guide: [Module Exemption Module Guide](../engineering/modules/module-exemption/MODULE.md)

#### What this module does

Module Exemption handles Recognition of Prior Learning (RPL) / credit transfer for diploma applications. Staff or applicants request exemption rules; staff approve or reject them. Approved exemptions can waive course chapters and reduce payable fees during checkout. This module is scoped to diploma programmes.

#### UI map: where to click

| UI area | Path | What operators do | Key buttons / controls |
|---|---|---|---|
| Exemption rules | `/admin/diploma-admissions/exemption-rules` | Create and maintain programme rules. | **New rule**, **Edit**, **Delete** |
| Application detail | `/admin/diploma-admissions/applications/{id}` | Propose, approve, reject or revoke exemptions. | **Propose exemption**, **Approve**, **Reject**, **Revoke** |
| Diploma settings | `/admin/diploma-admissions/settings` | Set exemption cap and applicant self-service switch. | **Save settings** |
| Applicant panel | `/panel/diploma-applications/{id}` | Applicant requests exemption and uploads evidence. | **Request a module exemption** |

#### Permissions

| Permission | Purpose |
|---|---|
| `admin_sg_module_exemption_rules` | Manage exemption rules |
| `admin_sg_module_exemption_request` | Propose/request exemptions on applications |
| `admin_sg_module_exemption_approve` | Approve/reject/revoke exemptions |
| `admin_sg_diploma_admissions_settings` | Configure cap/self-service in Diploma settings |

The module is seeded with Diploma Admissions; run `php artisan soq:seed-diploma-admissions`.

#### Field guide

| Field / control | What to enter | Impact |
|---|---|---|
| Programme | Diploma programme this rule belongs to. | Rule is shown only for matching applications. |
| Prerequisite qualification | Prior qualification or condition. | Helps staff/applicant choose correct rule. |
| Exempted chapter | Chapter from programme-linked course. | Approved exemption marks chapter waived in progress. |
| Waiver type | Fixed amount or percentage. | Deducts fee at checkout. |
| Rule priority | Sort order on propose/request form. | Higher priority rules appear first. |
| Evidence document | Existing/new application document. | Supports applicant/staff request. |
| Exemption cap (%) | Diploma settings, default 50. | Approval above cap requires reason. |
| Applicant self-service | Diploma settings. | Shows/hides applicant panel request form. |

#### First-time setup

1. Run `php artisan soq:seed-diploma-admissions`.
2. Create a Diploma Programme linked to a course with chapters.
3. Open `/admin/diploma-admissions/exemption-rules`.
4. Click **New rule** and define qualification, chapter and waiver.
5. Open `/admin/diploma-admissions/settings`, set cap and whether applicants can self-request.
6. Create or open a diploma application for that programme.
7. Propose and approve one exemption to verify fee waiver and waived chapter behaviour.

#### UAT script

| Step | Action | Expected result |
|---|---|---|
| 1 | Create active exemption rule. | Rule appears in list and propose form. |
| 2 | Staff proposes rule on application detail. | Exemption row appears pending. |
| 3 | Approver clicks **Approve**. | Waiver affects payable amount; waived chapter shown. |
| 4 | Approver approves above cap with reason. | Approval succeeds only with reason. |
| 5 | Applicant requests exemption from panel. | Staff/assigned officer gets notification. |
| 6 | Staff rejects request. | Applicant sees rejected status. |
| 7 | Staff revokes approved exemption before payment. | Waiver removed from payable amount. |
| 8 | Applicant checks out. | Approved waiver deducted automatically. |

#### Daily operations

- Keep inactive rules instead of deleting rules already used by applications.
- Review applicant requests alongside document screening.
- Record a reason whenever approving above cap or revoking an approved exemption.
- Do not approve after payment expecting an automatic refund; post-payment changes only affect learning progress unless finance handles refund separately.

#### Troubleshooting

| Symptom | Check |
|---|---|
| Rule not visible on application | Programme mismatch, rule inactive, application stage not eligible, or duplicate pending/approved rule. |
| Applicant cannot request | Self-service setting off, application already paid/closed, no active rules, or missing evidence. |
| Waiver not applied at checkout | Exemption not approved, cap/reason issue, gift purchase, or application not linked to checkout. |
| Cannot delete rule | Rule has usage; set inactive instead. |
| Staff cannot approve | Role needs `admin_sg_module_exemption_approve`. |

#### Policy notes

- Does not change marketplace commission settings.
- Gift purchases get no waiver.
- Exemptions are diploma-only; do not present them as general course discounts.