feat: DATEV Export (EXTF v5.0) + iCal Fristen feed + UI buttons

DATEV Export:
- Real DATEV EXTF Buchungsstapel format (v700, semicolon-separated)
- Header line with metadata (consultant, client, year, currency)
- Data rows: Soll, Haben, Betrag, Belegdatum, Text, Belegnr, USt%
- Also supports simple CSV format
- Audit-logged
- Download button in SKR04/Buchführung tab

iCal Fristen Feed:
- Real .ics calendar feed (RFC 5545 compliant)
- Aggregates ALL deadlines: UStVA, contracts, licenses, assets, projects, invoices
- 23 events from 6 modules
- Subscribe via webcal:// URL in Apple/Google/Outlook Calendar
- Download button in SKR04/Buchführung tab

0 TypeScript errors, ESLint clean
This commit is contained in:
Z User committed 2026-10-27 18:51:55 +00:00
1 parent c184513b2a
commit 07147a758c
3 files changed
+291

No files matched your search

+33
View File
@@ -13,6 +13,9 @@ import {
Link2,
Banknote,
Lock,
Download,
FileText,
CalendarClock,
} from 'lucide-react'
import { useFetch } from '@/hooks/use-fetch'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
@@ -755,6 +758,36 @@ function BuchhaltungTab() {
</CardContent>
</Card>
{/* DATEV + iCal export */}
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
<a
href="/api/aos/datev-export?format=datev&year=2026"
className="flex items-center gap-3 rounded-md border border-border p-3 transition hover:border-foreground/40"
>
<div className="flex size-10 items-center justify-center rounded-md bg-muted">
<FileText className="size-5 text-muted-foreground" />
</div>
<div className="min-w-0 flex-1">
<p className="text-sm font-medium">DATEV Buchungsstapel (EXTF)</p>
<p className="text-[11px] text-muted-foreground">SKR04 Buchungen als DATEV v5.0 Export. Steuerberater-kompatibel.</p>
</div>
<Download className="size-4 text-muted-foreground" />
</a>
<a
href="/api/aos/fristen/ical"
className="flex items-center gap-3 rounded-md border border-border p-3 transition hover:border-foreground/40"
>
<div className="flex size-10 items-center justify-center rounded-md bg-muted">
<CalendarClock className="size-5 text-muted-foreground" />
</div>
<div className="min-w-0 flex-1">
<p className="text-sm font-medium">Fristen als iCal-Feed</p>
<p className="text-[11px] text-muted-foreground">Alle Deadlines (UStVA, Verträge, Lizenzen) als Kalender-Abo.</p>
</div>
<Download className="size-4 text-muted-foreground" />
</a>
</div>
<div className="rounded-md border border-dashed border-border p-3 text-[11px] text-muted-foreground">
<p className="font-medium text-foreground">SKR04 Kontenrahmen · Doppelte Buchführung · GoBD Festschreibung</p>
<p className="mt-1">Jeder Buchungssatz wird per „Soll an Haben" gebucht. GoBD-Festschreibung macht Buchungen unveränderlich (SHA-256 Hash). Reverse Charge und § 19 UStG (Kleinunternehmer) werden gekennzeichnet. DATEV-Export als Buchungsstapel.</p>