feat: Sonderführungen automatisch im Register SoFue2 nachtragen — Version 1.13.0
Beim Speichern eines Logbuch-Eintrags der Art 'SF' wird der passende Datensatz in SoFue2 über das Datum gesucht und dort stattgefunden=1, anzahl_echt, bezahlt und remarks gesetzt. Gibt es an dem Tag mehrere Führungen, gewinnt die zeitlich nächstgelegene. Das Ergebnis kommt als Feld 'sofue' aus der PHP-Bridge zurück und wird über dem Formular angezeigt — grün bei Erfolg, gelb, wenn keine Führung gefunden wurde. Der Logbuch-Eintrag wird in dem Fall trotzdem gespeichert. Die Meldung liegt in MainClient, weil LogbuchForm beim Bearbeiten durch onSaved() neu gemountet wird. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
'use client';
|
||||
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import type { Kuppel, ArtFuehrung, SpendeArt, BeoOption, SelectedObjekt, Wetter, LogbuchEintrag } from '@/types/logbuch';
|
||||
import type { Kuppel, ArtFuehrung, SpendeArt, BeoOption, SelectedObjekt, SofueStatus, Wetter, LogbuchEintrag } from '@/types/logbuch';
|
||||
import { ARTEN, ARTEN_MAP, artLabel, SPENDE_ARTEN, spendeLabel } from '@/types/logbuch';
|
||||
import BeoSelector from './BeoSelector';
|
||||
import ObjektSelector from './ObjektSelector';
|
||||
@@ -12,7 +12,8 @@ interface Props {
|
||||
kuppel: Kuppel;
|
||||
currentUserBeo: BeoOption;
|
||||
editEntry?: LogbuchEintrag | null;
|
||||
onSaved: () => void;
|
||||
/** sofue: Ergebnis der Rückschreibung ins Sonderführungs-Register, sofern erfolgt. */
|
||||
onSaved: (sofue?: SofueStatus | null) => void;
|
||||
}
|
||||
|
||||
function toLocalDatetimeValue(isoOrDatetime: string): string {
|
||||
@@ -214,6 +215,7 @@ export default function LogbuchForm({ kuppel, currentUserBeo, editEntry, onSaved
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
if (!res.ok) throw new Error(await res.text());
|
||||
const daten: { sofue?: SofueStatus } = await res.json().catch(() => ({}));
|
||||
setSuccess(true);
|
||||
setTimeout(() => setSuccess(false), 5000);
|
||||
if (!editEntry) {
|
||||
@@ -227,7 +229,9 @@ export default function LogbuchForm({ kuppel, currentUserBeo, editEntry, onSaved
|
||||
setSpende('');
|
||||
setSpendeBetragRaw('');
|
||||
}
|
||||
onSaved();
|
||||
// Die Meldung zur Sonderführung gehört nach oben: beim Bearbeiten wird dieses
|
||||
// Formular durch onSaved() neu gemountet und verlöre eigenen State sofort.
|
||||
onSaved(daten.sofue ?? null);
|
||||
} catch {
|
||||
setError('Fehler beim Speichern. Bitte erneut versuchen.');
|
||||
} finally {
|
||||
@@ -440,7 +444,7 @@ export default function LogbuchForm({ kuppel, currentUserBeo, editEntry, onSaved
|
||||
{editEntry && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={onSaved}
|
||||
onClick={() => onSaved()}
|
||||
className="w-full sm:w-auto px-6 py-1 bg-gray-200 hover:bg-gray-300 text-gray-700 font-medium rounded-lg transition-colors text-sm"
|
||||
>
|
||||
Abbrechen
|
||||
|
||||
Reference in New Issue
Block a user