Automate transition: carried-over securities auto-appear in next phase, sale proceeds tracked as incoming capital with allocation status indicators
Deploy App / deploy (push) Successful in 1m27s

This commit is contained in:
2026-07-08 20:20:20 +02:00
parent 837da980f2
commit a1e689167c
11 changed files with 172 additions and 31 deletions
+27 -17
View File
@@ -104,14 +104,17 @@ model Plan {
// Ein Lebensabschnitt innerhalb eines Plans
model Phase {
id String @id @default(cuid())
planId String
plan Plan @relation(fields: [planId], references: [id], onDelete: Cascade)
sequenceNumber Int
name String
durationYears Int
inflationRate Float?
incomeMode IncomeMode @default(HOUSEHOLD)
id String @id @default(cuid())
planId String
plan Plan @relation(fields: [planId], references: [id], onDelete: Cascade)
sequenceNumber Int
name String
durationYears Int
inflationRate Float?
incomeMode IncomeMode @default(HOUSEHOLD)
// Aus Verkaeufen im Uebergang aus der Vorphase verfuegbares Startkapital (wird beim
// Speichern des Uebergangs automatisch gesetzt, siehe PhaseTransition).
incomingCapital Float @default(0)
incomeEntries IncomeEntry[]
expenseEntries ExpenseEntry[]
@@ -152,16 +155,23 @@ model ExpenseEntry {
// Eine Wertschrift innerhalb einer Phase (inkl. jaehrlichem Sparbeitrag)
model Security {
id String @id @default(cuid())
phaseId String
phase Phase @relation(fields: [phaseId], references: [id], onDelete: Cascade)
name String
startValue Float
expectedReturn Float
annualContribution Float @default(0)
ownerTag OwnerTag @default(HOUSEHOLD)
id String @id @default(cuid())
phaseId String
phase Phase @relation(fields: [phaseId], references: [id], onDelete: Cascade)
name String
startValue Float
expectedReturn Float
annualContribution Float @default(0)
ownerTag OwnerTag @default(HOUSEHOLD)
// Steuersatz auf Verkaufsgewinn bei Uebernahme in PhaseTransitionItem (Default 0%, siehe Kap. 9)
saleTaxRate Float @default(0)
saleTaxRate Float @default(0)
// Baseline-Wert bei automatischer Uebernahme aus der Vorphase (0 bei manuell angelegten
// Wertschriften). Dient dazu, im UI zu erkennen, wie viel vom verfuegbaren Startkapital
// bereits (on top of der Uebernahme) zugewiesen wurde.
carriedBaseValue Float @default(0)
// Verweist auf die Wertschrift der Vorphase, aus der automatisch uebernommen wurde
// (nur intern zur Deduplizierung bei wiederholtem Speichern des Uebergangs, kein FK).
carriedFromSecurityId String?
transitionItems PhaseTransitionItem[]
}