1865 lines
73 KiB
MySQL
1865 lines
73 KiB
MySQL
-- Script containing customer specific configuration sql statements for VIAR
|
|
-- (c) 2013 SG|facilitor bv
|
|
-- $Revision$
|
|
-- $Id$
|
|
--
|
|
-- Support: +31 53 4800700
|
|
|
|
set echo on
|
|
|
|
spool VIAR.lst
|
|
|
|
-- VIAR#33232
|
|
-- Zet alle opdrachten van afgemelde meldingen (= key 5) die zijn afgerond (= key 161) naar status historie (= key 7)
|
|
-- Zet alle afgemelde meldingen (= key 5) die zijn afgerond (= key 161) naar status historie (= key 6)
|
|
CREATE OR REPLACE PROCEDURE viar_export_nachtwerk (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2,
|
|
p_filedir IN VARCHAR2,
|
|
p_filename IN VARCHAR2)
|
|
AS
|
|
CURSOR cmafm
|
|
IS
|
|
SELECT DISTINCT m.mld_melding_key
|
|
FROM mld_melding m, mld_opdr o
|
|
WHERE mld_melding_status = 5
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_melding_key IN
|
|
(SELECT fac_tracking_refkey
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key = 161);
|
|
|
|
CURSOR coafm
|
|
IS
|
|
SELECT mld_opdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_statusopdr_key IN (6, 9)
|
|
AND mld_melding_key IN
|
|
(SELECT DISTINCT m.mld_melding_key
|
|
FROM mld_melding m, mld_opdr o
|
|
WHERE mld_melding_status = 5
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND o.mld_melding_key NOT IN
|
|
(SELECT mld_melding_key
|
|
FROM mld_opdr
|
|
WHERE mld_statusopdr_key NOT IN
|
|
(6, 9))
|
|
AND m.mld_melding_key IN
|
|
(SELECT fac_tracking_refkey
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key =
|
|
161));
|
|
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER := 0;
|
|
v_count2 NUMBER := 0;
|
|
BEGIN
|
|
FOR r IN coafm
|
|
LOOP
|
|
BEGIN
|
|
MLD.setopdrachtstatus (r.mld_opdr_key, 7, NULL);
|
|
|
|
v_count2 := v_count2 + 1;
|
|
|
|
|
|
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,
|
|
'W',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.writelog (p_applname,
|
|
'S',
|
|
'Aantal opdrachten verwerkt: ' || TO_CHAR (v_count2),
|
|
'');
|
|
COMMIT;
|
|
|
|
FOR r IN cmafm
|
|
LOOP
|
|
BEGIN
|
|
MLD.setmeldingstatus (r.mld_melding_key, 6, NULL);
|
|
|
|
v_count := v_count + 1;
|
|
|
|
|
|
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,
|
|
'W',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.writelog (p_applname,
|
|
'S',
|
|
'Aantal meldingen verwerkt: ' || TO_CHAR (v_count),
|
|
'');
|
|
|
|
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 NACHTWERK afgebroken!',
|
|
v_errormsg);
|
|
COMMIT;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE viar_import_prs (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
-- LET OP: moet idem zijn als declaratie bij viar_UPDATE_PRS
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_ongeldig NUMBER (1);
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
v_count NUMBER;
|
|
v_pos NUMBER;
|
|
-- De importvelden:
|
|
v_prs_perslid_nr VARCHAR2 (256);
|
|
v_prs_perslid_voornaam VARCHAR2 (256);
|
|
v_prs_perslid_naam VARCHAR2 (256);
|
|
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
|
v_prs_perslid_voorletters VARCHAR2 (256);
|
|
v_prs_afdeling_code VARCHAR2 (256);
|
|
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
|
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
|
v_prs_perslid_mobiel VARCHAR2 (256);
|
|
v_prs_perslid_email VARCHAR2 (256);
|
|
v_prs_perslid_oslogin VARCHAR2 (256);
|
|
|
|
|
|
-- Overig:
|
|
v_alg_locatie_code VARCHAR2 (256);
|
|
v_alg_gebouw_code VARCHAR2 (256);
|
|
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
DELETE FROM viar_imp_prs;
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_aanduiding := '';
|
|
v_errorhint := 'Fout bij opvragen te importeren rij';
|
|
v_ongeldig := 0;
|
|
-- Lees alle veldwaarden
|
|
|
|
-- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam.
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
|
|
|
|
|
-- 05 - Afdelingscode
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code);
|
|
|
|
-- 06 - Functieomschrijving van medewerker
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
|
|
|
|
-- 07 - Email adres van medewerker
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
|
|
|
-- 08 - Mobiel van medewerker
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
|
|
|
|
-- 09 - Telnr van medewerker
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
|
|
|
|
-- 10 - Usernaam/login
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
|
|
|
|
|
|
|
--
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_prs_perslid_oslogin
|
|
|| '|'
|
|
|| v_prs_perslid_naam
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM'
|
|
AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
|
|
AND UPPER (v_prs_afdeling_code) = 'AFDNR.'
|
|
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
|
|
AND UPPER (v_prs_perslid_email) = 'E-MAIL'
|
|
AND UPPER (v_prs_perslid_mobiel) = 'MOBILE'
|
|
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
|
|
AND UPPER (v_prs_perslid_oslogin) = 'LOGIN'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige naam';
|
|
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
|
|
|
IF LENGTH (v_prs_perslid_naam) > 30
|
|
THEN
|
|
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Naam te lang',
|
|
'Naam wordt afgebroken tot ['
|
|
|| v_prs_perslid_naam
|
|
|| ']'
|
|
);
|
|
ELSE
|
|
IF (v_prs_perslid_naam IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Naam onbekend',
|
|
'Naam is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
END IF;
|
|
END IF;
|
|
COMMIT;
|
|
|
|
--
|
|
|
|
v_errorhint := 'Ongeldig loginnaam';
|
|
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
|
|
|
IF LENGTH (v_prs_perslid_oslogin) > 30
|
|
THEN
|
|
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Loginnaam te lang',
|
|
'Loginnaam wordt afgebroken tot ['
|
|
|| v_prs_perslid_oslogin
|
|
|| ']'
|
|
);
|
|
ELSE
|
|
IF (v_prs_perslid_oslogin IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Usernaam/login onbekend',
|
|
'Usernaam/login is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
END IF;
|
|
END IF;
|
|
COMMIT;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig e-mailadres';
|
|
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
|
|
|
IF LENGTH (v_prs_perslid_email) > 200
|
|
THEN
|
|
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'E-mailadres te lang',
|
|
'E-mailadres wordt afgebroken tot ['
|
|
|| v_prs_perslid_email
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig tussenvoegsel';
|
|
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
|
|
|
IF LENGTH (v_prs_perslid_tussenvoegsel) > 15
|
|
THEN
|
|
v_prs_perslid_tussenvoegsel :=
|
|
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Tussenvoegsel te lang',
|
|
'Tussenvoegsel wordt afgebroken tot ['
|
|
|| v_prs_perslid_tussenvoegsel
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige voorletters';
|
|
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
|
|
|
|
IF LENGTH (v_prs_perslid_voorletters) > 10
|
|
THEN
|
|
v_prs_perslid_voorletters :=
|
|
SUBSTR (v_prs_perslid_voorletters, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voorletters te lang',
|
|
'Voorletters worden afgebroken tot ['
|
|
|| v_prs_perslid_voorletters
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige voornaam';
|
|
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
|
|
|
|
IF LENGTH (v_prs_perslid_voornaam) > 30
|
|
THEN
|
|
v_prs_perslid_voornaam :=
|
|
SUBSTR (v_prs_perslid_voornaam, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voornaam is te lang',
|
|
'Voornaam wordt afgebroken tot ['
|
|
|| v_prs_perslid_voornaam
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
COMMIT;
|
|
|
|
|
|
|
|
|
|
|
|
v_errorhint := 'Ongeldige afdelingcode';
|
|
v_prs_afdeling_code := TRIM (v_prs_afdeling_code);
|
|
|
|
IF LENGTH (v_prs_afdeling_code) > 10
|
|
THEN
|
|
v_prs_afdeling_code := SUBSTR (v_prs_afdeling_code, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdelingscode te lang',
|
|
'Afdelingscode wordt afgebroken tot ['
|
|
|| v_prs_afdeling_code
|
|
|| ']'
|
|
);
|
|
ELSE
|
|
IF (v_prs_afdeling_code IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Afdelingscode onbekend',
|
|
'Afdelingscode is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
END IF;
|
|
END IF;
|
|
COMMIT;
|
|
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige functie';
|
|
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
|
|
|
|
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
|
|
THEN
|
|
v_prs_srtperslid_omschrijving :=
|
|
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Functie te lang',
|
|
'Functie wordt afgebroken tot ['
|
|
|| v_prs_srtperslid_omschrijving
|
|
|| ']'
|
|
);
|
|
ELSE
|
|
IF (v_prs_srtperslid_omschrijving IS NULL)
|
|
THEN
|
|
v_prs_srtperslid_omschrijving := 'Onbekend';
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Functie onbekend',
|
|
'Functie heeft lege waarde en is verplicht; wordt door Facilitor op onbekend gezet!'
|
|
);
|
|
END IF;
|
|
END IF;
|
|
COMMIT;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige plaats/locatiecode';
|
|
v_alg_locatie_code := TRIM(v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 5
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Locatiecode te lang',
|
|
'Locatiecode wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige plaats/gebouwcode';
|
|
v_alg_gebouw_code := TRIM(v_alg_gebouw_code);
|
|
|
|
IF LENGTH (v_alg_gebouw_code) > 10
|
|
THEN
|
|
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Gebouwcode te lang',
|
|
'Gebouwcode wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig mobiel nummer';
|
|
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
|
|
|
IF LENGTH (v_prs_perslid_mobiel) > 15
|
|
THEN
|
|
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Mobiel nummer te lang',
|
|
'mobiel nummer wordt afgebroken tot ['
|
|
|| v_prs_perslid_mobiel
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
|
|
v_errorhint := 'Ongeldig telefoonnummer';
|
|
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
|
|
|
|
IF LENGTH (v_prs_perslid_telefoonnr) > 15
|
|
THEN
|
|
v_prs_perslid_telefoonnr :=
|
|
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Telefoonnummer te lang',
|
|
'Telefoonnummer wordt afgebroken tot ['
|
|
|| v_prs_perslid_telefoonnr
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errorhint :=
|
|
'Fout bij toevoegen regel aan importtabel VIAR_IMP_PRS';
|
|
|
|
INSERT INTO viar_imp_prs
|
|
(prs_perslid_naam,
|
|
prs_perslid_tussenvoegsel,
|
|
prs_perslid_voorletters,
|
|
prs_perslid_voornaam,
|
|
prs_afdeling_code,
|
|
prs_srtperslid_omschrijving,
|
|
alg_locatie_code, alg_gebouw_code,
|
|
alg_verdieping_volgnr, alg_ruimte_nr,
|
|
prs_perslid_telefoonnr,
|
|
prs_perslid_mobiel,
|
|
prs_perslid_email,
|
|
prs_perslid_oslogin
|
|
)
|
|
VALUES (v_prs_perslid_naam,
|
|
v_prs_perslid_tussenvoegsel,
|
|
v_prs_perslid_voorletters,
|
|
v_prs_perslid_voornaam,
|
|
v_prs_afdeling_code,
|
|
v_prs_srtperslid_omschrijving,
|
|
v_alg_locatie_code, v_alg_gebouw_code,
|
|
NULL, NULL,
|
|
v_prs_perslid_telefoonnr,
|
|
v_prs_perslid_mobiel,
|
|
v_prs_perslid_email,
|
|
v_prs_perslid_oslogin
|
|
);
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
v_errorhint
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Ingelezen regel kan niet worden weggeschreven!'
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!'
|
|
);
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: aantal ingelezen regels: '
|
|
|| TO_CHAR (v_count_tot),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: aantal ongeldige importregels: '
|
|
|| TO_CHAR (v_count_tot - v_count_import),
|
|
''
|
|
);
|
|
END IF;
|
|
COMMIT;
|
|
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_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END viar_import_prs;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE viar_update_prs (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
-- LET OP: moet idem zijn als declaratie bij VIAR_IMPORT_PRS
|
|
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
|
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
|
c_max_delta_percentage NUMBER (10) := 20;
|
|
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
|
c_ruimte_nr VARCHAR2 (10) := '000';
|
|
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
|
|
|
c_key_default_rol NUMBER(10) := 1;
|
|
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count_prs_actual NUMBER (10);
|
|
v_count_prs_import NUMBER (10); -- Matching actual persons!
|
|
v_count_tot NUMBER (10);
|
|
v_count_error NUMBER (10);
|
|
v_count NUMBER (10);
|
|
--
|
|
v_perslid_key NUMBER (10);
|
|
v_afdeling_key NUMBER (10);
|
|
|
|
v_srtperslid_key NUMBER (10);
|
|
v_oslogin VARCHAR2 (30);
|
|
v_wachtwoord VARCHAR2 (30);
|
|
v_locatie_key NUMBER (10);
|
|
v_gebouw_key NUMBER (10);
|
|
v_verdieping_key NUMBER (10);
|
|
v_ruimte_key NUMBER (10);
|
|
v_wp_key NUMBER (10);
|
|
v_wp_volgnr NUMBER (3);
|
|
v_wp_oms VARCHAR2 (30);
|
|
v_groep_defaultnaam VARCHAR2 (30);
|
|
|
|
-- Let op! Personen met een functie (srt_perslid) waarvan het oppervlak expliciet op 0 is gezet, betekent een functie die tijdelijk is cq. externe is
|
|
-- Dus oppervlak leeg laten of een oppervlak > 0 is een interne. Normailiter is oppervlak gewoon leeg.
|
|
-- Via deze regel is het dus mogelijk om een externe of systeemuser aan te maken, die niet via AD wordt aangemaakt, maar handmatig.
|
|
-- Je geeft deze persoon een SPECIALE, IN AD NIET BESTAANDE functienaam (bv EXTERN, of SYSTEM, of NOT-AD) met opp=0.
|
|
-- Die blijven dan gewoon in het systeem staan en worden NIET verwijderd omdat ze niet in AD export staan.
|
|
-- Ook personen met die als loginnaam beginnen met een _ (underscore) worden niet verwijderd.
|
|
CURSOR cdelprs
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p, prs_srtperslid sp
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND COALESCE(sp.prs_srtperslid_opp,1) > 0
|
|
AND SUBSTR(p.prs_perslid_oslogin,1,1) <> '_'
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM viar_imp_prs ip
|
|
WHERE UPPER(ip.prs_perslid_oslogin) = UPPER(p.prs_perslid_oslogin));
|
|
|
|
|
|
CURSOR csperslid
|
|
IS
|
|
SELECT prs_srtperslid_omschrijving
|
|
FROM viar_imp_prs
|
|
GROUP BY prs_srtperslid_omschrijving;
|
|
|
|
|
|
CURSOR cprsafd
|
|
IS
|
|
SELECT UPPER(prs_afdeling_code) prs_afdeling_code, MIN(prs_afdeling_naam) prs_afdeling_naam
|
|
FROM viar_imp_prs
|
|
GROUP BY UPPER (prs_afdeling_code);
|
|
|
|
CURSOR cperslid
|
|
IS
|
|
SELECT *
|
|
FROM viar_imp_prs;
|
|
|
|
CURSOR cwp
|
|
IS
|
|
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code
|
|
FROM viar_imp_prs ip, prs_v_aanwezigperslid p
|
|
WHERE ip.alg_locatie_code IS NOT NULL
|
|
AND ip.alg_gebouw_code IS NOT NULL
|
|
AND UPPER (ip.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin);
|
|
|
|
-- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek
|
|
CURSOR cnowp
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p, prs_srtperslid sp
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND COALESCE(sp.prs_srtperslid_opp,1) > 0
|
|
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
|
|
AND NOT EXISTS (SELECT 1
|
|
FROM prs_perslidwerkplek pw
|
|
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
|
|
|
-- Alle aanwezige personen vanuit AD (ie. de import-doelgroep) niet in een groep
|
|
CURSOR cnogroup
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p, prs_srtperslid sp
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND COALESCE(sp.prs_srtperslid_opp,1) > 0
|
|
AND NOT EXISTS (SELECT 1
|
|
FROM fac_gebruikersgroep g
|
|
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
|
|
|
|
|
BEGIN
|
|
-- Alle niet verwijderde personen die via AD zijn geimporteerd.
|
|
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
|
INTO v_count_prs_actual
|
|
FROM prs_perslid p, prs_srtperslid sp
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND COALESCE(sp.prs_srtperslid_opp,1) > 0
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND (prs_perslid_oslogin IS NULL OR SUBSTR(prs_perslid_oslogin,1,1) <> '_');
|
|
|
|
-- Alle personen die via AD zijn geimporteerd en nu weer in AD worden aangeboden.
|
|
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
|
INTO v_count_prs_import
|
|
FROM prs_perslid p, viar_imp_prs ip, prs_srtperslid sp
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND COALESCE(sp.prs_srtperslid_opp,1) > 0
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND UPPER(p.prs_perslid_oslogin) = UPPER(ip.prs_perslid_oslogin);
|
|
|
|
-- Als alle personen
|
|
IF ( v_count_prs_actual = 1 OR (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
|
|
(100 - c_max_delta_percentage
|
|
)
|
|
)
|
|
)
|
|
THEN
|
|
-- Geldig importbestand wat betreft aantal personen
|
|
FOR recdelprs IN cdelprs
|
|
LOOP
|
|
BEGIN
|
|
-- Heeft persoon actuele/toekomstige verplichtingen?
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslid p, prs_v_verplichting_keys r
|
|
WHERE p.prs_perslid_key = r.prs_perslid_key
|
|
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij verwijderen persoon';
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_verwijder = SYSDATE
|
|
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met nummer ['
|
|
|| recdelprs.prs_perslid_oslogin
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is verwijderd',
|
|
'Persoon is verwijderd'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
-- Staat persoon INACTIEF?
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
|
|
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij INACTIEF zetten persoon';
|
|
|
|
-- Persoon INACTIEF zetten (update naam + reset oslogin)
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam =
|
|
SUBSTR (c_persoon_inactief || prs_perslid_naam,
|
|
1,
|
|
30
|
|
),
|
|
prs_perslid_oslogin = NULL
|
|
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met nummer ['
|
|
|| recdelprs.prs_perslid_oslogin
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is INACTIEF gezet',
|
|
'Persoon is INACTIEF gezet'
|
|
);
|
|
ELSE
|
|
v_errorhint := 'Fout bij INACTIEF maken persoon';
|
|
|
|
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_oslogin = NULL
|
|
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
|
|
AND prs_perslid_oslogin IS NOT NULL;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met nummer ['
|
|
|| recdelprs.prs_perslid_oslogin
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is INACTIEF gemaakt',
|
|
'Persoon is INACTIEF gemaakt'
|
|
);
|
|
END IF;
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recsperslid IN csperslid
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
|
|
v_errorhint := 'Fout bij bepalen functie';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_srtperslid
|
|
WHERE UPPER (prs_srtperslid_omschrijving) =
|
|
UPPER (recsperslid.prs_srtperslid_omschrijving)
|
|
AND prs_srtperslid_verwijder IS NULL;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen functie';
|
|
|
|
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
|
VALUES (recsperslid.prs_srtperslid_omschrijving);
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Functie: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Functie: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recperslid IN cperslid
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
recperslid.prs_perslid_oslogin
|
|
|| '|'
|
|
|| recperslid.prs_perslid_naam
|
|
|| '|'
|
|
|| recperslid.prs_perslid_voornaam
|
|
|| ' - '
|
|
|| recperslid.prs_afdeling_code
|
|
|| ' - ';
|
|
|
|
v_errorhint :=
|
|
'Fout bij bepalen functie ['
|
|
|| recperslid.prs_srtperslid_omschrijving
|
|
|| ']';
|
|
|
|
SELECT prs_srtperslid_key
|
|
INTO v_srtperslid_key
|
|
FROM prs_srtperslid
|
|
WHERE prs_srtperslid_verwijder IS NULL
|
|
AND UPPER (prs_srtperslid_omschrijving) =
|
|
UPPER (recperslid.prs_srtperslid_omschrijving);
|
|
|
|
v_errorhint :=
|
|
'Fout bij bepalen afdeling ['
|
|
|| recperslid.prs_afdeling_naam
|
|
|| ']';
|
|
|
|
SELECT prs_afdeling_key
|
|
INTO v_afdeling_key
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND UPPER (prs_afdeling_naam) = UPPER (recperslid.prs_afdeling_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen persoon';
|
|
|
|
SELECT COUNT (*), MAX (prs_perslid_key)
|
|
INTO v_count, v_perslid_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_verwijder IS NULL
|
|
AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin);
|
|
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen persoon';
|
|
-- Nieuwe persoon uit importbestand, wordt toegevoegd in Facilitor.
|
|
INSERT INTO prs_perslid
|
|
(prs_perslid_module, prs_srtperslid_key,
|
|
prs_afdeling_key, prs_perslid_naam,
|
|
prs_perslid_voorletters,
|
|
prs_perslid_tussenvoegsel,
|
|
prs_perslid_voornaam,
|
|
prs_perslid_telefoonnr,
|
|
prs_perslid_mobiel,
|
|
prs_perslid_email,
|
|
prs_perslid_oslogin
|
|
)
|
|
VALUES ('PRS', v_srtperslid_key,
|
|
v_afdeling_key, recperslid.prs_perslid_naam,
|
|
recperslid.prs_perslid_voorletters,
|
|
recperslid.prs_perslid_tussenvoegsel,
|
|
recperslid.prs_perslid_voornaam,
|
|
recperslid.prs_perslid_telefoonnr,
|
|
recperslid.prs_perslid_mobiel,
|
|
recperslid.prs_perslid_email,
|
|
recperslid.prs_perslid_oslogin
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
|
|
v_errorhint := 'Fout bij wijzigen persoon';
|
|
|
|
-- Functie, Afdeling altijd bijwerken
|
|
-- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond.
|
|
-- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
|
-- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
|
-- Login: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_srtperslid_key = v_srtperslid_key,
|
|
prs_afdeling_key = v_afdeling_key,
|
|
prs_perslid_naam = COALESCE(recperslid.prs_perslid_naam,prs_perslid_naam),
|
|
prs_perslid_voorletters = COALESCE(recperslid.prs_perslid_voorletters,prs_perslid_voorletters),
|
|
prs_perslid_tussenvoegsel = COALESCE(recperslid.prs_perslid_tussenvoegsel,prs_perslid_tussenvoegsel),
|
|
prs_perslid_voornaam = COALESCE(recperslid.prs_perslid_voornaam,prs_perslid_voornaam),
|
|
prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
|
|
prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel),
|
|
prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
|
|
prs_perslid_oslogin = COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin)
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
COMMIT;
|
|
END IF;
|
|
|
|
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recwp IN cwp
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
recwp.prs_perslid_oslogin
|
|
|| '|'
|
|
|| recwp.prs_perslid_naam
|
|
|| '|'
|
|
|| recwp.prs_perslid_voornaam
|
|
|| '|'
|
|
|| recwp.alg_locatie_code
|
|
|| '|'
|
|
|| recwp.alg_gebouw_code
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen persoon';
|
|
|
|
SELECT prs_perslid_key
|
|
INTO v_perslid_key
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE UPPER (prs_perslid_oslogin) = UPPER (recwp.prs_perslid_oslogin);
|
|
|
|
v_errorhint := 'Fout bij bepalen locatie';
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen gebouw';
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen verdieping';
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = (SELECT MIN (v.alg_verdieping_volgnr)
|
|
FROM alg_verdieping v
|
|
WHERE v.alg_gebouw_key = v_gebouw_key
|
|
AND v.alg_verdieping_volgnr >= 0);
|
|
|
|
v_errorhint :=
|
|
'Fout bij bepalen of persoon in gebouw een werkplek heeft';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslidwerkplek pw,
|
|
prs_werkplek wp,
|
|
alg_ruimte r,
|
|
alg_verdieping v
|
|
WHERE pw.prs_perslid_key = v_perslid_key
|
|
AND pw.prs_werkplek_key = wp.prs_werkplek_key
|
|
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = v_gebouw_key;
|
|
|
|
-- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw.
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij bepalen ruimte';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM alg_v_aanwezigruimte r
|
|
WHERE r.alg_verdieping_key = v_verdieping_key
|
|
AND r.alg_ruimte_nr = c_ruimte_nr;
|
|
|
|
-- v_count=0 -> ruimte '000' bestaat nog niet.
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen ruimte';
|
|
|
|
INSERT INTO alg_ruimte
|
|
(alg_verdieping_key, alg_srtruimte_key,
|
|
alg_ruimte_nr
|
|
)
|
|
VALUES (v_verdieping_key, 21, -- facilitaire ruimte
|
|
c_ruimte_nr
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
v_errorhint := 'Fout bij bepalen ruimte';
|
|
|
|
SELECT alg_ruimte_key
|
|
INTO v_ruimte_key
|
|
FROM alg_v_aanwezigruimte r
|
|
WHERE r.alg_verdieping_key = v_verdieping_key
|
|
AND r.alg_ruimte_nr = c_ruimte_nr;
|
|
|
|
v_errorhint := 'Fout bij bepalen vrije werkplek';
|
|
|
|
SELECT COUNT (w.prs_werkplek_key)
|
|
INTO v_count
|
|
FROM prs_werkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM prs_perslidwerkplek pw
|
|
WHERE pw.prs_werkplek_key =
|
|
w.prs_werkplek_key);
|
|
|
|
IF (v_count > 0)
|
|
THEN
|
|
SELECT MIN (w.prs_werkplek_key)
|
|
INTO v_wp_key
|
|
FROM prs_werkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM prs_perslidwerkplek pw
|
|
WHERE pw.prs_werkplek_key =
|
|
w.prs_werkplek_key);
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan vrije werkplek';
|
|
|
|
INSERT INTO prs_perslidwerkplek
|
|
(prs_perslid_key, prs_werkplek_key,
|
|
prs_perslidwerkplek_bezetting
|
|
)
|
|
VALUES (v_perslid_key, v_wp_key,
|
|
100
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
|
|
|
|
SELECT prs_s_prs_werkplek_key.NEXTVAL
|
|
INTO v_wp_key
|
|
FROM DUAL;
|
|
|
|
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
|
|
INTO v_wp_volgnr
|
|
FROM prs_werkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
|
|
|
|
v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
|
|
|
|
v_errorhint := 'Fout bij aanmaken nieuwe werkplek';
|
|
|
|
INSERT INTO prs_werkplek
|
|
(prs_werkplek_key, prs_werkplek_module,
|
|
prs_werkplek_volgnr,
|
|
prs_werkplek_omschrijving, prs_alg_ruimte_key
|
|
)
|
|
VALUES (v_wp_key, 'PRR',
|
|
v_wp_volgnr,
|
|
v_wp_oms, v_ruimte_key
|
|
);
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan nieuwe werkplek';
|
|
|
|
INSERT INTO prs_perslidwerkplek
|
|
(prs_perslid_key, prs_werkplek_key,
|
|
prs_perslidwerkplek_bezetting
|
|
)
|
|
VALUES (v_perslid_key, v_wp_key,
|
|
100
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Werkplek: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Werkplek: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
COMMIT;
|
|
|
|
FOR recnowp IN cnowp
|
|
LOOP
|
|
BEGIN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met nummer ['
|
|
|| recnowp.prs_perslid_oslogin
|
|
|| '] en naam ['
|
|
|| recnowp.prs_perslid_naam
|
|
|| ', '
|
|
|| recnowp.prs_perslid_voornaam
|
|
|| '] heeft geen werkplek',
|
|
'Geen werkplek'
|
|
);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
-- Iedereen krijgt _default-rol die nog geen groep heeft.
|
|
FOR recnogroup IN cnogroup
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
recnogroup.prs_perslid_oslogin
|
|
|| '|'
|
|
|| recnogroup.prs_perslid_naam
|
|
|| '|'
|
|
|| recnogroup.prs_perslid_voornaam
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']';
|
|
|
|
SELECT fac_groep_upper
|
|
INTO v_groep_defaultnaam
|
|
FROM fac_groep
|
|
WHERE fac_groep_key = c_key_default_rol;
|
|
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']';
|
|
|
|
INSERT INTO fac_gebruikersgroep
|
|
(fac_groep_key, prs_perslid_key
|
|
)
|
|
VALUES (c_key_default_rol, recnogroup.prs_perslid_key
|
|
);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
ELSE
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
|
'- max. verschilpercentage = ['
|
|
|| TO_CHAR (c_max_delta_percentage)
|
|
|| '%] <br> '
|
|
|| '- #personen importbestand = ['
|
|
|| TO_CHAR (v_count_prs_import)
|
|
|| '] <br> '
|
|
|| '- #personen Facilitor = ['
|
|
|| TO_CHAR (v_count_prs_actual)
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF; -- Geldig importbestand wat betreft aantal inserts
|
|
COMMIT;
|
|
END viar_update_prs;
|
|
/
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
--- MIPP MANINFO RAPPORTAGE MIPP MANINFO RAPPORTAGE MIPP MANINFO RAPPORTAGE ---
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
-- ins_srtdiscipline_key = 1 is meldingtype 'MIPP'.
|
|
-- mld_typeopdr_key (+) = 41 is de 'MIPP-afhandeling' opdrachttype, en geen andere opdrachttype.
|
|
-- km1.mld_kenmerk_key (+) = 101 is de omschrijving (wat is er gebeurd) van de MIPP-melding.
|
|
-- ko1.mld_kenmerk_key (+) = 35 is of het een incident of bijna incident is.
|
|
-- ko2.mld_kenmerk_key (+) = 38 is de risico klasse.
|
|
|
|
|
|
-- Let op: kolom fclt_key (volgend op fclt_lopend) is dezelfde, alleen deze kolomnaam moet zo heten ivm usrrap vanuit cust.xsl.
|
|
|
|
CREATE OR REPLACE VIEW VIAR_V_RAP_MLD_MIPP
|
|
(
|
|
FCLT_F_MELDINGNR,
|
|
HIDE_F_INS_DISCIPLINE_KEY,
|
|
HIDE_F_FCLT_F_VAKGROEP,
|
|
HIDE_F_MLD_STDMELDING_KEY,
|
|
FCLT_F_MELDING,
|
|
MLD_MELDING_OMSCHRIJVING,
|
|
HIDE_F_MLD_MELDING_OPMERKING,
|
|
FCLT_F_LOCATIE,
|
|
FCLT_F_GEBOUW,
|
|
FCLT_F_VERDIEPING,
|
|
RUIMTE,
|
|
FCLT_F_RUIMTESOORT,
|
|
FCLT_F_JAAR,
|
|
FCLT_F_HALFJAAR,
|
|
FCLT_F_KWARTAAL,
|
|
FCLT_F_MAAND,
|
|
FCLT_F_INGEVOERD,
|
|
HIDE_F_OPERATIONELE_EINDDATUM,
|
|
HIDE_F_SLA_EINDDATUM,
|
|
HIDE_F_OPERATIONEEL_TE_LAAT,
|
|
HIDE_F_SLA_TE_LAAT,
|
|
HIDE_F_OPERATIONEEL_DAGUURMIN,
|
|
FCLT_F_LOPEND,
|
|
FCLT_F_STATUS,
|
|
HIDE_F_STATUS_CODE,
|
|
AFMELD_DATUM,
|
|
FCLT_F_AFGEMELD,
|
|
AFMELD_DATUM_TIME,
|
|
AFGEMELD_DOOR,
|
|
INGEVOERD_DOOR,
|
|
FCLT_F_SECTOR,
|
|
FCLT_F_AFDELING,
|
|
FCLT_F_UITVOERENDE,
|
|
FCLT_F_UITV_KEY,
|
|
FCLT_F_INCIDENT,
|
|
FCLT_F_RISICOKLASSE,
|
|
FCLT_F_BAXTER,
|
|
FCLT_F_NIET_BAXTER,
|
|
FCLT_F_VOORRAADMEDICATIE,
|
|
FCLT_F_OVERIG
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (m.mld_melding_key),
|
|
d.ins_discipline_key,
|
|
d.ins_discipline_omschrijving,
|
|
std.mld_stdmelding_key,
|
|
std.mld_stdmelding_omschrijving,
|
|
km1.mld_kenmerkmelding_waarde AS melding_omschrijving,
|
|
m.mld_melding_opmerking,
|
|
alg.loc,
|
|
alg.bld,
|
|
alg.flr,
|
|
alg.room,
|
|
alg.roms,
|
|
TO_CHAR (m.mld_melding_datum, 'YYYY'),
|
|
TO_CHAR (DECODE (TO_CHAR (m.mld_melding_datum, 'Q'),
|
|
1,
|
|
1,
|
|
2,
|
|
1,
|
|
3,
|
|
2,
|
|
4,
|
|
2)),
|
|
'Q' || TO_CHAR (m.mld_melding_datum, 'Q'),
|
|
TO_CHAR (m.mld_melding_datum, 'MM'),
|
|
TO_CHAR (m.mld_melding_datum, 'YYYY-MM-DD'),
|
|
m.mld_melding_einddatum,
|
|
m.mld_melding_einddatum_std,
|
|
CASE
|
|
WHEN m.mld_melding_einddatum <
|
|
COALESCE (
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
SYSDATE
|
|
)
|
|
THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END,
|
|
CASE
|
|
WHEN m.mld_melding_einddatum_std <
|
|
COALESCE (
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
SYSDATE
|
|
)
|
|
THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END,
|
|
TO_CHAR(FLOOR(COALESCE (
|
|
fac.gettrackingdate ('MLDAFM',
|
|
m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDREJ',
|
|
m.mld_melding_key),
|
|
SYSDATE
|
|
)
|
|
- m.mld_melding_datum))
|
|
|| 'd '
|
|
|| TO_CHAR(MOD (
|
|
FLOOR( (COALESCE (
|
|
fac.gettrackingdate ('MLDAFM',
|
|
m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDREJ',
|
|
m.mld_melding_key),
|
|
SYSDATE
|
|
)
|
|
- m.mld_melding_datum)
|
|
* 24),
|
|
24
|
|
))
|
|
|| 'u '
|
|
|| TO_CHAR(MOD (
|
|
ROUND (
|
|
(COALESCE (
|
|
fac.gettrackingdate ('MLDAFM',
|
|
m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDREJ',
|
|
m.mld_melding_key),
|
|
SYSDATE
|
|
)
|
|
- m.mld_melding_datum)
|
|
* 24
|
|
* 60,
|
|
0
|
|
),
|
|
60
|
|
))
|
|
|| 'm'
|
|
dagenuurmin,
|
|
CASE
|
|
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 'Open'
|
|
ELSE 'Afgesloten'
|
|
END,
|
|
ms.mld_statuses_omschrijving,
|
|
ms.mld_statuses_key,
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
COALESCE (
|
|
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
'YYYY-MM-DD'),
|
|
'Niet afgemeld'
|
|
),
|
|
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
'DD-MM-YYYY HH24:MI'),
|
|
p2.prs_perslid_naam
|
|
|| NVL2 (p2.prs_perslid_voorletters,
|
|
', ' || p2.prs_perslid_voorletters,
|
|
'')
|
|
|| NVL2 (p2.prs_perslid_tussenvoegsel,
|
|
' ' || p2.prs_perslid_tussenvoegsel,
|
|
'')
|
|
|| NVL2 (p2.prs_perslid_voornaam,
|
|
' (' || p2.prs_perslid_voornaam || ')',
|
|
'')
|
|
afgemeld_door,
|
|
p.prs_perslid_naam
|
|
|| NVL2 (p.prs_perslid_voorletters,
|
|
', ' || p.prs_perslid_voorletters,
|
|
'')
|
|
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
|
' ' || p.prs_perslid_tussenvoegsel,
|
|
'')
|
|
|| NVL2 (p.prs_perslid_voornaam,
|
|
' (' || p.prs_perslid_voornaam || ')',
|
|
'')
|
|
ingevoerd_door,
|
|
COALESCE (
|
|
sector.prs_afdeling_naam,
|
|
afd.prs_afdeling_naam || '-' || afd.prs_afdeling_omschrijving
|
|
),
|
|
DECODE (
|
|
sector.prs_afdeling_naam,
|
|
NULL,
|
|
NULL,
|
|
afd.prs_afdeling_naam || '-' || afd.prs_afdeling_omschrijving
|
|
),
|
|
u.prs_perslid_naam
|
|
|| NVL2 (u.prs_perslid_voorletters,
|
|
', ' || u.prs_perslid_voorletters,
|
|
'')
|
|
|| NVL2 (u.prs_perslid_tussenvoegsel,
|
|
' ' || u.prs_perslid_tussenvoegsel,
|
|
'')
|
|
|| NVL2 (u.prs_perslid_voornaam,
|
|
' (' || u.prs_perslid_voornaam || ')',
|
|
'')
|
|
uitvoerende,
|
|
u.prs_perslid_key,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud
|
|
WHERE ud.fac_usrtab_key = 21
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (ko1.mld_kenmerkopdr_waarde))
|
|
bijna_incident,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud
|
|
WHERE ud.fac_usrtab_key = 24
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (ko2.mld_kenmerkopdr_waarde))
|
|
risico_klasse,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud, mld_kenmerkmelding km
|
|
WHERE ud.fac_usrtab_key = 2
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (km.mld_kenmerkmelding_waarde)
|
|
AND KM.MLD_KENMERK_KEY = 30
|
|
AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL
|
|
AND KM.MLD_MELDING_KEY = m.mld_melding_key)
|
|
baxter,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud, mld_kenmerkmelding km
|
|
WHERE ud.fac_usrtab_key = 3
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (km.mld_kenmerkmelding_waarde)
|
|
AND KM.MLD_KENMERK_KEY = 31
|
|
AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL
|
|
AND KM.MLD_MELDING_KEY = m.mld_melding_key)
|
|
niet_baxter,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud, mld_kenmerkmelding km
|
|
WHERE ud.fac_usrtab_key = 4
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (km.mld_kenmerkmelding_waarde)
|
|
AND KM.MLD_KENMERK_KEY = 32
|
|
AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL
|
|
AND KM.MLD_MELDING_KEY = m.mld_melding_key)
|
|
voorraadmedicatie,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM fac_usrdata ud, mld_kenmerkmelding km
|
|
WHERE ud.fac_usrtab_key = 5
|
|
AND ud.fac_usrdata_key =
|
|
fac.safe_to_number (km.mld_kenmerkmelding_waarde)
|
|
AND KM.MLD_KENMERK_KEY = 33
|
|
AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL
|
|
AND KM.MLD_MELDING_KEY = m.mld_melding_key)
|
|
overig
|
|
FROM mld_melding m,
|
|
mld_statuses ms,
|
|
mld_stdmelding std,
|
|
ins_tab_discipline d,
|
|
ins_srtdiscipline sd,
|
|
mld_opdr o,
|
|
prs_perslid u,
|
|
mld_kenmerkmelding km1,
|
|
mld_kenmerkopdr ko1,
|
|
mld_kenmerkopdr ko2,
|
|
prs_perslid p,
|
|
prs_afdeling sector,
|
|
prs_afdeling afd,
|
|
prs_perslid p2,
|
|
(SELECT mr.mld_melding_key,
|
|
l.alg_locatie_code || '-' || l.alg_locatie_omschrijving
|
|
loc,
|
|
alg.alg_gebouw_naam bld,
|
|
TO_CHAR (v.alg_verdieping_volgnr) flr,
|
|
r.alg_ruimte_nr room,
|
|
srt.alg_srtruimte_omschrijving roms
|
|
FROM mld_melding mr,
|
|
alg_v_allonrgoed_gegevens alg,
|
|
alg_ruimte r,
|
|
alg_srtruimte srt,
|
|
alg_locatie l,
|
|
alg_verdieping v
|
|
WHERE alg.alg_type = 'R'
|
|
AND alg_onroerendgoed_keys =
|
|
mr.mld_alg_onroerendgoed_keys
|
|
AND alg.alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_srtruimte_key = srt.alg_srtruimte_key(+)
|
|
AND l.alg_locatie_key = alg.alg_locatie_key
|
|
AND alg.alg_verdieping_key = v.alg_verdieping_key
|
|
UNION ALL
|
|
SELECT mr.mld_melding_key,
|
|
l.alg_locatie_code || '-' || l.alg_locatie_omschrijving,
|
|
alg.alg_gebouw_naam,
|
|
TO_CHAR (v.alg_verdieping_volgnr),
|
|
NULL,
|
|
NULL
|
|
FROM mld_melding mr,
|
|
alg_v_allonrgoed_gegevens alg,
|
|
alg_locatie l,
|
|
alg_verdieping v
|
|
WHERE alg.alg_type != 'R'
|
|
AND alg_onroerendgoed_keys =
|
|
mr.mld_alg_onroerendgoed_keys
|
|
AND l.alg_locatie_key = alg.alg_locatie_key
|
|
AND alg.alg_verdieping_key = v.alg_verdieping_key(+)
|
|
UNION ALL
|
|
SELECT mr.mld_melding_key,
|
|
l.alg_locatie_code || '-' || l.alg_locatie_omschrijving,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM mld_melding mr, alg_locatie l
|
|
WHERE mr.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND mr.mld_alg_onroerendgoed_keys IS NULL) alg
|
|
WHERE m.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_afdeling_key = afd.prs_afdeling_key
|
|
AND afd.prs_afdeling_parentkey = sector.prs_afdeling_key(+)
|
|
AND m.mld_melding_key = alg.mld_melding_key
|
|
AND fac.gettrackinguserkey ('MLDAFM', m.mld_melding_key) =
|
|
p2.prs_perslid_key(+)
|
|
AND ms.mld_statuses_key = mld_melding_status
|
|
AND m.mld_melding_key = km1.mld_melding_key(+)
|
|
AND km1.mld_kenmerk_key(+) = 101
|
|
AND m.mld_melding_key = o.mld_melding_key(+)
|
|
AND o.mld_uitvoerende_keys = u.prs_perslid_key(+)
|
|
AND o.mld_opdr_key = ko1.mld_opdr_key(+)
|
|
AND ko1.mld_kenmerk_key(+) = 35
|
|
AND o.mld_opdr_key = ko2.mld_opdr_key(+)
|
|
AND ko2.mld_kenmerk_key(+) = 38
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_key = 1
|
|
AND o.mld_typeopdr_key(+) = 41
|
|
AND COALESCE (o.mld_opdr_key, -1) =
|
|
(SELECT COALESCE (MAX (mld_opdr_key), -1)
|
|
FROM mld_opdr
|
|
WHERE mld_melding_key = m.mld_melding_key);
|
|
|
|
|
|
---------------------------
|
|
-- Incidentele Bestel Aanvragen (IBA's):
|
|
-- Keuze van leverancier via view VIAR_V_IBA_LEVERANCIERS: Tbv domein 'leveranciers' bij verplichte keuze bij IBA waar leverancier moet worden gekozen.
|
|
-- Keuze van BTW percentage via view VIAR_V_IBA_BTWPERC.
|
|
|
|
|
|
CREATE OR REPLACE VIEW viar_v_iba_leveranciers
|
|
(PRS_BEDRIJF_KEY,
|
|
PRS_BEDRIJF_NAAM
|
|
)
|
|
AS
|
|
SELECT prs_bedrijf_key, prs_bedrijf_naam
|
|
FROM prs_bedrijf b
|
|
WHERE B.PRS_BEDRIJF_INTERN IS NULL
|
|
AND B.PRS_BEDRIJF_LEVERANCIER = 1
|
|
AND b.prs_bedrijf_verwijder IS NULL;
|
|
|
|
CREATE OR REPLACE VIEW viar_v_iba_btwperc
|
|
(FIN_BTWTABELWAARDE_KEY,
|
|
FIN_BTWTABELWAARDE_PERC
|
|
)
|
|
AS
|
|
SELECT tw.fin_btwtabelwaarde_key, SUBSTR(' ' || to_char(tw.fin_btwtabelwaarde_perc) || '%', length(tw.fin_btwtabelwaarde_perc))
|
|
FROM fin_btwtabelwaarde tw, fin_btwtabel t
|
|
WHERE t.fin_btwtabel_default=1
|
|
AND t.fin_btwtabel_key = tw.fin_btwtabel_key
|
|
AND t.fin_btwtabel_verwijder IS NULL
|
|
AND tw.fin_btwtabelwaarde_verwijder IS NULL;
|
|
|
|
-- VIAR#32013: Notificatie MIPP BackOffice
|
|
-- Alle leden van de MIPP commissie (personen in de autorisatiegroep MIPP Commisie met key 41) ontvangen een mailnotificatie naar de MIPP-melding (vakgroeptype key = 1)
|
|
-- zodra een opdracht wordt gesloten. Dus ook al staan er nog wat opdrachten open, zodra er 1 wordt gesloten, dan een signaaltje...
|
|
CREATE OR REPLACE VIEW viar_v_noti_mipp_opdr_ready
|
|
(code, sender, receiver, text, key, par1, par2, xkey)
|
|
AS
|
|
SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, p.prs_perslid_key,
|
|
'Opdracht MIPP' || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || ' bij MIPP melding ' || m.mld_melding_key || ' is afgemeld',
|
|
m.mld_melding_key, NULL, NULL, NULL
|
|
FROM fac_gebruikersgroep gg,
|
|
prs_v_aanwezigperslid p,
|
|
fac_groep gr,
|
|
fac_groeprechten grr,
|
|
mld_melding m, mld_stdmelding sm, mld_discipline d, mld_opdr o,
|
|
fac_notificatie_job nj, fac_srtnotificatie sn
|
|
WHERE p.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key = gr.fac_groep_key
|
|
AND gr.FAC_GROEP_KEY = grr.fac_groep_key
|
|
AND GR.FAC_GROEP_KEY = 41
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = 1
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND fac.gettrackingdate('ORDAFM',o.mld_opdr_key) >= nj.fac_notificatie_job_nextrun - nj.fac_notificatie_job_interval / 24
|
|
AND nj.fac_notificatie_job_view = 'VIAR_V_NOTI_MIPP_OPDR_READY'
|
|
AND sn.fac_srtnotificatie_code = 'CUST01';
|
|
|
|
-- VIAR#31661
|
|
CREATE OR REPLACE VIEW VIAR_V_RES_DAGLIJST
|
|
(
|
|
HIDE_F_KEY,
|
|
RESNR,
|
|
FCLT_F_RUIMTE,
|
|
FCLT_F_DATUM,
|
|
VAN,
|
|
TOT,
|
|
ACTIVITEIT,
|
|
OMSCHRIJVING,
|
|
GASTHEER_VROUW,
|
|
AANTAL_PERS,
|
|
OPSTELLING,
|
|
VOORZIENING
|
|
)
|
|
AS
|
|
SELECT rrr.res_rsv_ruimte_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr Resnr,
|
|
r2a.ruimte_nr,
|
|
TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') Datum,
|
|
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24.MI') Van,
|
|
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24.MI') Tot,
|
|
ra.res_activiteit_omschrijving Activiteit,
|
|
rrr.res_rsv_ruimte_omschrijving Omschrijving,
|
|
pf.prs_perslid_naam_full Gastheer_vrouw,
|
|
rrr.res_rsv_ruimte_bezoekers pers,
|
|
r2a.opstelling,
|
|
voorzieningen
|
|
FROM res_v_aanwezigrsv_ruimte rrr,
|
|
alg_gebouw g,
|
|
alg_verdieping v,
|
|
alg_ruimte r,
|
|
res_activiteit ra,
|
|
prs_v_perslid_fullnames pf,
|
|
( SELECT res_rsv_ruimte_key,
|
|
LISTAGG (voorziening, CHR (13) || CHR (10))
|
|
WITHIN GROUP (ORDER BY voorziening)
|
|
AS Voorzieningen
|
|
FROM (SELECT res_rsv_ruimte_key,
|
|
res_deel_omschrijving voorziening
|
|
FROM res_deel rd, res_rsv_deel rrd
|
|
WHERE RES_RSV_DEEL_verwijder IS NULL
|
|
AND rd.res_deel_key = rrd.res_deel_key
|
|
UNION ALL
|
|
SELECT res_rsv_ruimte_key,
|
|
rra.res_rsv_artikel_aantal
|
|
|| ' * '
|
|
|| res_artikel_omschrijving
|
|
voorziening
|
|
FROM res_artikel ra, res_rsv_artikel rra
|
|
WHERE RES_RSV_artikel_verwijder IS NULL
|
|
AND ra.res_artikel_key = rra.res_artikel_key)
|
|
GROUP BY res_rsv_ruimte_key) voorz,
|
|
( SELECT res_ruimte_opstel_key,
|
|
MAX (o.res_opstelling_omschrijving) opstelling,
|
|
MAX (ra.alg_ruimte_key) alg_ruimte_key,
|
|
MAX (rr.res_ruimte_nr) ruimte_nr
|
|
FROM res_ruimte_opstelling ro,
|
|
res_opstelling o,
|
|
res_ruimte rr,
|
|
res_alg_ruimte ra
|
|
WHERE ro.res_ruimte_key = rr.res_ruimte_key
|
|
AND ro.res_opstelling_key = o.res_opstelling_key
|
|
AND rr.res_ruimte_key = ra.res_ruimte_key
|
|
GROUP BY res_ruimte_opstel_key) r2a
|
|
WHERE rrr.res_ruimte_opstel_key = r2a.res_ruimte_opstel_key
|
|
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE)
|
|
AND TRUNC (SYSDATE + 4)
|
|
AND r.alg_ruimte_key = r2a.alg_ruimte_key
|
|
AND r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = g.alg_gebouw_key
|
|
AND ra.res_activiteit_key = rrr.res_activiteit_key
|
|
AND pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
|
|
AND voorz.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key;
|
|
|
|
|
|
|
|
|
|
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
|
/
|
|
|
|
BEGIN fac.registercustversion('VIAR', 8); END;
|
|
/
|
|
|
|
commit;
|
|
|
|
spool off
|