import Link from 'next/link' import { Archive, CalendarClock, FolderArchive, Paperclip, ScrollText, } from 'lucide-react' import { SeitenKopf } from '@/components/seiten-kopf' import { Rechtshinweis } from '@/components/rechtshinweis' import { Badge } from '@/components/ui/badge' import { Card, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { BerichtsListe } from '@/components/berichte/berichts-liste' import { berichtskontext, berichtsZeilenLaden } from '@/components/berichte/kontext' import { HinweisKarten } from '@/components/hinweise/HinweisKarten' import { db, nichtGeloescht } from '@/lib/db' import { formatDatum, relativeTage, tageBis } from '@/lib/utils' export const metadata = { title: 'Berichte' } /** Fristen, hinter denen ein Bericht steht - danach sucht die Übersicht. */ const BERICHTSFRISTEN = [ 'anfangsbericht', 'jahresbericht', 'vermoegensverzeichnis', 'vermoegensuebersicht', 'rechnungslegung', ] const WEGE = [ { href: '/berichte/jahresbericht', titel: 'Jahresbericht', beschreibung: 'Textentwurf aus Kontaktprotokollen, Gesundheitsereignissen und Vorgängen – zum Überarbeiten, nicht zum blinden Abgeben.', icon: ScrollText, }, { href: '/berichte/belegmappe', titel: 'Belegmappe', beschreibung: 'Alle Belege eines Zeitraums oder eines Vorgangs als ein PDF mit Deckblatt und Verzeichnis.', icon: FolderArchive, }, { href: '/berichte/unterlagenpaket', titel: 'Unterlagen für den Träger', beschreibung: 'Die nachgeforderten Unterlagen als ein PDF mit Anschreiben, laufender Nummer und Inhaltsverzeichnis.', icon: Paperclip, }, { href: '/berichte/export', titel: 'Vollexport', beschreibung: 'Alles, was gespeichert ist, als ZIP – damit du auch ohne diese Anwendung weiterarbeiten kannst.', icon: Archive, }, ] /** * Die Berichtsuebersicht beantwortet zwei Fragen: * "Was ist demnaechst faellig?" und "Was habe ich wann abgegeben?". * * Die erste Frage kommt aus den Fristen - dort stehen die gesetzlichen * Pflichten mit Datum. Die zweite aus den protokollierten Berichten. */ export default async function BerichteSeite() { const { betreuteId, darfBerichteSchreiben } = await berichtskontext('lesen') const [fristen, zeilen] = await Promise.all([ db.frist.findMany({ where: { betreuteId, status: 'OFFEN', ...nichtGeloescht, OR: BERICHTSFRISTEN.map((schluessel) => ({ systemSchluessel: { startsWith: schluessel }, })), }, orderBy: { datum: 'asc' }, take: 10, }), berichtsZeilenLaden(betreuteId, darfBerichteSchreiben), ]) return (
Zurzeit steht keine Berichtsfrist offen. Prüfe unter{' '} Fristen , ob die Pflichtfristen aus dem Bestellungsdatum schon abgeleitet sind.
) : (