OFWD#89616 oplevering Zendesk koppeling
svn path=/Customer/trunk/; revision=70844
This commit is contained in:
242
OFWD/ofwd.sql
242
OFWD/ofwd.sql
@@ -25,6 +25,12 @@ SET DEFINE OFF
|
||||
|
||||
CREATE OR REPLACE PACKAGE OFWD
|
||||
AS
|
||||
PROCEDURE create_fac_usrdata_node (p_key IN NUMBER,
|
||||
p_custid IN VARCHAR2,
|
||||
p_sessionid IN VARCHAR2,
|
||||
p_extra IN VARCHAR2,
|
||||
p_where IN VARCHAR2);
|
||||
|
||||
PROCEDURE update_devices_from_ad(p_import_key IN NUMBER);
|
||||
END;
|
||||
/
|
||||
@@ -32,10 +38,48 @@ END;
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY OFWD
|
||||
AS
|
||||
|
||||
PROCEDURE create_fac_usrdata_node (p_key IN NUMBER,
|
||||
p_custid IN VARCHAR2,
|
||||
p_sessionid IN VARCHAR2,
|
||||
p_extra IN VARCHAR2,
|
||||
p_where IN VARCHAR2)
|
||||
AS
|
||||
v_fac_usrtab_key fac_usrdata.fac_usrtab_key%TYPE;
|
||||
v_fac_usrdata_code fac_usrdata.fac_usrdata_code%TYPE;
|
||||
v_fac_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE;
|
||||
v_fac_usrdata_omschr2 fac_usrdata.fac_usrdata_omschr2%TYPE;
|
||||
v_fac_usrdata_prijs fac_usrdata.fac_usrdata_prijs%TYPE;
|
||||
|
||||
BEGIN
|
||||
IF p_key IS NOT NULL
|
||||
THEN
|
||||
XML.createconciseopentag ('fac_usrdata');
|
||||
|
||||
SELECT fac_usrdata.fac_usrtab_key,
|
||||
fac_usrdata.fac_usrdata_code,
|
||||
fac_usrdata.fac_usrdata_omschr,
|
||||
fac_usrdata.fac_usrdata_omschr2,
|
||||
fac_usrdata.fac_usrdata_prijs
|
||||
INTO v_fac_usrtab_key,
|
||||
v_fac_usrdata_code,
|
||||
v_fac_usrdata_omschr,
|
||||
v_fac_usrdata_omschr2,
|
||||
v_fac_usrdata_prijs
|
||||
FROM fac_usrdata
|
||||
WHERE fac_usrdata_key = p_key;
|
||||
|
||||
XML.createxmltagvalue ('tabel_key', v_fac_usrtab_key);
|
||||
XML.createxmltagvalue ('code', v_fac_usrdata_code);
|
||||
XML.createxmltagvalue ('omschrijving', v_fac_usrdata_omschr);
|
||||
XML.createxmltagvalue ('omschrijving2', v_fac_usrdata_omschr2);
|
||||
XML.createxmltagvalue ('prijs', XML.mynumbertochar(v_fac_usrdata_prijs));
|
||||
XML.createclosetag ('fac_usrdata');
|
||||
END IF;
|
||||
END;
|
||||
|
||||
PROCEDURE update_devices_from_ad(p_import_key IN NUMBER)
|
||||
AS
|
||||
|
||||
|
||||
-- sql = "id,deviceName,serialNumber,lastSyncDateTime,userDisplayName,emailaddress,phoneNumber,imei,manufacturer,model,enrolledDateTime) "
|
||||
CURSOR c_upd IS
|
||||
SELECT c.fac_imp_csv_col01 id,
|
||||
@@ -53,6 +97,7 @@ AS
|
||||
CAST (
|
||||
FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col11, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
||||
AT TIME ZONE 'Europe/Amsterdam' AS DATE) enrolledDateTime,
|
||||
c.fac_imp_csv_col12 azureADDeviceId,
|
||||
d.ins_deel_key
|
||||
FROM fac_imp_csv c, ins_deel d
|
||||
WHERE c.fac_import_key = p_import_key
|
||||
@@ -73,11 +118,20 @@ AS
|
||||
c.fac_imp_csv_col10 model,
|
||||
CAST (
|
||||
FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col11, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
||||
AT TIME ZONE 'Europe/Amsterdam' AS DATE) enrolledDateTime
|
||||
AT TIME ZONE 'Europe/Amsterdam' AS DATE) enrolledDateTime,
|
||||
c.fac_imp_csv_col12 azureADDeviceId
|
||||
FROM fac_imp_csv c
|
||||
WHERE c.fac_import_key = p_import_key
|
||||
AND NOT EXISTS (SELECT 1 FROM ins_deel d WHERE d.ins_deel_externnr = c.fac_imp_csv_col01);
|
||||
|
||||
|
||||
CURSOR c_del IS
|
||||
SELECT ins_deel_key
|
||||
FROM ins_deel
|
||||
WHERE ins_deel_verwijder IS NULL
|
||||
AND ins_deel_externnr IS NOT NULL
|
||||
AND ins_deel_externnr NOT IN (SELECT fac_imp_csv_col01
|
||||
FROM fac_imp_csv
|
||||
WHERE fac_import_key = p_import_key);
|
||||
v_discipline_key NUMBER;
|
||||
v_srtdeel_key NUMBER;
|
||||
v_locatie_key NUMBER;
|
||||
@@ -164,8 +218,14 @@ AS
|
||||
setflex('emailaddress', rec.ins_deel_key, rec.emailaddress, 1);
|
||||
setflex('phoneNumber', rec.ins_deel_key, rec.phoneNumber, 1);
|
||||
setflex('enrolledDateTime', rec.ins_deel_key, TO_CHAR(rec.enrolledDateTime, 'yyyy-mm-dd hh24:mi:ss'), 1);
|
||||
setflex('azureADDeviceId', rec.ins_deel_key, rec.azureADDeviceId, 1);
|
||||
UPDATE ins_deel SET ins_deel_externsyncdate = SYSDATE WHERE ins_deel_key = rec.ins_deel_key;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN c_del LOOP
|
||||
UPDATE ins_deel SET ins_deel_verwijder = SYSDATE WHERE ins_deel_key = rec.ins_deel_key;
|
||||
END LOOP;
|
||||
|
||||
DELETE fac_imp_csv WHERE fac_import_key = p_import_key;
|
||||
END;
|
||||
END;
|
||||
@@ -218,8 +278,9 @@ BEGIN
|
||||
|
||||
DELETE fac_imp_organisatie;
|
||||
|
||||
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_omschrijving)
|
||||
SELECT DISTINCT 'OFW', prs_afdeling_naam, prs_kenmerk2
|
||||
-- Kostenplaats HR wordt aan de afdeling toegevoegd om instemming voor ergonomische middelen toe te staan.
|
||||
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_nr)
|
||||
SELECT DISTINCT 'OFW', prs_afdeling_naam, prs_kenmerk2, 'HR'
|
||||
FROM fac_imp_perslid
|
||||
WHERE fac_import_key = p_import_key;
|
||||
|
||||
@@ -266,6 +327,12 @@ IS
|
||||
WHERE p.prs_perslid_nr = i.prs_perslid_nr
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key;
|
||||
|
||||
CURSOR c_bloktitel (c_stdmelding_key NUMBER)
|
||||
IS
|
||||
SELECT mld_kenmerk_key, ins_discipline_key
|
||||
FROM mld_kenmerk
|
||||
WHERE mld_srtkenmerk_key = 24 AND mld_stdmelding_key = c_stdmelding_key;
|
||||
|
||||
v_count NUMBER;
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
@@ -289,6 +356,9 @@ BEGIN
|
||||
|
||||
IF v_count >= 50
|
||||
THEN
|
||||
v_errorhint := 'Verwerken organisatiegegevens';
|
||||
fac_update_organisatie (p_import_key);
|
||||
|
||||
v_errorhint := 'Verwerken persoonsgegevens';
|
||||
|
||||
-- Geldig importbestand wat betreft aantal personen
|
||||
@@ -358,20 +428,24 @@ BEGIN
|
||||
v_errorhint:='Fout bijwerken kenmerkveld4 - Uitdienst datum';
|
||||
PRS.upsertkenmerk (v_uitdienst_kenmerk_key, rec.prs_perslid_key, v_uitdienstdatum);
|
||||
|
||||
v_errorhint:='Fout bijwerken leidinggevende';
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_leidg_perslid_key
|
||||
FROM prs_v_aanwezigperslid p
|
||||
WHERE p.prs_perslid_nr = rec.leid_prs_nr;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_key_verantw = v_leidg_perslid_key
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
v_leidg_perslid_key := NULL;
|
||||
IF rec.leid_prs_nr IS NOT NULL
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E', 'Leidinggevende kan niet gevonden worden: ' || rec.leid_prs_nr, '');
|
||||
END;
|
||||
v_errorhint:='Fout bijwerken leidinggevende';
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_leidg_perslid_key
|
||||
FROM prs_v_aanwezigperslid p
|
||||
WHERE p.prs_perslid_nr = rec.leid_prs_nr;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_key_verantw = v_leidg_perslid_key
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E', 'Leidinggevende kan niet gevonden worden: ' || rec.leid_prs_nr, '');
|
||||
END;
|
||||
END IF;
|
||||
|
||||
-- Aanmaken in diensttredingsmelding
|
||||
-- Persoon is vandaag aangemaakt.
|
||||
@@ -411,6 +485,13 @@ BEGIN
|
||||
INTO v_melding_key;
|
||||
|
||||
mld.setmeldingstatus (v_melding_key, 2, null); -- nieuw
|
||||
|
||||
FOR rec_bt IN c_bloktitel(v_indienst_stdmelding_key)
|
||||
LOOP
|
||||
INSERT INTO mld_kenmerkblokmelding (mld_melding_key , mld_kenmerk_key , ins_discipline_key , prs_perslid_key , mld_kenmerkblokmelding_afmelddatum )
|
||||
VALUES (v_melding_key , rec_bt.mld_kenmerk_key, rec_bt.ins_discipline_key , NULL , NULL );
|
||||
END LOOP;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Aanmaken uitdiensttredingsmelding
|
||||
@@ -451,11 +532,41 @@ BEGIN
|
||||
INTO v_melding_key;
|
||||
|
||||
mld.setmeldingstatus (v_melding_key, 2, null); -- nieuw
|
||||
|
||||
FOR rec_bt IN c_bloktitel(v_uitdienst_stdmelding_key)
|
||||
LOOP
|
||||
INSERT INTO mld_kenmerkblokmelding (mld_melding_key , mld_kenmerk_key , ins_discipline_key , prs_perslid_key , mld_kenmerkblokmelding_afmelddatum )
|
||||
VALUES (v_melding_key , rec_bt.mld_kenmerk_key, rec_bt.ins_discipline_key , NULL , NULL );
|
||||
END LOOP;
|
||||
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- Voeg standaard rapport toe om de rechten in de opdrachtbon op te nemen.
|
||||
INSERT INTO prs_kenmerklink (prs_link_key,
|
||||
prs_kenmerklink_niveau,
|
||||
prs_kenmerk_key,
|
||||
prs_kenmerklink_waarde)
|
||||
WITH
|
||||
toegekenderechten
|
||||
AS
|
||||
(SELECT prs_kenmerk_key
|
||||
FROM prs_kenmerk
|
||||
WHERE prs_kenmerk_code = 'TOEGEKENDERECHTENZD')
|
||||
SELECT prs_perslid_key,
|
||||
'P',
|
||||
tr.prs_kenmerk_key,
|
||||
(SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_code = 'TOEGEKENDERECHTENZD')
|
||||
FROM prs_perslid p, toegekenderechten tr
|
||||
WHERE prs_perslid_nr IS NOT NULL
|
||||
AND prs_perslid_verwijder IS NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_kenmerklink kl
|
||||
WHERE kl.prs_kenmerk_key = tr.prs_kenmerk_key AND kl.prs_link_key = p.prs_perslid_key);
|
||||
|
||||
ELSE
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
@@ -488,9 +599,11 @@ AS
|
||||
WHERE ins_srtdeel_key = 42;
|
||||
|
||||
-- Rapportage om de relatie tussen persoon - functie en rol vast te leggen
|
||||
|
||||
CREATE OR REPLACE VIEW ofwd_v_rap_prs_rol_recht
|
||||
AS
|
||||
SELECT pf.prs_perslid_naam_full naam,
|
||||
SELECT pf.prs_perslid_key,
|
||||
pf.prs_perslid_naam_full naam,
|
||||
NULL functie,
|
||||
ins_deel_omschrijving rol,
|
||||
sd.ins_srtdeel_omschrijving soort_rol,
|
||||
@@ -519,7 +632,8 @@ AS
|
||||
AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+)
|
||||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key(+)
|
||||
UNION ALL
|
||||
SELECT pf.prs_perslid_naam_full,
|
||||
SELECT pf.prs_perslid_key,
|
||||
pf.prs_perslid_naam_full,
|
||||
df.ins_deel_omschrijving,
|
||||
dr.ins_deel_omschrijving,
|
||||
sd.ins_srtdeel_omschrijving soort_rol,
|
||||
@@ -556,6 +670,92 @@ AS
|
||||
AND dr.ins_deel_key = kde.ins_deel_key(+)
|
||||
AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+)
|
||||
AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+);
|
||||
|
||||
|
||||
-- Omdat bovenstaand rapport te groot werd, zijn de functies en de rechten gescheiden. De stylesheet zoekt ze
|
||||
-- weer bij elkaar. Deze view is speciaal voor zendesk
|
||||
CREATE OR REPLACE VIEW ofwd_v_rap_prs_rol_recht_zd
|
||||
AS
|
||||
SELECT pf.prs_perslid_key,
|
||||
pf.prs_perslid_naam_full naam,
|
||||
TO_CHAR (NULL) functie,
|
||||
ins_deel_omschrijving rol,
|
||||
ins_deel_key rol_key,
|
||||
TO_CHAR (NULL) soort_rol,
|
||||
TO_CHAR (NULL) groep,
|
||||
TO_CHAR (NULL) recht
|
||||
FROM prs_perslid p,
|
||||
prs_v_perslid_fullnames pf,
|
||||
prs_kenmerklink kl,
|
||||
prs_kenmerk k,
|
||||
fac_kenmerkdomein kdo,
|
||||
ins_deel d,
|
||||
prs_v_afdeling a
|
||||
WHERE p.prs_perslid_verwijder IS NULL
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND a.prs_bedrijf_key = 41 -- OFW
|
||||
AND p.prs_perslid_key = kl.prs_link_key(+)
|
||||
AND kl.prs_kenmerk_key = k.prs_kenmerk_key
|
||||
AND k.fac_kenmerkdomein_key = kdo.fac_kenmerkdomein_key(+)
|
||||
AND kdo.fac_kenmerkdomein_xmlnode = 'deel'
|
||||
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = d.ins_deel_key(+)
|
||||
UNION ALL
|
||||
SELECT pf.prs_perslid_key,
|
||||
pf.prs_perslid_naam_full,
|
||||
df.ins_deel_omschrijving functie,
|
||||
dr.ins_deel_omschrijving rol,
|
||||
dr.ins_deel_key rol_key,
|
||||
NULL soort_rol,
|
||||
NULL groep,
|
||||
NULL recht
|
||||
FROM prs_perslid p,
|
||||
prs_v_perslid_fullnames pf,
|
||||
prs_srtperslid sp,
|
||||
(SELECT ins_deel_key, fac.safe_to_number (ins_kenmerkdeel_waarde) ins_kenmerkdeel_waarde
|
||||
FROM ins_kenmerkdeel
|
||||
WHERE ins_kenmerk_key = 21) kdf,
|
||||
ins_deel df,
|
||||
(SELECT ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key
|
||||
FROM ins_deelkoppeling
|
||||
WHERE ins_deelkoppeling_verwijder IS NULL
|
||||
UNION
|
||||
SELECT ins_deelkoppeling_naar_key, ins_deelkoppeling_van_key
|
||||
FROM ins_deelkoppeling
|
||||
WHERE ins_deelkoppeling_verwijder IS NULL) dk,
|
||||
ins_deel dr,
|
||||
ins_srtdeel sd,
|
||||
prs_v_afdeling a
|
||||
WHERE p.prs_perslid_verwijder IS NULL
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND a.prs_bedrijf_key = 41 -- OFW
|
||||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||||
AND sp.prs_srtperslid_key = kdf.ins_kenmerkdeel_waarde(+)
|
||||
AND kdf.ins_deel_key = df.ins_deel_key(+)
|
||||
AND df.ins_deel_key = dk.ins_deelkoppeling_van_key(+)
|
||||
AND dk.ins_deelkoppeling_naar_key = dr.ins_deel_key(+)
|
||||
AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+)
|
||||
UNION ALL
|
||||
SELECT NULL,
|
||||
NULL,
|
||||
NULL functie,
|
||||
dr.ins_deel_omschrijving rol,
|
||||
dr.ins_deel_key rol_key,
|
||||
sd.ins_srtdeel_omschrijving soort_rol,
|
||||
DECODE (TRUNC (k.ins_kenmerk_volgnummer, -2), 100, 'Sharepoint', 300, 'Mail', 500, 'Applicatie') groep,
|
||||
k.ins_kenmerk_omschrijving
|
||||
FROM ins_deel dr,
|
||||
ins_kenmerkdeel kde,
|
||||
ins_kenmerk k,
|
||||
ins_srtdeel sd
|
||||
WHERE sd.ins_srtgroep_key = 22 -- Rol
|
||||
AND dr.ins_deel_key = kde.ins_deel_key(+)
|
||||
AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+)
|
||||
AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+);
|
||||
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user