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, * Platzhalter explizit auf (Standard-Platzhalter aus der Adresse via standardWert,
* eigene aus e.placeholders). So wird je Empfänger sicher ersetzt – unabhängig * eigene aus e.placeholders). So wird je Empfänger sicher ersetzt – unabhängig
* davon, wie das Backend die Adressfelder interpretiert. * 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 mitPlatzhaltern = (e: Entry): Entry => {
const used = [...new Set([...genutztePlatzhalter, ...genutztePlatzhalterUmschlag])]; const used = [...new Set([...genutztePlatzhalter, ...genutztePlatzhalterUmschlag])];
return { return {
...e, ...e,
free_text: adressModus === 'freitext' ? e.free_text : '',
placeholders: { placeholders: {
...Object.fromEntries(used.map((p) => [p, standardWert(e, p)])), ...Object.fromEntries(used.map((p) => [p, standardWert(e, p)])),
...e.placeholders, ...e.placeholders,
@@ -999,7 +1005,7 @@ export default function Configurator({ vorwahlProdukt }: { vorwahlProdukt?: stri
realistic: realistisch, realistic: realistisch,
envelope_labeling: needsEnvelope ? labeling : 'keine', envelope_labeling: needsEnvelope ? labeling : 'keine',
envelope_text: umschlagText, envelope_text: umschlagText,
entries: entries.slice(0, 3), entries: entries.slice(0, 3).map(mitPlatzhaltern),
}); });
setPreviewDocs(ergebnis.docs); setPreviewDocs(ergebnis.docs);
setPreviewVerbleibend(ergebnis.remaining); 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, street: lieferung.street, zip: lieferung.zip, city: lieferung.city, country: lieferung.country,
} }
: null, : null,
entries: entries.map((e) => ({ entries: entries.map((e) => {
salutation: e.salutation, const n = mitPlatzhaltern(e); // free_text-Normalisierung + Platzhalter
first_name: e.first_name, return {
last_name: e.last_name, salutation: e.salutation,
street: e.street, first_name: e.first_name,
house_no: e.house_no, last_name: e.last_name,
zip: e.zip, street: e.street,
city: e.city, house_no: e.house_no,
country: e.country, zip: e.zip,
free_text: adressModus === 'freitext' ? e.free_text : '', city: e.city,
placeholders: mitPlatzhaltern(e).placeholders, country: e.country,
// Abweichender Text nur, wenn wirklich gesetzt (sonst greift der Standardtext). free_text: n.free_text,
text: (e.text && e.text.trim()) ? e.text : undefined, 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. // Auftrag ist abgesendet – der zwischengespeicherte Entwurf wird verworfen.
try { localStorage.removeItem(ENTWURF_KEY); } catch { /* egal */ } try { localStorage.removeItem(ENTWURF_KEY); } catch { /* egal */ }