770 lines
34 KiB
SQL
770 lines
34 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database
|
|
|
|
DEFINE thisfile = 'ofwd.sql'
|
|
DEFINE dbuser = 'OFWD'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
---------------------------------------
|
|
PROMPT &fcltcusttxt
|
|
---------------------------------------
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
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;
|
|
/
|
|
|
|
|
|
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,
|
|
c.fac_imp_csv_col02 deviceName,
|
|
c.fac_imp_csv_col03 serialnumber,
|
|
CAST (
|
|
FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col04, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
|
AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime,
|
|
c.fac_imp_csv_col05 userDisplayName,
|
|
c.fac_imp_csv_col06 emailaddress,
|
|
c.fac_imp_csv_col07 phoneNumber,
|
|
c.fac_imp_csv_col08 imei,
|
|
c.fac_imp_csv_col09 manufacturer,
|
|
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,
|
|
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
|
|
AND d.ins_deel_externnr = c.fac_imp_csv_col01;
|
|
|
|
CURSOR c_ins IS
|
|
SELECT c.fac_imp_csv_col01 id,
|
|
c.fac_imp_csv_col02 deviceName,
|
|
c.fac_imp_csv_col03 serialnumber,
|
|
CAST (
|
|
FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col04, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
|
AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime,
|
|
c.fac_imp_csv_col05 userDisplayName,
|
|
c.fac_imp_csv_col06 emailaddress,
|
|
c.fac_imp_csv_col07 phoneNumber,
|
|
c.fac_imp_csv_col08 imei,
|
|
c.fac_imp_csv_col09 manufacturer,
|
|
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,
|
|
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;
|
|
v_ruimte_key NUMBER;
|
|
v_errormsg VARCHAR2(100);
|
|
|
|
PROCEDURE setflex(p_code IN VARCHAR2,
|
|
p_key IN VARCHAR2,
|
|
p_waarde IN VARCHAR2,
|
|
p_tracking IN NUMBER)
|
|
AS
|
|
v_kenmerk_key NUMBER;
|
|
v_kenmerk_omschrijving ins_kenmerk.ins_kenmerk_omschrijving%TYPE;
|
|
v_kenmerk_waarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
|
|
BEGIN
|
|
--dbms_output.put_line(p_code);
|
|
SELECT ins_kenmerk_key, COALESCE(ins_kenmerk_omschrijving, ins_srtkenmerk_omschrijving)
|
|
INTO v_kenmerk_key, v_kenmerk_omschrijving
|
|
FROM ins_kenmerk k, ins_srtkenmerk sk
|
|
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
|
AND sk.ins_srtkenmerk_code = UPPER(p_code);
|
|
|
|
v_kenmerk_waarde := FLX.getflex('INS', v_kenmerk_key, p_key);
|
|
FLX.setflex('INS', v_kenmerk_key, p_key, p_waarde);
|
|
|
|
IF p_tracking = 1 AND COALESCE(v_kenmerk_waarde, '(leeg)') <> COALESCE(p_waarde, '(leeg)')
|
|
THEN
|
|
fac.trackaction('INSUPD', p_key, NULL, NULL, 'Object gewijzigd' || CHR(10)
|
|
|| v_kenmerk_omschrijving || ': ' || COALESCE(v_kenmerk_waarde, '(leeg)') || ' --> ' || COALESCE(p_waarde, '(leeg)'));
|
|
END IF;
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
dbms_output.put_line('Kenmerk niet gevonden: ' || p_code);
|
|
END;
|
|
|
|
BEGIN
|
|
FOR rec IN c_ins LOOP
|
|
BEGIN
|
|
v_errormsg := 'Opzoeken objectsoort in Facilitor: ' || rec.model;
|
|
SELECT ins_srtdeel_key, ins_discipline_key
|
|
INTO v_srtdeel_key, v_discipline_key
|
|
FROM ins_v_srtdeel_gegevens
|
|
WHERE ins_srtdeel_omschrijving = rec.model;
|
|
|
|
v_errormsg := 'Opzoeken ruimtenummer in Facilitor: 0.3';
|
|
SELECT alg_locatie_key, alg_ruimte_key
|
|
INTO v_locatie_key, v_ruimte_key
|
|
FROM alg_v_ruimte_gegevens
|
|
WHERE alg_ruimte_nr = '0.3';
|
|
|
|
INSERT INTO ins_deel (ins_srtdeel_key,
|
|
ins_discipline_key,
|
|
ins_deel_module,
|
|
ins_deel_omschrijving,
|
|
ins_alg_locatie_key,
|
|
ins_alg_ruimte_key,
|
|
ins_alg_ruimte_type,
|
|
ins_deel_aanmaak,
|
|
ins_deel_externnr,
|
|
ins_deel_externsyncdate)
|
|
VALUES (v_srtdeel_key,
|
|
v_discipline_key,
|
|
'INS',
|
|
SUBSTR(rec.deviceName, 1, 60),
|
|
v_locatie_key,
|
|
v_ruimte_key,
|
|
'R',
|
|
rec.enrolledDateTime,
|
|
rec.id,
|
|
SYSDATE);
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR rec IN c_upd LOOP
|
|
setflex('lastLocalSyncDateTime', rec.ins_deel_key, TO_CHAR(rec.lastLocalSyncDateTime, 'yyyy-mm-dd hh24:mi:ss'), 0);
|
|
setflex('userDisplayName', rec.ins_deel_key, rec.userDisplayName, 1);
|
|
setflex('imei', rec.ins_deel_key, rec.imei,1);
|
|
setflex('manufacturer', rec.ins_deel_key, rec.manufacturer, 1);
|
|
setflex('serialNumber', rec.ins_deel_key, rec.serialnumber, 1);
|
|
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;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE ofwd_import_afasonline (p_import_key IN NUMBER)
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
v_aantal_in_fclt NUMBER;
|
|
|
|
BEGIN
|
|
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
|
|
v_errorhint := 'Delimiter goed zetten';
|
|
|
|
-- UPDATE fac_imp_file
|
|
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
|
|
-- WHERE fac_import_key = p_import_key;
|
|
|
|
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
|
|
UPDATE fac_imp_file
|
|
SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
|
|
v_errorhint := 'Generieke update';
|
|
|
|
-- WORDT 2025-MRT
|
|
prs.import_perslid (
|
|
p_import_key,
|
|
'0;0;0;0;0;0;9;1;2;4;'
|
|
|| '3;0;0;0;0;0;0;6;0;5;'
|
|
|| '8;0;0;0;0;0;9;10;11;12;'
|
|
|| '13;14;0;0;0;0;0;0;0;0;'
|
|
|| '0;0;0;0;0;0',
|
|
'Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Personeelsnummer;EMail_werk;Functie_code;Functie_omschrijving;Organisatorische_eenheid_code;Organisatorische_eenheid_omschrijving;Datum_indienst;Datum_uitdienst;Leidinggevende_personeelsnummer;Leidinggevende_Naam%');
|
|
-- "Achternaam";"Tussenvoegsel";"Voorletters";"Roepnaam";"personeelsnummer";"E-Mail_werk";"Functie_code";"Functie_omschrijving";"Organisatorische_eenheid_code";"Organisatorische_eenheid_omschrijving";"Datum_indienst";"Datum_uitdienst";"Leidinggevende_personeelsnummer";"Leidinggevende_Naam";
|
|
-- 1 (8) 2 (9) 3 (11) 4 (10) 5 (10) 6 (18) 7 (20) 8(21) 9 (27) 10 (28) 11 (29) 12 (30) 13 (31) 14 (32)
|
|
-- DEF:'Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Personeelsnummer;E-Mail_werk;Functie_code;Functie_omschrijving;Organisatorische_eenheid_code;Organisatorische_eenheid_omschrijving; Datum_indienst;Datum_uitdienst;Leidinggevende_personeelsnummer;Leidinggevende_Naam');
|
|
|
|
---- we nemen uit afas alleen de bedrijven/domeinen mee van ofw
|
|
DELETE fac_imp_perslid
|
|
WHERE (
|
|
UPPER (prs_perslid_email) NOT LIKE '%@OFW.NL'
|
|
)
|
|
;
|
|
|
|
DELETE fac_imp_organisatie;
|
|
|
|
-- 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;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END ofwd_import_afasonline;
|
|
/
|
|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE ofwd_update_afasonline (p_import_key IN NUMBER)
|
|
IS
|
|
|
|
CURSOR c_del
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, a.prs_afdeling_omschrijving, b.prs_bedrijf_naam
|
|
FROM prs_perslid p, fac_imp_perslid i, prs_v_afdeling a, prs_bedrijf b
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND b.prs_bedrijf_naam = 'OFW'
|
|
AND i.prs_perslid_nr IS NULL -- in Facilitor, met onderstaande voorwaarden, is er dus geen mapping op personeelsnummer en die personen gaan we verwijderen/inactief maken
|
|
ORDER BY 1 ;
|
|
|
|
CURSOR c_upd
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
pf.prs_perslid_naam_full,
|
|
p.prs_perslid_aanmaak,
|
|
i.prs_kenmerk3 indienst,
|
|
i.prs_kenmerk4 uitdienst,
|
|
prs_kenmerk5 leid_prs_nr
|
|
FROM prs_v_perslid_fullnames pf,
|
|
prs_perslid p,
|
|
fac_imp_perslid i
|
|
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);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
|
|
v_indienst_kenmerk_key NUMBER(10);
|
|
v_uitdienst_kenmerk_key NUMBER(10);
|
|
v_leidg_perslid_key NUMBER(10);
|
|
v_melding_key NUMBER(10);
|
|
v_indienst_stdmelding_key NUMBER(10);
|
|
v_uitdienst_stdmelding_key NUMBER(10);
|
|
v_uitdienst NUMBER(1);
|
|
v_indienstdatum VARCHAR2(10);
|
|
v_uitdienstdatum VARCHAR2(10);
|
|
|
|
BEGIN
|
|
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
|
|
|
|
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
|
|
|
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
|
|
|
|
COMMIT;
|
|
|
|
-- generic update
|
|
-- 'EMAIL' betekent dat op basis van Email wordt gematched.
|
|
-- 'NR' betekent op basis Personeelsnummer
|
|
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
|
prs.update_perslid (p_import_key, 'NR', NULL);
|
|
|
|
v_errorhint := 'Verwijderen persoonsgegevens';
|
|
|
|
-- Verwijder personen die niet meer in de import voorkomen.
|
|
FOR rec IN c_del
|
|
LOOP
|
|
BEGIN
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
END;
|
|
END LOOP;
|
|
|
|
SELECT k.prs_kenmerk_key
|
|
INTO v_indienst_kenmerk_key
|
|
FROM prs_kenmerk k
|
|
WHERE k.prs_kenmerk_verwijder IS NULL
|
|
AND k.prs_kenmerk_code = 'INDIENST';
|
|
|
|
SELECT k.prs_kenmerk_key
|
|
INTO v_uitdienst_kenmerk_key
|
|
FROM prs_kenmerk k
|
|
WHERE k.prs_kenmerk_verwijder IS NULL
|
|
AND k.prs_kenmerk_code = 'UITDIENST';
|
|
|
|
SELECT mld_stdmelding_key
|
|
INTO v_indienst_stdmelding_key
|
|
FROM mld_stdmelding
|
|
WHERE mld_stdmelding_code = 'INDIENST';
|
|
|
|
SELECT mld_stdmelding_key
|
|
INTO v_uitdienst_stdmelding_key
|
|
FROM mld_stdmelding
|
|
WHERE mld_stdmelding_code = 'UITDIENST';
|
|
|
|
FOR rec IN c_upd
|
|
LOOP
|
|
BEGIN
|
|
v_uitdienst := 0;
|
|
v_indienstdatum := NULL;
|
|
v_uitdienstdatum := NULL;
|
|
|
|
IF rec.indienst IS NOT NULL
|
|
THEN
|
|
v_indienstdatum := TO_CHAR(FAC.SAFE_TO_DATE(rec.indienst, 'yyyy-mm-dd'), 'dd-mm-yyyy');
|
|
END IF;
|
|
v_errorhint:='Fout bijwerken kenmerkveld3 - Indienst datum: ' || rec.indienst;
|
|
PRS.upsertkenmerk (v_indienst_kenmerk_key, rec.prs_perslid_key, v_indienstdatum);
|
|
|
|
IF rec.uitdienst IS NOT NULL
|
|
THEN
|
|
v_uitdienstdatum := TO_CHAR(FAC.SAFE_TO_DATE(rec.uitdienst, 'yyyy-mm-dd'), 'dd-mm-yyyy');
|
|
IF FLX.getflex('PRS', v_uitdienst_kenmerk_key, rec.prs_perslid_key, 'P', 1) IS NULL
|
|
THEN
|
|
v_uitdienst := 1;
|
|
END IF;
|
|
END IF;
|
|
v_errorhint:='Fout bijwerken kenmerkveld4 - Uitdienst datum';
|
|
PRS.upsertkenmerk (v_uitdienst_kenmerk_key, rec.prs_perslid_key, v_uitdienstdatum);
|
|
|
|
v_leidg_perslid_key := NULL;
|
|
IF rec.leid_prs_nr IS NOT NULL
|
|
THEN
|
|
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.
|
|
-- en er is niet eerder een indiensttredingsworkflow gestart.
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM mld_melding
|
|
WHERE prs_perslid_key = rec.prs_perslid_key
|
|
AND mld_stdmelding_key = v_indienst_stdmelding_key;
|
|
|
|
IF TRUNC(rec.prs_perslid_aanmaak) = TRUNC(SYSDATE) AND v_count = 0
|
|
THEN
|
|
|
|
INSERT INTO mld_melding (mld_melding_module,
|
|
mld_meldbron_key,
|
|
mld_melding_datum,
|
|
mld_melding_onderwerp,
|
|
mld_melding_omschrijving,
|
|
mld_melding_status,
|
|
mld_stdmelding_key,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
prs_kostenplaats_key,
|
|
mld_melding_spoed)
|
|
VALUES ('MLD',
|
|
6, -- systeem
|
|
SYSDATE,
|
|
'Indienst tredingsbericht: ' || rec.prs_perslid_naam_full,
|
|
NULL,
|
|
NULL,
|
|
v_indienst_stdmelding_key,
|
|
rec.prs_perslid_key,
|
|
rec.prs_perslid_key,
|
|
NULL,
|
|
3)
|
|
RETURNING mld_melding_key
|
|
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
|
|
-- Persoon is vandaag uitdienstgemeld.
|
|
-- en er is niet eerder een indiensttredingsworkflow gestart.
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM mld_melding
|
|
WHERE prs_perslid_key = rec.prs_perslid_key
|
|
AND mld_stdmelding_key = v_uitdienst_stdmelding_key;
|
|
|
|
IF v_uitdienst = 1 AND v_count = 0
|
|
THEN
|
|
|
|
INSERT INTO mld_melding (mld_melding_module,
|
|
mld_meldbron_key,
|
|
mld_melding_datum,
|
|
mld_melding_onderwerp,
|
|
mld_melding_omschrijving,
|
|
mld_melding_status,
|
|
mld_stdmelding_key,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
prs_kostenplaats_key,
|
|
mld_melding_spoed)
|
|
VALUES ('MLD',
|
|
6, -- systeem
|
|
SYSDATE,
|
|
'Uitdienst tredingsbericht: ' || rec.prs_perslid_naam_full,
|
|
NULL,
|
|
NULL,
|
|
v_uitdienst_stdmelding_key,
|
|
rec.prs_perslid_key,
|
|
rec.prs_perslid_key,
|
|
NULL,
|
|
3)
|
|
RETURNING mld_melding_key
|
|
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',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END ofwd_update_afasonline;
|
|
/
|
|
|
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
-- Rapportage om het kenmerkdomein met optionele profielen (objectsoort_key = 42) te vullen
|
|
CREATE OR REPLACE VIEW ofwd_v_optionele_profielen
|
|
AS
|
|
SELECT ins_deel_key, ins_deel_omschrijving, ins_deel_verwijder
|
|
FROM ins_deel
|
|
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_key,
|
|
pf.prs_perslid_naam_full naam,
|
|
NULL functie,
|
|
ins_deel_omschrijving rol,
|
|
sd.ins_srtdeel_omschrijving soort_rol,
|
|
DECODE (TRUNC (k.ins_kenmerk_volgnummer, -2), 100, 'Sharepoint', 300, 'Mail', 500, 'Applicatie') groep,
|
|
k.ins_kenmerk_omschrijving recht
|
|
FROM prs_perslid p,
|
|
prs_v_perslid_fullnames pf,
|
|
prs_kenmerklink kl,
|
|
prs_kenmerk k,
|
|
fac_kenmerkdomein kdo,
|
|
ins_deel d,
|
|
ins_kenmerkdeel kde,
|
|
ins_kenmerk k,
|
|
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_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(+)
|
|
AND d.ins_deel_key = kde.ins_deel_key(+)
|
|
AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+)
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key(+)
|
|
UNION ALL
|
|
SELECT pf.prs_perslid_key,
|
|
pf.prs_perslid_naam_full,
|
|
df.ins_deel_omschrijving,
|
|
dr.ins_deel_omschrijving,
|
|
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 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_kenmerkdeel kde,
|
|
ins_kenmerk k,
|
|
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_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
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|