AAES#36698 -- Uitschakelen soap koppeling met IAM van Essent.

svn path=/Customer/trunk/; revision=30048
This commit is contained in:
Arthur Egberink
2016-07-14 09:38:47 +00:00
parent fb0c10117a
commit f1ad82904b

View File

@@ -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