feat(frontend): Manuell bearbeiten – Speichern trotz fehlender Pflichtfelder
Build and Push Multi-Platform Images / build-and-push (push) Successful in 17s

Im "Manuell bearbeiten"-Dialog (DocumentEditModal, isPosteingang=false) kann
jetzt trotz leerer Pflichtfelder gespeichert werden: Schlägt die Formular-
Validierung fehl, erscheint ein Bestätigungsdialog, der die fehlenden Pflicht-
felder auflistet; per "Trotzdem speichern" wird ohne erneute Validierung
gespeichert. Der Posteingang (isPosteingang=true) blockiert wie bisher.

Die Kontonummer-Logik wurde in runSave() ausgelagert und von beiden Pfaden
(normal + "trotzdem speichern") wiederverwendet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 10:55:04 +02:00
parent 8390d03869
commit 57c8964384
@@ -294,28 +294,51 @@ export default function DocumentEditModal({ documentId, document, open, onClose,
}
};
const runSave = async (values: any, isNext: boolean) => {
// Kontonummer-Logik (unverändert): neue Kontonummer ggf. bestätigen lassen.
const kontonummerReq = requirements.find(r => r.customFieldIndex === 5);
if (kontonummerReq && values['cf_5'] && values.correspondent) {
const kNummer = values['cf_5'];
const knData = await posteingangApi.getKontonummern(values.correspondent);
const exists = knData.some(k => k.Nummer === kNummer);
if (!exists) {
// Prompt user to save kontonummer
setKontonummerMissing({ correspondentId: values.correspondent, nummer: kNummer });
return; // Stop saving, wait for confirmation
}
}
await handleSaveDocument(values, isNext);
};
const handleSubmit = async (isNext: boolean = false) => {
try {
const values = await form.validateFields();
// Kontonummer Logic
const kontonummerReq = requirements.find(r => r.customFieldIndex === 5);
if (kontonummerReq && values[`cf_5`] && values.correspondent) {
const kNummer = values[`cf_5`];
const knData = await posteingangApi.getKontonummern(values.correspondent);
const exists = knData.some(k => k.Nummer === kNummer);
if (!exists) {
// Prompt user to save kontonummer
setKontonummerMissing({ correspondentId: values.correspondent, nummer: kNummer });
return; // Stop saving, wait for confirmation
}
}
await handleSaveDocument(values, isNext);
const values = await form.validateFields();
await runSave(values, isNext);
} catch (e) {
// Validation failed
const errorFields =
(e as { errorFields?: { name: unknown; errors: string[] }[] })?.errorFields ?? [];
// Kein Validierungsfehler, oder Posteingang → bisheriges Verhalten (stiller Abbruch).
if (errorFields.length === 0 || isPosteingang) {
console.error("Form validation failed:", e);
return;
}
// "Manuell bearbeiten": Speichern trotz fehlender Pflichtfelder mit Hinweis anbieten.
const missing = Array.from(new Set(errorFields.flatMap((f) => f.errors)));
Modal.confirm({
title: 'Pflichtfelder unvollständig',
okText: 'Trotzdem speichern',
cancelText: 'Abbrechen',
content: (
<div>
<p>Nicht alle Pflichtfelder sind ausgefüllt:</p>
<ul>{missing.map((m, i) => <li key={i}>{m}</li>)}</ul>
<p>Möchtest du trotzdem speichern?</p>
</div>
),
onOk: () => runSave(form.getFieldsValue(), isNext),
});
}
};