Die Befoerderung konnte ihn schon setzen, "Daten aendern" nicht -- weder das
Formular noch change_employee_data kannten das Feld. Damit war eine Einstufung
nur ueber den Weg "Befoerderung" zu aendern, und eine Richtigstellung ("da
stand von Anfang an die falsche Stufe") ist keine Befoerderung: sie soll keine
Planstelle wechseln und kein Ereignis in der Historie hinterlassen.
Das Feld gehoert zur Gruppe contract und ist damit datiert -- eine Umstufung
gilt ab einem Tag. Es kann also in pending_org_changes landen, und deshalb
steht es auch im Nachtlauf. Genau diese zweite Stelle ist hier schon einmal
vergessen worden: die Gruppe role fehlte dort monatelang, und eine datierte
Aenderung wurde als applied vermerkt, ohne etwas zu tun. Drittens
app_feld_karte, sonst waere der Eintrag in der Historie nicht richtigstellbar.
Alle drei Funktionen werden aus der laufenden Definition gelesen und an genau
einem Anker ergaenzt, nicht aus einer Datei kopiert.
Der Test zur Feldkarte liest jetzt alle Migrationen statt einer bestimmten. Der
feste Dateiname darin trug den Vermerk "die zuletzt gueltige Fassung" und war
schon zwei Migrationen spaeter falsch -- und ein Teil der Feldkarte kommt
inzwischen ohnehin aus einer Punktaenderung statt aus einer vollstaendigen
Fassung.
47 lines
2.3 KiB
TypeScript
47 lines
2.3 KiB
TypeScript
import { ABSENCE_TYPES } from "./absence";
|
|
import { HAY_GRADE_WERTE } from "./hay-grade";
|
|
import { KUENDIGUNGSSCHUTZ_GRUENDE } from "./kuendigungsschutz";
|
|
import { MITARBEITERARTEN } from "./mitarbeiterart";
|
|
import { EMERGENCY_RELATIONS } from "./types";
|
|
|
|
// Welche Felder in „Eintrag berichtigen" eine Auswahl statt eines Textfeldes
|
|
// bekommen.
|
|
//
|
|
// Der Dialog zeigte für jedes Feld dasselbe freie Textfeld — auch für
|
|
// „Notfallkontakt Verhältnis", wo die Erfassung überall sonst eine Liste
|
|
// führt. Wer dort „Gattin" statt „Gattin/Gatte" eintippte, erzeugte einen
|
|
// Wert, den keine Auswertung mehr findet, und merkte nichts davon: die
|
|
// Berichtigung schreibt in dieselbe Spalte wie das Formular, nur ohne dessen
|
|
// Prüfung.
|
|
//
|
|
// Die Schlüssel sind die Bezeichnungen aus `app_feld_karte()` — genau die
|
|
// Zeichenketten, die in `employee_history.changes` unter `feld` stehen. Ein
|
|
// Tippfehler hier fiele nicht auf, das Feld bliebe einfach ein Textfeld;
|
|
// deshalb prüft tests/unit/historie-felder.test.ts jeden Schlüssel gegen die
|
|
// Migration.
|
|
//
|
|
// Bewusst **nicht** aufgenommen sind die Felder mit Aufzählungstypen in der
|
|
// Datenbank (Geschlecht, Beschäftigungsausmaß, Vertragsart, Besetzungsart …)
|
|
// und die Ja/Nein-Felder. Dort ist der gespeicherte Text nicht die Anzeige —
|
|
// `m`/`w`, `true`/`false` —, und eine Liste, die die Anzeigeform schreibt,
|
|
// liefe in einen Umwandlungsfehler oder, schlimmer, in einen stillen
|
|
// Fehlwert. Das gehört gemeinsam mit der Anzeigeschicht gelöst, nicht
|
|
// nebenbei hier.
|
|
export const FELD_AUSWAHLEN: Record<string, readonly string[]> = {
|
|
// Kein Aufzählungstyp mehr, sondern eine Domain über text — die Liste darf
|
|
// hier also stehen. Angezeigt wird der **gespeicherte** Wert und nicht der
|
|
// Titel: „-" statt „Generic Grade". In einem Dialog, der eine Zeile der
|
|
// Historie richtigstellt, ist genau das die richtige Anzeige, denn dort
|
|
// steht hinterher derselbe Wert.
|
|
"Hay-Grade": HAY_GRADE_WERTE,
|
|
"Notfallkontakt Verhältnis": EMERGENCY_RELATIONS,
|
|
"Kündigungsschutz Personenkreis": KUENDIGUNGSSCHUTZ_GRUENDE,
|
|
Mitarbeiterart: MITARBEITERARTEN,
|
|
"Art der Abwesenheit": ABSENCE_TYPES,
|
|
};
|
|
|
|
/** Die Auswahl zu einem Feld, oder nichts — dann bleibt es ein Textfeld. */
|
|
export function auswahlFuer(feld: string): readonly string[] | undefined {
|
|
return FELD_AUSWAHLEN[feld];
|
|
}
|