Files
Customer/onces/PNBR/PNBR#35189.sql
2016-09-15 14:37:04 +00:00

194 lines
8.7 KiB
SQL

SET ECHO ON
SPOOL PNBR#35189.lst
SET DEFINE OFF
CREATE OR REPLACE PROCEDURE pnbr_import_perslid_mut (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
v_seq_of_columns := '1;2;0;4;5;6;7;8;9;11;10;0;0;0;0;13;14;15;0;17;16;18;19;12;0;0;3;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46';
prs.import_perslid(p_import_key, v_seq_of_columns, 'LOCATIECODE;GEBOUWCODE;BOUWLAAGVOLGNUMMER;RUIMTENUMMER;WERKPLEKVOLGNUMMER;OMSCHRIJVING;AFDELINGSCODE;PERSOONACHTERNAAM;TUSSENVOEGSEL;VOORLETTERS;VOORNAAM;TITEL_AANHEF;TELEFOONNUMMER;MOBIEL;EMAIL;FUNCTIE;PERSONEELSNUMMER;LOGINNAAM;PASSWORD%');
-- we gebruikten kenmerk1 om tijdelijk de verdieping op te slaan. Bij PNBR kunnen namelijk letters in de verdieping staan. Deze
-- proberen we eruit te werken zodat we op het laatst de verdieping weer om kunnen zetten.
UPDATE fac_imp_perslid SET alg_locatie_code = 'PP', alg_gebouw_code = '04' WHERE alg_gebouw_code = 'Pettelaarpar';
UPDATE fac_imp_perslid SET alg_locatie_code = 'BEST', alg_gebouw_code = '05', prs_kenmerk1 = '0', alg_ruimte_nr = 'FLEX' WHERE alg_gebouw_code = 'Best';
UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '02', prs_kenmerk1 = SUBSTR(prs_kenmerk1, 2, 3) WHERE alg_gebouw_code = 'Provinciehui' and prs_kenmerk1 LIKE 'N%';
UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '01', prs_kenmerk1 = '0' WHERE alg_gebouw_code = 'Provinciehui' and prs_kenmerk1 LIKE 'B%';
UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '01', prs_kenmerk1 = '-1' WHERE alg_gebouw_code = 'Provinciehui' and prs_kenmerk1 LIKE 'P%';
UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '01' WHERE alg_gebouw_code = 'Provinciehui';
UPDATE fac_imp_perslid SET alg_locatie_code = '26', alg_gebouw_code = '26', prs_kenmerk1 = '1', alg_ruimte_nr = '01' WHERE alg_gebouw_code = 'Eindhoven';
UPDATE fac_imp_perslid SET alg_locatie_code = '51', alg_gebouw_code = '51', prs_kenmerk1 = '1', alg_ruimte_nr = '01' WHERE alg_gebouw_code = 'Den Haag';
UPDATE fac_imp_perslid SET alg_locatie_code = 'ODBN (DB)', alg_gebouw_code = 'ODBN (DB)', prs_kenmerk1 = '1', alg_ruimte_nr = '1' WHERE alg_gebouw_code = '''s-Hertogenb';
UPDATE fac_imp_perslid SET alg_locatie_code = 'ODBN (C)', alg_gebouw_code = 'ODBN', prs_kenmerk1 = '1', alg_ruimte_nr = '1' WHERE alg_gebouw_code = 'Cuijk (ODBN)';
UPDATE fac_imp_perslid SET alg_locatie_code = 'ODZOB', alg_gebouw_code = 'ODZOB', prs_kenmerk1 = '1', alg_ruimte_nr = '1' WHERE alg_gebouw_code = 'Eindhoven (O';
UPDATE fac_imp_perslid SET alg_locatie_code = 'OMWB', alg_gebouw_code = 'OMWB', prs_kenmerk1 = '1', alg_ruimte_nr = '1' WHERE alg_gebouw_code = 'Tilburg (OMW';
UPDATE fac_imp_perslid SET alg_locatie_code = 'C-TOREN', alg_gebouw_code = 'C-Toren' WHERE alg_gebouw_code = 'C-Toren, Pet';
UPDATE fac_imp_perslid SET alg_verdieping_volgnr = FAC.SAFE_TO_NUMBER(prs_kenmerk1);
UPDATE fac_imp_perslid SET alg_ruimte_nr = '_FLEX' WHERE alg_locatie_code = 'PH' AND alg_gebouw_code = '01' AND alg_ruimte_nr = 'FLEX';
-- pas de ruimtegegevens aan voor ruimten in de C-Toren die niet gevonden kunnen worden.
-- en zet deze standaard op 2-FLEX.
UPDATE fac_imp_perslid i
SET alg_verdieping_volgnr = 2, alg_ruimte_nr = 'FLEX'
WHERE alg_locatie_code = 'C-TOREN'
AND NOT EXISTS
(SELECT alg_ruimte_key
FROM alg_v_ruimte_gegevens rg
WHERE rg.alg_locatie_code = i.alg_locatie_code
AND rg.alg_gebouw_upper = UPPER (i.alg_gebouw_code)
AND rg.alg_verdieping_volgnr = i.alg_verdieping_volgnr
AND rg.alg_ruimte_nr = i.alg_ruimte_nr);
END pnbr_import_perslid_mut;
/
INSERT INTO alg_ruimte (alg_verdieping_key,
alg_srtruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving)
SELECT alg_verdieping_key,
NULL,
'_FLEX',
'Flex voor personen import'
FROM alg_v_verdieping_gegevens
WHERE alg_locatie_code = 'PH' AND alg_gebouw_upper = '01';
-- nu eerst de import draaien om de mensen om te hangen naar de nieuwe _FLEX ruimte
DECLARE
v_import_key NUMBER;
BEGIN
SELECT MAX(fac_import_key)
INTO v_import_key
FROM fac_import
WHERE fac_import_app_key = 41;
pnbr_import_perslid_mut (v_import_key);
UPDATE fac_import
SET fac_import_datum_gelezen = SYSDATE
WHERE fac_import_key = v_import_key;
pnbr_update_perslid_mut (v_import_key);
UPDATE fac_import
SET fac_import_datum_verwerkt = SYSDATE
WHERE fac_import_key = v_import_key;
COMMIT;
END;
/
-- nu is de import gedraaid en gaan we mensen die nog aan de FLEX plekken hangen verwijderen.
DELETE prs_perslidwerkplek
WHERE prs_perslidwerkplek_key IN
(SELECT DISTINCT prs_perslidwerkplek_key
FROM prs_v_perslidwerkplek_gegevens
WHERE alg_ruimte_nr = 'FLEX'
AND prs_perslidwerkplek_key IS NOT NULL);
-- De object gaan we aan de werkplek koppelen. Deze moeten dan wel een werkplek binding hebben
-- PC, Monitor, Thin Client
UPDATE ins_srtdeel
SET ins_srtdeel_binding = 51
WHERE ins_srtdeel_key in (73, 68, 821);
-- Nu gaan we voor de flex ruimten in de toren vanaf de 2e verdieping 68 werkplekken aanmaken (als ze al niet bestaan)
DECLARE
CURSOR c
IS
SELECT alg_ruimte_key
FROM alg_v_ruimte_gegevens
WHERE alg_locatie_code = 'PH'
AND alg_gebouw_upper = '01'
AND alg_ruimte_nr = 'FLEX'
AND alg_verdieping_volgnr > 2;
v_wp_index NUMBER;
v_werkplek_key NUMBER;
BEGIN
FOR rec IN c
LOOP
FOR v_wp_index IN 1 .. 68
LOOP
BEGIN
SELECT prs_werkplek_key
INTO v_werkplek_key
FROM prs_v_werkplek_gegevens
WHERE alg_ruimte_key = rec.alg_ruimte_key
AND prs_werkplek_volgnr = v_wp_index;
DBMS_OUTPUT.put_line( 'Gevonden ruimte_key: '
|| rec.alg_ruimte_key
|| ' wp_index:'
|| v_wp_index);
UPDATE prs_werkplek
SET prs_werkplek_omschrijving = 'Bureau-' || v_wp_index
WHERE prs_werkplek_key = v_werkplek_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line( 'NIET Gevonden ruimte_key: '
|| rec.alg_ruimte_key
|| ' wp_index:'
|| v_wp_index);
INSERT INTO prs_werkplek (prs_werkplek_module,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_werkplek_virtueel,
prs_alg_ruimte_key,
prs_werkplek_type)
VALUES ('PRR',
v_wp_index,
'Bureau-' || v_wp_index,
0,
rec.alg_ruimte_key,
0);
END;
END LOOP;
END LOOP;
COMMIT;
END;
/
-- Nu gaan we de objecten die een kenmerk werkpleknummer hebben omhangen
DECLARE
CURSOR c
IS
SELECT d.ins_deel_key, wp.prs_werkplek_key
FROM ins_kenmerkdeel kd,
ins_kenmerk k,
fac_usrdata ud,
ins_deel d,
prs_werkplek wp
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 861
AND fac.safe_to_number (ins_kenmerkdeel_waarde) = ud.fac_usrdata_key
AND kd.ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = wp.prs_alg_ruimte_key
AND wp.prs_werkplek_volgnr = fac.safe_to_number (fac_usrdata_omschr)
AND wp.prs_werkplek_omschrijving LIKE 'Bureau%';
BEGIN
FOR rec IN c
LOOP
UPDATE ins_deel
SET ins_alg_ruimte_type = 'W',
ins_alg_ruimte_key = rec.prs_werkplek_key
WHERE ins_deel_key = rec.ins_deel_key;
END LOOP;
COMMIT;
END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
COMMIT;
SPOOL OFF;