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;
