1 Commits

Author SHA1 Message Date
s4luorth
aa5a0d960f Konfigurator: Freitext-Adresse nur bei Adressmodus 'freitext' senden
All checks were successful
Build & Deploy / deploy (push) Successful in 22s
Bei strukturierter Standardadresse wurde der Umschlag trotzdem mit dem
Freitext beschriftet, wenn im Freitextfeld noch Reste eines frueheren
Moduswechsels standen: das Backend (addressText) bevorzugt free_text.
free_text wird jetzt zentral in mitPlatzhaltern() normalisiert und in
Vorschau, Textpruefung und Bestellung identisch mitgeschickt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-18 12:59:56 +02:00

View File

@@ -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 */ }