Angehoerige berichtigen, und beide Abschnitte sehen gleich aus
All checks were successful
CI / Lint, Typen, Tests, Build (push) Successful in 11m26s
CI / Migrationen auf leerer Datenbank (push) Successful in 10m15s

Angehoerige liessen sich bisher nur anlegen und entfernen. Ein Tippfehler
im Namen war nur zu beheben, indem man die Person loeschte und neu
anlegte -- zwei Eintraege in der Akte fuer eine Korrektur, und der erste
sagte "entfernt", was nicht stimmte. Jetzt steht in jeder Zeile ein Stift,
wie beim Notfallkontakt.

update_employee_dependent kommt bewusst **ohne** Stichtag. Hinzufuegen und
Entfernen tragen einen, dort passiert etwas zu einem Zeitpunkt. Eine
Berichtigung nicht: der Wert war schon vorher falsch, und ein "wirksam ab"
hiesse, die Person habe bis dahin anders geheissen. Der Eintrag in der
Akte nennt deshalb Vorher und Nachher statt eines Datums.

In "Daten aendern" standen fuer den Notfallkontakt drei Eingabefelder,
waehrend die Angehoerigen darueber als Tabelle mit Knoepfen erscheinen --
zwei Bauformen fuer denselben Zweck, direkt untereinander. Dort steht
jetzt derselbe Abschnitt wie im Reiter "Stammdaten"; beide laufen ueber
das "Wirksam ab" des Formulars, wie die Angehoerigen es schon taten.

Damit schreibt auch nur noch eine Stelle diese drei Spalten. Vorher
schickte das Formular sie zusaetzlich im eigenen Aufruf mit.
This commit is contained in:
2026-09-23 20:03:43 +02:00
parent 2bba1f40ac
commit e5aa527473
8 changed files with 232 additions and 60 deletions

View File

@@ -19,11 +19,25 @@ import { NotfallkontaktModal, type Notfallkontakt } from "./NotfallkontaktModal"
// ihn führte der einzige Weg über „Daten ändern" — ein Formular über alle
// Stammdaten, um eine Telefonnummer einzutragen.
export function NotfallkontaktSection({ employeeId, kontakt }: { employeeId: string; kontakt: Notfallkontakt }) {
export function NotfallkontaktSection({
employeeId,
kontakt,
effectiveDate,
}: {
employeeId: string;
kontakt: Notfallkontakt;
/**
* Nur, wenn der Abschnitt in „Daten ändern" steht: dann treibt dessen
* „Wirksam ab" auch diesen Vorgang — wie bei den Angehörigen darüber.
* Ohne Angabe gilt heute.
*/
effectiveDate?: string;
}) {
const { showToast } = useToast();
const router = useRouter();
const [modalOpen, setModalOpen] = useState(false);
const [entfernt, setEntfernt] = useState(false);
const stichtag = effectiveDate || todayIso();
const vorhanden = Boolean(kontakt.name);
@@ -33,7 +47,7 @@ export function NotfallkontaktSection({ employeeId, kontakt }: { employeeId: str
// daraus null. Würden die Schlüssel fehlen, bliebe der Kontakt stehen.
const result = await changeEmployeeData({
employee_id: employeeId,
effective_date: todayIso(),
effective_date: stichtag,
person: { emergency_contact_name: "", emergency_contact_phone: "", emergency_contact_relation: "" },
contract: {},
role: {},
@@ -135,6 +149,7 @@ export function NotfallkontaktSection({ employeeId, kontakt }: { employeeId: str
onClose={() => setModalOpen(false)}
employeeId={employeeId}
kontakt={kontakt}
effectiveDate={stichtag}
/>
</div>
);