Files
Customer/LOGI/logi.sql
Suzan Wiegerinck c733a1f99b LOGI#56094: Personen import afgelopen nacht verkeerd gelopen
svn path=/Customer/trunk/; revision=43022
2019-06-20 07:49:07 +00:00

2916 lines
118 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the LOGI database
DEFINE thisfile = 'LOGI.SQL'
DEFINE dbuser = '^LOGI'
DEFINE custid = 'LOGI'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
/* De 'oude' personen import en update vervangen door de standaard
CREATE OR REPLACE PROCEDURE logi_import_persoon (p_import_key IN NUMBER)
AS
c_max_import_str_len NUMBER (10) := 1000;
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
NEXT_RECORD c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Import line
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De importvelden
v_perslid_nr VARCHAR2 (1000);
v_perslid_naam VARCHAR2 (1000);
v_perslid_voornaam VARCHAR2 (1000);
v_perslid_tussenvoegsel VARCHAR2 (1000);
v_perslid_oslogin VARCHAR2 (1000);
v_perslid_email VARCHAR2 (1000);
v_dummy VARCHAR2 (1000);
v_afdeling_naam VARCHAR2 (1000);
v_locatie_omschrijving VARCHAR2 (1000);
header_found BOOLEAN;
v_controle_res VARCHAR2 (30);
-- SUBFUNCTION
FUNCTION get_imp_value (p_value IN VARCHAR2, p_length IN NUMBER)
RETURN VARCHAR2
IS
c_del_in_str VARCHAR2 (16) := 'NULL';
c_del_in_str2 VARCHAR2 (16) := '"';
v_value VARCHAR2 (1000);
BEGIN
SELECT SUBSTR (
TRIM(COALESCE (
REPLACE (REPLACE (p_value, c_del_in_str),
c_del_in_str2,
''),
'')),
1,
p_length)
INTO v_value
FROM DUAL;
RETURN v_value;
EXCEPTION
WHEN OTHERS
THEN
RETURN p_value;
END;
BEGIN
-- Init
v_fielddelimitor := ';';
v_errormsg := '';
header_found := FALSE;
v_controle_res := 'OK'; -- Hier kan een controle ingebouwd worden ...
IF (v_controle_res IS NULL)
THEN
v_errormsg := 'Ongeldig importbestand';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
ELSE
-- Clear my previous imported rows
DELETE FROM logi_imp_persoon;
COMMIT;
FOR NEXT_RECORD IN c_cursor
LOOP
BEGIN
v_newline :=
SUBSTR (NEXT_RECORD.FAC_IMP_FILE_LINE,
1,
c_max_import_str_len);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_naam);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_perslid_voornaam);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_perslid_tussenvoegsel);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_oslogin);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_email);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_locatie_omschrijving);
-- Skip until the header is found
header_found := TRUE; -- Geen Header check
IF (header_found)
THEN
BEGIN
v_errormsg := 'Kan persoonsgegevens niet inlezen ';
v_perslid_nr := get_imp_value (v_perslid_nr, 16);
v_perslid_naam := get_imp_value (v_perslid_naam, 30);
v_perslid_voornaam := get_imp_value (v_perslid_voornaam, 30);
v_perslid_tussenvoegsel := get_imp_value (v_perslid_tussenvoegsel, 15);
v_perslid_oslogin := get_imp_value (v_perslid_oslogin, 30);
v_perslid_email := get_imp_value (v_perslid_email, 200);
v_afdeling_naam := get_imp_value (v_afdeling_naam, 10);
v_locatie_omschrijving := get_imp_value (v_locatie_omschrijving, 30);
-- Velden met een waarde '' zijn leeg ivm privacy overwegingen
INSERT INTO logi_imp_persoon (prs_perslid_nr,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_oslogin,
prs_perslid_email,
prs_srtperslid_omschrijving,
prs_afdeling_naam,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
prs_locatie_omschrijving,
alg_ruimte_nr,
logi_imp_persoon_aanmaak)
VALUES (v_perslid_nr,
v_perslid_naam,
v_perslid_voornaam,
v_perslid_tussenvoegsel,
'',
'',
'',
v_perslid_oslogin,
v_perslid_email,
'',
'', -- LOGI#31662, was: v_afdeling_naam,
'',
'',
v_locatie_omschrijving,
'',
SYSDATE);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'personeelsnummer:' || v_perslid_nr);
COMMIT;
END;
END IF;
COMMIT;
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
END;
/
CREATE OR REPLACE PROCEDURE logi_update_persoon (p_import_key IN NUMBER)
AS
-- Constanten (LET OP: deze waarden moeten letterlijk in de DB aabwezig zijn!)
c_usrtab_key INTEGER := 1; -- Tbv LOCATIE
c_srtgebouw_default INTEGER := 1;
c_srtruimte_default INTEGER := 1;
c_afdeling_key NUMBER := 6761; -- LOGI#31662
-- Constanten (overig)
c_prs_werkplek_omschrijving VARCHAR2 (16) := 'Onbekend';
c_srtperslid_omschr_default VARCHAR2 (16) := 'Onbekend';
c_werkplek_volgnr_default INTEGER := 1;
c_verdieping_omschr_default VARCHAR2 (16) := 'BG';
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
c_ruimte_code VARCHAR2 (3) := '000';
c_commitbuffer NUMBER := 1000;
c_perslid_aanmaak DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_perslid_verwijder DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_perslid_ingangsdatum DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_no_key_found NUMBER := 0;
--c_afdeling_niveau_persoon NUMBER(1) := 3; -- Afdelingsniveau waaraan personen gekoppeld worden
-- Prefix voor persoonnaam om aan te geven dat de persoon op de nominatie staat om verwijderd te
-- worden maar dat verwijderen nog niet mogelijk is omdat de persoon verplichtingen heeft.
c_inactief VARCHAR2(16) := 'INACTIEF:';
-- om de zoveel committen
v_buffercount NUMBER := 0;
CURSOR c_prs_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr
FROM PRS_PERSLID p, (select prs_perslid_nr
from logi_imp_persoon
where prs_perslid_nr is not null) lp
WHERE 1=1
AND p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = lp.prs_perslid_nr(+)
AND lp.prs_perslid_nr is null
ORDER BY 2, 1;
CURSOR c_prs_upd
IS
SELECT p.prs_perslid_key
, lp.prs_locatie_omschrijving
--, lp.prs_afdeling_naam
, lp.prs_perslid_naam
, lp.prs_perslid_tussenvoegsel
, lp.prs_perslid_voorletters
, lp.prs_perslid_voornaam
, lp.prs_perslid_telefoonnr
, lp.prs_perslid_mobiel
, lp.prs_perslid_oslogin
, lp.prs_perslid_email
, coalesce(lp.prs_srtperslid_omschrijving, c_srtperslid_omschr_default) prs_srtperslid_omschrijving
, lp.prs_perslid_nr
, '' prs_perslid_titel
, p.prs_perslid_verwijder
FROM logi_imp_persoon lp, prs_perslid p
WHERE 1=1
AND lp.prs_perslid_nr = p.prs_perslid_nr(+)
-- Dit moet analoog aan UWVA#13061: verwijderde personen moeten kunnen worden gereactiveerd.
-- AND p.prs_perslid_verwijder IS NULL
ORDER BY lp.prs_perslid_nr, p.prs_perslid_key DESC;
v_perslid_key NUMBER (10);
v_prs_key_cnt NUMBER (10);
v_srtperslid_key NUMBER (10);
--v_afdeling_key NUMBER (10);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_werkplek_key NUMBER (10);
v_gebouw_code VARCHAR2 (10);
v_srtperslid_omschr VARCHAR (30);
rec_prs_del c_prs_del%ROWTYPE;
rec_prs_upd c_prs_upd%ROWTYPE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1024);
v_errorhint VARCHAR2 (1024);
v_debug VARCHAR2 (1024);
v_count NUMBER (10);
v_update BOOLEAN;
v_aktie VARCHAR (10);
v_perslid_count_imp NUMBER;
v_perslid_count_fclt NUMBER;
v_perslid_newcount_fclt NUMBER;
currentversion fac_module.fac_module_version%TYPE;
l_validatie NUMBER;
v_srtimport VARCHAR2 (10);
l_nrkps NUMBER;
v_nr_werkplek NUMBER;
v_current_locatie_key NUMBER;
v_new_locatie_key NUMBER;
BEGIN
-- Constanten:
select TO_DATE('01011980','ddmmyy'),TO_DATE('01011980','ddmmyy'),TO_DATE('01011980','ddmmyy')
into c_perslid_aanmaak, c_perslid_verwijder, c_perslid_ingangsdatum
from dual;
-- verwijder werkplekrelaties met een verwijderdatum. Anders krijgen we straks last van een contraint op perslidwerkplek.
--delete prs_perslidwerkplek where prs_perslidwerkplek_verwijder is not null;
-- Delete
v_errorhint := 'Eventueel te verwijderen personen worden verwijderd ';
FOR rec_prs_del IN c_prs_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec_prs_del.prs_perslid_key);
END;
END LOOP;
COMMIT;
-- Update
v_errormsg := 'Persoonsgegevens worden nu angepast (toevoegen/wijzigen) ';
FOR rec_prs_upd IN c_prs_upd
LOOP
BEGIN
-- Init
v_update := TRUE; -- Nog geen fouten gevonden
--v_afdeling_key := c_no_key_found;
v_srtperslid_key := c_no_key_found;
v_perslid_key := c_no_key_found;
v_errormsg := '';
IF rec_prs_upd.prs_perslid_key IS NULL
THEN
v_aktie := 'INSERT';
v_errorhint := 'Persoonsgegevens kunnen niet toegevoegd worden';
ELSE
v_aktie := 'UPDATE';
v_errorhint := 'Persoonsgegevens kunnen niet gewijzigd worden';
END IF;
-- *** Controle verplichte gegevens + ophalen extra informatie ***
-- Controle: PRS_PERSLID_NR
IF rec_prs_upd.prs_perslid_nr IS NULL
THEN
v_errormsg := 'Persoon met achternaam ['||rec_prs_upd.prs_perslid_naam||' heeft geen personeelsnummer ';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
commit; -- logging
v_update := FALSE;
END IF;
-- Controle: PRS_PERSLID_NAAM
IF v_update AND rec_prs_upd.prs_perslid_naam IS NULL
THEN
v_errormsg := 'Persoon met personeelsnummer [' || rec_prs_upd.prs_perslid_nr||'] heeft geen achternaam';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
v_update := FALSE;
END IF;
-- Controle: Kan persoon gereactieveerd worden of is er al een persoon met dezelfde prs_perslid_nr actief
IF v_update AND rec_prs_upd.prs_perslid_verwijder IS NOT NULL
THEN
BEGIN
-- Is er al een actieve persoon met dezelfde perslid_nr
SELECT COUNT(p.prs_perslid_key)
INTO v_prs_key_cnt
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr LIKE rec_prs_upd.prs_perslid_nr
AND p.prs_perslid_key != rec_prs_upd.prs_perslid_key;
IF v_prs_key_cnt > 0
THEN
-- (UWVA#13270)
-- Waarde(n) gevonden: Er is al een actieve persoon met dezelfde prs_perslid_nr gevonden: Niet updaten!!!
--v_errormsg := 'Persoon hoeft niet gereactiveerd te worden; prs_perslid_nr: ' || rec_prs_upd.prs_perslid_nr;
--v_errorhint := 'Er bestaat al een persoon met dezelfde persooneelsnummer die actief is, GEEN ACTIE NODIG; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr;
--fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
v_update := FALSE;
ELSE
-- Kennelijk is er geen persoon gevonden met dezelfde prs_perslid_nr
-- persoon kan gereactieveerd worden (prs_perslid_verwijder op NULL zetten)
-- v_update := TRUE;
v_errormsg := 'Persoon reactiveren; prs_perslid_nr: ' || rec_prs_upd.prs_perslid_nr;
v_errorhint := 'ACTIE wordt ondernomen; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr;
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_update := FALSE;
v_errorhint := 'Fout in het vinden aantal actieve personen; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr || '?!';
END;
END IF;
-- Controle: PRS_SRTPERSLID_OMSCHRIJVING
IF v_update
THEN
v_srtperslid_omschr := RTRIM (INITCAP (rec_prs_upd.prs_srtperslid_omschrijving));
BEGIN
-- Bepaal de key van de functie
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_upper = UPPER (v_srtperslid_omschr) AND prs_srtperslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg := 'prs_srtperslid ' || v_srtperslid_omschr || ' bestaat niet';
-- Functie bestaat kennelijk niet, maak 'm maar aan
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (v_srtperslid_omschr
);
-- Wat is de key van deze nieuwe geworden?
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_omschrijving = v_srtperslid_omschr AND prs_srtperslid_verwijder IS NULL;
WHEN OTHERS
THEN
v_errorhint :=
'Functie '
|| v_srtperslid_omschr
|| ' kan niet bepaald worden; persoonnr: '
|| rec_prs_upd.prs_perslid_nr;
v_update := FALSE;
END;
END IF;
-- *** Daadwerkelijk insert/update prs_perslid ***
IF v_update
THEN
BEGIN
IF v_aktie = 'INSERT'
THEN
v_errormsg := 'Persoon kan niet worden toegevoegd';
INSERT INTO prs_perslid
(prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_module,
prs_perslid_voorletters, prs_perslid_voornaam,
prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_oslogin, prs_perslid_email, prs_perslid_nr,
prs_perslid_titel, prs_srtperslid_key, prs_afdeling_key, prs_perslid_aanmaak
)
VALUES (rec_prs_upd.prs_perslid_naam, rec_prs_upd.prs_perslid_tussenvoegsel, 'PRS',
rec_prs_upd.prs_perslid_voorletters, rec_prs_upd.prs_perslid_voornaam,
rec_prs_upd.prs_perslid_telefoonnr, rec_prs_upd.prs_perslid_mobiel, rec_prs_upd.prs_perslid_oslogin, rec_prs_upd.prs_perslid_email, rec_prs_upd.prs_perslid_nr,
rec_prs_upd.prs_perslid_titel, v_srtperslid_key, c_afdeling_key, c_perslid_aanmaak
);
fac.imp_writelog (p_import_key,
'C',
'Nieuw persoon toegevoegd',
'Naam/persoonsnr: '
|| rec_prs_upd.prs_perslid_naam
|| '/'
|| rec_prs_upd.prs_perslid_nr
);
commit;
ELSE
v_errormsg := 'Persoon kan niet worden gewijzigd';
UPDATE prs_perslid
SET prs_perslid_naam = rec_prs_upd.prs_perslid_naam,
prs_perslid_tussenvoegsel = rec_prs_upd.prs_perslid_tussenvoegsel,
prs_perslid_voorletters = rec_prs_upd.prs_perslid_voorletters,
prs_perslid_voornaam = NVL (rec_prs_upd.prs_perslid_voornaam, prs_perslid_voornaam),
prs_perslid_telefoonnr = NVL (rec_prs_upd.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
prs_perslid_titel = rec_prs_upd.prs_perslid_titel,
prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = c_afdeling_key,
prs_perslid_verwijder = NULL,
prs_perslid_oslogin = rec_prs_upd.prs_perslid_oslogin,
prs_perslid_email = rec_prs_upd.prs_perslid_email
WHERE prs_perslid_nr = rec_prs_upd.prs_perslid_nr
AND prs_perslid_key = rec_prs_upd.prs_perslid_key
AND ( prs_perslid_naam <> rec_prs_upd.prs_perslid_naam
OR NVL (prs_perslid_tussenvoegsel, '-') <> NVL (rec_prs_upd.prs_perslid_tussenvoegsel, '-')
OR prs_perslid_voorletters <> rec_prs_upd.prs_perslid_voorletters
OR NVL (prs_perslid_voornaam, '-') <> NVL (rec_prs_upd.prs_perslid_voornaam, '-')
OR NVL (prs_perslid_telefoonnr, '-') <> NVL (rec_prs_upd.prs_perslid_telefoonnr, '-')
OR prs_perslid_titel <> rec_prs_upd.prs_perslid_titel
OR prs_srtperslid_key <> v_srtperslid_key
OR prs_afdeling_key <> c_afdeling_key
OR prs_perslid_oslogin <> rec_prs_upd.prs_perslid_oslogin
OR prs_perslid_email <> rec_prs_upd.prs_perslid_email
OR rec_prs_upd.prs_perslid_verwijder IS NOT NULL
);
commit;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
--v_errorhint := 'perslid_nr:' || rec_prs_upd.prs_perslid_nr || ' afdeling:' || rec_prs_upd.prs_afdeling_naam || ' {' || v_errormsg || '}';
v_errorhint := 'perslid_nr:' || rec_prs_upd.prs_perslid_nr || ' {' || v_errormsg || '}';
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_update := FALSE;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END IF;
-- *** Werkplek ***
v_errorhint := 'Kan geen werkplek toevoegen';
IF v_update AND (v_aktie = 'UPDATE')
THEN
-- bepaal aantal werkplekken
BEGIN
SELECT COUNT(*)
INTO v_nr_werkplek
FROM prs_perslidwerkplek
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
IF v_update AND v_nr_werkplek = 1
THEN
BEGIN
-- bepaal huidige alg_locatie_key
SELECT alg_locatie_key
INTO v_current_locatie_key
FROM prs_v_werkplekperslid_gegevens
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
-- bepaal nieuwe alg_locatie_key
SELECT lo.alg_locatie_key
INTO v_new_locatie_key
FROM fac_usrdata ud,
alg_locatie lo
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_code = lo.alg_locatie_code
AND ud.fac_usrdata_omschr = rec_prs_upd.prs_locatie_omschrijving
AND lo.alg_locatie_verwijder IS NULL;
-- indien gelijk dan werkplek niet updaten.
v_update := (v_current_locatie_key <> v_new_locatie_key);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'huidige of nieuwe alg_locatie_key kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
END IF;
END IF;
IF v_update AND (rec_prs_upd.prs_locatie_omschrijving IS NOT NULL)
AND ((v_aktie = 'INSERT') OR (v_aktie = 'UPDATE') AND (v_nr_werkplek<=1))
THEN
IF v_aktie = 'INSERT'
THEN
v_errormsg := 'Fout bij toewijzen werkplek bij zojuist toegevoegde persoon ';
ELSE -- v_aktie = 'UPDATE'
v_errormsg := 'Fout bij het wijzigen van de werkplek';
END IF;
BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE prs_perslid_nr = rec_prs_upd.prs_perslid_nr AND prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN TOO_MANY_ROWS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'Het personeelsnummer is niet uniek: ' || rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'De persoon kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
BEGIN
SELECT lo.alg_locatie_key
INTO v_locatie_key
FROM FAC_USRDATA ud, ALG_LOCATIE lo
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_code = lo.alg_locatie_code
AND ud.fac_usrdata_omschr = rec_prs_upd.prs_locatie_omschrijving
AND lo.alg_locatie_verwijder IS NULL;
EXCEPTION
WHEN OTHERS
THEN
v_update := FALSE;
END;
IF NOT v_update
THEN
v_errorhint :=
'Onbekende Locatie-omschrijving '
|| rec_prs_upd.prs_locatie_omschrijving
|| '; personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr;
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
ELSE
BEGIN
SELECT MIN (alg_gebouw_code)
INTO v_gebouw_code
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key AND alg_gebouw_verwijder IS NULL;
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_code = v_gebouw_code
AND alg_gebouw_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_gebouw
(alg_locatie_key, alg_srtgebouw_key, alg_gebouw_code, alg_gebouw_naam
)
VALUES (v_locatie_key, c_srtgebouw_default, '0', 'Onbekend'
);
v_errormsg := 'Bepalen alg_gebouw_key adhv v_locatie_key=['||to_char(v_locatie_key)||'] en v_gebouw_code=['||v_gebouw_code||']';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_code = v_gebouw_code
AND alg_gebouw_verwijder IS NULL;
END;
BEGIN
v_errormsg := 'Bepalen alg_verdieping_key';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_volgnr = 0; -- Begane grond!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint :=
'Persoon met persoonnummer ' || rec_prs_upd.prs_perslid_nr || ': toevoegen verdieping Onbekend';
INSERT INTO alg_verdieping
(alg_gebouw_key, alg_verdieping_omschrijving, alg_verdieping_volgnr,
alg_verdieping_code
)
VALUES (v_gebouw_key, c_verdieping_omschr_default, 0,
'0'
);
-- Alsnog bepalen v_verdieping_key
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_volgnr = 0; -- Begane grond!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte
(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving
)
VALUES (v_verdieping_key, c_srtruimte_default, c_ruimte_code, c_ruimte_omschr_default
);
-- Alsnog bepalen v_ruimte_key
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen werkplek (werkplek zou bekend moeten zijn)';
SELECT prs_werkplek_key
INTO v_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = v_ruimte_key
AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
-- Altijd werkplek met deze notatie!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_werkplek
(prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key,
prs_werkplek_virtueel
)
VALUES (c_werkplek_volgnr_default, c_prs_werkplek_omschrijving, v_ruimte_key,
1
);
-- Alsnog bepalen v_werkplek_key
SELECT prs_werkplek_key
INTO v_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = v_ruimte_key
AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
-- Altijd werkplek met deze notatie!
END;
IF v_aktie = 'INSERT' OR (v_nr_werkplek = 0 AND v_aktie = 'UPDATE')
THEN
INSERT INTO prs_perslidwerkplek
(prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_werkplek_key, 0
);
ELSE -- v_aktie = 'UPDATE' AND v_nr_werkplek = 1
UPDATE prs_perslidwerkplek
SET prs_werkplek_key = v_werkplek_key
WHERE prs_perslid_key = v_perslid_key;
END IF;
END IF;
END IF;
v_buffercount := v_buffercount + 1;
IF v_buffercount >= c_commitbuffer
THEN
COMMIT;
v_buffercount := 0;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := 'perslid_nr:' || rec_prs_upd.prs_perslid_nr || ' locatie:' || rec_prs_upd.prs_locatie_omschrijving || ' ' || v_errorhint || ' {' || v_errormsg || '}';
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END LOOP;
SELECT COUNT (*)
INTO v_perslid_newcount_fclt
FROM prs_perslid
WHERE prs_perslid_nr IS NOT NULL AND prs_perslid_verwijder IS NULL;
fac.imp_writelog (p_import_key,
'S',
'Aantal actieve personen (met personeelsnr) vooraf: '
|| TO_CHAR (v_perslid_count_fclt)
|| ' nu: '
|| TO_CHAR (v_perslid_newcount_fclt),
''
);
SELECT COUNT (*)
INTO v_perslid_newcount_fclt -- misbruik
FROM prs_perslid
WHERE prs_perslid_nr IS NULL AND prs_perslid_verwijder IS NULL;
fac.imp_writelog (p_import_key,
'S',
'Aantal actieve personen zonder personeelsnr: ' || TO_CHAR (v_perslid_newcount_fclt),
''
);
-- plaats medewerkers die nog niet in de default groep zitten in de default groep.
INSERT INTO fac_gebruikersgroep
(fac_groep_key, prs_perslid_key)
(SELECT 1, prs_perslid_key
FROM prs_perslid p
WHERE prs_perslid_oslogin IS NOT NULL
AND prs_perslid_verwijder IS NULL
AND NOT EXISTS (
SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE fac_groep_key = 1
AND p.prs_perslid_key = gg.prs_perslid_key));
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
/
*/
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_werkplek_persoon (p_import_key IN NUMBER)
AS
-- Constanten (LET OP: deze waarden moeten letterlijk in de DB aabwezig zijn!)
c_srtgebouw_default INTEGER := 1;
c_srtruimte_default INTEGER := 1;
c_afdeling_key NUMBER := 6761; -- LOGI#31662
-- Constanten (overig)
c_prs_werkplek_omschrijving VARCHAR2 (16) := 'Onbekend';
c_srtperslid_omschr_default VARCHAR2 (16) := 'Onbekend';
c_werkplek_volgnr_default INTEGER := 1;
c_verdieping_omschr_default VARCHAR2 (16) := 'BG';
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
c_ruimte_code VARCHAR2 (3) := '000';
c_usrtab_key INTEGER := 1; -- Tbv LOCATIE
--- dan de werkplekken aanvullen
CURSOR c_prs_upd IS
SELECT p.prs_perslid_key,
lp.prs_kenmerk1
prs_locatie_omschrijving,
lp.prs_perslid_naam,
lp.prs_perslid_tussenvoegsel,
lp.prs_perslid_voorletters,
lp.prs_perslid_voornaam,
lp.prs_perslid_telefoonnr,
lp.prs_perslid_mobiel,
lp.prs_perslid_oslogin,
lp.prs_perslid_email,
COALESCE (lp.prs_srtperslid_omschrijving,
c_srtperslid_omschr_default)
prs_srtperslid_omschrijving,
lp.prs_perslid_nr,
''
prs_perslid_titel,
p.prs_perslid_verwijder
FROM fac_imp_perslid lp, prs_perslid p
WHERE 1 = 1 AND lp.prs_perslid_email = p.prs_perslid_email
ORDER BY lp.prs_perslid_nr, p.prs_perslid_key DESC;
v_perslid_key NUMBER (10);
v_srtperslid_key NUMBER (10);
--v_afdeling_key NUMBER (10);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_werkplek_key NUMBER (10);
v_gebouw_code VARCHAR2 (10);
v_srtperslid_omschr VARCHAR (30);
rec_prs_upd c_prs_upd%ROWTYPE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1024);
v_errorhint VARCHAR2 (1024);
v_debug VARCHAR2 (1024);
v_count NUMBER (10);
v_update BOOLEAN;
v_aktie VARCHAR (10);
v_perslid_count_imp NUMBER;
v_perslid_count_fclt NUMBER;
v_perslid_newcount_fclt NUMBER;
currentversion fac_module.fac_module_version%TYPE;
l_validatie NUMBER;
v_srtimport VARCHAR2 (10);
l_nrkps NUMBER;
v_nr_werkplek NUMBER;
v_current_locatie_key NUMBER;
v_new_locatie_key NUMBER;
BEGIN
FOR rec_prs_upd IN c_prs_upd
LOOP
-- bepaal aantal werkplekken
BEGIN
SELECT COUNT (*)
INTO v_nr_werkplek
FROM prs_perslidwerkplek
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'I',
v_errormsg,
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr);
v_update := FALSE;
END;
IF v_nr_werkplek = 1
THEN
BEGIN
-- bepaal huidige alg_locatie_key
SELECT alg_locatie_key
INTO v_current_locatie_key
FROM prs_v_werkplekperslid_gegevens
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
-- bepaal nieuwe alg_locatie_key
SELECT lo.alg_locatie_key
INTO v_new_locatie_key
FROM fac_usrdata ud, alg_locatie lo
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_code = lo.alg_locatie_code
AND ud.fac_usrdata_omschr =
rec_prs_upd.prs_locatie_omschrijving
AND lo.alg_locatie_verwijder IS NULL;
-- indien gelijk dan werkplek niet updaten.
v_update := (v_current_locatie_key <> v_new_locatie_key);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'I',
v_errormsg,
'huidige of nieuwe alg_locatie_key kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr);
v_update := FALSE;
END;
END IF;
-- Er is geen werkplek bekend in Facilitor of de werkplek uit de import wijkt af van de werkplek in Facilitor dan gaan we bijwerken
-- Als er meer dan 1 werkplek is, dan laten we het zoals het is
IF v_update AND v_nr_werkplek <= 1
THEN
v_errormsg :=
'Fout bij toewijzen werkplek bij zojuist toegevoegde persoon ';
BEGIN
SELECT lo.alg_locatie_key
INTO v_locatie_key
FROM FAC_USRDATA ud, ALG_LOCATIE lo
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_code = lo.alg_locatie_code
AND ud.fac_usrdata_omschr =
rec_prs_upd.prs_locatie_omschrijving
AND lo.alg_locatie_verwijder IS NULL;
EXCEPTION
WHEN OTHERS
THEN
v_update := FALSE;
END;
IF NOT v_update
THEN
v_errorhint :=
'Onbekende Locatie-omschrijving '
|| rec_prs_upd.prs_locatie_omschrijving
|| '; personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr;
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
v_errorhint);
ELSE
BEGIN
SELECT MIN (alg_gebouw_code)
INTO v_gebouw_code
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_verwijder IS NULL;
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_code = v_gebouw_code
AND alg_gebouw_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_gebouw (alg_locatie_key,
alg_srtgebouw_key,
alg_gebouw_code,
alg_gebouw_naam)
VALUES (v_locatie_key,
c_srtgebouw_default,
'0',
'Onbekend');
v_errormsg :=
'Bepalen alg_gebouw_key adhv v_locatie_key=['
|| TO_CHAR (v_locatie_key)
|| '] en v_gebouw_code=['
|| v_gebouw_code
|| ']';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_code = v_gebouw_code
AND alg_gebouw_verwijder IS NULL;
END;
BEGIN
v_errormsg := 'Bepalen alg_verdieping_key';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_code = '0'; -- Begane grond! Niet via volgnummer!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': toevoegen verdieping Onbekend';
INSERT INTO alg_verdieping (
alg_gebouw_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code)
VALUES (v_gebouw_key,
c_verdieping_omschr_default,
0,
'0');
-- Alsnog bepalen v_verdieping_key
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_code = '0'; -- Begane grond!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte (alg_verdieping_key,
alg_srtruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving)
VALUES (v_verdieping_key,
c_srtruimte_default,
c_ruimte_code,
c_ruimte_omschr_default);
-- Alsnog bepalen v_ruimte_key
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen werkplek (werkplek zou bekend moeten zijn)';
SELECT prs_werkplek_key
INTO v_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = v_ruimte_key
AND prs_werkplek_volgnr =
c_werkplek_volgnr_default;
-- Altijd werkplek met deze notatie!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_werkplek (prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_alg_ruimte_key,
prs_werkplek_virtueel)
VALUES (c_werkplek_volgnr_default,
c_prs_werkplek_omschrijving,
v_ruimte_key,
1);
-- Alsnog bepalen v_werkplek_key
SELECT prs_werkplek_key
INTO v_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = v_ruimte_key
AND prs_werkplek_volgnr =
c_werkplek_volgnr_default;
-- Altijd werkplek met deze notatie!
END;
IF v_nr_werkplek = 0
THEN
INSERT INTO prs_perslidwerkplek (
prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting)
VALUES (v_perslid_key, v_werkplek_key, 0);
ELSE -- v_aktie = 'UPDATE' AND v_nr_werkplek = 1
UPDATE prs_perslidwerkplek
SET prs_werkplek_key = v_werkplek_key
WHERE prs_perslid_key = v_perslid_key;
END IF;
END IF;
END IF;
END LOOP;
END;
/
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;
-- 'Email' betekent dat op basis van Email wordt gematched.
prs.update_perslid (p_import_key, 'EMAIL', NULL);
-- Dan worden de werkplekken beoordeeld, evt aangemaakt en bijgewerkt
logi_werkplek_persoon (p_import_key);
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE logi_import_organisatie (p_import_key IN NUMBER)
AS
c_max_import_str_len NUMBER(10) := 1000;
CURSOR c_cursor IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
next_record c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (1000);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De importvelden
v_afdeling_naam VARCHAR2 (1000);
v_afdeling_omschrijving VARCHAR2 (1000);
v_afdeling_naam2 VARCHAR2 (1000);
v_afdeling_omschrijving2 VARCHAR2 (1000);
v_afdeling_naam3 VARCHAR2 (1000);
v_afdeling_omschrijving3 VARCHAR2 (1000);
header_found BOOLEAN;
v_controle VARCHAR2(30);
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
v_errormsg := '';
v_controle := 'OK'; -- Hier kan een controle ingebouwd worden ...
IF (v_controle IS NULL) THEN
v_errormsg := 'Ongeldig importbestand';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
ELSE
-- Clear my previous imported rows
DELETE FROM logi_imp_organisatie;
commit;
FOR next_record IN c_cursor LOOP
BEGIN
v_newline := SUBSTR(next_record.FAC_IMP_FILE_LINE,1,c_max_import_str_len);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_omschrijving2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam3);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_omschrijving3);
-- Skip until the header is found
header_found := TRUE; -- Geen Header check
IF ( 1=2
)
THEN
header_found := TRUE;
ELSIF (header_found)
THEN
BEGIN
v_errormsg := 'Kan organisatiegegevens niet inlezen ';
v_afdeling_naam := SUBSTR(TRIM(coalesce(v_afdeling_naam,'')),1,10);
v_afdeling_omschrijving := SUBSTR(TRIM(coalesce(v_afdeling_omschrijving,'')),1,60);
v_afdeling_naam2 := SUBSTR(TRIM(coalesce(v_afdeling_naam2,'')),1,10);
v_afdeling_omschrijving2 := SUBSTR(TRIM(coalesce(v_afdeling_omschrijving2,'')),1,60);
v_afdeling_naam3 := SUBSTR(TRIM(coalesce(v_afdeling_naam3,'')),1,10);
v_afdeling_omschrijving3 := SUBSTR(TRIM(coalesce(v_afdeling_omschrijving3,'')),1,60);
INSERT INTO logi_imp_organisatie
(prs_afdeling_naam
,prs_afdeling_omschrijving
,prs_afdeling_naam2
,prs_afdeling_omschrijving2
,prs_afdeling_naam3
,prs_afdeling_omschrijving3
,logi_imp_organisatie_aanmaak
)
VALUES(v_afdeling_naam
,v_afdeling_omschrijving
,v_afdeling_naam2
,v_afdeling_omschrijving2
,v_afdeling_naam3
,v_afdeling_omschrijving3
,SYSDATE
);
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
commit; -- logging
END;
END IF;
COMMIT;
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
END;
/
CREATE OR REPLACE PROCEDURE logi_update_organisatie (p_import_key IN NUMBER)
AS
c_bedrijf_key NUMBER(10) := 2;
c_fielddelimitor VARCHAR2(1) := ';';
CURSOR c_afd1 IS
SELECT prs_afdeling_naam, prs_afdeling_omschrijving, '['||prs_afdeling_naam||'|'||prs_afdeling_omschrijving||']' imp_row
FROM logi_imp_organisatie
WHERE 1=1
GROUP BY prs_afdeling_naam, prs_afdeling_omschrijving;
next_afd1 c_afd1%ROWTYPE;
CURSOR c_afd1_del IS
SELECT a.prs_afdeling_key, a.prs_afdeling_naam, a.niveau
FROM prs_v_afdeling_fullnames a
WHERE a.niveau = 1
AND NOT EXISTS (
SELECT 'dummy'
FROM LOGI_IMP_ORGANISATIE o
WHERE o.prs_afdeling_naam = a.prs_afdeling_naam);
next_afd1_del c_afd1_del%ROWTYPE;
CURSOR c_afd2 IS
SELECT prs_afdeling_naam, prs_afdeling_naam2, prs_afdeling_omschrijving2,
'['||prs_afdeling_naam||'|'||prs_afdeling_naam2||'|'||prs_afdeling_omschrijving2||']' imp_row
FROM logi_imp_organisatie
WHERE 1=1
GROUP BY prs_afdeling_naam, prs_afdeling_naam2, prs_afdeling_omschrijving2;
CURSOR c_afd2_del IS
SELECT a.prs_afdeling_key, a.prs_afdeling_naam, a.niveau
FROM prs_v_afdeling_fullnames a
WHERE a.niveau = 2
AND NOT EXISTS (
SELECT 'dummy'
FROM LOGI_IMP_ORGANISATIE o
WHERE o.prs_afdeling_naam2 = a.prs_afdeling_naam3);
next_afd2_del c_afd2_del%ROWTYPE;
CURSOR c_afd3 IS
SELECT prs_afdeling_naam, prs_afdeling_naam2, prs_afdeling_naam3, prs_afdeling_omschrijving3,
'['||prs_afdeling_naam||'|'||prs_afdeling_naam2||'|'||prs_afdeling_naam3||'|'||prs_afdeling_omschrijving3||']' imp_row
FROM logi_imp_organisatie
WHERE 1=1
GROUP BY prs_afdeling_naam, prs_afdeling_naam2, prs_afdeling_naam3, prs_afdeling_omschrijving3;
CURSOR c_afd3_del IS
SELECT a.prs_afdeling_key, a.prs_afdeling_naam, a.niveau
FROM prs_v_afdeling_fullnames a
WHERE a.niveau = 3
AND NOT EXISTS (
SELECT 'dummy'
FROM LOGI_IMP_ORGANISATIE o
WHERE o.prs_afdeling_naam3 = a.prs_afdeling_naam3);
next_afd3_del c_afd3_del%ROWTYPE;
next_afd2_del c_afd2_del%ROWTYPE;
next_afd1_del c_afd1_del%ROWTYPE;
next_afd1 c_afd1%ROWTYPE;
next_afd2 c_afd2%ROWTYPE;
next_afd3 c_afd3%ROWTYPE;
v_errormsg VARCHAR (1000);
v_errorhint VARCHAR (200);
v_imp VARCHAR(1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- Overige variabelen
v_afdeling_key NUMBER(10);
v_afdeling_parentkey NUMBER(10);
v_afdeling_parentkey2 NUMBER(10);
v_imp_row VARCHAR2(1000);
FUNCTION afdeling_delete (p_afdeling_key IN NUMBER, p_afdeling_naam IN VARCHAR2, p_niveau IN NUMBER) RETURN BOOLEAN IS
c_inactief VARCHAR2(16) := 'INACTIEF:';
BEGIN
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_key = p_afdeling_key
AND prs_afdeling_verwijder IS NULL;
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'E',
'Afdeling kan niet inactief worden gemaakt (heeft nog personen)',
'Niveau=['||to_char(p_niveau)||'] Afdelingnaam=['||p_afdeling_naam||']'||' Afdelingskey=[' || p_afdeling_key || ']'
);
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = SUBSTR (c_inactief || prs_afdeling_omschrijving, 1, 60)
WHERE prs_afdeling_key = p_afdeling_key
AND prs_afdeling_omschrijving NOT LIKE c_inactief ||'%'
AND prs_afdeling_verwijder IS NULL;
RETURN FALSE;
END;
BEGIN
-- Uiteraard verwijderen vaan hoog naar laag afdelingsniveau ivm referenties
FOR next_afd3_del IN c_afd3_del LOOP
BEGIN
IF afdeling_delete(next_afd3_del.prs_afdeling_key, next_afd3_del.prs_afdeling_naam, next_afd3_del.niveau) THEN
commit; -- update
ELSE
commit; -- logging
END IF;
END;
END LOOP;
--
FOR next_afd2_del IN c_afd2_del LOOP
BEGIN
IF afdeling_delete(next_afd2_del.prs_afdeling_key, next_afd2_del.prs_afdeling_naam, next_afd2_del.niveau) THEN
commit; -- update
ELSE
commit; -- logging
END IF;
END;
END LOOP;
--
FOR next_afd1_del IN c_afd1_del LOOP
BEGIN
IF afdeling_delete(next_afd1_del.prs_afdeling_key, next_afd1_del.prs_afdeling_naam, next_afd1_del.niveau) THEN
commit; -- update
ELSE
commit; -- logging
END IF;
END;
END LOOP;
COMMIT;
-- Hoogste afdelingsniveau (direct onder bedrijf)
FOR next_afd1 IN c_afd1 LOOP
BEGIN
v_errorhint := 'Volgende afdeling op niveau1';
v_imp_row := next_afd1.imp_row;
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_afdeling_key
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd1.prs_afdeling_naam)
AND prs_afdeling_verwijder is null
AND prs_bedrijf_key = c_bedrijf_key;
IF (v_afdeling_key = -1) THEN
v_errorhint := 'Fout bij toevoegen afdeling op niveau 1';
insert into PRS_AFDELING
(prs_afdeling_naam
,prs_afdeling_omschrijving
,prs_bedrijf_key
,prs_afdeling_parentkey
,prs_kostenplaats_key
)
values
(next_afd1.prs_afdeling_naam
,next_afd1.prs_afdeling_omschrijving
,c_bedrijf_key
,TO_NUMBER(NULL)
,TO_NUMBER(NULL)
);
ELSE
v_errorhint := 'Fout bij wijzigen afdeling op niveau 1';
update PRS_AFDELING
set prs_afdeling_omschrijving = next_afd1.prs_afdeling_omschrijving
where prs_afdeling_key = v_afdeling_key;
END IF;
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint||v_imp_row);
commit; -- logging
END;
END LOOP;
-- Tweede afdelingsniveau
FOR next_afd2 IN c_afd2 LOOP
BEGIN
v_errorhint := 'Volgende afdeling op niveau2';
v_imp_row := next_afd2.imp_row;
SELECT prs_afdeling_key
INTO v_afdeling_parentkey
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd2.prs_afdeling_naam)
AND prs_afdeling_verwijder is null
AND prs_bedrijf_key = c_bedrijf_key;
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_afdeling_key
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd2.prs_afdeling_naam2)
AND prs_afdeling_verwijder is null
AND prs_afdeling_parentkey = v_afdeling_parentkey;
IF (v_afdeling_key = -1) THEN
v_errorhint := 'Fout bij toevoegen afdeling op niveau 2';
insert into PRS_AFDELING
(prs_afdeling_naam
,prs_afdeling_omschrijving
,prs_bedrijf_key
,prs_afdeling_parentkey
,prs_kostenplaats_key
)
values
(next_afd2.prs_afdeling_naam2
,next_afd2.prs_afdeling_omschrijving2
,TO_NUMBER(NULL)
,v_afdeling_parentkey
,TO_NUMBER(NULL)
);
ELSE
v_errorhint := 'Fout bij wijzigen afdeling op niveau 2';
update PRS_AFDELING
set prs_afdeling_omschrijving = next_afd2.prs_afdeling_omschrijving2
where prs_afdeling_key = v_afdeling_key;
END IF;
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint||v_imp_row);
commit; -- logging
END;
END LOOP;
-- Derde afdelingsniveau
FOR next_afd3 IN c_afd3 LOOP
BEGIN
v_errorhint := 'Volgende afdeling op niveau3';
v_imp_row := next_afd3.imp_row;
v_errorhint := 'Fout bij bepalen afdeling op niveau1';
SELECT prs_afdeling_key
INTO v_afdeling_parentkey
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd3.prs_afdeling_naam)
AND prs_afdeling_verwijder is null
AND prs_bedrijf_key = c_bedrijf_key;
v_errorhint := 'Fout bij bepalen afdeling op niveau2';
SELECT prs_afdeling_key
INTO v_afdeling_parentkey2
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd3.prs_afdeling_naam2)
AND prs_afdeling_verwijder is null
AND prs_afdeling_parentkey = v_afdeling_parentkey;
v_errorhint := 'Fout bij bepalen afdeling op niveau3';
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_afdeling_key
FROM prs_afdeling
WHERE UPPER(prs_afdeling_upper) = UPPER(next_afd3.prs_afdeling_naam3)
AND prs_afdeling_verwijder is null
AND prs_afdeling_parentkey = v_afdeling_parentkey2;
IF (v_afdeling_key = -1) THEN
v_errorhint := 'Fout bij toevoegen afdeling op niveau 3';
insert into PRS_AFDELING
(prs_afdeling_naam
,prs_afdeling_omschrijving
,prs_bedrijf_key
,prs_afdeling_parentkey
,prs_kostenplaats_key
)
values
(next_afd3.prs_afdeling_naam3
,next_afd3.prs_afdeling_omschrijving3
,TO_NUMBER(NULL)
,v_afdeling_parentkey2
,1
);
ELSE
v_errorhint := 'Fout bij wijzigen afdeling op niveau 2';
update PRS_AFDELING
set prs_afdeling_omschrijving = next_afd3.prs_afdeling_omschrijving3
where prs_afdeling_key = v_afdeling_key;
END IF;
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint||v_imp_row);
commit; -- logging
END;
END LOOP;
END;
/
-- Dummy export AUTO_STUFF!
CREATE OR REPLACE VIEW logi_v_export_auto_stuff (RESULT, result_order)
AS
SELECT '', 0
FROM DUAL
WHERE 1 = 0
/
/* Formatted on 28-3-2012 17:14:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE logi_select_auto_stuff (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR cresbots -- Botsing tussen WP-RES door dezelfde aanvrager -> delete!
IS
SELECT '[' || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || '] '
aanduiding,
rrr.res_rsv_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key IN (621, 622, 623, 624, 625, 641)
AND EXISTS
(SELECT 1
FROM res_v_aanwezigrsv_ruimte rrr2, res_ruimte_opstelling rro2, res_ruimte rr2
WHERE rrr2.res_ruimte_opstel_key = rro2.res_ruimte_opstel_key
AND rro2.res_ruimte_key = rr2.res_ruimte_key
AND rr2.res_discipline_key IN (621, 622, 623, 624, 625, 641)
AND rrr2.res_rsv_ruimte_key > rrr.res_rsv_ruimte_key
AND rrr2.res_rsv_ruimte_contact_key = rrr.res_rsv_ruimte_contact_key
AND rrr2.res_rsv_ruimte_van < rrr.res_rsv_ruimte_tot
AND rrr2.res_rsv_ruimte_tot > rrr.res_rsv_ruimte_van);
CURSOR creshori -- WP-RES te ver in de toekomst -> delete!
IS
SELECT '[' || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || '] '
aanduiding,
rrr.res_rsv_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key IN (621, 622, 623, 624, 625, 641)
AND TRUNC (rrr.res_rsv_ruimte_van) > TRUNC (SYSDATE) + 15;
CURSOR cresduur -- WP-RES langer dan toegestane duur (1 uur) -> update!
IS
SELECT '[' || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || '] '
aanduiding,
rrr.res_rsv_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key IN (621, 623)
AND (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24 > 1;
CURSOR cart
IS
SELECT '[' || TO_CHAR (ra.res_rsv_ruimte_key) || '/' || TO_CHAR (ra.res_rsv_artikel_key) || '] '
aanduiding,
ra.res_rsv_ruimte_key,
ra.res_rsv_artikel_key,
ra.res_artikel_key
FROM res_rsv_artikel ra
WHERE ra.res_status_bo_key = 2
AND ra.res_rsv_artikel_dirtlevel = 0
AND ra.res_rsv_artikel_verwijder IS NULL
AND TRUNC (ra.res_rsv_artikel_levering + 1) < SYSDATE;
CURSOR cobj
IS
SELECT '[' || TO_CHAR (rd.res_rsv_ruimte_key) || '/' || TO_CHAR (rd.res_rsv_deel_key) || '] '
aanduiding,
rd.res_rsv_ruimte_key,
rd.res_rsv_deel_key
FROM res_rsv_deel rd
WHERE rd.res_status_bo_key = 2
AND rd.res_rsv_ruimte_key IS NOT NULL -- Geen parkeerplaatsen
AND rd.res_rsv_deel_dirtlevel = 0
AND rd.res_rsv_deel_verwijder IS NULL
AND TRUNC (rd.res_rsv_deel_tot + 1) < SYSDATE;
CURSOR cres
IS
SELECT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '] '
aanduiding,
rrr.res_rsv_ruimte_key
FROM res_rsv_ruimte rrr
WHERE rrr.res_status_bo_key = 2
AND rrr.res_ruimte_opstel_key IS NOT NULL -- Geen "roomservice"
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND TRUNC (rrr.res_rsv_ruimte_tot + 1) < SYSDATE;
-- LOGI#42327: Verwijderen bezoekers bij afspraken >6 maanden oud!
CURSOR cafspraak
IS
SELECT a.bez_afspraak_key
FROM bez_afspraak a
WHERE ADD_MONTHS (a.bez_afspraak_datum, 6) < SYSDATE
AND EXISTS (SELECT 1 FROM bez_bezoekers WHERE bez_afspraak_key = a.bez_afspraak_key);
c_nu DATE := SYSDATE;
c_txt_anoniem VARCHAR2 (200) := 'Geanonimiseerd';
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_prijs NUMBER (9, 2);
BEGIN
v_count := 0;
FOR r IN cresbots
LOOP
BEGIN
v_errormsg := 'Fout bij verwijderen reservering';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = r.res_rsv_ruimte_key;
fac.trackaction ('RESDEL',
r.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
COMMIT;
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', r.aanduiding || v_errormsg, 'RES_WP-botsing');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#RES_WP-botsing deletes: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR r IN creshori
LOOP
BEGIN
v_errormsg := 'Fout bij verwijderen reservering';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = r.res_rsv_ruimte_key;
fac.trackaction ('RESDEL',
r.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
COMMIT;
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', r.aanduiding || v_errormsg, 'RES_WP-horizon');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#RES_WP-horizon deletes: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR r IN cresduur
LOOP
BEGIN
v_errormsg := 'Fout bij bijwerken reservering';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_tot = res_rsv_ruimte_van + (1 / 24)
WHERE res_rsv_ruimte_key = r.res_rsv_ruimte_key;
fac.trackaction ('RESUPD',
r.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
COMMIT;
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', r.aanduiding || v_errormsg, 'RES_WP-tottijd');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#RES_WP-tottijd updates: ' || TO_CHAR (v_count), '');
COMMIT;
-- LOGI#23445: Automatisch afmelden reserveringen.
FOR rc IN cart
LOOP
BEGIN
v_errorhint := 'Fout bij bepalen res_rsv_artikel_prijs.';
SELECT res.getartikelprijs (rc.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errorhint := 'Fout bij bijwerken res_rsv_artikel_prijs.';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rc.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rc.res_artikel_key)
WHERE res_rsv_artikel_key = rc.res_rsv_artikel_key;
fac.trackaction ('RESAFM',
rc.res_rsv_ruimte_key,
NULL,
NULL,
'Catering afgemeld');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rc.aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
COMMIT;
FOR rc IN cobj
LOOP
BEGIN
v_errorhint := 'Fout bij bepalen res_rsv_deel_prijs.';
SELECT res.getdeelprijs (rc.res_rsv_deel_key) INTO v_prijs FROM DUAL;
v_errorhint := 'Fout bij bijwerken res_rsv_deel_prijs.';
UPDATE res_rsv_deel
SET res_status_bo_key = 5, res_rsv_deel_prijs = v_prijs
WHERE res_rsv_deel_key = rc.res_rsv_deel_key;
fac.trackaction ('RESAFM',
rc.res_rsv_ruimte_key,
NULL,
NULL,
'Voorziening(en) afgemeld');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rc.aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
COMMIT;
FOR rc IN cres
LOOP
BEGIN
v_errorhint := 'Fout bij bepalen res_rsv_ruimte_prijs.';
SELECT res.getruimteprijs (rc.res_rsv_ruimte_key)
INTO v_prijs
FROM DUAL;
v_errorhint := 'Fout bij bijwerken res_rsv_ruimte_prijs.';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5, res_rsv_ruimte_prijs = v_prijs
WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;
fac.trackaction ('RESAFM',
rc.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rc.aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
COMMIT;
FOR rc IN cafspraak
LOOP
DELETE FROM fac_tracking
WHERE fac_srtnotificatie_key IN (44, 361) -- BEZMAI/BEZUPD
AND fac_tracking_refkey = rc.bez_afspraak_key;
DELETE FROM fac_tracking t
WHERE t.fac_srtnotificatie_key IN (15, 16, 17, 18, 181, 581) -- BEZDON/BEZDO2/BEZOUT/BEZOU2/BEZBAD/BEZUNI
AND EXISTS
(SELECT 1
FROM bez_bezoekers
WHERE bez_afspraak_key = rc.bez_afspraak_key
AND bez_bezoekers_key = t.fac_tracking_refkey);
DELETE FROM bez_bezoekers
WHERE bez_afspraak_key = rc.bez_afspraak_key;
fac.trackaction ('#BEZUPD',
rc.bez_afspraak_key,
NULL,
c_nu,
c_txt_anoniem);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces AUTO_STUFF afgebroken!', v_errormsg);
COMMIT;
END;
/
-- LOGI#23445: Alleen spreekkamers (dus geen WP) en alleen met FO-status
-- Optie/Definitief (dus niet Blokkade en Vervallen)!
/* Formatted on 28-6-2012 14:24:48 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW LOGI_V_RAP_RES_INFOBORD
(
AKTIEF,
OFFSET,
DAG,
TIJD_VAN,
TIJD_TOT,
RUIMTE,
CATALOGUS,
AANVRAGER,
GASTHEER,
OMSCHRIJVING,
STATUS,
LOCATIE_CODE,
GEBOUW_CODE,
VERDIEPING_CODE,
LOCATIE_OMSCHRIJVING,
GEBOUW_OMSCHRIJVING,
VERDIEPING_OMSCHRIJVING,
ALG_LOCATIE_KEY,
ALG_GEBOUW_KEY,
ALG_VERDIEPING_KEY
)
AS
SELECT (CASE
WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected'
WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
rrg.res_ruimte_nr ruimte,
rd.ins_discipline_omschrijving catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
rrr.res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
l.alg_locatie_code locatie_code,
g.alg_gebouw_code gebouw_code,
v.alg_verdieping_code verdieping_code,
l.alg_locatie_omschrijving locatie_omschrijving,
g.alg_gebouw_omschrijving gebouw_omschrijving,
v.alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_v_res_ruimte_gegevens rrg,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf,
res_activiteit a,
res_discipline rd
WHERE rrr.res_status_fo_key IN (1, 2) -- Alleen Optie + Definitief!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (rrr.res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key
AND rrr.res_activiteit_key = a.res_activiteit_key
AND a.res_srtactiviteit_key = 1 -- Ruimte (g<><67>n Voorz. + WP)!
AND rrg.res_discipline_key = rd.ins_discipline_key;
-- LOGI#34117 notijob tbv optionele reserveringen
CREATE OR REPLACE VIEW LOGI_V_NOTI_RES_OPTIE
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'RESNEW',
NULL,
res_rsv_ruimte_contact_key,
'Let op: reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' ('
|| res_rsv_ruimte_van
|| ' - '
|| res_ruimte_nr
|| ') is optioneel'
text,
res_reservering_key,
res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
fac_tracking tr,
fac_srtnotificatie srt,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_status_fo_key = 1
AND tr.fac_srtnotificatie_key = srt.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND srt.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')))
AND srt.fac_srtnotificatie_code = 'RESNEW'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'LOGI_V_NOTI_RES_OPTIE');
-- Bevat CUST01- en CUST02-reminders naar verantwoordelijken voor inspectie
-- van betreffende objecten.
-- LET OP: Notificatiejob via xemail!!!
-- CUST01: wekelijks mbt. over 1 tot 2 weken te keuren objecten!
-- CUST02: wekelijks mbt. objecten waarvan keuringsdatum is verstreken!
/* Formatted on 7-1-2016 17:28:32 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW LOGI_V_NOTI_INSPECTIEREMINDER
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTGROEP##',
DECODE (
x.min_srtgroep_oms,
x.max_srtgroep_oms,
x.min_srtgroep_oms
|| DECODE (x.aantal, 1, '/' || min_controle_oms, ''),
x.min_srtgroep_oms || ', ...')),
'##AANTAL##',
x.aantal)
subject,
x.dummy_deel_key, -- Dummy key!!!
NULL,
NULL,
NULL,
x.alg_locatie_email,
NULL
FROM ( SELECT l.alg_locatie_email,
MIN (din.ins_srtcontrole_omschrijving) min_controle_oms,
MIN (sg.ins_srtgroep_omschrijving) min_srtgroep_oms,
MAX (sg.ins_srtgroep_omschrijving) max_srtgroep_oms,
MIN (d.ins_deel_key) dummy_deel_key,
COUNT (DISTINCT d.ins_deel_key) aantal
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
alg_locatie l,
(SELECT ins_deel_key, inspectie_next, ins_srtcontrole_omschrijving
FROM (WITH defined_inspect
AS (SELECT *
FROM ins_deel d, ins_srtdeel sd, ins_srtcontrole sc
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND (sc.ins_srtcontrole_niveau ='S'
AND sc.ins_srtinstallatie_key = d.ins_srtdeel_key
OR sc.ins_srtcontrole_niveau = 'G'
AND sc.ins_srtinstallatie_key = sd.ins_srtgroep_key
OR sc.ins_srtcontrole_niveau = 'D'
AND sc.ins_srtinstallatie_key = d.ins_discipline_key))
SELECT 1 rn, -- NOG GEEN INSPECTIES GEWEEST!
di.ins_deel_key,
fac.nextcyclusdate (
di.ins_deel_aanmaak,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_omschrijving
FROM defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN
(SELECT ins_deel_key, ins_srtcontrole_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_status IN (5, 6))
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL
OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE, 'DD'))
UNION ALL
SELECT RANK ()
OVER (
PARTITION BY di.ins_deel_key, dsc.ins_srtcontrole_key
ORDER BY ins_deelsrtcontrole_datum DESC)
rn,
di.ins_deel_key,
fac.nextcyclusdate (
CASE
WHEN di.ins_srtcontrole_mode = 0
THEN dsc.ins_deelsrtcontrole_datum_org
ELSE dsc.ins_deelsrtcontrole_datum
END,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_omschrijving
FROM ins_deelsrtcontrole dsc, defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE dsc.ins_deelsrtcontrole_status IN (5, 6)
AND di.ins_deel_key = dsc.ins_deel_key
AND di.ins_srtcontrole_key = dsc.ins_srtcontrole_key
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL
OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE, 'DD'))
ORDER BY inspectie_next)
WHERE rn = 1) din
WHERE d.ins_deel_module = 'INS'
AND d.ins_deel_verwijder IS NULL
AND d.ins_deel_parent_key IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC (SYSDATE))
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND d.ins_alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = din.ins_deel_key
AND din.inspectie_next BETWEEN TRUNC (SYSDATE + 7) AND TRUNC (SYSDATE + 14)
GROUP BY l.alg_locatie_email) x,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'CUST01'
UNION ALL
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTGROEP##',
DECODE (
x.min_srtgroep_oms,
x.max_srtgroep_oms,
x.min_srtgroep_oms
|| DECODE (x.aantal, 1, '/' || min_controle_oms, ''),
x.min_srtgroep_oms || ', ...')),
'##AANTAL##',
x.aantal)
subject,
x.dummy_deel_key, -- Dummy key!!!
NULL,
NULL,
NULL,
x.alg_locatie_email,
NULL
FROM ( SELECT l.alg_locatie_email,
MIN (din.ins_srtcontrole_omschrijving) min_controle_oms,
MIN (sg.ins_srtgroep_omschrijving) min_srtgroep_oms,
MAX (sg.ins_srtgroep_omschrijving) max_srtgroep_oms,
MIN (d.ins_deel_key) dummy_deel_key,
COUNT (DISTINCT d.ins_deel_key) aantal
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
alg_locatie l,
(SELECT ins_deel_key, inspectie_next, ins_srtcontrole_omschrijving
FROM (WITH defined_inspect
AS (SELECT *
FROM ins_deel d, ins_srtdeel sd, ins_srtcontrole sc
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND (sc.ins_srtcontrole_niveau = 'S'
AND sc.ins_srtinstallatie_key = d.ins_srtdeel_key
OR sc.ins_srtcontrole_niveau = 'G'
AND sc.ins_srtinstallatie_key = sd.ins_srtgroep_key
OR sc.ins_srtcontrole_niveau = 'D'
AND sc.ins_srtinstallatie_key = d.ins_discipline_key))
SELECT 1 rn, -- NOG GEEN INSPECTIES GEWEEST!
di.ins_deel_key,
--COALESCE (
-- xcp.ins_srtcontroledl_xcp_respijt,
-- fac.nextcyclusdate (
-- di.ins_deel_aanmaak,
-- di.ins_srtcontrole_mode,
-- COALESCE (
-- xcp.ins_srtcontroledl_xcp_eenheid,
-- di.ins_srtcontrole_eenheid),
-- COALESCE (
-- xcp.ins_srtcontroledl_xcp_periode,
-- di.ins_srtcontrole_periode),
-- COALESCE (
-- xcp.ins_srtcontroledl_xcp_bits,
-- di.ins_srtcontrole_bits),
-- 1))
fac.nextcyclusdate (
di.ins_deel_aanmaak,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_omschrijving
FROM defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN
(SELECT ins_deel_key, ins_srtcontrole_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_status IN (5, 6))
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL
OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE, 'DD'))
UNION ALL
SELECT RANK ()
OVER (
PARTITION BY di.ins_deel_key, dsc.ins_srtcontrole_key
ORDER BY ins_deelsrtcontrole_datum DESC)
rn,
di.ins_deel_key,
fac.nextcyclusdate (
CASE
WHEN di.ins_srtcontrole_mode = 0
THEN dsc.ins_deelsrtcontrole_datum_org
ELSE dsc.ins_deelsrtcontrole_datum
END,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_omschrijving
FROM ins_deelsrtcontrole dsc, defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE dsc.ins_deelsrtcontrole_status IN (5, 6)
AND di.ins_deel_key = dsc.ins_deel_key
AND di.ins_srtcontrole_key = dsc.ins_srtcontrole_key
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL
OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE, 'DD'))
ORDER BY inspectie_next)
WHERE rn = 1) din
WHERE d.ins_deel_module = 'INS'
AND d.ins_deel_verwijder IS NULL
AND d.ins_deel_parent_key IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC (SYSDATE))
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND d.ins_alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = din.ins_deel_key
AND din.inspectie_next < TRUNC (SYSDATE)
GROUP BY l.alg_locatie_email) x,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'CUST02';
CREATE OR REPLACE VIEW LOGI_V_RAP_MLDINSRES_QRC
(
FCLT_F_DISCIPLINE,
FCLT_F_SOORTMELDING,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
FCLT_F_VERDIEPING,
PLAATS,
RUIMTE_KEY,
RUIMTEFUNCTIE,
FCLT_F_OBJECTDISCIPLINE,
FCLT_F_OBJECTGROEP,
OBJECTSOORT_KEY,
FCLT_F_OBJECTSOORT,
OBJECTSOORT_CODE,
DEEL_KEY,
DEEL_OMSCHRIJVING,
DEEL_UPPER,
HIDE_F_BOOKMARK_ID,
VARIABELE
)
AS
SELECT md.ins_discipline_omschrijving,
msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM (SELECT DECODE (
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=')),
'&'),
0,
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=')),
10),
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=')),
10,
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=')),
'&')
- 10))
stdm_key,
fac_bookmark_id
FROM fac_bookmark
WHERE TRUNC (fac_bookmark_aanmaak) >=
TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0) b, -- stdm_key-bookmarks
(SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
si.ins_srtinstallatie_key ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'S'
UNION ALL
SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'G'
AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'D'
AND si.ins_srtinstallatie_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
mld_discipline md,
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key
AND msd.mld_ins_discipline_key = md.ins_discipline_key
AND msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+);
CREATE OR REPLACE VIEW LOGI_V_RAP_RUIMINSRES_QRC
(
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
FCLT_F_VERDIEPING,
FCLT_F_RUIMTEFUNCTIE,
PLAATS,
RUIMTE_KEY,
HIDE_F_BOOKMARK_ID,
VARIABELE
)
AS
SELECT
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
sr.alg_srtruimte_omschrijving,
o.alg_plaatsaanduiding plaats,
r.alg_ruimte_key ruimte_key,
b.fac_bookmark_id,
'RUIMTE_KEY'
FROM fac_bookmark b,
alg_v_aanwezigruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE
UPPER (b.fac_bookmark_naam) LIKE '%SANI%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
AND sr.alg_srtruimte_key IN ('47', '48', '49', '84', '85', '101', '105');
CREATE OR REPLACE VIEW LOGI_V_RAP_MEETING_QRC
(
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
FCLT_F_VERDIEPING,
FCLT_F_RUIMTEFUNCTIE,
PLAATS,
RUIMTE_KEY,
HIDE_F_BOOKMARK_ID,
VARIABELE
)
AS
SELECT
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
sr.alg_srtruimte_omschrijving,
o.alg_plaatsaanduiding plaats,
r.alg_ruimte_key ruimte_key,
b.fac_bookmark_id,
'RUIMTE_KEY'
FROM fac_bookmark b,
alg_v_aanwezigruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE
UPPER (b.fac_bookmark_naam) LIKE '%MEETING%'
AND UPPER (b.fac_bookmark_path) = 'APPL/RES/MELDING.ASP'
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
AND sr.alg_srtruimte_key = '44';
CREATE OR REPLACE VIEW LOGI_V_RAP_MEETING_RES_QRC
(
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
hide_f_bookmark_id,
variabele
)
AS
SELECT l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
rr.res_ruimte_nr plaats,
rar.res_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
b.fac_bookmark_id,
'RES_RUIMTE_KEY'
FROM fac_bookmark b,
res_ruimte rr,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE UPPER (b.fac_bookmark_naam) LIKE '%MEETING%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP'
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
AND sr.alg_srtruimte_key = '44';
/*
UNION ALL
SELECT 'Melding op object',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
NULL ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM fac_bookmark b,
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_naam) LIKE '%GENERIEK%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/INS_DEEL.ASP'
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+);
UNION ALL
SELECT 'Melding op ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
r.alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RUIMTE_KEY'
FROM fac_bookmark b,
alg_v_aanwezigruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_naam) LIKE '%GENERIEK%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') = 0
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
UNION ALL
SELECT 'Melding op gebouw',
l.alg_locatie_omschrijving,
g.alg_gebouw_omschrijving,
NULL alg_verdieping_omschrijving,
l.alg_locatie_code || '-' || g.alg_gebouw_code plaats,
g.alg_gebouw_key ruimte_key,
sg.alg_srtgebouw_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'GEBOUW_KEY'
FROM fac_bookmark b,
alg_v_aanweziggebouw g,
alg_v_aanwezigsrtgebouw sg,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('30012014', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_naam) LIKE '%GENERIEK%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') = 0
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
UNION ALL -- Reserveerbare ruimtes 50=Gemeentehuis
SELECT 'Reserveer ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
rr.res_ruimte_nr plaats,
rar.res_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RES_RUIMTE_KEY'
FROM fac_bookmark b,
res_ruimte rr,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_naam) LIKE '%GENERIEK%'
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP'
AND rr.res_discipline_key != 62 -- OV kaart
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
AND l.alg_locatie_key = 50;
*/
------ 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