diff --git a/pitch-deck/components/slides/FinanzplanSlide.tsx b/pitch-deck/components/slides/FinanzplanSlide.tsx index 06f8581..0e1527e 100644 --- a/pitch-deck/components/slides/FinanzplanSlide.tsx +++ b/pitch-deck/components/slides/FinanzplanSlide.tsx @@ -357,7 +357,7 @@ export default function FinanzplanSlide({ lang, investorId, preferredScenarioId,
{/* MRR bar */}
-
+
{d.mrr >= 100000 ? `${Math.round(d.mrr/1000)}k` : d.mrr.toLocaleString('de-DE')}
@@ -392,12 +392,12 @@ export default function FinanzplanSlide({ lang, investorId, preferredScenarioId,
{k.ebit >= 0 ? (
-
{Math.round(k.ebit/1000)}k
+
{Math.round(k.ebit/1000)}k
) : (
-
{Math.round(k.ebit/1000)}k
+
{Math.round(k.ebit/1000)}k
)} @@ -421,7 +421,7 @@ export default function FinanzplanSlide({ lang, investorId, preferredScenarioId,
-
{d.val}
+
{d.val}
{d.year} @@ -431,6 +431,71 @@ export default function FinanzplanSlide({ lang, investorId, preferredScenarioId,
+ + {/* Liquidität Chart */} + +

{de ? 'Liquidität (Jahresende)' : 'Cash Position (Year-End)'}

+
+ {(() => { + const years = ['y2026','y2027','y2028','y2029','y2030'] + const data = years.map(y => ({ year: y.slice(1), val: fpKPIs[y]?.liquiditaet || 0 })) + const maxAbs = Math.max(...data.map(d => Math.abs(d.val)), 1) + return data.map((d, idx) => { + const h = Math.abs(d.val) / maxAbs * 100 + const label = Math.abs(d.val) >= 1000000 ? `${(d.val/1000000).toFixed(1)}M` : `${Math.round(d.val/1000)}k` + return ( +
+
+
= 0 ? 'bg-cyan-500/60 rounded-t' : 'bg-red-500/60 rounded-b'} w-full`} style={{ height: `${Math.max(h, 4)}px` }}> +
= 0 ? 'text-cyan-300 -mt-4' : 'text-red-300 mt-1'} text-center whitespace-nowrap font-semibold`}>{label}
+
+
+ {d.year} +
+ ) + }) + })()} +
+
+ + {/* Umsatz vs. Kosten Chart */} + +

{de ? 'Umsatz vs. Gesamtkosten' : 'Revenue vs. Total Costs'}

+
+ {(() => { + const years = ['y2026','y2027','y2028','y2029','y2030'] + const data = years.map(y => ({ + year: y.slice(1), + rev: fpKPIs[y]?.revenue || 0, + costs: (fpKPIs[y]?.personal || 0) + Math.abs(fpKPIs[y]?.ebit || 0) + (fpKPIs[y]?.revenue || 0) - (fpKPIs[y]?.ebit || 0) - (fpKPIs[y]?.revenue || 0), + })) + // Simpler: costs = revenue - ebit + const data2 = years.map(y => ({ + year: y.slice(1), + rev: fpKPIs[y]?.revenue || 0, + costs: (fpKPIs[y]?.revenue || 0) - (fpKPIs[y]?.ebit || 0), + })) + const maxVal = Math.max(...data2.map(d => Math.max(d.rev, d.costs)), 1) + return data2.map((d, idx) => ( +
+
+
+
{d.rev >= 1000000 ? `${(d.rev/1000000).toFixed(1)}M` : `${Math.round(d.rev/1000)}k`}
+
+
+
{d.costs >= 1000000 ? `${(d.costs/1000000).toFixed(1)}M` : `${Math.round(d.costs/1000)}k`}
+
+
+ {d.year} +
+ )) + })()} +
+
+ {de ? 'Umsatz' : 'Revenue'} + {de ? 'Kosten' : 'Costs'} +
+
)}