VOLK#78884 Koppeling voor up to date houden afdelingen

svn path=/Customer/trunk/; revision=62127
This commit is contained in:
Suzan Wiegerinck
2023-10-09 11:41:48 +00:00
parent a882acbc6c
commit 1905c50105

View File

@@ -1851,6 +1851,12 @@ BEGIN
|| ']');
END IF;
-- als de afdeling minder dan 6 karakters bevat, moeten we deze aanvullen met voorloopnullen
IF LENGTH (v_afdeling_naam) < 6
THEN
v_afdeling_naam := LPAD (v_afdeling_naam, 6, '0');
END IF;
--
v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);
@@ -1867,6 +1873,13 @@ BEGIN
|| ']');
END IF;
-- als de afdelingparent minder dan 6 karakters bevat, moeten we deze aanvullen met voorloopnullen
IF LENGTH (v_afdeling_naam_parent) < 6
THEN
v_afdeling_naam_parent :=
LPAD (v_afdeling_naam_parent, 6, '0');
END IF;
--
v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);
@@ -1901,11 +1914,13 @@ BEGIN
prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving)
prs_afdeling_omschrijving,
prs_kostenplaats_nr)
VALUES (v_bedrijf_naam,
v_afdeling_naam,
v_afdeling_naam_parent,
v_afdeling_omschrijving);
'000036', -- we nemen geen niveaus op in Facilitor, alles valt direct onder Volksbank
v_afdeling_omschrijving,
'999999'); -- dummy kostenplaats
v_count_import := v_count_import + 1;
END IF;
@@ -1949,20 +1964,25 @@ END volk_import_organisatie;
CREATE OR REPLACE PROCEDURE volk_delete_organisatie (p_import_key IN NUMBER)
AS
--- afdelingen die niet in de import voorkomen en waar ook geen medewerkers meer onder vallen
--- deze mogen een verwijderdatum krijgen
CURSOR c_del IS
SELECT a.prs_afdeling_key,
a.prs_afdeling_naam || ' ' || a.prs_afdeling_omschrijving afdeling
FROM prs_afdeling a
WHERE a.prs_afdeling_naam NOT IN (SELECT o.prs_afdeling_naam
FROM fac_imp_organisatie o)
AND a.prs_afdeling_key NOT IN
WHERE NOT EXISTS
(SELECT i.prs_afdeling_naam
FROM fac_imp_organisatie i
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam)
AND NOT EXISTS
(SELECT p.prs_afdeling_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL);
WHERE p.prs_afdeling_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT *
FROM prs_afdeling p
WHERE p.prs_afdeling_parentkey = a.prs_afdeling_key);
BEGIN
FOR rec IN c_del
LOOP
@@ -1971,16 +1991,18 @@ BEGIN
SET a.prs_afdeling_verwijder = SYSDATE
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
fac.trackaction ('ADMTRK',
fac.trackaction (
'ADMTRK',
rec.prs_afdeling_key,
NULL,
NULL,
'Afdeling '|| rec.afdeling || ' is verwijderd vanuit de organisatie import');
'Afdeling '
|| rec.afdeling
|| ' is verwijderd vanuit de organisatie import');
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'W',
@@ -1997,22 +2019,77 @@ END volk_delete_organisatie;
CREATE OR REPLACE PROCEDURE volk_update_organisatie (p_import_key IN NUMBER)
AS
-- wanneer de afdeling gelijk is maar de omschrijving, kostenplaats of de parent anders dan werken we de afdeling in Facilitor bij
CURSOR c_omschr IS
SELECT i.prs_afdeling_naam,
i.prs_afdeling_omschrijving prs_afdeling_omschrijving_new,
a.prs_afdeling_omschrijving,
a.prs_afdeling_key
FROM fac_imp_organisatie i, prs_afdeling a
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam
AND a.prs_afdeling_omschrijving <> i.prs_afdeling_omschrijving;
CURSOR c_kpl IS
SELECT kn.prs_kostenplaats_key prs_kostenplaats_key_new,
a.prs_afdeling_key
FROM fac_imp_organisatie i,
prs_kostenplaats kn,
prs_afdeling a,
prs_kostenplaats k
WHERE kn.prs_kostenplaats_nr = i.prs_kostenplaats_nr
AND i.prs_afdeling_naam = a.prs_afdeling_naam
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND i.prs_kostenplaats_nr <> k.prs_kostenplaats_nr;
CURSOR c_parent IS
SELECT a.prs_afdeling_key,
ap_new.prs_afdeling_key prs_afdeling_parentkey_new
FROM prs_afdeling a, fac_imp_organisatie i, prs_afdeling ap_new
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam
AND i.prs_afdeling_naam_parent = ap_new.prs_afdeling_naam
AND a.prs_afdeling_parentkey <> ap_new.prs_afdeling_key;
BEGIN
-- er wordt met een dummy kostenplaats gewerkt, dus deze zetten we bij alle afdelingen in de import tabel
UPDATE FAC_IMP_ORGANISATIE o
SET o.prs_kostenplaats_nr = '999999'
WHERE o.prs_kostenplaats_nr IS NULL;
-- de afdelingsnaam wordt tot 6 posities aangevuld met voorloopnullen
UPDATE fac_imp_organisatie o
SET o.prs_afdeling_naam = LPAD (o.prs_afdeling_naam, 6, '0'),
o.prs_afdeling_naam_parent =
LPAD (o.prs_afdeling_naam_parent, 6, '0');
-- we verwijderen afdelingen die niet meer in de import meekomen
volk_delete_organisatie (p_import_key);
-- de afdelingen die wel in de import zittenvoegen we toe
fac_update_organisatie (p_import_key);
--- we werken afdelingen bij waarin omschrijving, parent en/of kostenplaats gewijzigd is
--- vanuit de update is alles wat nieuw is al aangemaakt, dus aangenomen mag worden dat de parent en de kpl bekend is in Facilitor
FOR rec IN c_omschr
LOOP
BEGIN
UPDATE prs_afdeling a
SET a.prs_afdeling_omschrijving =
rec.prs_afdeling_omschrijving_new
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
COMMIT;
END;
END LOOP;
FOR rec IN c_kpl
LOOP
BEGIN
UPDATE prs_afdeling a
SET a.prs_kostenplaats_key = rec.prs_kostenplaats_key_new
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
COMMIT;
END;
END LOOP;
FOR rec IN c_parent
LOOP
BEGIN
UPDATE prs_afdeling a
SET a.prs_afdeling_parentkey = rec.prs_afdeling_parentkey_new
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
COMMIT;
END;
END LOOP;
END volk_update_organisatie;
/