'use client'; import { useState, useEffect, useCallback } from 'react'; import { useParams } from 'next/navigation'; import { Button } from '@/components/ui/Button'; import { ContractPreview } from '@/components/sales/ContractPreview'; import { getSale, deleteSale, verifyUstId, type SaleResponse } from '@/lib/sales'; export default function SaleDetailPage() { const params = useParams(); const saleId = params.id as string; const [sale, setSale] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [ustResult, setUstResult] = useState(null); const fetchSale = useCallback(async () => { setLoading(true); setError(null); try { const data = await getSale(saleId); setSale(data); } catch (err: unknown) { const apiErr = err as { error?: { message?: string } }; setError(apiErr?.error?.message || 'Failed to load sale'); } finally { setLoading(false); } }, [saleId]); useEffect(() => { fetchSale(); }, [fetchSale]); const handleDelete = async () => { if (!confirm('Verkauf wirklich stornieren?')) return; try { await deleteSale(saleId); fetchSale(); } catch (err: unknown) { const apiErr = err as { error?: { message?: string } }; setError(apiErr?.error?.message || 'Failed to cancel sale'); } }; const handleVerifyUstId = async () => { try { const result = await verifyUstId(saleId); setUstResult(`${result.verified ? 'Verifiziert' : 'Nicht verifiziert'}: ${result.message}`); } catch (err: unknown) { const apiErr = err as { error?: { message?: string } }; setError(apiErr?.error?.message || 'Failed to verify USt-IdNr.'); } }; if (loading) return
Wird geladen...
; if (error) return
{error}
; if (!sale) return
Verkauf nicht gefunden
; return (

Verkauf #{sale.id.slice(0, 8)}

{ustResult && (
{ustResult}
)}

Fahrzeug

{sale.vehicle ? (

{sale.vehicle.make} {sale.vehicle.model}

FIN: {sale.vehicle.fin}

Typ: {sale.vehicle.vehicle_type}

) : (

Nicht verfügbar

)}

Käufer

{sale.buyer ? (

{sale.buyer.company_name}

{sale.buyer.address_city}, {sale.buyer.address_country}

{sale.buyer.vat_id &&

USt-IdNr.: {sale.buyer.vat_id}

}
) : (

Nicht verfügbar

)}

Verkaufsdetails

Preis

{new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(sale.sale_price)}

Datum

{new Date(sale.sale_date).toLocaleDateString('de-DE')}

Status

{sale.status}

GwG

{sale.is_gwg ? 'Ja' : 'Nein'}

); }