diff --git a/src/components/ElementDetail.tsx b/src/components/ElementDetail.tsx
index ee38915..d010dff 100644
--- a/src/components/ElementDetail.tsx
+++ b/src/components/ElementDetail.tsx
@@ -145,23 +145,18 @@ export function ElementPhaseFields({
onChange={(v) => setP({ teuerungsausgleich: v })}
/>
);
- if (carried) {
- return (
- <>
-
- setP({ amountOverride: v })}
- />
- {teuerung}
- >
- );
- }
+ // Basiswert (erstes Jahr der Phase). Ab Phase 2 mit dem fortgeschriebenen Endwert der
+ // Vorphase vorbelegt, aber bewusst aenderbar (Teilzeit, Beförderung, Jobwechsel …).
+ const baseLabel = isIncome ? "Jahreseinkommen (CHF, erstes Jahr)" : "Jahresausgaben (CHF, erstes Jahr)";
+ const baseValue = typeof pd.amount === "number" ? pd.amount : carried ? context.derivedStart : 0;
return (
<>
- setP({ amount: v })} />
+ setP({ amount: v })}
+ />
{teuerung}
>
);
diff --git a/src/lib/calculations.ts b/src/lib/calculations.ts
index 0ad43eb..a07716f 100644
--- a/src/lib/calculations.ts
+++ b/src/lib/calculations.ts
@@ -231,11 +231,14 @@ export function computePlan(plan: PlanInput): PlanComputed {
case "INCOME":
case "EXPENSE": {
const idx = num(pd.teuerungsausgleich, phaseInflation);
+ // Basiswert: Phase 1 = eingegebener Betrag; ab Phase 2 = fortgeschriebener Endwert
+ // der Vorphase, ausser der Nutzer hat ihn bewusst geaendert (pd.amount gesetzt).
ec.baseValue = carry.hasCarry ? Math.round(carry.flowBasis) : Math.round(num(pd.amount));
- let basis: number;
- if (!carry.hasCarry) basis = Math.round(num(pd.amount));
- else if (typeof pd.amountOverride === "number") basis = Math.round(pd.amountOverride);
- else basis = ec.baseValue;
+ const basis = !carry.hasCarry
+ ? Math.round(num(pd.amount))
+ : typeof pd.amount === "number"
+ ? Math.round(pd.amount)
+ : ec.baseValue;
(e.category === "INCOME" ? incomes : expenses).push({ basis, idx, ec });
break;
}
diff --git a/src/lib/elements.ts b/src/lib/elements.ts
index 306cbcb..4e87982 100644
--- a/src/lib/elements.ts
+++ b/src/lib/elements.ts
@@ -56,8 +56,6 @@ export interface PhaseData {
// Phasenjahre (Jahr t = Basis x (1+idx)^(t-1)). Eigenes Feld je Element (Einkommen und
// Ausgaben unabhaengig). Default = Phaseninflation.
teuerungsausgleich?: number;
- // INCOME / EXPENSE ab Phase 2: uebersteuert den fortgeschriebenen Basiswert dieser Phase.
- amountOverride?: number;
// AHV
gapYears?: number;
// PENSION_FUND / PILLAR_3A / OTHER_ASSET
@@ -105,7 +103,6 @@ export const phaseDataSchema = z
.object({
amount: nonNeg.optional(),
teuerungsausgleich: z.number().min(-20).max(50).optional(),
- amountOverride: nonNeg.optional(),
gapYears: z.number().int().min(0).optional(),
currentValue: nonNeg.optional(),
startValue: nonNeg.optional(),