feat: add Buchhaltung module with fiscal years, budget accounts, transactions, and approval workflow
This commit is contained in:
229
frontend/src/types/buchhaltung.types.ts
Normal file
229
frontend/src/types/buchhaltung.types.ts
Normal file
@@ -0,0 +1,229 @@
|
||||
// Lookup types
|
||||
export type KontoArt = 'einnahme' | 'ausgabe' | 'vermoegen' | 'verbindlichkeit';
|
||||
export type TransaktionTyp = 'einnahme' | 'ausgabe';
|
||||
export type TransaktionStatus = 'entwurf' | 'gebucht' | 'freigegeben' | 'storniert';
|
||||
export type FreigabeStatus = 'ausstehend' | 'genehmigt' | 'abgelehnt';
|
||||
export type WiederkehrendIntervall = 'monatlich' | 'quartalsweise' | 'halbjaehrlich' | 'jaehrlich';
|
||||
export type PlanungStatus = 'entwurf' | 'aktiv' | 'abgeschlossen';
|
||||
|
||||
// Label maps
|
||||
export const TRANSAKTION_STATUS_LABELS: Record<TransaktionStatus, string> = {
|
||||
entwurf: 'Entwurf',
|
||||
gebucht: 'Gebucht',
|
||||
freigegeben: 'Freigegeben',
|
||||
storniert: 'Storniert',
|
||||
};
|
||||
|
||||
export const TRANSAKTION_STATUS_COLORS: Record<TransaktionStatus, 'default' | 'warning' | 'success' | 'error'> = {
|
||||
entwurf: 'default',
|
||||
gebucht: 'warning',
|
||||
freigegeben: 'success',
|
||||
storniert: 'error',
|
||||
};
|
||||
|
||||
export const TRANSAKTION_TYP_LABELS: Record<TransaktionTyp, string> = {
|
||||
einnahme: 'Einnahme',
|
||||
ausgabe: 'Ausgabe',
|
||||
};
|
||||
|
||||
export const KONTO_ART_LABELS: Record<KontoArt, string> = {
|
||||
einnahme: 'Einnahmen',
|
||||
ausgabe: 'Ausgaben',
|
||||
vermoegen: 'Vermögen',
|
||||
verbindlichkeit: 'Verbindlichkeiten',
|
||||
};
|
||||
|
||||
export const INTERVALL_LABELS: Record<WiederkehrendIntervall, string> = {
|
||||
monatlich: 'Monatlich',
|
||||
quartalsweise: 'Quartalsweise',
|
||||
halbjaehrlich: 'Halbjährlich',
|
||||
jaehrlich: 'Jährlich',
|
||||
};
|
||||
|
||||
// Entities
|
||||
export interface KontoTyp {
|
||||
id: number;
|
||||
bezeichnung: string;
|
||||
art: KontoArt;
|
||||
sort_order: number;
|
||||
}
|
||||
|
||||
export interface Bankkonto {
|
||||
id: number;
|
||||
bezeichnung: string;
|
||||
iban: string | null;
|
||||
bic: string | null;
|
||||
institut: string | null;
|
||||
ist_standard: boolean;
|
||||
aktiv: boolean;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
aktualisiert_am: string;
|
||||
}
|
||||
|
||||
export interface Haushaltsjahr {
|
||||
id: number;
|
||||
jahr: number;
|
||||
bezeichnung: string;
|
||||
beginn: string;
|
||||
ende: string;
|
||||
abgeschlossen: boolean;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
aktualisiert_am: string;
|
||||
}
|
||||
|
||||
export interface Konto {
|
||||
id: number;
|
||||
haushaltsjahr_id: number;
|
||||
konto_typ_id: number | null;
|
||||
kontonummer: string;
|
||||
bezeichnung: string;
|
||||
budget_betrag: number;
|
||||
notizen: string | null;
|
||||
aktiv: boolean;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
aktualisiert_am: string;
|
||||
// Joined fields
|
||||
konto_typ_bezeichnung?: string;
|
||||
konto_typ_art?: KontoArt;
|
||||
}
|
||||
|
||||
export interface KontoBudgetInfo extends Konto {
|
||||
gebucht_betrag: number;
|
||||
ausstehend_betrag: number;
|
||||
verfuegbar_betrag: number;
|
||||
auslastung_prozent: number;
|
||||
}
|
||||
|
||||
export interface Transaktion {
|
||||
id: number;
|
||||
haushaltsjahr_id: number;
|
||||
konto_id: number | null;
|
||||
bankkonto_id: number | null;
|
||||
laufende_nummer: number | null;
|
||||
typ: TransaktionTyp;
|
||||
betrag: number;
|
||||
datum: string;
|
||||
buchungsdatum: string | null;
|
||||
beschreibung: string | null;
|
||||
empfaenger_auftraggeber: string | null;
|
||||
verwendungszweck: string | null;
|
||||
beleg_nr: string | null;
|
||||
status: TransaktionStatus;
|
||||
bestellung_id: number | null;
|
||||
erstellt_von: string | null;
|
||||
gebucht_von: string | null;
|
||||
erstellt_am: string;
|
||||
aktualisiert_am: string;
|
||||
// Joined fields
|
||||
konto_bezeichnung?: string;
|
||||
konto_kontonummer?: string;
|
||||
bankkonto_bezeichnung?: string;
|
||||
belege?: Beleg[];
|
||||
}
|
||||
|
||||
export interface Beleg {
|
||||
id: number;
|
||||
transaktion_id: number;
|
||||
dateiname: string;
|
||||
original_name: string;
|
||||
dateityp: string;
|
||||
dateigroesse: number;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
}
|
||||
|
||||
export interface Freigabe {
|
||||
id: number;
|
||||
transaktion_id: number;
|
||||
status: FreigabeStatus;
|
||||
kommentar: string | null;
|
||||
freigegeben_von: string | null;
|
||||
freigegeben_am: string | null;
|
||||
erstellt_am: string;
|
||||
}
|
||||
|
||||
export interface WiederkehrendBuchung {
|
||||
id: number;
|
||||
bezeichnung: string;
|
||||
konto_id: number | null;
|
||||
bankkonto_id: number | null;
|
||||
typ: TransaktionTyp;
|
||||
betrag: number;
|
||||
beschreibung: string | null;
|
||||
empfaenger_auftraggeber: string | null;
|
||||
intervall: WiederkehrendIntervall;
|
||||
naechste_ausfuehrung: string;
|
||||
aktiv: boolean;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
aktualisiert_am: string;
|
||||
}
|
||||
|
||||
export interface BuchhaltungAudit {
|
||||
id: number;
|
||||
transaktion_id: number | null;
|
||||
aktion: string;
|
||||
details: Record<string, unknown> | null;
|
||||
erstellt_von: string | null;
|
||||
erstellt_am: string;
|
||||
}
|
||||
|
||||
export interface BuchhaltungStats {
|
||||
haushaltsjahr_id: number;
|
||||
total_einnahmen: number;
|
||||
total_ausgaben: number;
|
||||
saldo: number;
|
||||
konten_budget: KontoBudgetInfo[];
|
||||
}
|
||||
|
||||
// Form data types
|
||||
export interface HaushaltsjahrFormData {
|
||||
jahr: number;
|
||||
bezeichnung: string;
|
||||
beginn: string;
|
||||
ende: string;
|
||||
}
|
||||
|
||||
export interface BankkontoFormData {
|
||||
bezeichnung: string;
|
||||
iban?: string;
|
||||
bic?: string;
|
||||
institut?: string;
|
||||
ist_standard?: boolean;
|
||||
}
|
||||
|
||||
export interface KontoFormData {
|
||||
haushaltsjahr_id: number;
|
||||
konto_typ_id?: number;
|
||||
kontonummer: string;
|
||||
bezeichnung: string;
|
||||
budget_betrag?: number;
|
||||
notizen?: string;
|
||||
}
|
||||
|
||||
export interface TransaktionFormData {
|
||||
haushaltsjahr_id: number;
|
||||
konto_id?: number | null;
|
||||
bankkonto_id?: number | null;
|
||||
typ: TransaktionTyp;
|
||||
betrag: number;
|
||||
datum: string;
|
||||
beschreibung?: string;
|
||||
empfaenger_auftraggeber?: string;
|
||||
verwendungszweck?: string;
|
||||
beleg_nr?: string;
|
||||
}
|
||||
|
||||
// Filter type for transaction list
|
||||
export interface TransaktionFilters {
|
||||
haushaltsjahr_id?: number;
|
||||
konto_id?: number;
|
||||
status?: TransaktionStatus;
|
||||
typ?: TransaktionTyp;
|
||||
datum_von?: string;
|
||||
datum_bis?: string;
|
||||
search?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user