From 919c20f0182780f947c3a917c51c1164b616c2d4 Mon Sep 17 00:00:00 2001 From: Seazn Date: Mon, 16 Mar 2026 16:05:19 +0100 Subject: [PATCH] feat: add due date column to invoice table with conditional styling --- src/app/admin/finance-management/page.tsx | 25 ++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/app/admin/finance-management/page.tsx b/src/app/admin/finance-management/page.tsx index 9d6f73d..96d72ae 100644 --- a/src/app/admin/finance-management/page.tsx +++ b/src/app/admin/finance-management/page.tsx @@ -278,6 +278,7 @@ export default function FinanceManagementPage() { Invoice Customer Issued + Due Date Amount Status Actions @@ -286,12 +287,12 @@ export default function FinanceManagementPage() { {invLoading ? ( <> -
-
+
+
) : filteredBills.length === 0 ? ( - + Keine Rechnungen gefunden. @@ -301,6 +302,24 @@ export default function FinanceManagementPage() { {inv.invoice_number ?? inv.id} {inv.buyer_name ?? '—'} {inv.issued_at ? new Date(inv.issued_at).toLocaleDateString() : '—'} + + {(() => { + if (!inv.due_at) return + const due = new Date(inv.due_at) + const now = new Date() + const diffDays = Math.ceil((due.getTime() - now.getTime()) / (1000 * 60 * 60 * 24)) + let cls = 'bg-green-100 text-green-700' // plenty of time + if (inv.status === 'paid') cls = 'bg-green-100 text-green-700' + else if (diffDays < 0) cls = 'bg-red-100 text-red-700' + else if (diffDays <= 3) cls = 'bg-red-100 text-red-700' + else if (diffDays <= 7) cls = 'bg-amber-100 text-amber-700' + return ( + + {due.toLocaleDateString()} + + ) + })()} + €{Number(inv.total_gross ?? 0).toFixed(2)}{' '} {inv.currency ?? 'EUR'}