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 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),
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user