|
-
+
|
{[2026, 2027, 2028, 2029, 2030].map(y => {
const v = values[`y${y}`] || 0
@@ -195,7 +196,7 @@ export function MonthlyGrid({ rows, activeSheet, de, yearOffset, openCats, toggl
{currentYear}
|
- {MONTH_LABELS.map((label, idx) => (
+ {(de ? MONTH_LABELS : MONTH_LABELS_EN).map((label, idx) => (
{label}
|
@@ -241,7 +242,7 @@ export function MonthlyGrid({ rows, activeSheet, de, yearOffset, openCats, toggl
{isCatHeader && {isCatOpen ? '▾' : '▸'}}
{isEditable && }
-
+
{row.position && ({row.position})}
diff --git a/pitch-deck/components/slides/FinanzplanSlide.helpers.ts b/pitch-deck/components/slides/FinanzplanSlide.helpers.ts
index 72e1383..43e59c1 100644
--- a/pitch-deck/components/slides/FinanzplanSlide.helpers.ts
+++ b/pitch-deck/components/slides/FinanzplanSlide.helpers.ts
@@ -37,10 +37,86 @@ export const MONTH_LABELS = [
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez',
]
+export const MONTH_LABELS_EN = [
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',
+]
+
export function getLabel(row: SheetRow): string {
return row.row_label || row.person_name || row.item_name || '—'
}
+// German → English row label translations
+export const ROW_LABEL_MAP: Record = {
+ // GuV / P&L
+ 'Umsatzerlöse': 'Revenue',
+ 'Materialaufwand': 'Cost of Materials',
+ 'Material-/Wareneinsatz': 'Materials / COGS',
+ 'Fremdleistungen': 'External Services',
+ 'Rohertrag': 'Gross Profit',
+ 'Rohergebnis': 'Gross Result',
+ 'Gesamtleistung': 'Total Output',
+ 'Personalkosten': 'Personnel Costs',
+ 'Abschreibungen': 'Depreciation',
+ 'Betriebliche Aufwendungen': 'Operating Expenses',
+ 'Sonstige betriebliche Aufwendungen': 'Other Operating Expenses',
+ 'EBIT': 'EBIT',
+ 'Betriebsergebnis': 'Operating Result',
+ 'Zinsergebnis': 'Net Interest',
+ 'Zinsaufwand': 'Interest Expense',
+ 'Zinsertrag': 'Interest Income',
+ 'Ergebnis vor Steuern': 'Earnings Before Tax',
+ 'EBT': 'EBT',
+ 'Gewerbesteuer': 'Trade Tax',
+ 'Körperschaftsteuer': 'Corporate Tax',
+ 'Steuern gesamt': 'Total Taxes',
+ 'Steuern': 'Taxes',
+ 'Jahresüberschuss': 'Net Income',
+ 'Jahresfehlbetrag': 'Net Loss',
+ 'Ergebnis nach Steuern': 'Net Result',
+ // Liquidität
+ 'Einzahlungen': 'Cash Inflows',
+ 'Summe Einzahlungen': 'Total Inflows',
+ 'Auszahlungen': 'Cash Outflows',
+ 'Summe Auszahlungen': 'Total Outflows',
+ 'Überschuss/Fehlbetrag': 'Surplus / Deficit',
+ 'ÜBERSCHUSS': 'SURPLUS',
+ 'FEHLBETRAG': 'DEFICIT',
+ 'ÜBERSCHUSS/FEHLBETRAG': 'SURPLUS / DEFICIT',
+ 'Kontostand': 'Account Balance',
+ 'Kontostand (Anfang)': 'Opening Balance',
+ 'Kontostand (Ende)': 'Closing Balance',
+ 'LIQUIDITÄT': 'LIQUIDITY',
+ 'LIQUIDITAET': 'LIQUIDITY',
+ 'Kredittilgung': 'Loan Repayment',
+ 'Zins- und Tilgungszahlung': 'Interest & Principal',
+ 'Investitionen': 'Investments',
+ 'Sonstige Erträge': 'Other Income',
+ // Kunden
+ 'Neukunden': 'New Customers',
+ 'Bestandskunden': 'Existing Customers',
+ 'Bestandskunden gesamt': 'Total Existing Customers',
+ 'Anzahl Kunden': 'Customer Count',
+ 'GESAMT': 'TOTAL',
+ 'GESAMTUMSATZ': 'TOTAL REVENUE',
+ // Betriebliche Aufwendungen
+ 'Fort-/Weiterbildungskosten (F)': 'Training & Development (F)',
+ 'Fahrzeugkosten (F)': 'Vehicle Costs (F)',
+ 'KFZ-Steuern (F)': 'Vehicle Tax (F)',
+ 'KFZ-Versicherung (F)': 'Vehicle Insurance (F)',
+ 'Reisekosten (F)': 'Travel Expenses (F)',
+ 'Bewirtungskosten (F)': 'Entertainment Costs (F)',
+ 'Internet/Mobilfunk (F)': 'Internet / Mobile (F)',
+ 'Cloud-Hosting (SysEleven/Hetzner)': 'Cloud Hosting (SysEleven/Hetzner)',
+ 'Berufsgenossenschaft (F)': 'Employers\' Liability Insurance (F)',
+ 'Allgemeine Marketingkosten (F)': 'General Marketing Costs (F)',
+ 'Gewerbesteuer (F)': 'Trade Tax (F)',
+ 'Summe sonstige Aufwendungen': 'Total Other Expenses',
+ 'SUMME Betriebliche Aufwendungen': 'TOTAL Operating Expenses',
+ 'SUMME': 'TOTAL',
+ 'Summe': 'Total',
+}
+
export const FORMULA_TOOLTIPS: Record = {
'Fort-/Weiterbildungskosten (F)': 'Mitarbeiter (ohne Gründer) × 300 EUR/Mon',
'Fahrzeugkosten (F)': 'Mitarbeiter (ohne Gründer) × 200 EUR/Mon',
@@ -57,6 +133,22 @@ export const FORMULA_TOOLTIPS: Record = {
'Abschreibungen': 'Summe AfA aus Tab Investitionen',
}
+export const FORMULA_TOOLTIPS_EN: Record = {
+ 'Fort-/Weiterbildungskosten (F)': 'Employees (excl. founders) × €300/month',
+ 'Fahrzeugkosten (F)': 'Employees (excl. founders) × €200/month',
+ 'KFZ-Steuern (F)': 'Employees (excl. founders) × €25/month',
+ 'KFZ-Versicherung (F)': 'Employees (excl. founders) × €150/month',
+ 'Reisekosten (F)': 'Total headcount × €75/month',
+ 'Bewirtungskosten (F)': 'Existing customers × €50/month',
+ 'Internet/Mobilfunk (F)': 'Total headcount × €50/month',
+ 'Cloud-Hosting (SysEleven/Hetzner)': '€1,500 base + (customers − 10) × €100 (first 10 included)',
+ 'Berufsgenossenschaft (F)': '0.5% of gross payroll (VBG IT/Office)',
+ 'Allgemeine Marketingkosten (F)': '8% of revenue (2026–2028), 10% from 2029',
+ 'Gewerbesteuer (F)': '12.25% of profit (rate 3.5% × multiplier 350%, only when profitable)',
+ 'Personalkosten': 'Sum from Personnel Costs tab',
+ 'Abschreibungen': 'Sum of depreciation from Investments tab',
+}
+
export function getValues(row: SheetRow): Record {
return row.values || row.values_total || row.values_brutto || (row as Record).values_invest as Record || {}
}