This commit is contained in:
Matthias Hochmeister
2026-03-26 11:32:50 +01:00
parent d4adf9230d
commit d351ea2647

View File

@@ -57,6 +57,30 @@ import type { BestellungStatus, BestellpositionFormData, ErinnerungFormData } fr
// ── Helpers ──
const DIENSTGRAD_KURZ: Record<string, string> = {
'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`);
}