import type { PaygradeType } from "./types"; // Die Hay-Grades — die Bewertungsstufen, die der Kunde tatsächlich führt. // // Bis September 2026 stand an dieser Stelle eine Verwendungsgruppe A–F samt // Beschreibungen („B – Qualifiziert"). Die stammte aus der Spezifikation, nicht // vom Kunden: sechs erfundene Stufen. Dieselbe Spalte füllt im // Cornerstone-Extrakt die „Grade ID", und dort ist A–F keine Kennung, die das // Zielsystem kennt — die Datei wäre in jeder Zeile falsch gewesen, ohne dass // es beim Erzeugen aufgefallen wäre. // // Gespeichert wird die ID, angezeigt der Titel. Bei den HG-Stufen ist beides // dasselbe; nur „Generic Grade" trägt als ID einen Bindestrich. Der steht so // in der Tabelle des Kunden und wird hier nicht in eine leere Angabe // übersetzt: ein Bindestrich ist dort ein Wert, kein fehlender. // // Dieselbe Liste steht in Migration 20260928140000 als CHECK der Domain // paygrade_type; tests/unit/hay-grade.test.ts hält beide gegeneinander. export const HAY_GRADES: readonly { value: PaygradeType; label: string }[] = [ { value: "-", label: "Generic Grade" }, { value: "HG09", label: "HG09" }, { value: "HG10", label: "HG10" }, { value: "HG11", label: "HG11" }, { value: "HG12", label: "HG12" }, { value: "HG13", label: "HG13" }, { value: "HG14", label: "HG14" }, { value: "HG15", label: "HG15" }, { value: "HG16", label: "HG16" }, { value: "HG17", label: "HG17" }, { value: "HG18", label: "HG18" }, { value: "HG19", label: "HG19" }, { value: "HG19P", label: "HG19P" }, { value: "HG20", label: "HG20" }, ] as const; export const HAY_GRADE_WERTE: readonly PaygradeType[] = HAY_GRADES.map((g) => g.value); /** * Die Vorgabe — und zugleich der Wert, den der Bestand bei der Umstellung * bekommen hat. * * Aus A–F liesse sich kein Hay-Grade ableiten: die alten Stufen waren eine * andere Einteilung mit einer anderen Anzahl. Jede Zuordnung wäre geraten, * und geraten sähe im Extrakt genauso aus wie erhoben. */ export const HAY_GRADE_STANDARD: PaygradeType = "-"; /** Der anzuzeigende Titel; unbekannte Werte bleiben, wie sie in der Zeile stehen. */ export function hayGradeLabel(wert: string | null | undefined): string { return HAY_GRADES.find((g) => g.value === wert)?.label ?? wert ?? "–"; } export function istHayGrade(wert: string | null | undefined): wert is PaygradeType { return HAY_GRADE_WERTE.includes(wert as PaygradeType); }