Eine Befoerderung benennt die Planstelle um
Bisher schrieb promote_employee den neuen Titel nach employees.job_title -- und nur dorthin. Gesehen hat ihn niemand: Akte, Organigramm und die Exporte zeigen alle die Taetigkeit der Planstelle. Haltbar war er auch nicht, denn hire_employee, transfer_employee und change_employee_data setzen dieselbe Spalte aus der Planstelle; die naechste Adressaenderung ueberschrieb ihn wieder. Gemeldet von Lara und im Testprotokoll als H.10. Max hat entschieden: die Befoerderung benennt die Planstelle um. Umbenannt wird die Stelle, auf der die Person danach sitzt -- die Zielstelle, sonst die bisherige. Im Formular ist das ohne Ueberraschung, weil es beim Waehlen einer Zielplanstelle deren Taetigkeit als Vorschlag eintraegt: wer nichts aendert, benennt auch nichts um. Und umbenannt wird nicht der Katalogeintrag, sondern die Planstelle zeigt auf einen anderen -- den Eintrag selbst umzubenennen traefe jede Planstelle mit derselben Taetigkeit. Die Regel "gleiche Taetigkeit, ein Katalogeintrag" stand nur in create_position und wandert nach job_fuer_titel(); zwei Fassungen derselben Regel laufen hier erfahrungsgemaess auseinander. Die Nummernvergabe nimmt dabei die erste freie statt count(*) + 1 -- gezaehlt wurde bisher, und das vergibt eine belegte Nummer, sobald ein Eintrag geloescht wurde oder Codes aus einer fremden Quelle danebenstehen, wie bei der Uebernahme der Manner-Daten. Der Nachtlauf tut dasselbe, sonst benennt eine datierte Befoerderung am Stichtag nichts um. Der Rauchtest prueft beide Wege und dass der alte Katalogeintrag stehen bleibt.
This commit is contained in:
@@ -55,6 +55,7 @@ declare
|
||||
v_offen int;
|
||||
v_meldung text;
|
||||
v_ging boolean;
|
||||
v_titel text;
|
||||
begin
|
||||
select id into v_wurzel from org_units where parent_id is null;
|
||||
select id into v_ort from locations order by name limit 1;
|
||||
@@ -112,7 +113,34 @@ begin
|
||||
if (select paygrade::text from employees where id = v_a) <> 'HG15' then
|
||||
raise exception 'Die Beförderung hat den Hay-Grade nicht gesetzt.';
|
||||
end if;
|
||||
raise notice '4/8 Beförderung am selben Tag, Hay-Grade gesetzt';
|
||||
|
||||
-- Die Bezeichnung gehört zur Planstelle: dort lesen sie Akte, Organigramm
|
||||
-- und die Exporte. Vorher stand der neue Titel allein an der Person und war
|
||||
-- nirgends zu sehen.
|
||||
select j.title into v_titel
|
||||
from om_positions p join jobs j on j.id = p.job_id where p.id = v_p3;
|
||||
if v_titel <> 'Rauchtest Leitung' then
|
||||
raise exception 'Die Zielplanstelle heisst nach der Beförderung „%", erwartet „Rauchtest Leitung".', v_titel;
|
||||
end if;
|
||||
raise notice '4/8 Beförderung am selben Tag: Hay-Grade und Planstellenbezeichnung';
|
||||
|
||||
-- Dieselbe Planstelle, nur ein neuer Name — der Fall aus dem Testtag.
|
||||
perform promote_employee(jsonb_build_object(
|
||||
'employee_id', v_a, 'effective_date', current_date::text,
|
||||
'new_title', 'Rauchtest Leitung Senior', 'new_paygrade', 'HG16'));
|
||||
|
||||
select j.title into v_titel
|
||||
from om_positions p join jobs j on j.id = p.job_id where p.id = v_p3;
|
||||
if v_titel <> 'Rauchtest Leitung Senior' then
|
||||
raise exception 'Ohne Stellenwechsel heisst die Planstelle „%", erwartet „Rauchtest Leitung Senior".', v_titel;
|
||||
end if;
|
||||
|
||||
-- Der Katalogeintrag der alten Bezeichnung bleibt stehen: an ihm können
|
||||
-- andere Planstellen hängen. Umbenannt wird die Stelle, nicht der Katalog.
|
||||
if not exists (select 1 from jobs where title = 'Rauchtest Leitung') then
|
||||
raise exception 'Der alte Katalogeintrag wurde umbenannt statt die Planstelle umgehängt.';
|
||||
end if;
|
||||
raise notice '4b/8 Beförderung ohne Stellenwechsel benennt dieselbe Planstelle um';
|
||||
|
||||
-- ── Vorgemerkte Planstelle (20260929200000) ─────────────────────
|
||||
-- Eine Versetzung in die Zukunft belegt die Zielstelle, obwohl dort noch
|
||||
|
||||
Reference in New Issue
Block a user