CSUN#40729 -- Automatisering Facilitor koppelingen (rayonleiders)
svn path=/Customer/trunk/; revision=35375
This commit is contained in:
119
CSUN/CSUN.sql
119
CSUN/CSUN.sql
@@ -1976,6 +1976,10 @@ IS
|
||||
v_bud_key NUMBER (10);
|
||||
v_account_key NUMBER (10);
|
||||
v_district_key NUMBER (10);
|
||||
v_perslid_key NUMBER (10);
|
||||
v_afdeling_key NUMBER (10);
|
||||
v_tussenv VARCHAR2 (15);
|
||||
v_achternaam VARCHAR2 (60);
|
||||
|
||||
CURSOR c_account
|
||||
IS
|
||||
@@ -2030,6 +2034,20 @@ IS
|
||||
AND l.alg_locatie_key = aogk.alg_onrgoed_key
|
||||
AND fac.safe_to_date(aogk.alg_onrgoedkenmerk_waarde, 'dd-mm-yyyy') < SYSDATE - 182;
|
||||
|
||||
CURSOR c_rayonl
|
||||
IS
|
||||
SELECT DISTINCT
|
||||
bu,
|
||||
rayonl_persnr,
|
||||
TRIM (SUBSTR (rayonl_naam, 1, INSTR (rayonl_naam, ' ')))
|
||||
voornaam,
|
||||
TRIM (SUBSTR (rayonl_naam, INSTR (rayonl_naam, ' '), 60))
|
||||
achternaam,
|
||||
rayonl_naam
|
||||
FROM csun_imp_project
|
||||
WHERE rayonl_naam IS NOT NULL;
|
||||
|
||||
|
||||
FUNCTION get_alg_kenmerk (p_kenmerk_key IN NUMBER, p_onrgoed_key IN NUMBER) RETURN VARCHAR2
|
||||
AS
|
||||
v_waarde VARCHAR2(255);
|
||||
@@ -2051,6 +2069,7 @@ BEGIN
|
||||
-- v_count_tot := 0;
|
||||
v_error_hint := 'Start met doorlopen accounts';
|
||||
|
||||
|
||||
FOR rec_a IN c_account
|
||||
LOOP
|
||||
BEGIN
|
||||
@@ -2224,6 +2243,106 @@ BEGIN
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
-- voeg de rayonleiders toe als ze nog niet bestaan
|
||||
FOR rec_ray IN c_rayonl
|
||||
LOOP
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_perslid_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_nr = rec_ray.rayonl_persnr;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- nieuwe rayonleider aanmaken tijdelijk onder CSU NA.
|
||||
INSERT INTO prs_perslid (prs_srtperslid_key,
|
||||
prs_afdeling_key,
|
||||
prs_perslid_nr,
|
||||
prs_perslid_naam,
|
||||
prs_perslid_voornaam)
|
||||
VALUES (50,
|
||||
1,
|
||||
rec_ray.rayonl_persnr,
|
||||
rec_ray.achternaam,
|
||||
rec_ray.voornaam)
|
||||
RETURNING prs_perslid_key
|
||||
INTO v_perslid_key;
|
||||
|
||||
v_achternaam := rec_ray.achternaam;
|
||||
v_tussenv := '';
|
||||
|
||||
IF INSTR (v_achternaam, 'van der ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 9); v_tussenv := 'van der'; END IF;
|
||||
IF INSTR (v_achternaam, 'van den ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 9); v_tussenv := 'van den'; END IF;
|
||||
IF INSTR (v_achternaam, 'van de ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 8); v_tussenv := 'van de'; END IF;
|
||||
IF INSTR (v_achternaam, 'van ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 5); v_tussenv := 'van'; END IF;
|
||||
IF INSTR (v_achternaam, 'de ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 4); v_tussenv := 'de'; END IF;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = v_achternaam,
|
||||
prs_perslid_tussenvoegsel = v_tussenv
|
||||
WHERE prs_perslid_key = v_perslid_key;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
-- Eigen tabel met key 61 wordt gebruikt om de mapping tussen business unit en CSU afdeling vast te leggen.
|
||||
SELECT prs_afdeling_key
|
||||
INTO v_afdeling_key
|
||||
FROM prs_afdeling a, fac_usrdata ud
|
||||
WHERE ud.fac_usrtab_key = 61
|
||||
AND prs_afdeling_omschrijving =
|
||||
'CSU ' || fac_usrdata_omschr
|
||||
AND fac_usrdata_code = rec_ray.bu;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_afdeling_key = v_afdeling_key
|
||||
WHERE prs_perslid_key = v_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'Afdeling van Rayonleider kan niet gevonden worden ( Rayonleider:' || rec_ray.voornaam || ' - ' || rec_ray.achternaam || ')',
|
||||
'');
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- Geef de rayonleiders een werkplek als ze deze nog niet hebben.
|
||||
INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_perslidwerkplek_bezetting, prs_werkplek_key)
|
||||
SELECT p.prs_perslid_key, 100, wpg.prs_werkplek_key
|
||||
FROM csun_imp_project i,
|
||||
alg_locatie l,
|
||||
prs_perslid p,
|
||||
prs_v_werkplek_gegevens wpg
|
||||
WHERE i.rayonl_persnr = p.prs_perslid_nr
|
||||
AND 'P' || i.PROJECT = l.alg_locatie_code
|
||||
AND l.alg_locatie_key = wpg.alg_locatie_key
|
||||
AND wpg.alg_ruimte_nr = '-'
|
||||
AND prs_srtperslid_key = 50 -- rayonleider
|
||||
AND NOT EXISTS
|
||||
(SELECT *
|
||||
FROM prs_v_perslidwerkplek_gegevens pwpg
|
||||
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
|
||||
AND pwpg.alg_locatie_key = l.alg_locatie_key);
|
||||
|
||||
|
||||
-- Verwijder de werkplek van een rayonleider als deze niet meer gekoppeld is.
|
||||
DELETE prs_perslidwerkplek
|
||||
WHERE prs_perslidwerkplek_key IN
|
||||
(SELECT prs_perslidwerkplek_key
|
||||
FROM prs_v_perslidwerkplek_gegevens pwpg, prs_perslid p
|
||||
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
|
||||
AND p.prs_srtperslid_key = 50 -- Rayonleider
|
||||
AND NOT EXISTS
|
||||
(SELECT i.project
|
||||
FROM csun_imp_project i, alg_locatie l
|
||||
WHERE i.rayonl_persnr = p.prs_perslid_nr
|
||||
AND 'P' || i.project = l.alg_locatie_code
|
||||
AND l.alg_locatie_key =
|
||||
pwpg.alg_locatie_key
|
||||
AND pwpg.alg_ruimte_nr = '-'));
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
|
||||
Reference in New Issue
Block a user