Skip to content

IR56M recipient modal — click a contributing transaction to open its standalone detail

Why (owner, 2026-06-29)

"Can you also make it so that by clicking on the transactions shown in the IR56M modal, it shows the standalone Transactions Detail modal window?"

The IR56M recipient modal's page 0 (the "Contributing transactions" audit list, T-121) showed each bank transaction that rolls up to the recipient's YA total, but the rows were inert — no way to inspect a specific transaction while reviewing what's about to be declared.

What shipped

components/accounting/tax/IR56MRecipientModal.tsx — the audit-list table (RecipientAuditList) now drills through: each row is clickable and opens the standalone transaction detail at /transactions/[id] in a new browser tab.

  • The row id is the bank-tx document id, already returned by /api/accounting/ir56m/recipient-payments (its id field was added with the comment "lets a future drill-through open the tx in Accounting" — this is that drill-through).
  • New tab, not in-place navigation: the IR56M modal may be mid-edit, so opening a separate window keeps the filing context intact for cross-reference.
  • Affordance: pointer cursor + native hover title + a "Click any row to open that transaction's full detail in a new tab" hint above the list.

Reuses the existing purpose-built /transactions/[id] page (the same standalone detail the Bank Transaction Register XLSX links to). It is erl-scoped via getTransaction, which matches IR56M's current erl scope.

Verification

  • Attestation (Accounting (Diagnostics)): read AGENTS.md; checked the board by scope, not UID — T-121 built the audit list but no task covered making its rows open the standalone detail. Tracking T-141.
  • Source: Accounting (Diagnostics) · https://claude.ai/code/session_01G58Y71noihrYCDEDMexmea
  • NODE_OPTIONS=--max-old-space-size=4096 npx tsc --noEmit clean; npx vitest run green.

Note (separate finding, not in this task)

While tracing how transactions reach a recipient's IR56M, I confirmed the candidate scan (lib/accounting/ir56m.ts / ir56m.server.ts) treats every expense-type GL code as reportable remuneration — so non-remuneration expenses like 6400 (Bank Charges & Fees) and 6520 (Staff Welfare & Events) paid to a directory payee are swept into that payee's IR56M total. That is a scan-scope question (an allow-list of true remuneration codes vs the whole expense set), to be decided with the owner before any change — flagged, not changed here.

Blast Radius

IR56M recipient modal audit list only. No API, data-shape, or schedule-logic change — purely a click-through to an existing read-only detail page.

Commit index (backfilled 2026-07-01, best-effort · Coaching (Diagnostic))

Candidate related commits, auto-backfilled from git on main: commits whose message references this task's UID or a PR number it cites. Not verified — this squash-merged history can't yield a precise per-task list, so rows tagged (mentions only) name the task in passing (may be tangential) and untagged work commits may be missing. Treat as a starting point: verify, prune tangential rows, and append any real ones per the AGENTS.md "record every related SHA" policy.

  • (no git-discoverable commit references this UID or its PRs — append real SHAs here as identified.)