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
+2
View File
@@ -49,6 +49,7 @@ export function toPlanInput(plan: PlanWithRelations): PlanInput {
durationYears: phase.durationYears,
inflationRate: phase.inflationRate,
incomeMode: phase.incomeMode,
incomingCapital: phase.incomingCapital,
incomeEntries: phase.incomeEntries.map((e) => ({
id: e.id,
personId: e.personId,
@@ -68,6 +69,7 @@ export function toPlanInput(plan: PlanWithRelations): PlanInput {
annualContribution: s.annualContribution,
ownerTag: s.ownerTag,
saleTaxRate: s.saleTaxRate,
carriedBaseValue: s.carriedBaseValue,
})),
realEstates: phase.realEstates.map((re) => ({
id: re.id,
+6
View File
@@ -45,6 +45,9 @@ export interface SecurityInput {
annualContribution: number;
ownerTag: OwnerTag;
saleTaxRate: number;
// Baseline-Wert bei automatischer Uebernahme aus der Vorphase (0 bei manuell angelegten
// Wertschriften). Siehe PhaseInput.incomingCapital fuer den Kontext.
carriedBaseValue: number;
}
export interface RealEstateInput {
@@ -81,6 +84,9 @@ export interface PhaseInput {
durationYears: number;
inflationRate: number | null;
incomeMode: IncomeMode;
// Aus Verkaeufen im Uebergang aus der Vorphase verfuegbares Startkapital (automatisch
// gesetzt beim Speichern des Uebergangs der Vorphase).
incomingCapital: number;
incomeEntries: IncomeEntryInput[];
expenseEntries: ExpenseEntryInput[];
securities: SecurityInput[];