import Link from "next/link"; import { notFound } from "next/navigation"; import { ContentHeader } from "@/components/layout/ContentHeader"; import { AblaufBadge, EinkaufBadge, KeineMeldungBadge, StatusBadge, VerkaufBadge, } from "@/components/ui/Badges"; import { Card } from "@/components/ui/Card"; import { CopyableCode } from "@/components/ui/CopyableCode"; import { InfoBox } from "@/components/ui/SmallBox"; import { formatDatum, formatEuro } from "@/lib/format"; import { HEUTE, kunden } from "@/mock/data"; import { PRODUKT_NAME, alertsVonKunde, getKunde, hostMeldetNicht, hostsVonKunde, laufzeitenVonKunde, summenProJahr, summenVonKunde, } from "@/mock/queries"; export function generateStaticParams() { return kunden.map((kunde) => ({ id: kunde.id })); } export async function generateMetadata({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; return { title: getKunde(id)?.name ?? "Kunde" }; } export default async function KundenDetailSeite({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const kunde = getKunde(id); if (!kunde) notFound(); const eigeneHosts = hostsVonKunde(kunde.id); const laufzeiten = laufzeitenVonKunde(kunde.id); const summen = summenVonKunde(kunde.id); const proJahr = summenProJahr(laufzeiten); const alerts = alertsVonKunde(kunde.id); return ( <>
Kundennummer
{kunde.kundennummer}
Ansprechpartner
{kunde.ansprechpartner ?? "–"}
E-Mail
{kunde.email ? {kunde.email} : "–"}
Telefon
{kunde.telefon ?? "–"}
Standorte
{kunde.standorte.map((s) => (
{s.name} {s.ort ? · {s.ort} : null}
))}

Notizen

{kunde.notizen ?? Keine Notizen hinterlegt.}

0 ? "danger" : "info"}> {alerts.length === 0 ? (

Keine offenen Warnungen.

) : (
    {alerts.map((alert) => (
  • {alert.titel}
    {alert.beschreibung}
  • ))}
)}
{eigeneHosts.map((host) => ( ))}
Host Produkt Status Key Ablauf
{host.hostname} {hostMeldetNicht(host) ? : null} {PRODUKT_NAME[host.produkt]}
{laufzeiten.map((laufzeit) => { const host = eigeneHosts.find((h) => h.id === laufzeit.hostId); return ( ); })}
Laufzeit Host Proxmox Einkauf Kundenrechnung Verkauf
{formatDatum(laufzeit.start)} – {formatDatum(laufzeit.ende)} {laufzeit.vorschlag ? ( Vorschlag ) : null} {host?.hostname ?? "–"}
{formatEuro(laufzeit.einkauf?.nettoBetrag)}
{formatEuro(laufzeit.verkauf?.nettoBetrag)}
{proJahr.map((jahr) => ( ))}
Jahr Einkauf netto Verkauf netto Marge
{jahr.jahr} {formatEuro(jahr.einkauf)} {formatEuro(jahr.verkauf)} = 0 ? "pl-text-success" : "pl-text-danger"}> {formatEuro(jahr.marge)}
); }