Finanzuebersicht Stichtage und Spenden ergaenzen
All checks were successful
CI / Build and Deploy (push) Successful in 3m11s

This commit is contained in:
jan
2026-05-11 23:41:07 +02:00
parent c93616f09e
commit c738b35d06
14 changed files with 884 additions and 62 deletions

View File

@@ -0,0 +1,42 @@
CREATE TYPE "CutoffPhase" AS ENUM ('PRE', 'POST');
ALTER TABLE "accounting_periods"
ADD COLUMN "cutoff_name" TEXT NOT NULL DEFAULT 'Open Air',
ADD COLUMN "cutoff_date" TIMESTAMP(3);
ALTER TABLE "expenses"
ADD COLUMN "cutoff_phase" "CutoffPhase" NOT NULL DEFAULT 'PRE';
CREATE TABLE "donations" (
"id" TEXT NOT NULL,
"title" TEXT NOT NULL,
"description" TEXT,
"amount" DECIMAL(10,2) NOT NULL,
"donated_at" TIMESTAMP(3) NOT NULL,
"period_id" TEXT NOT NULL,
"expense_id" TEXT,
"creator_id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "donations_pkey" PRIMARY KEY ("id")
);
CREATE INDEX "donations_period_id_idx" ON "donations"("period_id");
CREATE INDEX "donations_expense_id_idx" ON "donations"("expense_id");
CREATE INDEX "donations_creator_id_idx" ON "donations"("creator_id");
ALTER TABLE "donations"
ADD CONSTRAINT "donations_period_id_fkey"
FOREIGN KEY ("period_id") REFERENCES "accounting_periods"("id")
ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "donations"
ADD CONSTRAINT "donations_expense_id_fkey"
FOREIGN KEY ("expense_id") REFERENCES "expenses"("id")
ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE "donations"
ADD CONSTRAINT "donations_creator_id_fkey"
FOREIGN KEY ("creator_id") REFERENCES "users"("id")
ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -31,6 +31,11 @@ enum ExpenseRecurrence {
MONTHLY
}
enum CutoffPhase {
PRE
POST
}
enum BudgetReleaseNotifyTarget {
ALL_GROUP_USERS
GROUP_MEMBERS_ONLY
@@ -50,6 +55,7 @@ model User {
createdExpenses Expense[] @relation("ExpenseCreator")
approvals Approval[]
uploadedDocuments ExpenseDocument[]
createdDonations Donation[] @relation("DonationCreator")
auditLogs AuditLog[]
pushSubscriptions PushSubscription[]
createdAt DateTime @default(now()) @map("created_at")
@@ -78,8 +84,11 @@ model AccountingPeriod {
startsAt DateTime @map("starts_at")
endsAt DateTime @map("ends_at")
isCurrent Boolean @default(false) @map("is_current")
cutoffName String @default("Open Air") @map("cutoff_name")
cutoffDate DateTime? @map("cutoff_date")
budgets Budget[]
expenses Expense[]
donations Donation[]
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@ -139,6 +148,7 @@ model Expense {
approvalStatus ApprovalStatus @default(PENDING) @map("approval_status")
recurrence ExpenseRecurrence @default(NONE)
recurrenceStartAt DateTime? @map("recurrence_start_at")
cutoffPhase CutoffPhase @default(PRE) @map("cutoff_phase")
paidAt DateTime? @map("paid_at")
documentedAt DateTime? @map("documented_at")
createdAt DateTime @default(now()) @map("created_at")
@@ -149,10 +159,32 @@ model Expense {
period AccountingPeriod @relation(fields: [periodId], references: [id], onDelete: Restrict)
approvals Approval[]
documents ExpenseDocument[]
donations Donation[]
@@map("expenses")
}
model Donation {
id String @id @default(cuid())
title String
description String?
amount Decimal @db.Decimal(10, 2)
donatedAt DateTime @map("donated_at")
periodId String @map("period_id")
expenseId String? @map("expense_id")
creatorId String @map("creator_id")
period AccountingPeriod @relation(fields: [periodId], references: [id], onDelete: Restrict)
expense Expense? @relation(fields: [expenseId], references: [id], onDelete: SetNull)
creator User @relation("DonationCreator", fields: [creatorId], references: [id], onDelete: Restrict)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@index([periodId])
@@index([expenseId])
@@index([creatorId])
@@map("donations")
}
model ExpenseDocument {
id String @id @default(cuid())
expenseId String @map("expense_id")