Test Cases: Dues Settings Configuration

⚠️ SUPERSEDED — read the Dues index first. The real dues-settings model is far simpler than the cases below assume. Dues Settings (at /admin/settings/finance?tab=dues, page "Finance & Billing") = a single global Annual Dues Amount + Fiscal Year Start month + proration toggle + grace-period days. There is NO per-membership-type dues table here, NO "Dues Period: Annual/Semi-Annual/Quarterly" field, NO exemption config, and NO auto-generate setting. Per-type amounts live separately on Member Settings → Membership Types. Seeded types are only Regular ₱15k / Associate ₱10k / Student ₱5k (no Founding/Corporate). Treat the specific steps below as outdated; follow the index.

Module: Dues Management - Settings

Backend Endpoints:

Frontend Page: frontend/pwa-app/src/pages/AdminDuesSettingsPage.tsx

Prerequisites

Test Data - Membership Types & Dues

TypeNameAnnual Dues
TYPE_001Founding MemberPHP 0 (Exempt)
TYPE_002Regular MemberPHP 15,000
TYPE_003Associate MemberPHP 10,000
TYPE_004Student MemberPHP 5,000
TYPE_005Corporate MemberPHP 25,000

Test Cases

TC-DUES-001: View Current Dues Settings

StepActionExpected Result
1Login as Admin User (ADMIN).Dashboard displayed.
2Navigate to Admin > Finance > Dues Settings.Dues settings page displayed.
3Verify global settings visible.Dues period, due date, grace period shown.
4Verify membership type dues.All types listed with their dues amounts.
5Verify exemptions configured.Founding Member shows as exempt.

TC-DUES-002: Update Dues Period Settings

StepActionExpected Result
1Access Dues Settings page.Settings displayed.
2Locate "Dues Period" setting.Current value: Annual (default).
3Verify options available.Annual, Semi-Annual, Quarterly.
4Change to "Semi-Annual".Selection changed.
5Save changes.API PUT /api/billing/admin/settings/dues called.
6Verify success message."Settings updated" displayed.
7Reload page.Setting persists as "Semi-Annual".

TC-DUES-003: Update Due Date Setting

StepActionExpected Result
1Access Dues Settings.-
2Locate "Due Date" setting.-
3Set due date: January 31st.Date selected.
4Save changes.Settings saved.
5Verify.New invoices will have January 31 due date.

TC-DUES-004: Configure Grace Period

StepActionExpected Result
1Locate "Grace Period" setting.-
2Set grace period: 30 days.Value entered.
3Save changes.Settings saved.
4Verify behavior.Invoices marked OVERDUE 30 days after due date.

TC-DUES-005: Update Membership Type Dues Amount

StepActionExpected Result
1Locate "Regular Member" dues.Current: PHP 15,000.
2Update amount to PHP 16,500.New amount entered.
3Save changes.Settings saved.
4Verify update.Regular Member dues now PHP 16,500.
5Verify existing invoices unchanged.Already created invoices keep PHP 15,000.
6Create new dues invoice.New invoice uses PHP 16,500.

TC-DUES-006: Configure Dues Exemption

StepActionExpected Result
1Locate Founding Member type.Exempt checkbox checked.
2Uncheck exemption (test).Exemption removed.
3Save changes.Settings saved.
4Verify calculation.Founding Members now have dues calculated.
5Re-check exemption.Exemption restored.
6Save.Founding Members exempt again.

TC-DUES-007: Add New Membership Type with Dues

StepActionExpected Result
1Click "Add Membership Type" (if in settings).Form opens.
2Enter name: "Lifetime Member".Name entered.
3Set dues: PHP 0 (exempt).Exempt selected.
4Save.New type created with exemption.
5Verify in list."Lifetime Member" appears with exempt status.

TC-DUES-008: Configure Pro-Rata Setting

StepActionExpected Result
1Locate "Pro-Rata Dues" toggle.Setting displayed.
2Enable pro-rata calculation.Toggle on.
3Set pro-rata method: Monthly.Method selected.
4Save.Settings saved.
5Test calculation for mid-year join.Member joining July pays 6/12 of annual dues.

TC-DUES-009: Disable Pro-Rata

StepActionExpected Result
1Disable pro-rata toggle.Toggle off.
2Save.Settings saved.
3Test calculation for mid-year join.Full annual dues charged regardless of join date.

TC-DUES-010: Validation - Negative Dues Amount

StepActionExpected Result
1Edit a membership type dues.-
2Enter negative amount: -1000.Amount entered.
3Attempt to save.Validation error: "Dues amount cannot be negative".

TC-DUES-011: Validation - Invalid Grace Period

StepActionExpected Result
1Enter grace period: -5 days.Value entered.
2Attempt to save.Validation error: "Grace period must be 0 or greater".

TC-DUES-012: Permission - Finance Manager View

StepActionExpected Result
1Login as Ana Reyes (FINANCE_MANAGER).Dashboard displayed.
2Access Dues Settings.Settings displayed (read-only or limited edit).
3Verify view capability.Can see all settings.
4Verify edit restrictions.May or may not be able to edit (role-dependent).

TC-DUES-013: Permission - Member Cannot Access

StepActionExpected Result
1Login as Maria Cruz (MEMBER).Member dashboard.
2Attempt to access Dues Settings.Access denied or menu not visible.
3Attempt direct API call.Status 403 Forbidden.

TC-DUES-014: Configure Auto-Generate Dues Invoices

StepActionExpected Result
1Locate "Auto-Generate Invoices" setting.Toggle displayed.
2Enable auto-generation.Toggle on.
3Set generation date: December 1st.Date selected.
4Save.Settings saved.
5Verify.System will auto-generate dues invoices on Dec 1.

TC-DUES-015: Configure Dues Reminder Schedule

StepActionExpected Result
1Locate reminder settings.Reminder config displayed.
2Enable reminders.Toggle on.
3Set reminder schedule: 7 days before due, on due date, 7 days after.Schedule configured.
4Save.Settings saved.
5Verify.Reminders will be sent per schedule.

API Test Cases

TC-DUES-API-001: GET /api/billing/admin/settings/dues

Expected Response: 200 OK

{

"duesPeriod": "ANNUAL",

"dueDate": {

"month": 1,

"day": 31

},

"gracePeriodDays": 30,

"proRataEnabled": true,

"proRataMethod": "MONTHLY",

"autoGenerateInvoices": true,

"autoGenerateDate": {

"month": 12,

"day": 1

},

"membershipTypeDues": [

{

"typeId": "TYPE_001",

"name": "Founding Member",

"amount": 0,

"isExempt": true

},

{

"typeId": "TYPE_002",

"name": "Regular Member",

"amount": 15000,

"isExempt": false

}

],

"reminders": {

"enabled": true,

"schedule": [-7, 0, 7, 14]

}

}

TC-DUES-API-002: PUT /api/billing/admin/settings/dues

Request:

{

"duesPeriod": "SEMI_ANNUAL",

"gracePeriodDays": 15,

"membershipTypeDues": [

{ "typeId": "TYPE_002", "amount": 16500, "isExempt": false }

]

}

Expected Response: 200 OK

{

"success": true,

"message": "Dues settings updated",

"updatedAt": "timestamp"

}

TC-DUES-API-003: PUT /api/billing/admin/settings/dues - Invalid Amount

Request:

{

"membershipTypeDues": [

{ "typeId": "TYPE_002", "amount": -100, "isExempt": false }

]

}

Expected Response: 400 Bad Request

{

"error": "VALIDATION_ERROR",

"message": "Dues amount cannot be negative"

}