FundCustodian PWA — Guided Walkthrough (22 Steps) URL: https://srv1111289.hstgr.cloud/finance/custodian/ Generated: 2026-05-28 ====================================================== HOW TO USE THIS FILE -------------------- - Do ONE step at a time. Come back to Claude after each step. - Tell Claude what you saw. If it matches "Expected" → move on. - If it does NOT match → Claude will investigate before proceeding. - All logins are via Hub first: https://srv1111289.hstgr.cloud/hub/ - After Hub login, go directly to /finance/custodian/ (session auto-picked) CUSTODIANS & PINs ----------------- pramod → Pramod Narang PIN: 0000 (change if updated) harish → Harish Kumar Lal PIN: 0000 (change if updated) shambhu → Shambhu PIN: 5555 gurpreet → Gurpreet PIN: 8888 mukesh → Mukesh (NOT a custodian) PIN: 1111 BEFORE STEP 1 — CONFIRM CLEAN SLATE ------------------------------------- All 4 wallet balances must show ₹0.00 before you begin. Ask Claude to confirm the wipe was done if you haven't already. ══════════════════════════════════════════════════════ PART A — NON-CASH TRANSFERS (auto-accepted, both wallets update instantly) ══════════════════════════════════════════════════════ STEP 1 — Pramod sends ₹30,000 NEFT to Shambhu ----------------------------------------------- Login as: pramod Screen: Transfer tab Fill: Role → I am the GIVER Other party → Shambhu Mode → NEFT Amount → 30000 Reference → NEFT-TEST-001 (reference field should appear for NEFT) Notes → Monthly field fund allocation Date → today Tap Submit Expected: - "Transfer recorded" success toast - You are returned to Dashboard - Your balance shows approximately ₹-30,000 - Shambhu does NOT need to accept (non-cash = instant) Design question to yourself: Does the NEFT reference field appear only when NEFT is selected? ---------------------------------------------- STEP 2 — Pramod sends ₹5,000 UPI to Gurpreet ---------------------------------------------- Login as: pramod (still logged in) Screen: Transfer tab Fill: Role → I am the GIVER Other party → Gurpreet Mode → UPI Amount → 5000 Reference → UPI-TEST-002 Date → today Tap Submit Expected: - Success toast - Pramod balance now approx ₹-35,000 Design question: Does switching modes (NEFT → UPI) still show the reference field? ---------------------------------------------- STEP 3 — Pramod sends ₹15,000 IMPS to Harish ---------------------------------------------- Login as: pramod (still logged in) Screen: Transfer tab Fill: Role → I am the GIVER Other party → Harish Mode → IMPS Amount → 15000 Reference → IMPS-TEST-003 Date → today Tap Submit Expected: - Success toast - Pramod balance approx ₹-50,000 Design question: IMPS mode — reference field visible? ---------------------------------------------- STEP 4 — Harish sends ₹10,000 Cheque to Pramod ------------------------------------------------ Login as: harish Screen: Transfer tab Fill: Role → I am the GIVER Other party → Pramod Mode → Cheque Amount → 10000 Reference → CHQ-TEST-004 (cheque number) Notes → HDFC account cheque Date → today Tap Submit Expected: - Success toast - Harish balance approx ₹+5,000 (received 15,000 in Step 3, gave 10,000 here) - NO pending banner for Pramod (cheque = non-cash = auto-accepted) Design question: Cheque mode shows reference field? Is "Cheque" available in advance form too? (It should NOT be — advances don't support cheque.) ══════════════════════════════════════════════════════ PART B — CASH TRANSFER ENTERED BY RECEIVER (also auto-accepted) ══════════════════════════════════════════════════════ STEP 5 — Shambhu records cash received from Harish (₹500) ----------------------------------------------------------- Login as: shambhu Screen: Transfer tab Fill: Role → I am the RECEIVER ← important: receiver, not giver Other party → Harish Mode → Cash Amount → 500 Notes → Small top-up for petty expenses Date → today Tap Submit Expected: - Success toast IMMEDIATELY (no pending — receiver-entered cash = auto_accepted) - Shambhu balance increases by ₹500 - Harish balance decreases by ₹500 - NO pending banner on Harish's dashboard Design question: Is the role selector (Giver / Receiver) clear enough for a field worker? Does switching to Receiver change any visible info on screen? ---------------------------------------------- STEP 6 — Gurpreet records cash received from Pramod (₹1 minimum test) ----------------------------------------------------------------------- Login as: gurpreet Screen: Transfer tab Fill: Role → I am the RECEIVER Other party → Pramod Mode → Cash Amount → 1 Notes → Minimum amount test Date → today Tap Submit Expected: - Success toast (₹1 is valid, auto-accepted) - Gurpreet balance: ₹+5,001 (5000 from Step 2 + 1 here) Design question: Does ₹1 work without any validation error? (It should — minimum allowed is any amount > 0) ══════════════════════════════════════════════════════ PART C — CASH TRANSFER ENTERED BY GIVER (goes PENDING, needs acceptance) ══════════════════════════════════════════════════════ STEP 7 — Shambhu records cash handover to Pramod ₹5,000 (giver) ----------------------------------------------------------------- Login as: shambhu Screen: Transfer tab Fill: Role → I am the GIVER Other party → Pramod Mode → Cash Amount → 5000 Notes → Cash handover from field Date → today Tap Submit Expected: - Success toast - Notice: a yellow/orange "pending info" notice should be visible on screen BEFORE submitting (when Cash + Giver is selected) — warning you that the receiver must confirm - Shambhu balance DECREASES by ₹5,000 immediately (giver wallet debited on submit) - Pramod balance does NOT change yet (waiting for acceptance) Design question: Is the pending-info warning visible BEFORE tapping submit? Is the wording clear? ---------------------------------------------- STEP 8 — Pramod accepts Shambhu's pending cash ------------------------------------------------ Login as: pramod Screen: Dashboard (home screen) Expected on arrival: - An orange/yellow "pending transfers" banner at the TOP of dashboard - Shows: "1 pending transfer needs your confirmation" - Shows Shambhu's name and ₹5,000 Action: Tap ACCEPT on Shambhu's pending item Expected after accept: - Banner disappears (or updates count) - Pramod balance INCREASES by ₹5,000 - In Pramod's Ledger, the transfer shows status: Accepted Design question: Is the accept/reject action easy to find? Is the pending banner prominent enough? ══════════════════════════════════════════════════════ PART D — REJECTION FLOWS ══════════════════════════════════════════════════════ STEP 9 — Gurpreet records cash ₹2,000 to Harish (giver — will be rejected) ---------------------------------------------------------------------------- Login as: gurpreet Screen: Transfer tab Fill: Role → I am the GIVER Other party → Harish Mode → Cash Amount → 2000 Notes → Field collection handover Date → today Tap Submit Expected: - Success toast - Gurpreet balance decreases ₹2,000 - Harish gets a pending banner on his dashboard ---------------------------------------------- STEP 10 — Harish REJECTS Gurpreet's cash WITH a reason ------------------------------------------------------- Login as: harish Screen: Dashboard Expected on arrival: - Pending banner showing Gurpreet, ₹2,000 Action: Tap REJECT on Gurpreet's item - A modal/sheet should appear asking for rejection reason - Type: "Amount does not match — please recount and resubmit" - Tap Confirm Reject Expected after rejection: - Gurpreet wallet REFUNDED +₹2,000 (returns to original balance) - Harish balance unchanged - In ledger: transfer shows "Rejected" - Rejection reason stored and visible in ledger row Design question: Is the rejection reason field clear? Is it mandatory or optional? ---------------------------------------------- STEP 11 — Shambhu records cash ₹800 to Harish (giver — will be rejected without reason) ----------------------------------------------------------------------------------------- Login as: shambhu Screen: Transfer tab Fill: Role → I am the GIVER Other party → Harish Mode → Cash Amount → 800 Notes → (leave blank) Date → today Tap Submit Expected: - Success, pending - Shambhu balance decreases ₹800 ---------------------------------------------- STEP 12 — Harish REJECTS Shambhu's cash WITHOUT any reason ------------------------------------------------------------ Login as: harish Screen: Dashboard - Pending banner should show Shambhu ₹800 Action: Tap REJECT - When reason modal appears → leave reason field EMPTY - Tap Confirm Reject Expected: - Rejection succeeds even with blank reason (reason is optional) - Shambhu refunded ₹800 - Ledger shows "Rejected" with no reason text Design question: Should rejection reason be mandatory? (Currently it is optional — is that your intent?) ══════════════════════════════════════════════════════ PART E — ADVANCES TO EMPLOYEES ══════════════════════════════════════════════════════ STEP 13 — Shambhu gives ₹5,000 cash advance to Mukesh ------------------------------------------------------ Login as: shambhu Screen: Advance tab Fill: Employee → Mukesh (select from dropdown) Mode → Cash Amount → 5000 Purpose → Tour expenses — Chandigarh to Amritsar Date → today Tap Submit Expected: - Success toast - Shambhu balance decreases ₹5,000 immediately (no acceptance needed for advances) - On Dashboard: Mukesh appears in "Outstanding Advances" section - Shows amount ₹5,000, status: Outstanding Design question: Advances never go "pending" — they debit immediately. Is that your intent? ---------------------------------------------- STEP 14 — Harish gives ₹1,500 UPI advance to Mukesh (same employee, 2nd advance) ---------------------------------------------------------------------------------- Login as: harish Screen: Advance tab Fill: Employee → Mukesh Mode → UPI Reference → UPI-MUKESH-TEST Amount → 1500 Purpose → Fuel and accommodation — Ludhiana trip Date → today Tap Submit Expected: - Success - Harish balance decreases ₹1,500 - On Harish's dashboard: Mukesh now appears TWICE in Outstanding Advances (once from Shambhu's Step 13, once from Harish's Step 14) - As Harish is admin: both entries visible Design question: Multiple advances to same employee — is this clearly shown? Can you tell which custodian gave each advance? ---------------------------------------------- STEP 15 — Pramod gives ₹20,000 NEFT advance to Umashankar (large amount) -------------------------------------------------------------------------- Login as: pramod Screen: Advance tab Fill: Employee → Umashankar Mode → NEFT Reference → NEFT-UMASHANKAR-TEST Amount → 20000 Purpose → Field expenses — Amritsar activation Date → today Tap Submit Expected: - Success - Pramod balance decreases ₹20,000 Design question: NEFT reference field visible in advance form? (It should appear for UPI/NEFT/IMPS) ---------------------------------------------- STEP 16 — Shambhu gives ₹800 IMPS advance to Ranjit Singh (Contract) — "Other" employee ------------------------------------------------------------------------------------------ Login as: shambhu Screen: Advance tab Fill: Employee → Other (select "Other" from dropdown) Name field → Ranjit Singh (Contract) ← manual name field should appear Mode → IMPS Reference → IMPS-RANJIT-TEST Amount → 800 Purpose → Labour charges advance Date → today Tap Submit Expected: - Manual name field appears when "Other" is selected - Success - Advance appears on dashboard as "Ranjit Singh (Contract)" Design question: Is "Other" option prominent enough? Does the manual name field appear cleanly? ---------------------------------------------- STEP 17 — Pramod gives ₹5,000.75 cash advance to Ramesh Thakur (Vendor) — decimal test ---------------------------------------------------------------------------------------- Login as: pramod Screen: Advance tab Fill: Employee → Other Name field → Ramesh Thakur (Vendor) Mode → Cash Amount → 5000.75 ← decimal amount Purpose → Vendor advance — flex printing Date → today Tap Submit Expected: - ₹5,000.75 accepted without error (decimal amounts allowed) - Pramod balance decreases ₹5,000.75 - Ledger shows ₹5,000.75 exactly (not rounded) Design question: Are decimal amounts displaying correctly throughout the PWA? ══════════════════════════════════════════════════════ PART F — ADVANCE SETTLEMENTS ══════════════════════════════════════════════════════ NOTE: Settlements link an advance to an Expense Sheet that was approved. The Expense PWA integration is NOT built yet, so we test this path manually via the Manage/Admin interface if available, or note it as a pending feature. STEP 18 — Partial settlement (₹1,000 against Sachin's ₹2,500 advance) ----------------------------------------------------------------------- ⚠️ CHECK: Is there a "Settle Advance" button/option in the PWA? If yes: Login as harish (admin), find Sachin's advance, tap Settle, enter ₹1,000, Sheet ID: ES-TEST-001, tap confirm. If no button exists: Note this as a feature not yet built in the UI. Expected if available: - Sachin's advance changes from "Outstanding" to "Partially Settled" - Outstanding amount updates from ₹2,500 → ₹1,500 Design question: How does a custodian record a settlement today? Is this done from the Expense PWA side or from the Custodian PWA? ---------------------------------------------- STEP 19 — Full settlement (₹3,000 Narender advance, 2 part-settlements) ------------------------------------------------------------------------ Same question as Step 18 — if settlement UI exists: Part 1: Settle ₹1,500 → status becomes Partially Settled Part 2: Settle remaining ₹1,500 → status becomes Settled (₹0 outstanding) Expected: - After Part 2: advance disappears from Outstanding Advances section - Shows "Settled" badge in Ledger → Advances tab Design question: Once fully settled, does the advance disappear from the dashboard outstanding section? Is that correct? ══════════════════════════════════════════════════════ PART G — ADMIN VIEWS ══════════════════════════════════════════════════════ STEP 20 — Harish (admin) reviews all balances and ledger --------------------------------------------------------- Login as: harish Screen: Dashboard Expected: - "All Custodian Balances" grid shows all 4 custodians with their balances - Pramod tile shows "Primary" badge - Each tile shows name + balance (positive in green, negative in red/muted) Then go to: Ledger tab - A "Filter by custodian" dropdown should be visible (admin only) - Switch filter to Shambhu → only Shambhu's transfers show - Switch to Advances tab → see all custodians' advances (admin sees all) Design question: Is the admin balance grid on the dashboard useful? Does it give you enough at a glance? ---------------------------------------------- STEP 21 — Pramod opens Manage Custodians ----------------------------------------- Login as: pramod Screen: Dashboard → tap Manage (top-right button, admin only) Expected: - Manage Custodians screen opens - All 4 custodians listed - Pramod shows "⭐ Primary" badge - "Add Custodian" form at bottom with Employee ID + Name fields Test: Enter a blank ID → should show error "employee ID required" Test: Enter a blank Name → should show error "name required" Do NOT actually add a custodian — just verify the form validates. Design question: Is there a way to DEACTIVATE a custodian (not delete, just mark inactive)? Currently: is_active column exists in DB but no UI for it yet. ---------------------------------------------- STEP 22 — Mukesh (non-custodian) is blocked -------------------------------------------- Login as: mukesh (PIN 1111) via Hub Navigate to: https://srv1111289.hstgr.cloud/finance/custodian/ Expected: - "Access Restricted" screen appears - Says this area is for fund custodians only - Link to go back to Hub - NO access to any custodian data Design question: Is the wording on the Access Restricted screen appropriate for a field worker? ══════════════════════════════════════════════════════ DONE — After all 22 steps, tell Claude: - Which steps matched your design intent ✅ - Which steps surprised you or felt wrong ⚠️ - Any changes you want to make to the PWA design ══════════════════════════════════════════════════════ EXPECTED FINAL WALLET BALANCES (approximate, depends on your amounts) ----------------------------------------------------------------------- These will vary based on exact amounts you entered. Claude will calculate the exact expected balance after each step and verify against the DB. FILE END