AAES#36698 -- Uitschakelen soap koppeling met IAM van Essent.
svn path=/Customer/trunk/; revision=30048
This commit is contained in:
811
AA/AAES/aaes.sql
811
AA/AAES/aaes.sql
@@ -1067,815 +1067,6 @@ END aaes_export_lease_aanvraag;
|
||||
/
|
||||
|
||||
|
||||
-- view om alle persoonsgegevens op te halen via SOAP
|
||||
-- de functie wordt niet altijd in hetzelfde formaat (hoofdletter en kleine letters)
|
||||
-- aangeleverd. Daarom controleren we of de upper gelijk is aan de importtabel. Zo ja,
|
||||
-- dan stuur de originele waarde uit de importtabel maar terug. En anders de waarde
|
||||
-- de bij de persoon geconfigureerd is.
|
||||
--
|
||||
-- personen die in dienst zijn bij aafm maar ook voorkomen in de Essent import hebben
|
||||
-- de mogelijkheid om een andere organisatie en email adres te hebben. Hier vindt een
|
||||
-- controle plaats op email adres. Indien dit aangeeft dat het om een AAFM medewerker
|
||||
-- gaat zullen de originele organisatieid en email teruggegeven worden.
|
||||
CREATE OR REPLACE VIEW AAES_V_SOAP_USER_DATA
|
||||
(
|
||||
ID,
|
||||
LOGINNAAM,
|
||||
EMAIL,
|
||||
VOORNAAM,
|
||||
VOORLETTERS,
|
||||
TUSSENVOEGSEL,
|
||||
PERSOONACHTERNAAM,
|
||||
PERSONEELSNUMMER,
|
||||
FUNCTIE,
|
||||
ORGANISATIEID,
|
||||
MOBIEL,
|
||||
TELEFOONNUMMER,
|
||||
ISACTIVE
|
||||
)
|
||||
AS
|
||||
SELECT prs_perslid_authenticatie,
|
||||
prs_perslid_oslogin,
|
||||
DECODE (UPPER(SUBSTR(prs_perslid_email, INSTR(prs_perslid_email, '@'))),
|
||||
'@AA-FM.COM', (SELECT email FROM aaes_imp_soap_perslid WHERE id = prs_perslid_authenticatie),
|
||||
prs_perslid_email),
|
||||
prs_perslid_voornaam,
|
||||
prs_perslid_voorletters,
|
||||
prs_perslid_tussenvoegsel,
|
||||
prs_perslid_naam,
|
||||
prs_perslid_nr,
|
||||
DECODE (
|
||||
sp.prs_srtperslid_key,
|
||||
1,
|
||||
NULL,
|
||||
(DECODE ( (SELECT UPPER (functie)
|
||||
FROM aaes_imp_soap_perslid
|
||||
WHERE id = prs_perslid_authenticatie),
|
||||
UPPER (prs_srtperslid_omschrijving),
|
||||
(SELECT functie
|
||||
FROM aaes_imp_soap_perslid
|
||||
WHERE id = prs_perslid_authenticatie),
|
||||
prs_srtperslid_omschrijving)))
|
||||
prs_srtperslid_omschrijving,
|
||||
DECODE (UPPER(SUBSTR(prs_perslid_email, INSTR(prs_perslid_email, '@'))),
|
||||
'@AA-FM.COM', (SELECT organisatieid FROM aaes_imp_soap_perslid WHERE id = prs_perslid_authenticatie),
|
||||
prs_afdeling_naam),
|
||||
prs_perslid_mobiel,
|
||||
prs_perslid_telefoonnr,
|
||||
1
|
||||
FROM prs_perslid p,
|
||||
prs_afdeling a,
|
||||
prs_srtperslid sp
|
||||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||||
AND prs_perslid_nr IS NOT NULL
|
||||
AND prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_authenticatie IS NOT NULL;
|
||||
|
||||
|
||||
-- view om alle organisatiegegevens op te halen via SOAP
|
||||
-- kenmerk_key 1000: ref naar prs_perslid_key van leidinggevende
|
||||
-- kenmerk_key 1020: ref naar prs_afdeling_key van bovenliggende afdeling
|
||||
-- kenmerk_key 1060: niveau van de afdeling
|
||||
-- kenmerk_key 1080: kostenplaatsnummer
|
||||
CREATE OR REPLACE VIEW AAES_V_SOAP_ORG_DATA
|
||||
(
|
||||
id,
|
||||
bedrijfsnaam,
|
||||
afdelingsomschrijving,
|
||||
afdelingscode,
|
||||
parentid,
|
||||
leidinggevende
|
||||
)
|
||||
AS
|
||||
SELECT prs_afdeling_naam,
|
||||
b.prs_bedrijf_naam,
|
||||
a.prs_afdeling_omschrijving,
|
||||
kpn.kostenplaatsnr,
|
||||
DECODE (pa.parentid, 'Onbekend', NULL, pa.parentid) parentid,
|
||||
leid.prs_perslid_authenticatie
|
||||
FROM prs_afdeling a,
|
||||
(SELECT klp.prs_link_key prs_afdeling_key, prs_afdeling_naam parentid
|
||||
FROM prs_kenmerklink klp, prs_afdeling paf
|
||||
WHERE klp.prs_kenmerk_key = 1020
|
||||
AND fac.safe_to_number (klp.prs_kenmerklink_waarde) =
|
||||
paf.prs_afdeling_key) pa,
|
||||
(SELECT prs_link_key prs_afdeling_key, prs_perslid_authenticatie
|
||||
FROM prs_perslid p, prs_kenmerklink kl
|
||||
WHERE fac.safe_to_number (kl.prs_kenmerklink_waarde) =
|
||||
p.prs_perslid_key
|
||||
AND kl.prs_kenmerk_key = 1000) leid,
|
||||
(SELECT prs_link_key prs_afdeling_key,
|
||||
prs_kenmerklink_waarde kostenplaatsnr
|
||||
FROM prs_kenmerklink kl
|
||||
WHERE kl.prs_kenmerk_key = 1080) kpn,
|
||||
prs_v_afdeling_boom ab,
|
||||
prs_bedrijf b,
|
||||
prs_kostenplaats k
|
||||
WHERE a.prs_afdeling_key = leid.prs_afdeling_key(+)
|
||||
AND a.prs_afdeling_key = pa.prs_afdeling_key(+)
|
||||
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||||
AND a.prs_afdeling_key = kpn.prs_afdeling_key(+)
|
||||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
|
||||
AND a.prs_afdeling_verwijder IS NULL
|
||||
AND UPPER (prs_bedrijf_naam) = 'ESSENT';
|
||||
|
||||
-- bepaal het niveau van de complete afdelingsstructuur via een recursieve procedure
|
||||
-- doordat afdelingen onder een andere parent kunnen worden gehangen moeten we altijd
|
||||
-- de gehele boom door.
|
||||
CREATE OR REPLACE PROCEDURE aaes_set_afd_niveau (p_afdeling_key IN NUMBER,
|
||||
p_niveau IN NUMBER)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT prs_afdeling_key
|
||||
FROM aaes_v_afdeling
|
||||
WHERE COALESCE (fac.safe_to_number (prs_afdeling_parentkey), -1) =
|
||||
COALESCE (p_afdeling_key, -1)
|
||||
ORDER BY prs_afdeling_key;
|
||||
BEGIN
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
aaxx_set_kenmerk ('PRS',
|
||||
1060, -- kenmerk_key 1060: niveau van de afdeling
|
||||
rec.prs_afdeling_key,
|
||||
p_niveau + 1,
|
||||
0);
|
||||
aaes_set_afd_niveau (rec.prs_afdeling_key, p_niveau + 1);
|
||||
END;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE aaes
|
||||
AS
|
||||
-- PACKAGES voor AAES
|
||||
PROCEDURE soap_action (action_name IN VARCHAR2, soap_seq IN NUMBER, soap_type IN VARCHAR2);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY aaes
|
||||
AS
|
||||
|
||||
PROCEDURE soap_action (action_name IN VARCHAR2,
|
||||
soap_seq IN NUMBER,
|
||||
soap_type IN VARCHAR2)
|
||||
AS
|
||||
-- Variabelen waarin attributen worden verzameld
|
||||
v_id VARCHAR2 (80);
|
||||
v_prs_perslid_key NUMBER (10);
|
||||
v_prs_afdeling_key NUMBER (10);
|
||||
|
||||
v_hint VARCHAR2 (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER;
|
||||
v_count_pa NUMBER;
|
||||
|
||||
PROCEDURE dolog (status IN VARCHAR2, logregel IN VARCHAR2, hint IN VARCHAR2)
|
||||
AS
|
||||
BEGIN
|
||||
INSERT INTO imp_log (imp_log_applicatie,
|
||||
imp_log_status,
|
||||
imp_log_omschrijving,
|
||||
imp_log_hint)
|
||||
VALUES ('SOAP',
|
||||
status,
|
||||
logregel,
|
||||
hint);
|
||||
END;
|
||||
|
||||
FUNCTION upsertsrtperslid (p_srtperslidomschrijving IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
l_prs_srtperslid_key NUMBER (10);
|
||||
BEGIN
|
||||
IF p_srtperslidomschrijving IS NULL
|
||||
THEN
|
||||
RETURN 1; -- key voor functie onbekend.
|
||||
END IF;
|
||||
SELECT prs_srtperslid_key
|
||||
INTO l_prs_srtperslid_key
|
||||
FROM prs_srtperslid
|
||||
WHERE prs_srtperslid_verwijder IS NULL
|
||||
AND UPPER (prs_srtperslid_omschrijving) =
|
||||
UPPER (p_srtperslidomschrijving);
|
||||
|
||||
RETURN l_prs_srtperslid_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
||||
VALUES (p_srtperslidomschrijving)
|
||||
RETURNING prs_srtperslid_key
|
||||
INTO l_prs_srtperslid_key;
|
||||
|
||||
RETURN l_prs_srtperslid_key;
|
||||
END;
|
||||
|
||||
FUNCTION findafdeling (p_id IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
l_prs_afdeling_key NUMBER (10);
|
||||
BEGIN
|
||||
-- Als er geen afdeling is meegegeven gaan we de persoon maar zolang onder de afdeling Onbekend (key = 1) hangen.
|
||||
-- Dit is een tijdelijke situatie. Direct na het aanmaken van de persoon wordt de afdeling dan aangemaakt
|
||||
-- en de persoon aangepast waarbij de afdeling wel gevuld is.
|
||||
IF p_id IS NULL THEN
|
||||
RETURN 1; -- key voor afdeling onbekend;
|
||||
END IF;
|
||||
|
||||
SELECT prs_afdeling_key
|
||||
INTO l_prs_afdeling_key
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_verwijder IS NULL
|
||||
AND prs_afdeling_naam = p_id;
|
||||
|
||||
RETURN l_prs_afdeling_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
FUNCTION findkostenplaats (p_id IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
l_prs_kostenplaats_key NUMBER (10);
|
||||
BEGIN
|
||||
SELECT prs_kostenplaats_key
|
||||
INTO l_prs_kostenplaats_key
|
||||
FROM prs_kostenplaats
|
||||
WHERE prs_kostenplaats_verwijder IS NULL
|
||||
AND prs_kostenplaats_nr = p_id;
|
||||
|
||||
RETURN l_prs_kostenplaats_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
FUNCTION findperslid (p_id IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
l_prs_perslid_key NUMBER (10);
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO l_prs_perslid_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_authenticatie = p_id;
|
||||
|
||||
RETURN l_prs_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
FUNCTION upsertperslid (p_id IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
v_prs_perslid_key NUMBER (10);
|
||||
v_prs_srtperslid_key NUMBER (10);
|
||||
v_prs_afdeling_key NUMBER (10);
|
||||
v_prs_perslid_email VARCHAR2 (120);
|
||||
|
||||
v_email VARCHAR2 (120);
|
||||
v_loginnaam VARCHAR2 (80);
|
||||
v_voorletters VARCHAR2 (32);
|
||||
v_voornaam VARCHAR2 (50);
|
||||
v_tussenvoegsel VARCHAR2 (32);
|
||||
v_persoonachternaam VARCHAR2 (50);
|
||||
v_personeelsnummer VARCHAR2 (10);
|
||||
v_functie VARCHAR2 (255);
|
||||
v_organisatieid VARCHAR2 (20);
|
||||
v_mobiel VARCHAR2 (30);
|
||||
v_telefoonnummer VARCHAR2 (30);
|
||||
v_isactive NUMBER (1);
|
||||
BEGIN
|
||||
SELECT SUBSTR (loginnaam, 1, 30),
|
||||
SUBSTR (email, 1, 200),
|
||||
SUBSTR (voorletters, 1, 10),
|
||||
SUBSTR (voornaam, 1, 30),
|
||||
SUBSTR (tussenvoegsel, 1, 15),
|
||||
SUBSTR (persoonachternaam, 1, 60),
|
||||
SUBSTR (personeelsnummer, 1, 16),
|
||||
SUBSTR (functie, 1, 60),
|
||||
SUBSTR (organisatieid, 1, 20),
|
||||
SUBSTR (mobiel, 1, 15),
|
||||
SUBSTR (telefoonnummer, 1, 15)
|
||||
INTO v_loginnaam,
|
||||
v_email,
|
||||
v_voorletters,
|
||||
v_voornaam,
|
||||
v_tussenvoegsel,
|
||||
v_persoonachternaam,
|
||||
v_personeelsnummer,
|
||||
v_functie,
|
||||
v_organisatieid,
|
||||
v_mobiel,
|
||||
v_telefoonnummer
|
||||
FROM aaes_imp_soap_perslid
|
||||
WHERE id = p_id;
|
||||
|
||||
v_prs_srtperslid_key := upsertsrtperslid (v_functie);
|
||||
v_prs_afdeling_key := findafdeling (v_organisatieid);
|
||||
|
||||
BEGIN
|
||||
SELECT prs_perslid_key, prs_perslid_email
|
||||
INTO v_prs_perslid_key, v_prs_perslid_email
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_authenticatie = p_id;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
dolog ('I', 'Persoon [' || p_id ||'] wordt toegevoegd login:' || v_loginnaam, '');
|
||||
|
||||
INSERT INTO prs_perslid (prs_perslid_authenticatie,
|
||||
prs_perslid_oslogin,
|
||||
prs_perslid_email,
|
||||
prs_perslid_voorletters,
|
||||
prs_perslid_voornaam,
|
||||
prs_perslid_tussenvoegsel,
|
||||
prs_perslid_naam,
|
||||
prs_perslid_nr,
|
||||
prs_srtperslid_key,
|
||||
prs_afdeling_key,
|
||||
prs_perslid_mobiel,
|
||||
prs_perslid_telefoonnr)
|
||||
VALUES (v_id,
|
||||
v_loginnaam,
|
||||
v_email,
|
||||
v_voorletters,
|
||||
v_voornaam,
|
||||
v_tussenvoegsel,
|
||||
v_persoonachternaam,
|
||||
v_personeelsnummer,
|
||||
v_prs_srtperslid_key,
|
||||
v_prs_afdeling_key,
|
||||
v_mobiel,
|
||||
v_telefoonnummer)
|
||||
RETURNING prs_perslid_key
|
||||
INTO v_prs_perslid_key;
|
||||
-- persoon moet nog toegevoegd worden.
|
||||
END;
|
||||
|
||||
-- Het emailadres en organisatie van medewerkers van AAFM mag
|
||||
-- niet door de koppeling aangepast worden.
|
||||
IF UPPER(v_prs_perslid_email) LIKE '%AA-FM.COM'
|
||||
THEN
|
||||
v_prs_afdeling_key := 21;
|
||||
v_email := v_prs_perslid_email;
|
||||
END IF;
|
||||
|
||||
dolog ('I', 'Persoon [' || p_id ||'] wordt aangepast login:' || v_loginnaam, '');
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_oslogin = v_loginnaam,
|
||||
prs_perslid_email = v_email,
|
||||
prs_perslid_voorletters = v_voorletters,
|
||||
prs_perslid_voornaam = v_voornaam,
|
||||
prs_perslid_tussenvoegsel = v_tussenvoegsel,
|
||||
prs_perslid_naam = v_persoonachternaam,
|
||||
prs_perslid_nr = v_personeelsnummer,
|
||||
prs_srtperslid_key = v_prs_srtperslid_key,
|
||||
prs_afdeling_key = v_prs_afdeling_key,
|
||||
prs_perslid_mobiel = v_mobiel,
|
||||
prs_perslid_telefoonnr = v_telefoonnummer,
|
||||
prs_perslid_verwijder = NULL
|
||||
WHERE prs_perslid_authenticatie = p_id;
|
||||
|
||||
|
||||
RETURN v_prs_perslid_key;
|
||||
END;
|
||||
|
||||
FUNCTION upsertkostenplaats (p_nr IN VARCHAR2, p_omschrijving IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
v_prs_kostenplaats_key NUMBER (10);
|
||||
BEGIN
|
||||
|
||||
v_prs_kostenplaats_key := findkostenplaats (p_nr);
|
||||
|
||||
-- als de kostenplaats nog niet bestaat maar wel een kostenplaatsnr ingevuld is.
|
||||
IF v_prs_kostenplaats_key IS NULL AND p_nr IS NOT NULL
|
||||
THEN
|
||||
dolog ('I', 'Kostenplaats is niet gevonden', '');
|
||||
|
||||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
||||
prs_kostenplaats_module,
|
||||
prs_kostenplaats_omschrijving)
|
||||
VALUES (p_nr,
|
||||
'PRS',
|
||||
p_omschrijving)
|
||||
RETURNING prs_kostenplaats_key
|
||||
INTO v_prs_kostenplaats_key;
|
||||
END IF;
|
||||
|
||||
UPDATE prs_kostenplaats
|
||||
SET prs_kostenplaats_omschrijving = p_omschrijving
|
||||
WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
|
||||
|
||||
RETURN v_prs_kostenplaats_key;
|
||||
END;
|
||||
|
||||
FUNCTION upsertafdeling (p_id IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
v_prs_perslid_key NUMBER (10);
|
||||
v_prs_bedrijf_key NUMBER (10);
|
||||
v_prs_afdeling_key NUMBER (10);
|
||||
v_prs_afdeling_parentkey NUMBER (10);
|
||||
v_prs_kostenplaats_key NUMBER (10);
|
||||
|
||||
v_bedrijfsnaam VARCHAR2 (255);
|
||||
v_afdelingsomschrijving VARCHAR2 (255);
|
||||
v_afdelingscode VARCHAR2 (10);
|
||||
v_parentid VARCHAR2 (20);
|
||||
v_leidinggevende VARCHAR2 (80);
|
||||
v_niveau NUMBER;
|
||||
BEGIN
|
||||
-- Mapping van velden:
|
||||
-- afdelingsomschrijving -> Omschrijving van afdeling en kostenplaats
|
||||
-- id -> Naam van de afdeling en nummer van de kostenplaats
|
||||
-- afdelingscode -> Waarde van het kenmerk kostenplaats
|
||||
-- parentid -> Bovenliggende afdeling. Wordt als kenmerk opgeslagen.
|
||||
-- leidinggevende -> Kenmerk bij afdeling. Daily task zorgt er voor dat
|
||||
-- de juiste leidinggevende bij de kostenplaats ingevuld wordt.
|
||||
-- het veld id wordt gebruikt als afdelingscode.
|
||||
-- Essent kent geen losse afdelingscode. Dit veld wordt alleen gevuld als er een kostenplaats aan
|
||||
-- de afdeling gekoppeld is.
|
||||
|
||||
SELECT SUBSTR (bedrijfsnaam, 1, 30),
|
||||
SUBSTR (afdelingsomschrijving, 1, 200),
|
||||
SUBSTR (afdelingscode, 1, 10),
|
||||
SUBSTR (parentid, 1, 20),
|
||||
SUBSTR (leidinggevende, 1, 20)
|
||||
INTO v_bedrijfsnaam,
|
||||
v_afdelingsomschrijving,
|
||||
v_afdelingscode,
|
||||
v_parentid,
|
||||
v_leidinggevende
|
||||
FROM aaes_imp_soap_afdeling
|
||||
WHERE id = p_id;
|
||||
|
||||
SELECT prs_bedrijf_key
|
||||
INTO v_prs_bedrijf_key
|
||||
FROM prs_v_aanwezigbedrijf
|
||||
WHERE UPPER (prs_bedrijf_naam) = 'ESSENT' AND prs_bedrijf_intern = 1;
|
||||
|
||||
v_prs_perslid_key := findperslid (v_leidinggevende);
|
||||
v_prs_afdeling_parentkey := findafdeling (v_parentid);
|
||||
v_prs_afdeling_key := findafdeling (v_id);
|
||||
v_prs_kostenplaats_key := upsertkostenplaats (v_id, v_afdelingsomschrijving);
|
||||
|
||||
IF v_prs_afdeling_key IS NULL
|
||||
THEN
|
||||
dolog ('I', 'Afdeling is niet gevonden', '');
|
||||
|
||||
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
||||
prs_afdeling_omschrijving,
|
||||
prs_afdeling_parentkey,
|
||||
prs_kostenplaats_key,
|
||||
prs_bedrijf_key)
|
||||
VALUES (v_id,
|
||||
v_afdelingsomschrijving,
|
||||
NULL,
|
||||
v_prs_kostenplaats_key,
|
||||
v_prs_bedrijf_key)
|
||||
RETURNING prs_afdeling_key
|
||||
INTO v_prs_afdeling_key;
|
||||
END IF;
|
||||
|
||||
UPDATE prs_afdeling
|
||||
SET prs_afdeling_naam = v_id,
|
||||
prs_afdeling_omschrijving = v_afdelingsomschrijving,
|
||||
prs_kostenplaats_key = v_prs_kostenplaats_key,
|
||||
prs_afdeling_parentkey = NULL,
|
||||
prs_bedrijf_key = v_prs_bedrijf_key
|
||||
WHERE prs_afdeling_key = v_prs_afdeling_key;
|
||||
|
||||
-- leidinggevende
|
||||
aaxx_set_kenmerk ('PRS',
|
||||
1000,
|
||||
v_prs_afdeling_key,
|
||||
v_prs_perslid_key,
|
||||
0);
|
||||
-- bovenliggende afdeling
|
||||
aaxx_set_kenmerk ('PRS',
|
||||
1020,
|
||||
v_prs_afdeling_key,
|
||||
v_prs_afdeling_parentkey,
|
||||
0);
|
||||
|
||||
-- kostenplaat volgens IAM
|
||||
aaxx_set_kenmerk ('PRS',
|
||||
1080,
|
||||
v_prs_afdeling_key,
|
||||
v_afdelingscode,
|
||||
0);
|
||||
|
||||
-- synchroniseer de afdelingsniveau flexkenmerken met de boom. Er kan namelijk een afdeling naar
|
||||
-- een ander niveau verplaatst worden. De onderliggende elementen moeten dan ook aangepast worden.
|
||||
-- daarom maar in <20><>n keer voor de hele afdelingsboom.
|
||||
BEGIN
|
||||
SELECT fac.safe_to_number (prs_kenmerklink_waarde)
|
||||
INTO v_niveau
|
||||
FROM prs_kenmerklink kl
|
||||
WHERE prs_kenmerk_key = 1060 -- niveau van de afdeling
|
||||
AND prs_link_key = v_prs_afdeling_parentkey;
|
||||
aaes_set_afd_niveau (v_prs_afdeling_parentkey, v_niveau);
|
||||
EXCEPTION WHEN OTHERS
|
||||
THEN
|
||||
aaes_set_afd_niveau (null, 0);
|
||||
END;
|
||||
RETURN v_prs_afdeling_key;
|
||||
END;
|
||||
BEGIN
|
||||
dolog (
|
||||
'I',
|
||||
'Soap request '
|
||||
|| action_name
|
||||
|| ' sequence['
|
||||
|| soap_seq
|
||||
|| '] type['
|
||||
|| soap_type
|
||||
|| ']', '');
|
||||
|
||||
-- Eerst de data uit de fac_soap_data overzetten naar variabelen
|
||||
IF UPPER (soap_type) = 'USER'
|
||||
THEN
|
||||
SELECT fac_soapdata_value
|
||||
INTO v_id
|
||||
FROM fac_soapdata
|
||||
WHERE fac_soapdata_seq = soap_seq
|
||||
AND UPPER(fac_soapdata_name) = 'ID';
|
||||
|
||||
SELECT COUNT (id)
|
||||
INTO v_count
|
||||
FROM aaes_imp_soap_perslid
|
||||
WHERE id = v_id;
|
||||
|
||||
IF v_count = 0
|
||||
THEN
|
||||
INSERT INTO aaes_imp_soap_perslid (id)
|
||||
VALUES (v_id);
|
||||
END IF;
|
||||
|
||||
FOR c
|
||||
IN (SELECT UPPER (fac_soapdata_name) fac_soapdata_name,
|
||||
fac_soapdata_value
|
||||
FROM fac_soapdata
|
||||
WHERE fac_soapdata_seq = soap_seq
|
||||
AND UPPER( fac_soapdata_name) <> 'ID')
|
||||
LOOP
|
||||
v_hint := NULL;
|
||||
dolog (
|
||||
'I',
|
||||
'Soap request '
|
||||
|| action_name
|
||||
|| ' sequence['
|
||||
|| soap_seq
|
||||
|| '] id['
|
||||
|| v_id
|
||||
|| '] name['
|
||||
|| c.fac_soapdata_name
|
||||
|| '] value['
|
||||
|| c.fac_soapdata_value
|
||||
|| ']', '');
|
||||
|
||||
|
||||
IF c.fac_soapdata_name = 'LOGINNAAM'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET loginnaam = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'EMAIL'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET email = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'VOORLETTERS'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET voorletters = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'VOORNAAM'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET voornaam = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'TUSSENVOEGSEL'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET tussenvoegsel = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'PERSOONACHTERNAAM'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET persoonachternaam = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'PERSONEELSNUMMER'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET personeelsnummer = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'FUNCTIE'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET functie = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'ORGANISATIEID'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET organisatieid = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'MOBIEL'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET mobiel = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'TELEFOONNUMMER'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET telefoonnummer = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'ISACTIVE'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_perslid
|
||||
SET isactive = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSE -- negeer onbekende attributen
|
||||
NULL;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
IF UPPER (action_name) = 'INSERT'
|
||||
THEN
|
||||
v_prs_perslid_key := upsertperslid (v_id);
|
||||
ELSIF UPPER (action_name) = 'UPDATE'
|
||||
THEN
|
||||
v_prs_perslid_key := upsertperslid (v_id);
|
||||
ELSIF UPPER (action_name) = 'DELETE'
|
||||
THEN -- TODO: Aan de hand van de variabelen een DELETE
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM prs_perslid p, prs_v_verplichting v
|
||||
WHERE p.prs_perslid_key = v.prs_perslid_key
|
||||
AND p.prs_perslid_verwijder IS NULL
|
||||
AND p.prs_perslid_authenticatie = v_id;
|
||||
|
||||
IF v_count = 0
|
||||
THEN
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_verwijder = SYSDATE
|
||||
WHERE prs_perslid_authenticatie = v_id;
|
||||
|
||||
DELETE aaes_imp_soap_perslid
|
||||
WHERE id = v_id;
|
||||
ELSE
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_oslogin = NULL,
|
||||
prs_perslid_naam =
|
||||
SUBSTR ('Inactief: ' || prs_perslid_naam, 1, 60)
|
||||
WHERE prs_perslid_authenticatie = v_id
|
||||
AND prs_perslid_naam NOT LIKE 'Inactief: %';
|
||||
END IF;
|
||||
ELSE -- negeer onbekende action
|
||||
NULL;
|
||||
END IF;
|
||||
ELSIF UPPER (soap_type) = 'ORGANIZATIONUNIT'
|
||||
THEN
|
||||
FOR c
|
||||
IN (SELECT UPPER (fac_soapdata_name) fac_soapdata_name,
|
||||
fac_soapdata_value
|
||||
FROM fac_soapdata
|
||||
WHERE fac_soapdata_seq = soap_seq)
|
||||
LOOP
|
||||
dolog (
|
||||
'I',
|
||||
'Soap request '
|
||||
|| action_name
|
||||
|| ' sequence['
|
||||
|| soap_seq
|
||||
|| '] name['
|
||||
|| c.fac_soapdata_name
|
||||
|| '] value['
|
||||
|| c.fac_soapdata_value
|
||||
|| ']', '');
|
||||
|
||||
-- we gebruiken nu nog prs_afdeling_key maar dit moet nog aangepast worden.
|
||||
IF c.fac_soapdata_name = 'ID'
|
||||
THEN
|
||||
v_id := c.fac_soapdata_value;
|
||||
|
||||
SELECT COUNT (id)
|
||||
INTO v_count
|
||||
FROM aaes_imp_soap_afdeling
|
||||
WHERE id = v_id;
|
||||
|
||||
IF v_count = 0
|
||||
THEN
|
||||
INSERT INTO aaes_imp_soap_afdeling (id)
|
||||
VALUES (v_id);
|
||||
END IF;
|
||||
ELSIF c.fac_soapdata_name = 'BEDRIJFSNAAM'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_afdeling
|
||||
SET bedrijfsnaam = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'AFDELINGSOMSCHRIJVING'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_afdeling
|
||||
SET afdelingsomschrijving = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'AFDELINGSCODE'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_afdeling
|
||||
SET afdelingscode = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'PARENTID'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_afdeling
|
||||
SET parentid = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSIF c.fac_soapdata_name = 'LEIDINGGEVENDE'
|
||||
THEN
|
||||
UPDATE aaes_imp_soap_afdeling
|
||||
SET leidinggevende = c.fac_soapdata_value
|
||||
WHERE id = v_id;
|
||||
ELSE -- negeer onbekende attributen
|
||||
NULL;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
IF UPPER (action_name) = 'INSERT'
|
||||
THEN
|
||||
v_prs_perslid_key := upsertafdeling (v_id);
|
||||
ELSIF UPPER (action_name) = 'UPDATE'
|
||||
THEN
|
||||
v_prs_perslid_key := upsertafdeling (v_id);
|
||||
ELSIF UPPER (action_name) = 'DELETE'
|
||||
THEN
|
||||
v_hint := 'Tel het aantal verplichtingen voor: ' || v_id;
|
||||
v_prs_afdeling_key := findafdeling(v_id);
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM prs_v_afd_verplichting v
|
||||
WHERE v.prs_afdeling_key = v_prs_afdeling_key;
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count_pa
|
||||
FROM prs_v_aanwezigperslid p
|
||||
WHERE p.prs_afdeling_key = v_prs_afdeling_key;
|
||||
|
||||
IF v_count = 0 AND v_count_pa = 0
|
||||
THEN
|
||||
v_hint := 'Set het verwijderveld voor afdeling met key: ' || v_prs_afdeling_key;
|
||||
UPDATE prs_afdeling
|
||||
SET prs_afdeling_verwijder = SYSDATE
|
||||
WHERE prs_afdeling_key = v_prs_afdeling_key;
|
||||
|
||||
v_hint := 'Verwijder afdeling met id: ' || v_id || ' uit de tabel aaes_imp_soap_afdeling';
|
||||
DELETE aaes_imp_soap_afdeling
|
||||
WHERE id = v_id;
|
||||
ELSE
|
||||
v_hint := 'Markeer de afdeling met key: ' || v_prs_afdeling_key || ' als inactief';
|
||||
UPDATE prs_afdeling
|
||||
SET prs_afdeling_omschrijving =
|
||||
SUBSTR ('Inactief: ' || prs_afdeling_omschrijving,
|
||||
1,
|
||||
60)
|
||||
WHERE prs_afdeling_key = v_prs_afdeling_key
|
||||
AND prs_afdeling_omschrijving NOT LIKE 'Inactief: %';
|
||||
END IF;
|
||||
|
||||
-- set in ieder geval de verwijdervlag voor de kostenplaats
|
||||
v_hint := 'Verwijder kostenplaats behorend bij afdeling met key: ' || v_prs_afdeling_key;
|
||||
UPDATE prs_kostenplaats
|
||||
SET prs_kostenplaats_verwijder = SYSDATE
|
||||
WHERE prs_kostenplaats_key in (SELECT prs_kostenplaats_key
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_key = v_prs_afdeling_key);
|
||||
|
||||
ELSE -- negeer onbekende action
|
||||
NULL;
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
dolog ('E', '[' || v_id || '] sequence[' || soap_seq || ']error ' || oracle_err_num || '/' || oracle_err_mes, v_hint);
|
||||
COMMIT;
|
||||
END soap_action;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Dagelijkse taak om a.d.h.v. het kenmerk leidinggevende bij de afdeling, de budgethouder
|
||||
-- bij de kostenplaats te bepalen. Indien de afdeling geen leidinggevende heeft wordt in de
|
||||
-- organisatieboom naar boven gezocht totdat er een leidinggevende gevonden is.
|
||||
@@ -2026,7 +1217,7 @@ AS
|
||||
|
||||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||||
/
|
||||
BEGIN fac.registercustversion('AAES', 12); END;
|
||||
BEGIN fac.registercustversion('AAES', 13); END;
|
||||
/
|
||||
COMMIT;
|
||||
SPOOL OFF
|
||||
|
||||
Reference in New Issue
Block a user