# Phase 3C manual test script: receipts, pledges, the review step and cheques

For the financial secretary, a department head, the accountant, the pastor and the treasurer. About 35
minutes. The rules (gap-free receipt numbers, one per giver, email only with consent, instalments and
reminders, review before approval, nobody doing two steps, cheque order, spoilt leaves, presented on
matching) are also proved by `tests/Feature/IncomeExpenditureTest.php`; this script checks what people see.

**Staff app:** http://localhost/church_acct_app/public/app
**Logins** (demo church, no two-factor; password `DEMO_PASSWORD` at the top of `database/seeders/DatabaseSeeder.php`):
**finsec@**, **media@** (department head), **accountant@**, **pastor@**, **treasurer@**, **counter1@**, **counter2@** `demo.church.test`.

**Already on the local database from the developer's check (18 Oct):** campaign "Building Fund 2027" with
a 4 × monthly pledge by Chukwuemeka Okafor; the demo's Sunday Service batch posted with 14 receipts
(RCT-HQ-2026-000001 to 000014); cheque book 200101–200150 on the Main Current Account, with cheque 200101
paid on PV-HQ-2026-000006.

## A. Receipts (financial secretary)

1. [ ] Open a posted giving batch (**Giving batches**, the Sunday Service). **Receipts** lists one per named
   giver and one "Plate offering and unidentified gifts"; ✉ marks those emailed.
2. [ ] Click a receipt: the PDF shows the church and branch, receipt number, date, the giver, what for and
   the total.
3. [ ] Open a member who gave (e.g. Chukwuemeka Okafor): their receipts are listed under **Recent giving**.
4. [ ] Record and post a new batch with a gift from a member who has agreed to email, and one who has not
   (**Messages** shows the first as sent and the second as skipped, "no email consent").
5. [ ] **Reports › Receipt Register** for this month: every receipt, and a note that the total agrees with
   the giving posted.

## B. Pledges (financial secretary, treasurer)

6. [ ] **Giving & Members › Pledges** (treasurer): press **New campaign**, e.g. "Harvest 2026" with a
   target. Its card shows pledged and paid against the target.
7. [ ] As the financial secretary, open a member, **+ Pledge**: choose the campaign, ₦60,000, monthly,
   3 instalments, first due next month. The pledge shows "3 × monthly" and the next due date.
8. [ ] Record a gift against that pledge in a batch and post it: the pledge's paid amount rises; once the
   gifts reach the amount, it shows **Fulfilled**.
9. [ ] `php artisan pledges:remind` three days before an instalment queues a reminder to a member who is
   behind and has agreed to SMS or email; running it again sends nothing new.
10. [ ] **Reports › Pledge Status**: pledges grouped by campaign with pledged, paid, outstanding, behind and
    next due; behind rows are highlighted.

## C. The review step (department head, accountant, pastor, treasurer)

11. [ ] As media@, create a requisition and **Submit for review**: status "Awaiting review".
12. [ ] As the pastor, open it: there is no **Approve** yet. As the accountant, the dashboard shows
    "requisition(s) awaiting review"; open it and press **Reviewed: send for approval** with a comment.
13. [ ] As the accountant, there is no **Approve** button (you reviewed it). As the pastor, **Approve**.
14. [ ] As the pastor, there is no **Pay** form (you approved it). As the treasurer, pay it.
15. [ ] Press **Print** beside the payment voucher: the PDF shows prepared, reviewed, approved and paid,
    each with a name and date.
16. [ ] Submit another requisition; as the accountant press **Reject** at review with a reason: it shows
    Rejected with the reason.

## D. Cheques (treasurer, accountant)

17. [ ] **Banking › Cheques**: the cheque book shows the next leaf and how many are left. Try registering
    an overlapping range: refused.
18. [ ] Pay an approved requisition **by cheque**: no number to type; the voucher's reference is the next
    leaf ("Cheque CHQ 200102") and the register shows it issued.
19. [ ] **Spoil next leaf…** with a reason: the number appears as spoilt; the next payment by cheque skips it.
20. [ ] Import or enter the bank statement line for a cheque and match it (Banking › the account): the
    cheque shows **presented** with the statement date. Unmatch it: back to issued.
21. [ ] **Reports › Cheque Register** and **Payment Voucher Register** for this month: every number with
    its status, and every voucher (requisitions, supplier bills, welfare) with method and reference.
22. [ ] Pay a welfare case by cheque: the cheque register shows "Welfare W-…", never the person's name.
