diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index e78f9e8..0d80a59 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -49,9 +49,8 @@ export default async function AdminDashboard({ Cliente LTV - Acconto - Saldo - Timer + Importo incassato + Importo da saldare Link diff --git a/src/app/client/[token]/page.tsx b/src/app/client/[token]/page.tsx index c6959c7..8e1bcc4 100644 --- a/src/app/client/[token]/page.tsx +++ b/src/app/client/[token]/page.tsx @@ -113,7 +113,7 @@ export default async function ClientPage({ return ( ); @@ -155,7 +155,7 @@ export default async function ClientPage({ {view ? ( ) : ( diff --git a/src/components/admin/ClientRow.tsx b/src/components/admin/ClientRow.tsx index 6cda1ca..768e676 100644 --- a/src/components/admin/ClientRow.tsx +++ b/src/components/admin/ClientRow.tsx @@ -1,17 +1,18 @@ import Link from "next/link"; -import { Badge } from "@/components/ui/badge"; -import { TimerCell } from "@/components/admin/TimerCell"; import type { ClientWithPayments } from "@/lib/admin-queries"; -const statusConfig: Record = { - da_saldare: { label: "Da saldare", className: "bg-red-100 text-red-700 border-transparent" }, - inviata: { label: "Inviata", className: "bg-[#DEF168]/30 text-[#1A463C] border-transparent" }, - saldato: { label: "Saldato", className: "bg-[#1A463C]/10 text-[#1A463C] border-transparent font-medium" }, -}; +function fmt(amount: number) { + return `€${amount.toLocaleString("it-IT", { minimumFractionDigits: 2 })}`; +} export function ClientRow({ client }: { client: ClientWithPayments }) { - const acconto = client.payments.find((p) => p.label.includes("Acconto")); - const saldo = client.payments.find((p) => p.label.includes("Saldo")); + const incassato = client.payments + .filter((p) => p.status === "saldato") + .reduce((sum, p) => sum + parseFloat(p.amount || "0"), 0); + + const daSaldare = client.payments + .filter((p) => p.status !== "saldato") + .reduce((sum, p) => sum + parseFloat(p.amount || "0"), 0); return ( @@ -34,30 +35,22 @@ export function ClientRow({ client }: { client: ClientWithPayments }) { )} - €{parseFloat(client.ltv).toLocaleString("it-IT", { minimumFractionDigits: 2 })} + {fmt(parseFloat(client.ltv))} - - {acconto && ( - - Acconto: {statusConfig[acconto.status]?.label ?? acconto.status} - + + {incassato > 0 ? ( + {fmt(incassato)} + ) : ( + )} - - {saldo && ( - - Saldo: {statusConfig[saldo.status]?.label ?? saldo.status} - + + {daSaldare > 0 ? ( + {fmt(daSaldare)} + ) : ( + )} - - - { if (isRunning && activeEntryId) { await stopTimer(activeEntryId); + } else if (projectId) { + await startTimer(projectId); } else { await startTimerForClient(clientId); } diff --git a/src/components/admin/tabs/TimerTab.tsx b/src/components/admin/tabs/TimerTab.tsx index ab62396..c5a2d7a 100644 --- a/src/components/admin/tabs/TimerTab.tsx +++ b/src/components/admin/tabs/TimerTab.tsx @@ -26,6 +26,7 @@ export function TimerTab({

Timer