feat(frontend): Manuell bearbeiten – Speichern trotz fehlender Pflichtfelder
Build and Push Multi-Platform Images / build-and-push (push) Successful in 17s
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:
@@ -294,28 +294,51 @@ export default function DocumentEditModal({ documentId, document, open, onClose,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSubmit = async (isNext: boolean = false) => {
|
const runSave = async (values: any, isNext: boolean) => {
|
||||||
try {
|
// Kontonummer-Logik (unverändert): neue Kontonummer ggf. bestätigen lassen.
|
||||||
const values = await form.validateFields();
|
|
||||||
|
|
||||||
// Kontonummer Logic
|
|
||||||
const kontonummerReq = requirements.find(r => r.customFieldIndex === 5);
|
const kontonummerReq = requirements.find(r => r.customFieldIndex === 5);
|
||||||
if (kontonummerReq && values[`cf_5`] && values.correspondent) {
|
if (kontonummerReq && values['cf_5'] && values.correspondent) {
|
||||||
const kNummer = values[`cf_5`];
|
const kNummer = values['cf_5'];
|
||||||
const knData = await posteingangApi.getKontonummern(values.correspondent);
|
const knData = await posteingangApi.getKontonummern(values.correspondent);
|
||||||
const exists = knData.some(k => k.Nummer === kNummer);
|
const exists = knData.some(k => k.Nummer === kNummer);
|
||||||
|
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
// Prompt user to save kontonummer
|
// Prompt user to save kontonummer
|
||||||
setKontonummerMissing({ correspondentId: values.correspondent, nummer: kNummer });
|
setKontonummerMissing({ correspondentId: values.correspondent, nummer: kNummer });
|
||||||
return; // Stop saving, wait for confirmation
|
return; // Stop saving, wait for confirmation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await handleSaveDocument(values, isNext);
|
await handleSaveDocument(values, isNext);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmit = async (isNext: boolean = false) => {
|
||||||
|
try {
|
||||||
|
const values = await form.validateFields();
|
||||||
|
await runSave(values, isNext);
|
||||||
} catch (e) {
|
} 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);
|
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),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user