'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; import { createSale, type SaleCreateData } from '@/lib/sales'; import { listVehicles, type VehicleResponse } from '@/lib/vehicles'; import { useEffect, useCallback } from 'react'; import type { PaginatedResponse } from '@/lib/api'; export function SaleForm() { const router = useRouter(); const [vehicles, setVehicles] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [formData, setFormData] = useState({ vehicle_id: '', buyer_contact_id: '', sale_price: 0, sale_date: new Date().toISOString().split('T')[0], status: 'draft', is_gwg: false, }); const fetchVehicles = useCallback(async () => { try { const data: PaginatedResponse = await listVehicles({ page: 1, page_size: 100 }); setVehicles(data.items.filter(v => v.availability === 'available')); } catch { // ignore - vehicles list is optional } }, []); useEffect(() => { fetchVehicles(); }, [fetchVehicles]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); try { const sale = await createSale(formData); router.push(`/de/verkauf/${sale.id}`); } catch (err: unknown) { const apiErr = err as { error?: { message?: string } }; setError(apiErr?.error?.message || 'Failed to create sale'); } finally { setLoading(false); } }; return (

Neuer Verkauf

{error && (
{error}
)}
setFormData(prev => ({ ...prev, buyer_contact_id: e.target.value }))} placeholder="UUID des Käufer-Kontakts" required />
setFormData(prev => ({ ...prev, sale_price: parseFloat(e.target.value) || 0 }))} required />
setFormData(prev => ({ ...prev, sale_date: e.target.value }))} />
setFormData(prev => ({ ...prev, is_gwg: e.target.checked }))} className="w-4 h-4" />
); }