# Phase 3A manual test script: cash book and imprest

For the Ikeja cashier, the Ikeja treasurer and someone from HQ Finance. About 25 minutes. The rules (limits,
never below zero, who may approve, fund-by-fund top-ups, two signatures) are also proved by
`tests/Feature/CashBookTest.php`; this script checks what people see.

**Staff app:** http://localhost/church_acct_app/public/app
**Logins** (top of `database/seeders/TobasSeeder.php`): **ikeja.cashier@toprc.test** (no two-factor),
**ikeja.treasurer@toprc.test** (two-factor), **hq.finance@toprc.test** (two-factor).
**Demo data:** the Ikeja church office float, kept by the Ikeja cashier (`php artisan db:seed --class=CashBookSeeder`).

## A. The float and its vouchers (as ikeja.cashier)

1. [ ] Open **Accounting & Reports › Cash and imprest**. The **Ikeja church office** float shows a limit of
   ₦50,000.00, what it holds now, and what was spent since the last top-up.
2. [ ] Press **Record voucher**. Fill in who was paid, an expense heading (e.g. 52030 Diesel), what was
   bought and an amount larger than the float holds: refused with "The float holds only …". What you typed
   is still there.
3. [ ] Change the amount to ₦2,000 and save. The voucher appears below with the next number
   (`PCV-BR002-2026-…`) and the float holds ₦2,000 less. The form is empty again.
4. [ ] Click the voucher number: its journal opens (Dr the expense, Cr 11021 Imprest - Ikeja church office).
   Attach a photo of a receipt there.
5. [ ] Press **Ask for top-up**. A request (`IMP-BR002-2026-…`) for everything spent appears under
   **Top-up requests** as "requested". You cannot approve it yourself (no buttons), and **Ask for top-up**
   is gone until it is decided.

## B. Approving the top-up (as ikeja.treasurer)

6. [ ] Open **Cash and imprest**. On the request press **Approve…**, choose the Ikeja Offering Account and
   approve. The status becomes "approved" with your name and a journal number, and the float holds
   ₦50,000.00 again.
7. [ ] Have the cashier record one more small voucher and ask for another top-up. This time press
   **Return** and give a reason: the request shows "rejected" with the reason, its vouchers show "not yet
   claimed" again, and the cashier can ask again.

## C. Opening a float (as ikeja.treasurer)

8. [ ] Press **Open a float**: Ikeja, "Youth Church", custodian the Ikeja cashier, limit ₦10,000. It appears
   with ₦0.00. Under **Setup › Chart of accounts** it is a sub-account of 11020 in Ikeja.
9. [ ] Press **Issue cash** and try ₦15,000: refused (above the limit). ₦10,000 works.
10. [ ] **Edit** › **Close float…** while it holds money: refused ("Bank the cash … before closing it").

## D. Cash count (cashier, then treasurer)

11. [ ] As the cashier press **New count**, choose 11021 Imprest - Ikeja church office, type the notes and
    coins (e.g. ₦1,000 × 30, ₦500 × 9) and save. Press **Sign**.
12. [ ] As the treasurer press **Sign** on the same count. It completes: the books' figure and the
    difference show, and a shortage or excess has a journal posted to 54060 Cash Count Shortage or 43030
    Cash Count Excess. An exact count posts nothing.
13. [ ] Start another count, sign it, then press **Change** and alter a quantity: the signature is cleared.

## E. Cash book and branch walls

14. [ ] **Reports › Cash Book**, account 11021, this month: every movement in date order with **Entered by**
    and a running balance; the closing balance equals what the float holds and the general ledger.
15. [ ] As ajah.treasurer@toprc.test, **Cash and imprest** shows no Ikeja float, vouchers or counts.
16. [ ] As hq.finance, the page lists the Ikeja float (read-only: HQ Finance views, it does not spend).
