Anforderung 1 — Freiwilliger vs unfreiwilliger Austritt. Die Liste der Beendigungsarten zieht aus TerminatePanel.tsx nach lib/beendigung.ts um: der Berichtemanager braucht sie ebenso, und zwei Listen liefen auseinander. Zwei neue Arten (Beendigung in der Probezeit, je Seite). Auf wessen Betreiben beendet wurde, wird aus der Art **abgeleitet** und nicht daneben gespeichert — als zweites freies Feld liesse sich "Entlassung, freiwillig" erfassen. Das Dropdown im Formular schraenkt die Auswahl darunter ein. Drei Gruppen statt zwei: Befristungsablauf geschieht auf niemandes Betreiben, ein Nichtantritt ist kein Austritt. Beide einer Seite zuzuschlagen wuerde jede Fluktuationsquote verfaelschen. Anforderung 2 — Namensfilter in "Anstehend", ab neun Eintraegen. Anforderung 3 — die zwei Unterschriftenfelder im gedruckten Blatt sind weg; "Firmenfahrzeug" steht in beiden Checklisten. has_dienstwagen sagt, ob eines zusteht, nicht ob es uebergeben wurde. Anforderung 4 — "+794 weitere" ist ein Knopf geworden; die Namen waren vorher nur ueber den Export erreichbar. Stammdatenaenderung und Gehaltsanpassung stehen nicht mehr zur Auswahl: die eine entsteht bei jeder geaenderten Telefonnummer, die andere ist ein totes Ereignis, seit das Gehalt in Loga liegt. Neu ist der Untertyp — Beendigungsart beim Austritt, Art der Abwesenheit bei der Langzeitabwesenheit, im Bericht und im Export. Anforderung 10 — zwei Kacheln. "Aktives Dienstverhaeltnis" ist nicht dasselbe wie "Aktive Mitarbeiter:innen": dort steht, wer heute arbeitet, hier, mit wem ein Vertrag laeuft. Sichtbar waren 806 und 10, addieren musste man selbst.
105 lines
4.4 KiB
TypeScript
105 lines
4.4 KiB
TypeScript
import {
|
|
alleReichungen,
|
|
fortschrittVon,
|
|
punktZuVon,
|
|
type AufgabenGruppe,
|
|
type AufgabenPunkt,
|
|
type AufgabenStand,
|
|
type Fortschritt,
|
|
} from "./checklist";
|
|
|
|
export type { AufgabenArt, AufgabenGruppe, AufgabenPunkt, AufgabenStand, Fortschritt } from "./checklist";
|
|
// istErledigt/wertIstGueltig nehmen bereits einen Punkt entgegen, nicht den
|
|
// Schlüssel — sie brauchen keine Bindung an dieses Verzeichnis und werden
|
|
// unverändert weitergereicht.
|
|
export { istErledigt, wertIstGueltig } from "./checklist";
|
|
|
|
// Die Onboarding-Checkliste — ein Verzeichnis, das Oberfläche, Fortschritt
|
|
// und Auswertung gemeinsam lesen.
|
|
//
|
|
// Die Punkte stehen hier und nicht in der Datenbank. Das ist eine Entscheidung
|
|
// mit einer Kehrseite, also der Grund: eine Checkliste ist ein Firmenprozess,
|
|
// kein Stammdatum. Sie ändert sich selten, und wenn, dann soll die Änderung
|
|
// durch Prüfung und Protokoll gehen wie jede andere. Dafür lässt sie sich
|
|
// nicht ohne Aufspielen anpassen.
|
|
//
|
|
// Gespeichert wird je Person und Punkt **nur die Antwort**, unter dem
|
|
// Schlüssel des Punktes. Ein später entfernter Punkt lässt die alten Antworten
|
|
// deshalb stehen — sie verschwinden aus der Liste, aber nicht aus den Daten,
|
|
// und eine Akte von damals bleibt lesbar.
|
|
//
|
|
// Die Mechanik selbst (Fortschritt, was als erledigt zählt) steht in
|
|
// lib/checklist.ts — geteilt mit lib/offboarding.ts, damit beide Listen
|
|
// dasselbe „erledigt" meinen und nicht mit der Zeit auseinanderlaufen.
|
|
|
|
export const ONBOARDING_GRUPPEN: readonly AufgabenGruppe[] = [
|
|
{
|
|
key: "aufgaben",
|
|
label: "Zu erledigen",
|
|
punkte: [
|
|
{ key: "dienstzettel", label: "Dienstzettel / Dienstvertrag", art: "haken" },
|
|
{ key: "dienstzettel_retour", label: "Dienstzettel / Dienstvertrag retour", art: "haken" },
|
|
{ key: "onboarding_gestartet", label: "Onboarding gestartet", art: "haken" },
|
|
{ key: "lgv_e9", label: "LGV Anlage / E9", art: "haken" },
|
|
{ key: "interflex", label: "Interflex Anlage", art: "haken" },
|
|
{ key: "eurest", label: "Anmeldung EUREST", art: "haken" },
|
|
{ key: "oegk", label: "Anmeldung ÖGK", art: "haken" },
|
|
{ key: "webclient", label: "WebClient", art: "haken" },
|
|
// Aus dem Workshop nachgetragen: die Übergabe eines Firmenfahrzeugs ist
|
|
// ein eigener Vorgang mit Papieren und Schlüsseln und stand bisher
|
|
// nirgends. `employees.has_dienstwagen` sagt, ob eines zusteht — nicht,
|
|
// ob es übergeben wurde. Das sind zwei verschiedene Fragen.
|
|
{ key: "firmenfahrzeug", label: "Firmenfahrzeug", art: "haken" },
|
|
{ key: "datensatzberechtigung", label: "Datensatzberechtigung Führungskraft", art: "haken" },
|
|
{ key: "praemienanspruch", label: "Prämienanspruch", art: "janein" },
|
|
{
|
|
key: "webreise",
|
|
label: "Webreise Benutzer",
|
|
art: "haken",
|
|
hinweis: "HM 13, Seite 2 Punkt 15, „J“, ganz am Ende mit einfügen",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: "unterlagen",
|
|
label: "Unterlagen",
|
|
punkte: [
|
|
{ key: "passkopie", label: "Passkopie / Ausweis", art: "haken" },
|
|
{
|
|
key: "arbeitsbewilligung",
|
|
label: "Arbeitsbewilligung",
|
|
art: "haken",
|
|
hinweis: "Nur bei Staatsbürgerschaft ausserhalb EU/EWR und Schweiz",
|
|
},
|
|
{ key: "meldezettel", label: "Meldezettel", art: "haken" },
|
|
{ key: "bankverbindung", label: "Bankverbindung", art: "haken" },
|
|
{ key: "ecard", label: "E-Card", art: "haken" },
|
|
{ key: "strafregisterauszug", label: "Strafregisterauszug", art: "haken" },
|
|
{ key: "salmonellenbefund", label: "Salmonellenbefund", art: "haken" },
|
|
{ key: "personaldatenblatt", label: "Personaldatenblatt", art: "haken" },
|
|
{ key: "cv", label: "CV", art: "haken" },
|
|
{ key: "goodies", label: "Goodies", art: "haken" },
|
|
{ key: "willkommensmappe", label: "Willkommensmappe", art: "haken" },
|
|
],
|
|
},
|
|
{
|
|
key: "vermerke",
|
|
label: "Vermerke — Grösse",
|
|
punkte: [
|
|
{ key: "groesse_schuhe", label: "Schuhe", art: "text" },
|
|
{ key: "groesse_tshirt", label: "T-Shirt", art: "text" },
|
|
{ key: "groesse_hose", label: "Hose", art: "text" },
|
|
],
|
|
},
|
|
] as const;
|
|
|
|
export const ONBOARDING_PUNKTE: readonly AufgabenPunkt[] = alleReichungen(ONBOARDING_GRUPPEN);
|
|
|
|
export function punktZu(key: string): AufgabenPunkt | undefined {
|
|
return punktZuVon(ONBOARDING_PUNKTE, key);
|
|
}
|
|
|
|
export function fortschritt(staende: AufgabenStand[]): Fortschritt {
|
|
return fortschrittVon(ONBOARDING_PUNKTE, staende);
|
|
}
|