281 lines
11 KiB
SQL
281 lines
11 KiB
SQL
|
|
-- Script containing customer specific configuration sql statements for HCAS
|
|
-- (c) 2016 Facilitor B.V.
|
|
-- Support: +31 53 4800710
|
|
|
|
SET ECHO ON
|
|
SPOOL hcas.lst
|
|
|
|
----- Personenimport -------------------------------------------------------------------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE hcas_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
BEGIN
|
|
v_errorhint := 'Generieke update';
|
|
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
|
prs.import_perslid (
|
|
p_import_key,
|
|
'0;0;0;0;0;8;1;2;0;3;'
|
|
|| '0;0;0;0;0;0;0;6;0;0;'
|
|
|| '5;1;0;0;0;0;4;0;0;0;'
|
|
|| '0;0;0;0;0;0;0;0;0;0;'
|
|
|| '0;0;0;0;0;0',
|
|
'"SamAccountName";"sn";"GivenName";"Department";"Function";"Mail";"TelephoneNumber";"Location"%');
|
|
|
|
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 hcas_import_perslid;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE hcas_update_perslid (p_import_key IN NUMBER)
|
|
IS
|
|
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
|
|
-- Key bij HCAS is SAMAccountName, hieronder de query om alle personen te verwijderen die:
|
|
-- a) niet meer in het importbestand staan, wel in Facilitor, en
|
|
-- b) waarvan de persoon in Facilitor geen alternatieve login heeft (gevuld alt. login van af blijven, dit zijn persleden die handmatig zijn toegevoegd)
|
|
-- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
|
|
CURSOR c_del
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_oslogin,
|
|
p.prs_perslid_oslogin2,
|
|
pf.prs_perslid_naam_full
|
|
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
|
|
WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin(+))
|
|
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
|
|
AND i.prs_perslid_oslogin IS NULL
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_perslid_oslogin2 IS NULL
|
|
AND pf.prs_perslid_key = p.prs_perslid_key
|
|
ORDER BY 2;
|
|
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_count NUMBER;
|
|
BEGIN
|
|
-- generic update
|
|
|
|
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
|
|
|
-- Afdelingsomschrijving ingelezen in kenmerk; op basis daarvan de afdelingscode
|
|
-- invullen (verplicht veld afdelingscode tijdelijk gevuld met oslogin).
|
|
UPDATE fac_imp_perslid i
|
|
SET prs_afdeling_naam =
|
|
(SELECT prs_afdeling_naam
|
|
FROM prs_afdeling a
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND UPPER (a.prs_afdeling_omschrijving) =
|
|
UPPER (i.prs_kenmerk1));
|
|
|
|
-- Onbekende afdelingen bewaren voor logging
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = SUBSTR (prs_kenmerk1, 1, 15)
|
|
WHERE prs_afdeling_naam IS NULL;
|
|
|
|
-- Locatieomschrijving ingelezen; op basis daarvan de juiste vastgoedgegevens
|
|
-- in de juiste kolommen zetten.
|
|
-- Omdat werkplekken alleen worden aangevuld, dit alleen doen voor personen die
|
|
-- nog geen werkplek hebben.
|
|
UPDATE fac_imp_perslid i
|
|
SET
|
|
(alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr
|
|
) =
|
|
( SELECT rg.alg_locatie_code,
|
|
MIN (rg.alg_gebouw_upper),
|
|
MIN (rg.alg_verdieping_volgnr),
|
|
rg.alg_ruimte_nr
|
|
FROM alg_v_ruimte_gegevens rg
|
|
WHERE i.prs_werkplek_omschrijving =
|
|
rg.alg_locatie_omschrijving
|
|
AND rg.alg_ruimte_nr = '_WP'
|
|
GROUP BY rg.alg_locatie_code, rg.alg_ruimte_nr)
|
|
WHERE NOT EXISTS
|
|
(SELECT DISTINCT prs_perslid_oslogin
|
|
FROM prs_perslidwerkplek pw, prs_v_aanwezigperslid ap
|
|
WHERE ap.prs_perslid_key = pw.prs_perslid_key
|
|
AND ap.prs_perslid_oslogin =
|
|
UPPER (i.prs_perslid_oslogin));
|
|
|
|
-- Als er al een telefoonnummer bekend is in Facilitor, dan moet deze bewaard blijven
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_telefoonnr =
|
|
(SELECT p.prs_perslid_telefoonnr
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_perslid_telefoonnr IS NOT NULL
|
|
AND p.prs_perslid_key = i.prs_perslid_key);
|
|
|
|
|
|
-- Tijdelijke gegevens opruimen
|
|
UPDATE fac_imp_perslid i
|
|
SET prs_werkplek_omschrijving = NULL, prs_kenmerk1 = NULL;
|
|
|
|
-- 'LOGIN' betekent dat op basis van Login wordt gematched.
|
|
-- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
|
|
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
|
|
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
|
|
|
-- 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;
|
|
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,
|
|
'Importproces personen afgebroken!');
|
|
END hcas_update_perslid;
|
|
/
|
|
|
|
|
|
----- Rapportage-views -----------------------------------------------------------------------------
|
|
|
|
CREATE OR REPLACE VIEW hcas_v_rap_qrc_ins_mld
|
|
AS
|
|
SELECT i.ins_deel_omschrijving hide_f_sort,
|
|
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
|
|
fclt_f_locatie,
|
|
o.alg_gebouw_omschrijving fclt_f_gebouw,
|
|
o.alg_plaatsaanduiding fclt_f_plaats,
|
|
d.ins_discipline_omschrijving fclt_f_discipline,
|
|
g.ins_srtgroep_omschrijving fclt_f_objectgroep,
|
|
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
|
|
i.ins_deel_omschrijving fclt_f_identificatie,
|
|
b.fac_bookmark_naam fclt_f_bookmark,
|
|
i.ins_deel_key,
|
|
s.ins_srtdeel_key,
|
|
i.ins_discipline_key fclt_3d_discipline_key,
|
|
l.alg_locatie_key fclt_3d_locatie_key,
|
|
i.ins_alg_ruimte_type,
|
|
i.ins_alg_ruimte_key,
|
|
b.fac_bookmark_id hide_f_bookmark_id
|
|
FROM ins_deel i,
|
|
ins_v_alg_overzicht o,
|
|
ins_srtdeel s,
|
|
ins_srtgroep g,
|
|
ins_discipline d,
|
|
alg_locatie l,
|
|
fac_bookmark b,
|
|
mld_stdmelding sm
|
|
WHERE b.fac_bookmark_path = 'appl/pda/melding.asp'
|
|
AND b.fac_bookmark_query LIKE
|
|
'%stdm_key=' || sm.mld_stdmelding_key || '%'
|
|
AND (b.fac_bookmark_expire IS NULL
|
|
OR b.fac_bookmark_expire > SYSDATE)
|
|
AND ins_deel_verwijder IS NULL
|
|
AND i.ins_deel_module = 'INS'
|
|
AND i.ins_deel_parent_key IS NULL
|
|
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
|
AND g.ins_srtgroep_key = s.ins_srtgroep_key
|
|
AND d.ins_discipline_key = g.ins_discipline_key
|
|
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
|
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
|
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
|
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
|
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
|
AND sm.ins_srtinst_key IS NOT NULL
|
|
AND sm.ins_srtinst_key =
|
|
DECODE (sm.ins_srtinst_niveau,
|
|
'S', i.ins_srtdeel_key,
|
|
'G', s.ins_srtgroep_key,
|
|
'D', g.ins_discipline_key);
|
|
|
|
CREATE OR REPLACE VIEW hcas_v_rap_qrc_ins
|
|
AS
|
|
SELECT i.ins_deel_omschrijving hide_f_sort,
|
|
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
|
|
fclt_f_locatie,
|
|
o.alg_gebouw_omschrijving fclt_f_gebouw,
|
|
o.alg_plaatsaanduiding fclt_f_plaats,
|
|
d.ins_discipline_omschrijving fclt_f_discipline,
|
|
g.ins_srtgroep_omschrijving fclt_f_objectgroep,
|
|
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
|
|
i.ins_deel_omschrijving fclt_f_identificatie,
|
|
b.fac_bookmark_naam fclt_f_bookmark,
|
|
i.ins_deel_key,
|
|
s.ins_srtdeel_key,
|
|
i.ins_discipline_key fclt_3d_discipline_key,
|
|
l.alg_locatie_key fclt_3d_locatie_key,
|
|
i.ins_alg_ruimte_type,
|
|
i.ins_alg_ruimte_key,
|
|
b.fac_bookmark_id hide_f_bookmark_id
|
|
FROM ins_deel i,
|
|
ins_v_alg_overzicht o,
|
|
ins_srtdeel s,
|
|
ins_srtgroep g,
|
|
ins_discipline d,
|
|
alg_locatie l,
|
|
fac_bookmark b
|
|
WHERE b.fac_bookmark_path = 'appl/pda/ins_deel.asp'
|
|
AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE
|
|
AND ins_deel_verwijder IS NULL
|
|
AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
|
|
AND i.ins_deel_module = 'INS'
|
|
AND i.ins_deel_parent_key IS NULL
|
|
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
|
AND g.ins_srtgroep_key = s.ins_srtgroep_key
|
|
AND d.ins_discipline_key = g.ins_discipline_key
|
|
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
|
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
|
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
|
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
|
AND l.alg_locatie_key = i.ins_alg_locatie_key;
|
|
|
|
--- HCAS#37147 rapportage met aantallen nog actieve medewerkers per afdeling
|
|
|
|
CREATE OR REPLACE VIEW HCAS_V_RAP_MDW_AFDELING
|
|
(
|
|
AANTAL,
|
|
AFDELING,
|
|
AFDELINGOMSCHRIJVING,
|
|
KOSTENPLAATS
|
|
)
|
|
AS
|
|
SELECT COUNT (prs_perslid_key),
|
|
a.prs_afdeling_upper,
|
|
PRS_AFDELING_OMSCHRIJVING,
|
|
PRS_KOSTENPLAATS_KEY
|
|
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
|
WHERE P.PRS_AFDELING_KEY(+) = A.PRS_AFDELING_KEY
|
|
AND prs_afdeling_verwijder IS NULL
|
|
GROUP BY a.prs_afdeling_upper,
|
|
PRS_AFDELING_OMSCHRIJVING,
|
|
PRS_KOSTENPLAATS_KEY;
|
|
|
|
BEGIN
|
|
adm.systrackscriptId ('$Id$', 0);
|
|
END;
|
|
/
|
|
|
|
BEGIN
|
|
fac.registercustversion ('HCAS', 4);
|
|
END;
|
|
/
|
|
|
|
COMMIT;
|
|
SPOOL OFF; |