feat: add account hierarchy, budget types (GWG/Anlagen/Instandhaltung), and Buchhaltung UI overhaul with collapsible tree, pending badge, and konto detail page
This commit is contained in:
@@ -127,6 +127,42 @@ class BuchhaltungController {
|
||||
}
|
||||
}
|
||||
|
||||
async getKontenTree(req: Request, res: Response): Promise<void> {
|
||||
const haushaltsjahrId = req.query.haushaltsjahr_id ? parseInt(req.query.haushaltsjahr_id as string, 10) : undefined;
|
||||
if (!haushaltsjahrId || isNaN(haushaltsjahrId)) { res.status(400).json({ success: false, message: 'haushaltsjahr_id erforderlich' }); return; }
|
||||
try {
|
||||
const tree = await buchhaltungService.getKontenTree(haushaltsjahrId);
|
||||
res.json(tree);
|
||||
} catch (error) {
|
||||
logger.error('BuchhaltungController.getKontenTree', { error });
|
||||
res.status(500).json({ error: 'Fehler beim Laden des Kontenbaums' });
|
||||
}
|
||||
}
|
||||
|
||||
async getKontoDetail(req: Request, res: Response): Promise<void> {
|
||||
const id = parseInt(param(req, 'id'), 10);
|
||||
if (isNaN(id)) { res.status(400).json({ success: false, message: 'Ungültige ID' }); return; }
|
||||
try {
|
||||
const detail = await buchhaltungService.getKontoDetail(id);
|
||||
if (!detail) { res.status(404).json({ error: 'Konto nicht gefunden' }); return; }
|
||||
res.json(detail);
|
||||
} catch (error) {
|
||||
logger.error('BuchhaltungController.getKontoDetail', { error });
|
||||
res.status(500).json({ error: 'Fehler beim Laden des Kontos' });
|
||||
}
|
||||
}
|
||||
|
||||
async getPendingCount(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const haushaltsjahrId = req.query.haushaltsjahr_id ? parseInt(req.query.haushaltsjahr_id as string, 10) : undefined;
|
||||
const count = await buchhaltungService.getPendingCount(haushaltsjahrId);
|
||||
res.json({ count });
|
||||
} catch (error) {
|
||||
logger.error('BuchhaltungController.getPendingCount', { error });
|
||||
res.status(500).json({ error: 'Fehler' });
|
||||
}
|
||||
}
|
||||
|
||||
async createKonto(req: Request, res: Response): Promise<void> {
|
||||
try {
|
||||
const data = await buchhaltungService.createKonto(req.body, req.user!.id);
|
||||
|
||||
Reference in New Issue
Block a user