FSN#26947 Opschonen gebruik perslidwerkplek/werkplek_verwijder

svn path=/Customer/trunk/; revision=19083
This commit is contained in:
Maarten van der Heide
2013-09-12 10:34:49 +00:00
parent bba1dfe27e
commit 782e6ee81d
7 changed files with 68 additions and 503 deletions

View File

@@ -1310,8 +1310,7 @@ BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) =
UPPER (recwp.alg_locatie_code);
WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code);
v_errorhint := 'Fout bij bepalen gebouw';
@@ -1326,8 +1325,7 @@ BEGIN
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE UPPER (alg_verdieping_code) =
UPPER (recwp.alg_verdieping_code)
WHERE UPPER (alg_verdieping_code) = UPPER (recwp.alg_verdieping_code)
AND alg_gebouw_key = v_gebouw_key;
v_errorhint := 'Fout bij bepalen ruimte';
@@ -1338,134 +1336,8 @@ BEGIN
WHERE UPPER (alg_ruimte_nr) = UPPER (recwp.alg_ruimte_nr)
AND alg_verdieping_key = v_verdieping_key;
-- Verwijder oude werkplek op dezelfde locatie, tenzij ongewijzigd!
v_errorhint := 'Fout bij bepalen of werkplek is gewijzigd';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = v_ruimte_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij verwijderen oude werkplek op locatie';
DELETE FROM prs_perslidwerkplek
WHERE prs_perslidwerkplek_key IN
(SELECT pw.prs_perslidwerkplek_key
FROM prs_perslidwerkplek pw,
prs_werkplek w,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key =
w.prs_werkplek_key
AND w.prs_alg_ruimte_key =
r.alg_ruimte_key
AND r.alg_verdieping_key =
v.alg_verdieping_key
AND v.alg_gebouw_key =
g.alg_gebouw_key
AND g.alg_locatie_key = v_locatie_key);
COMMIT;
END IF;
-- Als persoon nu nog een werkplek heeft op locatie, dan gebeurt
-- daar niets mee (nl. ongewijzgd)!
v_errorhint :=
'Fout bij bepalen of persoon op locatie een werkplek heeft';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslidwerkplek pw,
prs_werkplek w,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = v_locatie_key;
-- v_count=0 -> persoon verhuist naar/krijgt wp op locatie.
IF v_count = 0 AND v_ruimte_key IS NOT NULL
THEN
v_errorhint := 'Fout bij bepalen vrije werkplek';
SELECT COUNT ( * )
INTO v_count
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
IF v_count > 0
THEN
SELECT MIN (w.prs_werkplek_key)
INTO v_wp_key
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
v_errorhint :=
'Fout bij koppelen persoon aan vrije werkplek';
INSERT INTO prs_perslidwerkplek (
prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key, 100);
COMMIT;
ELSE
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
INTO v_wp_volgnr
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
v_wp_oms := v_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
v_errorhint := 'Fout bij toevoegen nieuwe werkplek';
INSERT INTO prs_werkplek (prs_werkplek_module,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_alg_ruimte_key)
VALUES ('PRR',
v_wp_volgnr,
v_wp_oms,
v_ruimte_key)
RETURNING prs_werkplek_key INTO v_wp_key;
v_errorhint :=
'Fout bij koppelen persoon aan nieuwe werkplek';
INSERT INTO prs_perslidwerkplek (
prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key, 100);
COMMIT;
END IF;
END IF;
v_errorhint := 'Fout bij verhuizen naar nieuwe werkplek';
PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'L');
EXCEPTION
WHEN OTHERS
THEN