diff --git a/app/api/ausgaben/[id]/route.ts b/app/api/ausgaben/[id]/route.ts index 7ff635b..74fff1f 100644 --- a/app/api/ausgaben/[id]/route.ts +++ b/app/api/ausgaben/[id]/route.ts @@ -10,13 +10,20 @@ export async function PUT( try { const { id } = await context.params; const body = await request.json(); - const { Datum, Wo, Was, Wieviel, Wie, TYP, OK } = body; + const { Datum, Wo, Was, Wieviel, Wie, TYP } = body; + + if (!Datum || !Wo || !Was || !Wieviel || !Wie || TYP === undefined) { + return NextResponse.json( + { success: false, error: 'Missing required fields' }, + { status: 400 } + ); + } const pool = getDbPool(); const query = ` UPDATE Ausgaben - SET Datum = ?, Wo = ?, Was = ?, Wieviel = ?, Wie = ?, TYP = ?, OK = ? + SET Datum = ?, Wo = ?, Was = ?, Wieviel = ?, Wie = ?, TYP = ? WHERE ID = ? `; @@ -27,7 +34,6 @@ export async function PUT( parseFloat(Wieviel), Wie, TYP, - OK || 0, parseInt(id), ]); diff --git a/app/api/ausgaben/route.ts b/app/api/ausgaben/route.ts index 5dfb7bf..5431e96 100644 --- a/app/api/ausgaben/route.ts +++ b/app/api/ausgaben/route.ts @@ -14,7 +14,8 @@ export async function GET(request: Request) { const pool = getDbPool(); - let query = `SELECT *, + let query = `SELECT + ID, Datum, Wo, Was, Wieviel, Wie, TYP, CASE DAYOFWEEK(Datum) WHEN 1 THEN 'Sonntag' WHEN 2 THEN 'Montag' @@ -67,7 +68,7 @@ export async function GET(request: Request) { export async function POST(request: Request) { try { const body = await request.json(); - const { Datum, Wo, Was, Wieviel, Wie, TYP, OK } = body; + const { Datum, Wo, Was, Wieviel, Wie, TYP } = body; if (!Datum || !Wo || !Was || !Wieviel || !Wie || TYP === undefined) { return NextResponse.json( @@ -79,8 +80,8 @@ export async function POST(request: Request) { const pool = getDbPool(); const query = ` - INSERT INTO Ausgaben (Datum, Wo, Was, Wieviel, Wie, TYP, OK) - VALUES (?, ?, ?, ?, ?, ?, ?) + INSERT INTO Ausgaben (Datum, Wo, Was, Wieviel, Wie, TYP) + VALUES (?, ?, ?, ?, ?, ?) `; const [result] = await pool.query(query, [ @@ -90,7 +91,6 @@ export async function POST(request: Request) { parseFloat(Wieviel), Wie, TYP, - OK || 0, ]); return NextResponse.json({ diff --git a/components/AusgabenForm.tsx b/components/AusgabenForm.tsx index 5d2571e..0e56bde 100644 --- a/components/AusgabenForm.tsx +++ b/components/AusgabenForm.tsx @@ -21,7 +21,6 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben Wieviel: '', Wie: defaultZahlungsart, TYP: typ, - OK: 0, }); const [isSubmitting, setIsSubmitting] = useState(false); @@ -95,26 +94,41 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben Wieviel: selectedEntry.Wieviel.toString(), Wie: selectedEntry.Wie, TYP: selectedEntry.TYP, - OK: selectedEntry.OK || 0, }); - setEditId(selectedEntry.ID); + // Handle both uppercase and lowercase ID field names + const entryId = (selectedEntry as any).id || selectedEntry.ID; + setEditId(entryId); } else { - // Initialize with current date for new entry + // Reset form for new entry const now = new Date(); const dateStr = now.toISOString().split('T')[0]; const weekday = getWeekday(now); - setFormData(prev => ({ - ...prev, + setFormData({ Datum: dateStr, WochTag: weekday, + Wo: '', + Was: '', + Wieviel: '', + Wie: defaultZahlungsart, TYP: typ, - })); + }); setEditId(null); } - }, [selectedEntry, typ]); + }, [selectedEntry]); + + // Update TYP when tab changes + useEffect(() => { + if (!selectedEntry) { + setFormData(prev => ({ + ...prev, + TYP: typ, + Wie: defaultZahlungsart, + })); + } + }, [typ]); const getWeekday = (date: Date): string => { const weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; @@ -143,12 +157,22 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben const url = editId ? `/api/ausgaben/${editId}` : '/api/ausgaben'; const method = editId ? 'PUT' : 'POST'; + // Send only the fields we need, excluding any extra fields + const dataToSend = { + Datum: formData.Datum, + Wo: formData.Wo, + Was: formData.Was, + Wieviel: formData.Wieviel, + Wie: formData.Wie, + TYP: formData.TYP, + }; + const response = await fetch(url, { method: method, headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(formData), + body: JSON.stringify(dataToSend), }); if (response.ok) { @@ -180,7 +204,7 @@ export default function AusgabenForm({ onSuccess, selectedEntry, typ }: Ausgaben Wieviel: '', Wie: defaultZahlungsart, TYP: typ, - OK: 0, + }); setEditId(null); diff --git a/types/ausgaben.ts b/types/ausgaben.ts index 6a2886f..e5c8f35 100644 --- a/types/ausgaben.ts +++ b/types/ausgaben.ts @@ -9,7 +9,6 @@ export interface AusgabenEntry { Wieviel: number; Wie: string; TYP: number; - OK?: number; } export interface CreateAusgabenEntry { @@ -20,7 +19,6 @@ export interface CreateAusgabenEntry { Wieviel: string | number; Wie: string; TYP: number; - OK?: number; } export interface MonthlyStats {