Manueller Druck: Textvorlage überschreibt Inhalt; Zeile1–5 als Platzhalter

- Mustertext-Auswahl ersetzt den bisherigen Brieftext (statt anzuhängen).
- Vorschau: [[Zeile1]]..[[Zeile5]] aus den 5 Adresszeilen verfügbar; Tipp im UI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
s4luorth
2026-09-11 20:55:32 +02:00
parent cc39dade9e
commit 365158c43b
2 changed files with 23 additions and 15 deletions

View File

@@ -691,19 +691,25 @@ const handler = (router, { services, getSchema, logger }) => {
filter: { key: { _eq: briefFormat } }, limit: 1, fields: ['kind'],
}))?.[0]?.kind === 'postkarte';
const platzhalterVon = (e, i) => ({
Anrede: clean(e.salutation || ''),
Vorname: clean(e.first_name || ''),
Nachname: clean(e.last_name || ''),
Strasse: clean([e.street, e.house_no].filter(Boolean).join(' ')),
PLZ: clean(e.zip || ''),
Ort: clean(e.city || ''),
Land: clean(e.country || ''),
Briefnummer: String(i + 1),
...(e.placeholders && typeof e.placeholders === 'object'
? Object.fromEntries(Object.entries(e.placeholders).map(([k, v]) => [k, clean(String(v))]))
: {}),
});
const platzhalterVon = (e, i) => {
// 5 Adresszeilen (5-Zeilen-Modus) auch als [[Zeile1]]..[[Zeile5]].
const zeilen = String(e.free_text || '').split('\n');
return {
Anrede: clean(e.salutation || ''),
Vorname: clean(e.first_name || ''),
Nachname: clean(e.last_name || ''),
Strasse: clean([e.street, e.house_no].filter(Boolean).join(' ')),
PLZ: clean(e.zip || ''),
Ort: clean(e.city || ''),
Land: clean(e.country || ''),
Briefnummer: String(i + 1),
Zeile1: clean(zeilen[0] || ''), Zeile2: clean(zeilen[1] || ''), Zeile3: clean(zeilen[2] || ''),
Zeile4: clean(zeilen[3] || ''), Zeile5: clean(zeilen[4] || ''),
...(e.placeholders && typeof e.placeholders === 'object'
? Object.fromEntries(Object.entries(e.placeholders).map(([k, v]) => [k, clean(String(v))]))
: {}),
};
};
const adressBlock = (e) => {
if (e.free_text) return clean(String(e.free_text));