Test Cases: Invoice Listing & Filtering

⚠️ Filter labels corrected — see the Billing index. Invoices are under the sidebar Finance group (not "Billing") at /admin/invoices. The admin list filters are: Status = All / Outstanding / Overdue / Paid / Cancelled · Source = All / Dues / Donation / Event / Other · Period = All Time / YTD / 12 Months / 30 Days. (The old "Pending / Voided / Issued" labels are wrong.) The member page (/invoices, "My Invoices & Payments") tabs are Outstanding / Recently Paid / History. Admin list endpoint = GET /api/billing/invoices/tenant.

Module: Billing & Invoicing - Invoice Listing

Backend Endpoint: GET /api/billing/invoices, GET /api/billing/admin/invoices

Frontend Pages:

Prerequisites

Test Data

InvoiceMemberStatusAmountDue Date
RCME-DUES-0001Maria CruzPAIDPHP 15,000Past
RCME-DUES-0002Antonio Dela CruzPENDINGPHP 15,000Future
RCME-DUES-0003Antonio Dela CruzOVERDUEPHP 2,500Past
RCME-DUES-0004Isabella RamosVOIDEDPHP 15,000Past
RCME-DUES-0005Maria CruzPARTIALLY_PAIDPHP 3,500Future

Test Cases

TC-BIL-008: Admin View All Invoices

StepActionExpected Result
1Login as Admin User (ADMIN).Dashboard displayed.
2Navigate to Admin > Invoices.Invoice list page displayed.
3Verify invoice list.All invoices from all members displayed.
4Verify columns displayed.Invoice #, Member, Amount, Status, Due Date, Created Date visible.
5Verify default sorting.Sorted by created date (newest first).
6Verify pagination.Pagination controls visible if > page size.

TC-BIL-009: Member View Own Invoices Only

StepActionExpected Result
1Login as Maria Cruz (MEMBER).Member dashboard displayed.
2Navigate to My Invoices / Billing.Invoice list displayed.
3Verify invoices shown.Only RCME-DUES-0001 and RCME-DUES-0005 visible.
4Verify no access to other members' invoices.Antonio Dela Cruz's invoices NOT visible.

TC-BIL-010: Filter by Status - PENDING

StepActionExpected Result
1Login as ADMIN, navigate to Invoices.Invoice list displayed.
2Click status filter dropdown.Status options displayed: All, Pending, Paid, Overdue, Voided.
3Select "Pending".List filtered to show only PENDING invoices.
4Verify results.RCME-DUES-0002 displayed. Others hidden.

TC-BIL-011: Filter by Status - OVERDUE

StepActionExpected Result
1Select "Overdue" status filter.List filtered.
2Verify results.RCME-DUES-0003 displayed (Antonio Dela Cruz's overdue invoice).
3Verify visual indicator.Overdue invoices highlighted in red/warning color.

TC-BIL-012: Filter by Member

StepActionExpected Result
1Access member search/filter field.Filter input displayed.
2Type "Maria Cruz".Autocomplete suggestions appear.
3Select Maria Cruz.List filtered to Juan's invoices only.
4Verify results.RCME-DUES-0001 and RCME-DUES-0005 displayed.

TC-BIL-013: Filter by Date Range

StepActionExpected Result
1Access date range filter.Date picker displayed.
2Set start date: First day of current month.-
3Set end date: Last day of current month.-
4Apply filter.Only invoices created within date range displayed.

TC-BIL-014: Search by Invoice Number

StepActionExpected Result
1Locate search field.Search input visible.
2Enter "RCME-DUES-0003".Search executed.
3Verify results.Only RCME-DUES-0003 displayed.

TC-BIL-015: Combined Filters

StepActionExpected Result
1Set status filter: PENDING or OVERDUE.-
2Set member filter: Antonio Dela Cruz.-
3Apply both filters.Only Roberto's pending/overdue invoices shown.
4Verify results.RCME-DUES-0002 and RCME-DUES-0003 displayed.

TC-BIL-016: Sort by Amount

StepActionExpected Result
1Click "Amount" column header.List sorted by amount ascending.
2Click again.List sorted by amount descending.
3Verify order.PHP 2,500 < PHP 3,500 < PHP 15,000

TC-BIL-017: Sort by Due Date

StepActionExpected Result
1Click "Due Date" column header.List sorted by due date.
2Verify overdue invoices.Past due dates appear first (ascending) or last (descending).

TC-BIL-018: Empty State - No Invoices

StepActionExpected Result
1Login as a member with no invoices (Miguel Fernandez).-
2Navigate to My Invoices.Empty state displayed.
3Verify message."No invoices found" or similar message displayed.

TC-BIL-019: Pagination

StepActionExpected Result
1Ensure > 25 invoices exist in system.-
2Navigate to Admin > Invoices.First page displayed (e.g., 25 items).
3Click "Next" or page 2.Second page of results displayed.
4Verify item count.Correct number of items per page.
5Navigate to last page.Last page displays remaining items.

TC-BIL-020: Quick Actions from List

StepActionExpected Result
1Hover over an invoice row.Action buttons appear (View, Send, Download).
2Click row or "View" button.Invoice detail page opens.
3Click "Download" (PDF icon).Invoice PDF downloads.
4Click "Send" (email icon).Invoice email sent confirmation.

API Test Cases

TC-BIL-API-004: GET /api/billing/admin/invoices - List All

Request: GET /api/billing/admin/invoices

Expected Response: 200 OK

{

"invoices": [

{

"id": "uuid",

"invoiceNumber": "RCME-DUES-0001",

"member": { "id": "...", "name": "Maria Cruz", "email": "testmember@rcme.membervu.com" },

"total": 15000,

"status": "PAID",

"dueDate": "2024-01-15",

"paidDate": "2024-01-10"

}

],

"pagination": {

"page": 1,

"pageSize": 25,

"total": 100

}

}

TC-BIL-API-005: GET /api/billing/admin/invoices?status=OVERDUE

Request: GET /api/billing/admin/invoices?status=OVERDUE

Expected Response: 200 OK with only overdue invoices

TC-BIL-API-006: GET /api/billing/invoices (Member Endpoint)

Request: GET /api/billing/invoices (as Maria Cruz)

Expected Response: 200 OK with only Juan's invoices (NEVER other members')