feat(buchhaltung): add transfers, bank statements, Haushaltsplan, and PDF export
This commit is contained in:
@@ -11,7 +11,11 @@ import type {
|
||||
Freigabe,
|
||||
Kategorie,
|
||||
ErstattungFormData, ErstattungLinks,
|
||||
TransferFormData,
|
||||
BuchhaltungAudit,
|
||||
BuchhaltungEinstellungen,
|
||||
BankkontoStatement,
|
||||
Planung, PlanungDetail, Planposition,
|
||||
} from '../types/buchhaltung.types';
|
||||
|
||||
export const buchhaltungApi = {
|
||||
@@ -67,6 +71,20 @@ export const buchhaltungApi = {
|
||||
deleteBankkonto: async (id: number): Promise<void> => {
|
||||
await api.delete(`/api/buchhaltung/bankkonten/${id}`);
|
||||
},
|
||||
getBankkontoStatement: async (id: number, params?: { von?: string; bis?: string }): Promise<BankkontoStatement> => {
|
||||
const qs = new URLSearchParams();
|
||||
if (params?.von) qs.set('von', params.von);
|
||||
if (params?.bis) qs.set('bis', params.bis);
|
||||
const r = await api.get(`/api/buchhaltung/bankkonten/${id}/transaktionen?${qs.toString()}`);
|
||||
const d = r.data;
|
||||
return {
|
||||
bankkonto: d.konto,
|
||||
einnahmen: d.summary.gesamteinnahmen,
|
||||
ausgaben: d.summary.gesamtausgaben,
|
||||
saldo: d.summary.saldo,
|
||||
rows: d.rows,
|
||||
};
|
||||
},
|
||||
|
||||
// ── Konten ───────────────────────────────────────────────────────────────────
|
||||
getKonten: async (haushaltsjahrId: number): Promise<Konto[]> => {
|
||||
@@ -220,9 +238,60 @@ export const buchhaltungApi = {
|
||||
return r.data.data;
|
||||
},
|
||||
|
||||
// ── Transfers ──────────────────────────────────────────────────────────────
|
||||
createTransfer: async (data: TransferFormData): Promise<{ debit: Transaktion; credit: Transaktion }> => {
|
||||
const r = await api.post('/api/buchhaltung/transfers', data);
|
||||
return r.data.data;
|
||||
},
|
||||
|
||||
// ── Audit ─────────────────────────────────────────────────────────────────
|
||||
getAudit: async (transaktionId: number): Promise<BuchhaltungAudit[]> => {
|
||||
const r = await api.get(`/api/buchhaltung/audit/${transaktionId}`);
|
||||
return r.data.data;
|
||||
},
|
||||
|
||||
// ── Einstellungen ─────────────────────────────────────────────────────────
|
||||
getEinstellungen: async (): Promise<BuchhaltungEinstellungen> => {
|
||||
const r = await api.get('/api/buchhaltung/einstellungen');
|
||||
return r.data.data;
|
||||
},
|
||||
setEinstellungen: async (data: Record<string, unknown>): Promise<void> => {
|
||||
await api.put('/api/buchhaltung/einstellungen', data);
|
||||
},
|
||||
|
||||
// ── Planung ───────────────────────────────────────────────────────────────
|
||||
listPlanungen: async (): Promise<Planung[]> => {
|
||||
const r = await api.get('/api/buchhaltung/planung');
|
||||
return r.data.data;
|
||||
},
|
||||
getPlanung: async (id: number): Promise<PlanungDetail> => {
|
||||
const r = await api.get(`/api/buchhaltung/planung/${id}`);
|
||||
return r.data.data;
|
||||
},
|
||||
createPlanung: async (data: { haushaltsjahr_id?: number; bezeichnung: string }): Promise<Planung> => {
|
||||
const r = await api.post('/api/buchhaltung/planung', data);
|
||||
return r.data.data;
|
||||
},
|
||||
updatePlanung: async (id: number, data: { bezeichnung?: string; status?: string }): Promise<Planung> => {
|
||||
const r = await api.put(`/api/buchhaltung/planung/${id}`, data);
|
||||
return r.data.data;
|
||||
},
|
||||
deletePlanung: async (id: number): Promise<void> => {
|
||||
await api.delete(`/api/buchhaltung/planung/${id}`);
|
||||
},
|
||||
createPlanposition: async (planungId: number, data: { konto_id?: number | null; bezeichnung: string; budget_gwg?: number; budget_anlagen?: number; budget_instandhaltung?: number; notizen?: string; sort_order?: number }): Promise<Planposition> => {
|
||||
const r = await api.post(`/api/buchhaltung/planung/${planungId}/positionen`, data);
|
||||
return r.data.data;
|
||||
},
|
||||
updatePlanposition: async (id: number, data: Partial<{ konto_id: number | null; bezeichnung: string; budget_gwg: number; budget_anlagen: number; budget_instandhaltung: number; notizen: string; sort_order: number }>): Promise<Planposition> => {
|
||||
const r = await api.put(`/api/buchhaltung/planung/positionen/${id}`, data);
|
||||
return r.data.data;
|
||||
},
|
||||
deletePlanposition: async (id: number): Promise<void> => {
|
||||
await api.delete(`/api/buchhaltung/planung/positionen/${id}`);
|
||||
},
|
||||
createHaushaltsjahrFromPlan: async (planungId: number): Promise<Haushaltsjahr> => {
|
||||
const r = await api.post(`/api/buchhaltung/planung/${planungId}/create-haushaltsjahr`);
|
||||
return r.data.data;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user