diff --git a/backend/src/services/buchhaltung.service.ts b/backend/src/services/buchhaltung.service.ts index 6981463..503bc60 100644 --- a/backend/src/services/buchhaltung.service.ts +++ b/backend/src/services/buchhaltung.service.ts @@ -496,10 +496,11 @@ async function getKontenTree(haushaltsjahrId: number) { kt.bezeichnung as konto_typ_bezeichnung, kt.art as konto_typ_art, pk.bezeichnung AS parent_bezeichnung, k.kategorie_id, kat.bezeichnung AS kategorie_bezeichnung, - COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='gwg' AND t.status='gebucht' THEN t.betrag ELSE 0 END), 0) AS spent_gwg, - COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='anlagen' AND t.status='gebucht' THEN t.betrag ELSE 0 END), 0) AS spent_anlagen, - COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='instandhaltung' AND t.status='gebucht' THEN t.betrag ELSE 0 END), 0) AS spent_instandhaltung, - COALESCE(SUM(CASE WHEN t.typ='einnahme' AND t.status='gebucht' THEN t.betrag ELSE 0 END), 0) AS einnahmen_betrag + COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='gwg' AND t.status IN ('gebucht','freigegeben') THEN t.betrag ELSE 0 END), 0) AS spent_gwg, + COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='anlagen' AND t.status IN ('gebucht','freigegeben') THEN t.betrag ELSE 0 END), 0) AS spent_anlagen, + COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.ausgaben_typ='instandhaltung' AND t.status IN ('gebucht','freigegeben') THEN t.betrag ELSE 0 END), 0) AS spent_instandhaltung, + COALESCE(SUM(CASE WHEN t.typ='ausgabe' AND t.status IN ('gebucht','freigegeben') THEN t.betrag ELSE 0 END), 0) AS spent_gesamt, + COALESCE(SUM(CASE WHEN t.typ='einnahme' AND t.status IN ('gebucht','freigegeben') THEN t.betrag ELSE 0 END), 0) AS einnahmen_betrag FROM buchhaltung_konten k LEFT JOIN buchhaltung_konto_typen kt ON k.konto_typ_id = kt.id LEFT JOIN buchhaltung_konten pk ON pk.id = k.parent_id diff --git a/frontend/src/pages/Buchhaltung.tsx b/frontend/src/pages/Buchhaltung.tsx index c0ba18d..fda6c80 100644 --- a/frontend/src/pages/Buchhaltung.tsx +++ b/frontend/src/pages/Buchhaltung.tsx @@ -513,7 +513,7 @@ function KontoRow({ konto, depth = 0, onNavigate }: { konto: KontoTreeNode; dept const [open, setOpen] = useState(false); const isEinfach = (konto.budget_typ || 'detailliert') === 'einfach'; const totalBudget = isEinfach ? Number(konto.budget_gesamt || 0) : Number(konto.budget_gwg || 0) + Number(konto.budget_anlagen || 0) + Number(konto.budget_instandhaltung || 0); - const totalSpent = Number(konto.spent_gwg || 0) + Number(konto.spent_anlagen || 0) + Number(konto.spent_instandhaltung || 0); + const totalSpent = Number(konto.spent_gesamt || 0); return ( <> @@ -618,7 +618,7 @@ function UebersichtTab({ haushaltsjahre, selectedJahrId, onJahrChange }: { const sumSpentGwg = treeData.reduce((s, k) => s + Number(k.spent_gwg || 0), 0); const sumSpentAnlagen = treeData.reduce((s, k) => s + Number(k.spent_anlagen || 0), 0); const sumSpentInst = treeData.reduce((s, k) => s + Number(k.spent_instandhaltung || 0), 0); - const sumSpentGesamt = sumSpentGwg + sumSpentAnlagen + sumSpentInst; + const sumSpentGesamt = treeData.reduce((s, k) => s + Number(k.spent_gesamt || 0), 0); const sumEinnahmen = treeData.reduce((s, k) => s + Number(k.einnahmen_betrag || 0), 0); const totalEinnahmen = sumEinnahmen; @@ -724,6 +724,7 @@ function UebersichtTab({ haushaltsjahre, selectedJahrId, onJahrChange }: { const catSpentGwg = items.reduce((s, k) => s + Number(k.spent_gwg || 0), 0); const catSpentAnl = items.reduce((s, k) => s + Number(k.spent_anlagen || 0), 0); const catSpentInst = items.reduce((s, k) => s + Number(k.spent_instandhaltung || 0), 0); + const catSpentGesamt = items.reduce((s, k) => s + Number(k.spent_gesamt || 0), 0); const catEinnahmen = items.reduce((s, k) => s + Number(k.einnahmen_betrag || 0), 0); rows.push( @@ -735,7 +736,7 @@ function UebersichtTab({ haushaltsjahre, selectedJahrId, onJahrChange }: { {fmtEur(catSpentGwg)} {fmtEur(catSpentAnl)} {fmtEur(catSpentInst)} - {fmtEur(catSpentGwg + catSpentAnl + catSpentInst)} + {fmtEur(catSpentGesamt)} {fmtEur(catEinnahmen)} @@ -1024,13 +1025,13 @@ function TransaktionenTab({ haushaltsjahre, selectedJahrId, onJahrChange }: { const buchenMut = useMutation({ mutationFn: (id: number) => buchhaltungApi.buchenTransaktion(id), - onSuccess: () => { qc.invalidateQueries({ queryKey: ['buchhaltung-transaktionen'] }); qc.invalidateQueries({ queryKey: ['buchhaltung-stats'] }); showSuccess('Transaktion gebucht'); }, + onSuccess: () => { qc.invalidateQueries({ queryKey: ['buchhaltung-transaktionen'] }); qc.invalidateQueries({ queryKey: ['buchhaltung-stats'] }); qc.invalidateQueries({ queryKey: ['kontenTree'] }); showSuccess('Transaktion gebucht'); }, onError: () => showError('Buchung fehlgeschlagen'), }); const stornoMut = useMutation({ mutationFn: (id: number) => buchhaltungApi.stornoTransaktion(id), - onSuccess: () => { qc.invalidateQueries({ queryKey: ['buchhaltung-transaktionen'] }); qc.invalidateQueries({ queryKey: ['buchhaltung-stats'] }); setTxSubTab(0); showSuccess('Transaktion storniert'); }, + onSuccess: () => { qc.invalidateQueries({ queryKey: ['buchhaltung-transaktionen'] }); qc.invalidateQueries({ queryKey: ['buchhaltung-stats'] }); qc.invalidateQueries({ queryKey: ['kontenTree'] }); setTxSubTab(0); showSuccess('Transaktion storniert'); }, onError: () => showError('Storno fehlgeschlagen'), }); @@ -1981,20 +1982,20 @@ export default function Buchhaltung() { - + - -