fix(buchhaltung): respect budget_typ in konten manage table and pod detail subaccounts view

This commit is contained in:
Matthias Hochmeister
2026-03-30 14:37:04 +02:00
parent 293848c710
commit f27e3134ca
2 changed files with 32 additions and 25 deletions

View File

@@ -487,8 +487,8 @@ function buildTree(flat: KontoTreeNode[]): KontoTreeNode[] {
function KontoRow({ konto, depth = 0, onNavigate }: { konto: KontoTreeNode; depth?: number; onNavigate: (id: number) => void }) { function KontoRow({ konto, depth = 0, onNavigate }: { konto: KontoTreeNode; depth?: number; onNavigate: (id: number) => void }) {
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const isEinfach = (konto.budget_typ || 'detailliert') === 'einfach'; const isEinfach = (konto.budget_typ || 'detailliert') === 'einfach';
const totalBudget = isEinfach ? Number(konto.budget_gesamt || 0) : konto.budget_gwg + konto.budget_anlagen + konto.budget_instandhaltung; 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 = konto.spent_gwg + konto.spent_anlagen + konto.spent_instandhaltung; const totalSpent = Number(konto.spent_gwg || 0) + Number(konto.spent_anlagen || 0) + Number(konto.spent_instandhaltung || 0);
const utilization = totalBudget > 0 ? (totalSpent / totalBudget) * 100 : 0; const utilization = totalBudget > 0 ? (totalSpent / totalBudget) * 100 : 0;
return ( return (
@@ -534,7 +534,10 @@ function KontoManageRow({ konto, depth = 0, onNavigate }: {
onNavigate: (id: number) => void; onNavigate: (id: number) => void;
}) { }) {
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const totalBudget = Number(konto.budget_gwg) + Number(konto.budget_anlagen) + Number(konto.budget_instandhaltung); const isEinfach = (konto.budget_typ || 'detailliert') === 'einfach';
const totalBudget = isEinfach
? Number(konto.budget_gesamt || 0)
: Number(konto.budget_gwg) + Number(konto.budget_anlagen) + Number(konto.budget_instandhaltung);
return ( return (
<> <>
@@ -542,9 +545,9 @@ function KontoManageRow({ konto, depth = 0, onNavigate }: {
<TableCell sx={{ pl: 2 + depth * 3 }}> <TableCell sx={{ pl: 2 + depth * 3 }}>
<Typography variant="body2">{konto.kontonummer} {konto.bezeichnung}</Typography> <Typography variant="body2">{konto.kontonummer} {konto.bezeichnung}</Typography>
</TableCell> </TableCell>
<TableCell align="right">{fmtEur(konto.budget_gwg)}</TableCell> <TableCell align="right">{isEinfach ? '—' : fmtEur(konto.budget_gwg)}</TableCell>
<TableCell align="right">{fmtEur(konto.budget_anlagen)}</TableCell> <TableCell align="right">{isEinfach ? '—' : fmtEur(konto.budget_anlagen)}</TableCell>
<TableCell align="right">{fmtEur(konto.budget_instandhaltung)}</TableCell> <TableCell align="right">{isEinfach ? '—' : fmtEur(konto.budget_instandhaltung)}</TableCell>
<TableCell align="right"><strong>{fmtEur(totalBudget)}</strong></TableCell> <TableCell align="right"><strong>{fmtEur(totalBudget)}</strong></TableCell>
<TableCell sx={{ width: 40, px: 0.5 }}> <TableCell sx={{ width: 40, px: 0.5 }}>
{konto.children.length > 0 && ( {konto.children.length > 0 && (

View File

@@ -124,29 +124,33 @@ export default function BuchhaltungKontoDetail() {
<TableHead> <TableHead>
<TableRow> <TableRow>
<TableCell>Konto</TableCell> <TableCell>Konto</TableCell>
<TableCell align="right">Budget GWG</TableCell> {!isEinfach && <TableCell align="right">Budget GWG</TableCell>}
<TableCell align="right">Budget Anlagen</TableCell> {!isEinfach && <TableCell align="right">Budget Anlagen</TableCell>}
<TableCell align="right">Budget Instandh.</TableCell> {!isEinfach && <TableCell align="right">Budget Instandh.</TableCell>}
<TableCell align="right">Budget Gesamt</TableCell> <TableCell align="right">Budget Gesamt</TableCell>
</TableRow> </TableRow>
</TableHead> </TableHead>
<TableBody> <TableBody>
{children.map(child => ( {children.map(child => {
<TableRow const childIsEinfach = (child.budget_typ || 'detailliert') === 'einfach';
key={child.id} const childTotal = childIsEinfach
hover ? Number(child.budget_gesamt || 0)
sx={{ cursor: 'pointer' }} : Number(child.budget_gwg) + Number(child.budget_anlagen) + Number(child.budget_instandhaltung);
onClick={() => navigate(`/buchhaltung/konto/${child.id}`)} return (
> <TableRow
<TableCell>{child.kontonummer} {child.bezeichnung}</TableCell> key={child.id}
<TableCell align="right">{fmtEur(Number(child.budget_gwg))}</TableCell> hover
<TableCell align="right">{fmtEur(Number(child.budget_anlagen))}</TableCell> sx={{ cursor: 'pointer' }}
<TableCell align="right">{fmtEur(Number(child.budget_instandhaltung))}</TableCell> onClick={() => navigate(`/buchhaltung/konto/${child.id}`)}
<TableCell align="right"> >
{fmtEur(Number(child.budget_gwg) + Number(child.budget_anlagen) + Number(child.budget_instandhaltung))} <TableCell>{child.kontonummer} {child.bezeichnung}</TableCell>
</TableCell> {!isEinfach && <TableCell align="right">{childIsEinfach ? '—' : fmtEur(Number(child.budget_gwg))}</TableCell>}
</TableRow> {!isEinfach && <TableCell align="right">{childIsEinfach ? '—' : fmtEur(Number(child.budget_anlagen))}</TableCell>}
))} {!isEinfach && <TableCell align="right">{childIsEinfach ? '—' : fmtEur(Number(child.budget_instandhaltung))}</TableCell>}
<TableCell align="right">{fmtEur(childTotal)}</TableCell>
</TableRow>
);
})}
</TableBody> </TableBody>
</Table> </Table>
</TableContainer> </TableContainer>