feat(buchhaltung): add transfers, bank statements, Haushaltsplan, and PDF export

This commit is contained in:
Matthias Hochmeister
2026-03-30 17:05:18 +02:00
parent 2eb59e9ff1
commit 5acfd7cc4f
14 changed files with 1911 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
// Lookup types
export type KontoArt = 'einnahme' | 'ausgabe' | 'vermoegen' | 'verbindlichkeit';
export type TransaktionTyp = 'einnahme' | 'ausgabe';
export type TransaktionTyp = 'einnahme' | 'ausgabe' | 'transfer';
export type TransaktionStatus = 'entwurf' | 'gebucht' | 'freigegeben' | 'storniert';
export type FreigabeStatus = 'ausstehend' | 'genehmigt' | 'abgelehnt';
export type WiederkehrendIntervall = 'monatlich' | 'quartalsweise' | 'halbjaehrlich' | 'jaehrlich';
@@ -32,6 +32,7 @@ export const TRANSAKTION_STATUS_COLORS: Record<TransaktionStatus, 'default' | 'w
export const TRANSAKTION_TYP_LABELS: Record<TransaktionTyp, string> = {
einnahme: 'Einnahme',
ausgabe: 'Ausgabe',
transfer: 'Transfer',
};
export const KONTO_ART_LABELS: Record<KontoArt, string> = {
@@ -154,6 +155,8 @@ export interface Transaktion {
konto_bezeichnung?: string;
konto_kontonummer?: number;
bankkonto_bezeichnung?: string;
transfer_ziel_bankkonto_id?: number;
transfer_ziel_bezeichnung?: string;
belege?: Beleg[];
}
@@ -306,3 +309,71 @@ export interface ErstattungLinks {
erstattung_transaktion_id: number | null;
quell_transaktion_ids: number[];
}
export interface TransferFormData {
haushaltsjahr_id: number;
bankkonto_id: number;
transfer_ziel_bankkonto_id: number;
betrag: number;
datum: string;
beschreibung?: string;
beleg_nr?: string;
}
export interface BuchhaltungEinstellungen {
default_alert_threshold?: string;
[key: string]: unknown;
}
export interface Planung {
id: number;
bezeichnung: string;
haushaltsjahr_id: number | null;
haushaltsjahr_bezeichnung?: string;
haushaltsjahr_jahr?: number;
beschreibung?: string;
status: PlanungStatus;
positionen_count: number;
total_gwg: number;
total_anlagen: number;
total_instandhaltung: number;
erstellt_von: string | null;
erstellt_am: string;
}
export interface Planposition {
id: number;
planung_id: number;
konto_id: number | null;
konto_bezeichnung?: string;
konto_kontonummer?: number;
bezeichnung: string;
budget_gwg: number;
budget_anlagen: number;
budget_instandhaltung: number;
notizen: string | null;
sort_order: number;
}
export interface PlanungDetail extends Planung {
positionen: Planposition[];
}
export interface BankkontoStatementRow {
id: number;
datum: string;
typ: TransaktionTyp;
beschreibung: string | null;
beleg_nr: string | null;
betrag: number;
laufender_saldo: number;
transfer_ziel_bezeichnung?: string;
}
export interface BankkontoStatement {
bankkonto: Bankkonto;
einnahmen: number;
ausgaben: number;
saldo: number;
rows: BankkontoStatementRow[];
}