diff --git a/frontend/src/pages/BestellungDetail.tsx b/frontend/src/pages/BestellungDetail.tsx index 86dadc3..937e06f 100644 --- a/frontend/src/pages/BestellungDetail.tsx +++ b/frontend/src/pages/BestellungDetail.tsx @@ -57,6 +57,30 @@ import type { BestellungStatus, BestellpositionFormData, ErinnerungFormData } fr // ── Helpers ── +const DIENSTGRAD_KURZ: Record = { + 'Feuerwehranwärter': 'FA', 'Jugendfeuerwehrmann': 'JFM', 'Probefeuerwehrmann': 'PFM', + 'Feuerwehrmann': 'FM', 'Feuerwehrfrau': 'FF', + 'Oberfeuerwehrmann': 'OFM', 'Oberfeuerwehrfrau': 'OFF', + 'Hauptfeuerwehrmann': 'HFM', 'Hauptfeuerwehrfrau': 'HFF', + 'Löschmeister': 'LM', 'Oberlöschmeister': 'OLM', 'Hauptlöschmeister': 'HLM', + 'Brandmeister': 'BM', 'Oberbrandmeister': 'OBM', 'Hauptbrandmeister': 'HBM', + 'Brandinspektor': 'BI', 'Oberbrandinspektor': 'OBI', 'Brandoberinspektor': 'BOI', + 'Brandamtmann': 'BAM', + 'Verwaltungsmeister': 'VM', 'Oberverwaltungsmeister': 'OVM', + 'Hauptverwaltungsmeister': 'HVM', 'Verwalter': 'V', + 'Ehren-Feuerwehrmann': 'E-FM', 'Ehren-Feuerwehrfrau': 'E-FF', + 'Ehren-Oberfeuerwehrmann': 'E-OFM', 'Ehren-Oberfeuerwehrfrau': 'E-OFF', + 'Ehren-Hauptfeuerwehrmann': 'E-HFM', 'Ehren-Hauptfeuerwehrfrau': 'E-HFF', + 'Ehren-Löschmeister': 'E-LM', 'Ehren-Oberlöschmeister': 'E-OLM', 'Ehren-Hauptlöschmeister': 'E-HLM', + 'Ehren-Brandmeister': 'E-BM', 'Ehren-Oberbrandmeister': 'E-OBM', 'Ehren-Hauptbrandmeister': 'E-HBM', + 'Ehren-Brandinspektor': 'E-BI', 'Ehren-Oberbrandinspektor': 'E-OBI', 'Ehren-Brandoberinspektor': 'E-BOI', + 'Ehren-Brandamtmann': 'E-BAM', + 'Ehren-Verwaltungsmeister': 'E-VM', 'Ehren-Oberverwaltungsmeister': 'E-OVM', + 'Ehren-Hauptverwaltungsmeister': 'E-HVM', 'Ehren-Verwalter': 'E-V', +}; + +const kurzDienstgrad = (d?: string) => (d ? (DIENSTGRAD_KURZ[d] ?? d) : undefined); + const formatCurrency = (value?: number) => value != null ? new Intl.NumberFormat('de-AT', { style: 'currency', currency: 'EUR' }).format(value) : '–'; @@ -400,7 +424,7 @@ export default function BestellungDetail() { doc.text('Besteller', 10, curY); curY += 5; const nameWithRank = bestellung.besteller_dienstgrad - ? `${bestellung.besteller_dienstgrad} ${bestellung.besteller_name}` + ? `${kurzDienstgrad(bestellung.besteller_dienstgrad)} ${bestellung.besteller_name}` : bestellung.besteller_name; row('Name', nameWithRank); if (bestellung.besteller_email) row('E-Mail', bestellung.besteller_email); @@ -449,6 +473,7 @@ export default function BestellungDetail() { startY: curY, theme: 'grid', headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' }, + alternateRowStyles: { fillColor: [245, 245, 245] }, margin: { left: 10, right: 10 }, styles: { fontSize: 9, cellPadding: 2 }, columnStyles: { @@ -477,6 +502,7 @@ export default function BestellungDetail() { startY: curY, theme: 'grid', headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' }, + alternateRowStyles: { fillColor: [245, 245, 245] }, margin: { left: 10, right: 10 }, styles: { fontSize: 9, cellPadding: 2 }, columnStyles: { @@ -504,20 +530,18 @@ export default function BestellungDetail() { doc.setFont('helvetica', 'normal'); doc.setTextColor(0, 0, 0); - // Signature line - doc.setDrawColor(0, 0, 0); - doc.setLineWidth(0.4); + // Ort/Datum line (left) doc.line(10, curY, 90, curY); - // Date line (right side) + // Signature line (right) doc.line(120, curY, 200, curY); curY += 4; + doc.text('Ort, Datum', 10, curY); const sigName = bestellung.besteller_dienstgrad - ? `${bestellung.besteller_dienstgrad} ${bestellung.besteller_name || ''}` + ? `${kurzDienstgrad(bestellung.besteller_dienstgrad)} ${bestellung.besteller_name || ''}` : (bestellung.besteller_name || ''); - doc.text(sigName, 10, curY); - doc.text('Ort, Datum', 120, curY); + doc.text(sigName, 120, curY); doc.save(`bestellung_${kennung.replace('/', '-')}.pdf`); }