From 1f5f1639c727f3062767249731e084d4114ca617 Mon Sep 17 00:00:00 2001 From: jtricerolph Date: Thu, 2 Jul 2026 09:13:26 +0000 Subject: [PATCH] Weekly report status bar: show variance instead of cash total MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Variance = banked total - reported total across all payment categories. Green badge = balanced, red = short (▼), amber = over (▲). Days with no cash up show no variance (nothing was counted). Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/pages/MultiDayReport.tsx | 28 ++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/MultiDayReport.tsx b/frontend/src/pages/MultiDayReport.tsx index ebbc564..3a784c3 100644 --- a/frontend/src/pages/MultiDayReport.tsx +++ b/frontend/src/pages/MultiDayReport.tsx @@ -375,13 +375,27 @@ export function MultiDayReport() { Click cell, then Shift+Click to select range. Ctrl+C to copy.

- {days.map(day => ( -
-
{fmtDate(day.date)}
- {day.cash_up ? : None} - {day.cash_up &&
{fmtGBP(day.cash_up.total_cash_counted)}
} -
- ))} + {days.map(day => { + const banked = day.reconciliation.reduce((s, r) => s + r.banked_amount, 0) + const reported = day.reconciliation.reduce((s, r) => s + r.reported_amount, 0) + const variance = banked - reported + const varColor = Math.abs(variance) < 0.005 ? '#155724' : variance < 0 ? '#721c24' : '#856404' + const varBg = Math.abs(variance) < 0.005 ? '#d4edda' : variance < 0 ? '#f8d7da' : '#fff3cd' + const varLabel = Math.abs(variance) < 0.005 ? 'Balanced' : (variance < 0 ? '▼ ' : '▲ +') + fmtGBP(variance) + return ( +
+
{fmtDate(day.date)}
+ {day.cash_up + ? + : None} + {day.cash_up && ( +
+ {varLabel} +
+ )} +
+ ) + })}