Desktop ist wieder auf Horizontal-Scroll zurückgebaut, mobil bleibt die Dropdown-Auswahl. Dabei habe ich die Scroll-Container stabilisiert, damit die AG- und Budgetkarten sauber scrollen statt seitlich zu „wackeln“, in dashboard-shell.tsx und budget-column.tsx.
Die Abo-Logik ist jetzt deutlich sauberer: beim Anlegen gibt es ein Startdatum, der Server leitet daraus Monatsraten für den gewählten Zeitraum ab, Budgets rechnen mit dem periodischen Gesamtbetrag, und Abo-Ausgaben erscheinen als aufklappbare Gruppe statt als aufgeblähte Liste. Das steckt vor allem in page.tsx, recurring-expenses.ts, route.ts, dashboard-types.ts und der Migration migration.sql. Backup/Import und Audit-Restore kennen das neue Feld ebenfalls.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
ALTER TABLE "expenses" ADD COLUMN "recurrence_start_at" TIMESTAMP(3);
|
||||
@@ -112,6 +112,7 @@ model Expense {
|
||||
periodId String @map("period_id")
|
||||
approvalStatus ApprovalStatus @default(PENDING) @map("approval_status")
|
||||
recurrence ExpenseRecurrence @default(NONE)
|
||||
recurrenceStartAt DateTime? @map("recurrence_start_at")
|
||||
paidAt DateTime? @map("paid_at")
|
||||
documentedAt DateTime? @map("documented_at")
|
||||
proofUrl String? @map("proof_url")
|
||||
|
||||
@@ -214,7 +214,8 @@ async function main() {
|
||||
periodId: currentPeriod.id,
|
||||
approvalStatus: ApprovalStatus.APPROVED,
|
||||
proofUrl: null,
|
||||
recurrence: ExpenseRecurrence.MONTHLY
|
||||
recurrence: ExpenseRecurrence.MONTHLY,
|
||||
recurrenceStartAt: currentPeriod.startsAt
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user