Musteranfrage: mit einem Klick in den manuellen Druck übernehmen
- Produktion: Button „✍ In manuellen Druck“ auf der Musteranfrage übernimmt die Adresse als Einzelfelder (Vorname/Nachname/Straße/Nr./PLZ/Ort/Land) in den manuellen Druck; die Platzhalter [[Vorname]]/[[Nachname]]/[[Ort]] … ziehen sich daraus. „🖨 Direkt drucken“ (Modal) bleibt als Schnellweg. - neuauftrag: Übernahme trägt die Einzelfelder mit (nicht nur free_text/placeholders). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -154,10 +154,15 @@ const NeuAuftrag = defineComponent({
|
||||
if (d.envelopeSenderScale) neu.envelopeSenderScale = d.envelopeSenderScale;
|
||||
if (d.adressModus) neu.adressModus = d.adressModus;
|
||||
if (Array.isArray(d.rows) && d.rows.length) {
|
||||
neu.rows = d.rows.map((r) => ({
|
||||
free_text: String(r.free_text || ''),
|
||||
placeholders: (r.placeholders && typeof r.placeholders === 'object') ? { ...r.placeholders } : {},
|
||||
}));
|
||||
neu.rows = d.rows.map((r) => {
|
||||
const row = {
|
||||
free_text: String(r.free_text || ''),
|
||||
placeholders: (r.placeholders && typeof r.placeholders === 'object') ? { ...r.placeholders } : {},
|
||||
};
|
||||
// Einzelfelder (Vorname, Nachname, Straße …) mitübernehmen, wenn vorhanden.
|
||||
for (const [key] of FELDER) if (r[key] != null) row[key] = String(r[key]);
|
||||
return row;
|
||||
});
|
||||
}
|
||||
neu.previewSession = null;
|
||||
neu.msg = 'Aus Auftrag übernommen – anpassen, dann Vorschau/Anlegen.';
|
||||
|
||||
@@ -692,9 +692,10 @@ const Board = defineComponent({
|
||||
|
||||
// ── Muster: manueller Druck ──
|
||||
// Namensteile der Anfrage (Adresse hat Vorrang vor dem freien Namensfeld).
|
||||
function musterNamen() {
|
||||
const a = manuell.req?.address && typeof manuell.req.address === 'object' ? manuell.req.address : {};
|
||||
const name = manuell.req?.name || '';
|
||||
function musterNamen(req) {
|
||||
const q = req || manuell.req;
|
||||
const a = q?.address && typeof q.address === 'object' ? q.address : {};
|
||||
const name = q?.name || '';
|
||||
const teile = name.split(' ');
|
||||
return {
|
||||
anrede: a.salutation || a.anrede || '',
|
||||
@@ -772,6 +773,27 @@ const Board = defineComponent({
|
||||
await laden();
|
||||
} catch (e) { manuell.err = e?.response?.data?.detail || e?.response?.data?.error || e?.message || 'Fehlgeschlagen.'; manuell.msg = ''; }
|
||||
}
|
||||
// Musteranfrage → manueller Druck: Adresse als Einzelfelder übernehmen (die
|
||||
// Platzhalter [[Vorname]]/[[Nachname]]/[[Ort]] … ziehen sich daraus). Der
|
||||
// Betreiber schreibt/wählt den Text dann selbst im manuellen Druck.
|
||||
function musterUebernehmen(req) {
|
||||
const n = musterNamen(req);
|
||||
// „Straße Hausnr." best effort trennen (führende Straße, hintere Nummer).
|
||||
const roh = String(n.strasse || '').trim();
|
||||
const m = roh.match(/^(.*?)[\s,]+(\d+\s*[a-zA-Z]?)$/);
|
||||
const row = {
|
||||
first_name: n.vor, last_name: n.nach,
|
||||
street: m ? m[1].trim() : roh, house_no: m ? m[2].trim() : '',
|
||||
zip: n.plz, city: n.ort, country: n.land,
|
||||
};
|
||||
try {
|
||||
localStorage.setItem('skrift_neuauftrag_uebernahme', JSON.stringify({
|
||||
product: req.product || '', adressModus: 'felder', rows: [row],
|
||||
}));
|
||||
const base = window.location.pathname.split('/admin/')[0] + '/admin/';
|
||||
window.location.href = base + 'skrift-neuauftrag';
|
||||
} catch (e) { flash('Übernahme fehlgeschlagen.'); }
|
||||
}
|
||||
|
||||
// ── Empfänger-Drawer (mit Dokument-Vorschau je Zeile) ──
|
||||
// Zerlegt einen Dateinamen in Brief-Nummer und Seite:
|
||||
@@ -1088,7 +1110,8 @@ const Board = defineComponent({
|
||||
const nachricht = req.message ? subdued(req.message, 'margin:0 0 10px;white-space:pre-wrap;') : null;
|
||||
const aktionen = h('div', { style: 'display:flex;gap:8px;flex-wrap:wrap;' }, [
|
||||
// Muster (Druckprodukt) → manueller Druck; individuelles Angebot → kein Druck.
|
||||
istMuster ? btn('🖨 Muster drucken', () => openMuster(req), 'primary') : null,
|
||||
istMuster ? btn('✍ In manuellen Druck', () => musterUebernehmen(req), 'primary') : null,
|
||||
istMuster ? btn('🖨 Direkt drucken', () => openMuster(req)) : null,
|
||||
btn('👤 Details', () => openReqInfo(req)),
|
||||
]);
|
||||
return h('div', { key: 'r' + req.id, style: CARD + `margin-bottom:14px;border-left:4px solid ${istMuster ? FARBE_MUSTER : FARBE_ANGEBOT};` }, [kopf, meta, nachricht, aktionen]);
|
||||
|
||||
Reference in New Issue
Block a user