update
This commit is contained in:
@@ -57,6 +57,30 @@ import type { BestellungStatus, BestellpositionFormData, ErinnerungFormData } fr
|
|||||||
|
|
||||||
// ── Helpers ──
|
// ── 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) =>
|
const formatCurrency = (value?: number) =>
|
||||||
value != null ? new Intl.NumberFormat('de-AT', { style: 'currency', currency: 'EUR' }).format(value) : '–';
|
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);
|
doc.text('Besteller', 10, curY);
|
||||||
curY += 5;
|
curY += 5;
|
||||||
const nameWithRank = bestellung.besteller_dienstgrad
|
const nameWithRank = bestellung.besteller_dienstgrad
|
||||||
? `${bestellung.besteller_dienstgrad} ${bestellung.besteller_name}`
|
? `${kurzDienstgrad(bestellung.besteller_dienstgrad)} ${bestellung.besteller_name}`
|
||||||
: bestellung.besteller_name;
|
: bestellung.besteller_name;
|
||||||
row('Name', nameWithRank);
|
row('Name', nameWithRank);
|
||||||
if (bestellung.besteller_email) row('E-Mail', bestellung.besteller_email);
|
if (bestellung.besteller_email) row('E-Mail', bestellung.besteller_email);
|
||||||
@@ -449,6 +473,7 @@ export default function BestellungDetail() {
|
|||||||
startY: curY,
|
startY: curY,
|
||||||
theme: 'grid',
|
theme: 'grid',
|
||||||
headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' },
|
headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' },
|
||||||
|
alternateRowStyles: { fillColor: [245, 245, 245] },
|
||||||
margin: { left: 10, right: 10 },
|
margin: { left: 10, right: 10 },
|
||||||
styles: { fontSize: 9, cellPadding: 2 },
|
styles: { fontSize: 9, cellPadding: 2 },
|
||||||
columnStyles: {
|
columnStyles: {
|
||||||
@@ -477,6 +502,7 @@ export default function BestellungDetail() {
|
|||||||
startY: curY,
|
startY: curY,
|
||||||
theme: 'grid',
|
theme: 'grid',
|
||||||
headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' },
|
headStyles: { fillColor: [66, 66, 66], textColor: 255, fontStyle: 'bold' },
|
||||||
|
alternateRowStyles: { fillColor: [245, 245, 245] },
|
||||||
margin: { left: 10, right: 10 },
|
margin: { left: 10, right: 10 },
|
||||||
styles: { fontSize: 9, cellPadding: 2 },
|
styles: { fontSize: 9, cellPadding: 2 },
|
||||||
columnStyles: {
|
columnStyles: {
|
||||||
@@ -504,20 +530,18 @@ export default function BestellungDetail() {
|
|||||||
doc.setFont('helvetica', 'normal');
|
doc.setFont('helvetica', 'normal');
|
||||||
doc.setTextColor(0, 0, 0);
|
doc.setTextColor(0, 0, 0);
|
||||||
|
|
||||||
// Signature line
|
// Ort/Datum line (left)
|
||||||
doc.setDrawColor(0, 0, 0);
|
|
||||||
doc.setLineWidth(0.4);
|
|
||||||
doc.line(10, curY, 90, curY);
|
doc.line(10, curY, 90, curY);
|
||||||
|
|
||||||
// Date line (right side)
|
// Signature line (right)
|
||||||
doc.line(120, curY, 200, curY);
|
doc.line(120, curY, 200, curY);
|
||||||
|
|
||||||
curY += 4;
|
curY += 4;
|
||||||
|
doc.text('Ort, Datum', 10, curY);
|
||||||
const sigName = bestellung.besteller_dienstgrad
|
const sigName = bestellung.besteller_dienstgrad
|
||||||
? `${bestellung.besteller_dienstgrad} ${bestellung.besteller_name || ''}`
|
? `${kurzDienstgrad(bestellung.besteller_dienstgrad)} ${bestellung.besteller_name || ''}`
|
||||||
: (bestellung.besteller_name || '');
|
: (bestellung.besteller_name || '');
|
||||||
doc.text(sigName, 10, curY);
|
doc.text(sigName, 120, curY);
|
||||||
doc.text('Ort, Datum', 120, curY);
|
|
||||||
|
|
||||||
doc.save(`bestellung_${kennung.replace('/', '-')}.pdf`);
|
doc.save(`bestellung_${kennung.replace('/', '-')}.pdf`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user