diff --git a/src/routes/Configurator.tsx b/src/routes/Configurator.tsx index 4fdde24..e473973 100644 --- a/src/routes/Configurator.tsx +++ b/src/routes/Configurator.tsx @@ -799,11 +799,17 @@ export default function Configurator({ vorwahlProdukt }: { vorwahlProdukt?: stri * Platzhalter explizit auf (Standard-Platzhalter aus der Adresse via standardWert, * eigene aus e.placeholders). So wird je Empfänger sicher ersetzt – unabhängig * davon, wie das Backend die Adressfelder interpretiert. + * + * Zusätzlich wird der Freitext nur bei Adressmodus „freitext" mitgeschickt. + * Bei strukturierter Adresse muss free_text leer sein, sonst bevorzugt das + * Backend (addressText) den Freitext und beschriftet den Umschlag falsch – + * auch wenn im Freitextfeld nur Reste von einem früheren Moduswechsel stehen. */ const mitPlatzhaltern = (e: Entry): Entry => { const used = [...new Set([...genutztePlatzhalter, ...genutztePlatzhalterUmschlag])]; return { ...e, + free_text: adressModus === 'freitext' ? e.free_text : '', placeholders: { ...Object.fromEntries(used.map((p) => [p, standardWert(e, p)])), ...e.placeholders, @@ -999,7 +1005,7 @@ export default function Configurator({ vorwahlProdukt }: { vorwahlProdukt?: stri realistic: realistisch, envelope_labeling: needsEnvelope ? labeling : 'keine', envelope_text: umschlagText, - entries: entries.slice(0, 3), + entries: entries.slice(0, 3).map(mitPlatzhaltern), }); setPreviewDocs(ergebnis.docs); setPreviewVerbleibend(ergebnis.remaining); @@ -1098,20 +1104,23 @@ export default function Configurator({ vorwahlProdukt }: { vorwahlProdukt?: stri street: lieferung.street, zip: lieferung.zip, city: lieferung.city, country: lieferung.country, } : null, - entries: entries.map((e) => ({ - salutation: e.salutation, - first_name: e.first_name, - last_name: e.last_name, - street: e.street, - house_no: e.house_no, - zip: e.zip, - city: e.city, - country: e.country, - free_text: adressModus === 'freitext' ? e.free_text : '', - placeholders: mitPlatzhaltern(e).placeholders, - // Abweichender Text nur, wenn wirklich gesetzt (sonst greift der Standardtext). - text: (e.text && e.text.trim()) ? e.text : undefined, - })), + entries: entries.map((e) => { + const n = mitPlatzhaltern(e); // free_text-Normalisierung + Platzhalter + return { + salutation: e.salutation, + first_name: e.first_name, + last_name: e.last_name, + street: e.street, + house_no: e.house_no, + zip: e.zip, + city: e.city, + country: e.country, + free_text: n.free_text, + placeholders: n.placeholders, + // Abweichender Text nur, wenn wirklich gesetzt (sonst greift der Standardtext). + text: (e.text && e.text.trim()) ? e.text : undefined, + }; + }), }); // Auftrag ist abgesendet – der zwischengespeicherte Entwurf wird verworfen. try { localStorage.removeItem(ENTWURF_KEY); } catch { /* egal */ }