# 今日總計 Dialog — Design **Date:** 2026-06-20 **Component:** `APP/src/app/features/giving/pages/offering-entry-mobile-page` **Scope:** Frontend only. No backend or DTO changes (the bootstrap summary already returns every line with `paymentMethod`, `checkNumber`, `amount`). ## Goal When the volunteer taps the **今日總額 · Total** tally item on the mobile offering-entry page, open a dialog that breaks down today's giving by **payment method** and lists **each check's number and amount**. > Note: the original request also mentioned a per-category total block. The user > explicitly chose to omit it; this dialog shows payment-method + check breakdowns only. ## Trigger Make the `oe__tally-item` wrapping `systemTotal` clickable → `openTotals()`. Add a pointer cursor and a small affordance hint so it reads as tappable. ## Data On open, refetch `api.bootstrap(today)` and read `summary.lines` — a fresh cross-phone snapshot rather than the page-load list (which only stays live for `systemTotal` / `lineCount`, not the lines array). Show a "載入中… · Loading" state while in flight; on error, show a toast and close. ## Compute (client-side, from the refetched lines) - **methodSubtotals** — group lines by `paymentMethod`, sum `amount`. Render in fixed order Cash → Check → Zelle → PayPal → Other, skipping methods with no entries. Labels from `PAYMENT_METHOD_OPTIONS` (bilingual). - **checkLines** — lines where `paymentMethod === 'Check'`: `{ checkNumber, amount }`. `checkTotal` = sum of their amounts. - **grandTotal** — sum of all refetched line amounts (the snapshot's system total). ## Dialog (new `kendo-dialog *ngIf="showTotals"`, styled like quick-add/paper-proof) - Title: **今日總計 · Today's Totals** - Loading state: "載入中… · Loading" while the refetch is pending. - Section A — **各付款方式 · By method**: rows of `label … amount` (currency pipe). - Section B — **各支票 · Checks**: rows of `# checkNumber … amount`, with a **支票合計** footer. Empty → "今日無支票 · No checks". Blank number → "(無號碼 · no #)". - Footer: **今日總計 · Total** = grandTotal. - Close button. ## Files touched - `*.component.html` — clickable trigger + new dialog. - `*.component.ts` — `showTotals` / `totalsLoading` / `totalsLines` state, `openTotals()`, `closeTotals()`, and `methodSubtotals` / `checkLines` / `checkTotal` / `grandTotal` getters. - `*.component.scss` — totals list styles (reuse `oe__qa` body). ## Testing Manual: enter a mix of cash + check + Zelle lines, tap 今日總額, confirm method subtotals and check list match; confirm empty-checks and blank-check-number cases.