Kontierung auch bei besetzten Planstellen -- aus dem Organigramm heraus
All checks were successful
CI / Lint, Typen, Tests, Build (push) Successful in 11m47s
CI / Migrationen auf leerer Datenbank (push) Successful in 10m6s

Die Kostenstelle liess sich an genau einer Stelle aendern: auf der Seite
Positionen, ueber die Karte einer Vakanz. Diese Seite zeigt aber nur unbesetzte
und kuenftige Planstellen. Bei einer besetzten war die Kontierung damit nirgends
zu erreichen -- im Bestand betrifft das 784 von 788, und dasselbe galt fuer ihre
Taetigkeit.

Die Angaben zu einer Einheit fuehren jetzt ihre Planstellen auf, besetzte
eingeschlossen, mit Inhaber:in und Kostenstelle. Ein Klick oeffnet denselben
Dialog wie auf Positionen, kein zweiter daneben. Was sich aendern laesst,
entscheidet weiterhin die Datenbank: bei einer besetzten Stelle bleiben Einheit
und Gueltigkeitsende gesperrt, weil ein Abteilungswechsel ueber eine Versetzung
gehoert und nicht ueber die Stelle.

Geladen wird erst beim Oeffnen und nur fuer diese eine Einheit. Alle 788
Planstellen in jede Zeichnung des Organigramms zu legen hiesse, fuer achtzig
Einheiten zu laden, was man fuer eine braucht.

EditPositionModal verlangt dafuer nicht mehr eine OpenPositionResolved, sondern
nur noch die Felder, die er tatsaechlich liest. Die alte Signatur war der
Grund, warum er nur dort aufzumachen war, wo unbesetzte Stellen entstehen.
This commit is contained in:
2026-09-28 21:52:01 +02:00
parent ab50c21b8a
commit 2eda038c2e
6 changed files with 237 additions and 17 deletions

View File

@@ -42,6 +42,20 @@ export type OpenPositionResolved = {
kostenstelle: { code: string; name: string } | null;
};
/**
* Was der Änderungsdialog von einer Planstelle braucht — und nicht mehr.
*
* Er verlangte bisher eine `OpenPositionResolved`, also die *unbesetzte*
* Planstelle samt „seit wann offen" und „wer würde sie führen". Damit liess er
* sich nur dort öffnen, wo diese Angaben entstehen: auf der Seite Positionen,
* die ausschliesslich unbesetzte Stellen zeigt. Die Kontierung einer besetzten
* Planstelle war deshalb nirgends änderbar — bei Manner betraf das 784 von 788.
*/
export type PlanstelleZumAendern = Pick<
OpenPositionResolved,
"id" | "position_number" | "title" | "org_unit_id" | "is_chief" | "valid_from" | "valid_to" | "kostenstelle"
>;
/**
* Wer eine unbesetzte Planstelle führen würde: die Leitung der eigenen
* Einheit, für eine Leitungsplanstelle die der übergeordneten — dieselbe