# Phase 3D manual test script: the general journal, and Phase 3 sign-off

For the accountant and the treasurer, then whoever signs off Phase 3. About 20 minutes. The rules are also
proved by `tests/Feature/GeneralJournalTest.php` and, for the whole of Phase 3, `BranchModulesProofTest`.

**Staff app:** http://localhost/church_acct_app/public/app
**Logins** (demo church, no two-factor; password `DEMO_PASSWORD` in `database/seeders/DatabaseSeeder.php`):
**accountant@** and **treasurer@** `demo.church.test` (see `docs/test-logins.md`).

## A. Reversing a mistake (accountant, then treasurer)

1. [ ] As the accountant, create a journal (e.g. ₦10,000 to 52030 Diesel from 11010 Cash) and save it; as the
   treasurer, post it.
2. [ ] As the accountant, open the posted journal and press **Reverse…**. The date offered is the journal's
   own date (its month is open). Give a reason, tick **Then enter the corrected journal**, and press
   **Draft the reversal**.
3. [ ] A new journal opens with the original's lines and memo "Correction of JV-…": change the heading to
   52050 Repairs and save it as a draft.
4. [ ] Open the original: a notice says a reversal is waiting to be posted, and **Reverse…** is gone. It is
   not marked reversed yet.
5. [ ] As the accountant, open the reversal draft: you cannot post it (you prepared it). As the treasurer,
   post it, then the corrected journal: the original now shows **reversed** and links to its reversal.
6. [ ] Close last month under Setup › Periods, then reverse a journal dated last month: the date offered
   is the 1st of this month.

## B. Accruals (accountant, treasurer)

7. [ ] New journal dated the last day of last month, e.g. electricity used but not yet billed: Dr 52020
   Electricity, Cr 21020 Accrued Expenses; tick **An accrual**. Save; the treasurer posts it. The journal
   says a reversal will be drafted on the 1st of this month.
8. [ ] Run `php artisan journals:automate`: a reversal draft dated the 1st appears in the accountant's
   name; the treasurer posts it. Running the command again makes nothing new.

## C. Recurring journals (accountant)

9. [ ] Open a posted manual journal and press **Make recurring…**: monthly, first run tomorrow, ending in
   three months. **Journals › Recurring** lists it with its next run and amount.
10. [ ] **Make due drafts now** says nothing is due yet. After the first run date (or with
    `php artisan journals:automate` on that day), a draft "… (Mon YYYY)" appears for a second person to post.
11. [ ] **Pause** and **Resume** work; a paused template makes nothing.

## D. Phase 3 sign-off

12. [ ] Read `docs/phases/phase-3-exit-evidence.md`: each exit criterion (maker-checker works, the
    reconciliation statement balances, reports tie to the ledger) names how it is enforced and the test
    that proves it.
13. [ ] Optional, for a technical reviewer: `php artisan test` passes, including **BranchModulesProofTest**.
14. [ ] Phase 3 accepted: ______________________ (name, date)
