--
-- $Id$
--
-- Eenmalig import draaien obv inlognaam

DEFINE thisfile = 'LOGI#56094.SQL'
DEFINE dbuser   = '^LOGI'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SET DEFINE OFF

------ payload begin ------
CREATE OR REPLACE PROCEDURE logi_import_persoon (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
    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;0;8;2;4;3;'
        || '0;0;0;0;0;0;0;6;0;1;'
        || '1;5;0;0;0;0;9;0;0;0;'
        || '0;0;0;0;0;0;0;0;0;0;'
        || '0;0;0;0;0;0',
        'employeeID;sn;givenName;infix;uid;mail;orglevel7;orgleve7id;a1physicalDeliveryOfficeName%');

    UPDATE fac_imp_perslid
       SET prs_srtperslid_omschrijving = 'Onbekend';

    UPDATE fac_imp_perslid
       SET prs_afdeling_naam = 'CGI';

    UPDATE fac_imp_perslid p
       SET p.alg_locatie_code =
               (SELECT lo.alg_locatie_code
                  FROM fac_usrdata ud, alg_locatie lo
                 WHERE     ud.fac_usrtab_key = 1
                       AND ud.fac_usrdata_code = lo.alg_locatie_code
                       AND ud.fac_usrdata_omschr = p.prs_kenmerk1
                       AND lo.alg_locatie_verwijder IS NULL);

    UPDATE fac_imp_perslid p
       SET p.alg_gebouw_code =
               (SELECT g.alg_gebouw_code
                  FROM alg_locatie l, alg_gebouw g
                 WHERE     p.alg_locatie_code = l.alg_locatie_code
                       AND l.alg_locatie_key = g.alg_locatie_key
                       AND g.alg_gebouw_verwijder IS NULL
                       AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
                       AND l.alg_locatie_verwijder IS NULL);

    UPDATE fac_imp_perslid p
       SET p.alg_verdieping_volgnr =
               (SELECT v.alg_verdieping_volgnr
                  FROM alg_locatie l, alg_gebouw g, alg_verdieping v
                 WHERE     p.alg_locatie_code = l.alg_locatie_code
                       AND p.alg_gebouw_code = g.alg_gebouw_code
                       AND l.alg_locatie_key = g.alg_locatie_key
                       AND g.alg_gebouw_verwijder IS NULL
                       AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
                       AND l.alg_locatie_verwijder IS NULL
                       AND v.alg_gebouw_key = g.alg_gebouw_key
                       AND v.alg_verdieping_code = '0'
                       AND v.alg_verdieping_verwijder IS NULL);

    UPDATE fac_imp_perslid p
       SET p.alg_ruimte_nr =
               (SELECT r.alg_ruimte_nr
                  FROM alg_locatie     l,
                       alg_gebouw      g,
                       alg_verdieping  v,
                       alg_ruimte      r
                 WHERE     p.alg_locatie_code = l.alg_locatie_code
                       AND l.alg_locatie_key = g.alg_locatie_key
                       AND p.alg_gebouw_code = g.alg_gebouw_code
                       AND p.alg_verdieping_volgnr = v.alg_verdieping_volgnr
                       AND g.alg_gebouw_verwijder IS NULL
                       AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
                       AND l.alg_locatie_verwijder IS NULL
                       AND v.alg_gebouw_key = g.alg_gebouw_key
                       AND v.alg_verdieping_code = '0'
                       AND v.alg_verdieping_verwijder IS NULL
                       AND r.alg_verdieping_key = v.alg_verdieping_key
                       AND r.alg_ruimte_nr = '000'
                       AND r.alg_ruimte_verwijder IS NULL);

    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 logi_import_persoon;
/


CREATE OR REPLACE PROCEDURE logi_update_persoon (p_import_key IN NUMBER)
AS
    -- Verwijderen op basis van oslogin #56094
    CURSOR c_prs_del IS
          SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_oslogin
            FROM PRS_PERSLID p,
                 (SELECT prs_perslid_oslogin
                    FROM logi_imp_persoon
                   WHERE prs_perslid_oslogin IS NOT NULL) lp
           WHERE     1 = 1
                 AND p.prs_perslid_nr IS NOT NULL
                 AND p.prs_perslid_oslogin IS NOT NULL
                 AND p.prs_perslid_verwijder IS NULL
                 AND p.prs_perslid_oslogin NOT LIKE '%\_%' ESCAPE '\'
                 AND UPPER (p.prs_perslid_oslogin) =
                     UPPER (lp.prs_perslid_oslogin(+))
                 AND lp.prs_perslid_oslogin IS NULL
        ORDER BY 2, 1;
        
BEGIN
    
    FOR rec IN c_prs_del
    LOOP
        BEGIN
            prs.delete_perslid (p_import_key, rec.prs_perslid_key);
        END;
    END LOOP;   
    
     -- 'LOGIN' betekent dat op basis van Email wordt gematched.
     prs.update_perslid (p_import_key, 'LOGIN', NULL); 
  

    COMMIT;
END;
/

------ payload end   ------

SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 1); END;
/

COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile
