die AG-Übersicht bekommt die gleiche Dropdown-Auswahl wie mobil statt Horizontal-Scroll, und ich räume die Umlaut-Geschichte sauber auf, damit wir wieder normales UTF-8 im Code haben statt dieser ASCII-Ausweichmanöver.
All checks were successful
CI / Build (push) Successful in 1m20s
CI / Deploy (push) Successful in 1m4s

This commit is contained in:
Jan
2026-04-13 13:22:34 +02:00
parent 859442a3c1
commit 700e677c45
15 changed files with 64 additions and 70 deletions

View File

@@ -58,14 +58,14 @@ export async function POST(request: Request) {
const uploadedFile = formData?.get("file");
if (!(uploadedFile instanceof File)) {
return NextResponse.json({ error: "Bitte eine CSV-Datei auswaehlen." }, { status: 400 });
return NextResponse.json({ error: "Bitte eine CSV-Datei auswählen." }, { status: 400 });
}
const content = await uploadedFile.text();
const rows = parseCsv(content);
if (rows.length < 2) {
return NextResponse.json({ error: "Die CSV-Datei enthaelt keine Daten." }, { status: 400 });
return NextResponse.json({ error: "Die CSV-Datei enthält keine Daten." }, { status: 400 });
}
const headers = rows[0];
@@ -81,7 +81,7 @@ export async function POST(request: Request) {
if (userRows.some((entry) => !entry.passwordHash)) {
return NextResponse.json(
{ error: "Dieses Backup stammt aus einem alten Format ohne Passwort-Hashes und kann nicht vollstaendig eingespielt werden." },
{ error: "Dieses Backup stammt aus einem alten Format ohne Passwort-Hashes und kann nicht vollständig eingespielt werden." },
{ status: 400 }
);
}
@@ -119,7 +119,7 @@ export async function POST(request: Request) {
const endsAt = toDate(row.periodEndsAt);
if (!startsAt || !endsAt) {
throw new Error(`Zeitraum ${row.periodName || row.id} enthaelt kein gueltiges Datum.`);
throw new Error(`Zeitraum ${row.periodName || row.id} enthält kein gültiges Datum.`);
}
await tx.accountingPeriod.create({
@@ -169,7 +169,7 @@ export async function POST(request: Request) {
const totalBudget = toNumber(row.totalBudget);
if (totalBudget === null) {
throw new Error(`Budget ${row.budgetName || row.id} enthaelt keinen gueltigen Betrag.`);
throw new Error(`Budget ${row.budgetName || row.id} enthält keinen gültigen Betrag.`);
}
await tx.budget.create({
@@ -189,7 +189,7 @@ export async function POST(request: Request) {
const amount = toNumber(row.amount);
if (amount === null) {
throw new Error(`Ausgabe ${row.title || row.id} enthaelt keinen gueltigen Betrag.`);
throw new Error(`Ausgabe ${row.title || row.id} enthält keinen gültigen Betrag.`);
}
await tx.expense.create({
@@ -216,7 +216,7 @@ export async function POST(request: Request) {
const timestamp = toDate(row.createdAt);
if (!timestamp) {
throw new Error(`Freigabe ${row.id} enthaelt keinen gueltigen Zeitstempel.`);
throw new Error(`Freigabe ${row.id} enthält keinen gültigen Zeitstempel.`);
}
await tx.approval.create({