diff --git a/ALLV/allv.sql b/ALLV/allv.sql
index 92fe14da5..93c68532e 100644
--- a/ALLV/allv.sql
+++ b/ALLV/allv.sql
@@ -1,5 +1,5 @@
--- Script containing customer specific configuration sql statements for ALLV: Allévo/Allité.
--- (c) 2007 Dijkoraad IT bv
+-- Script containing customer specific db-configuration for ALLV.
+-- (c) 2007 SG|facilitor bv
-- $Revision$
-- $Id$
--
@@ -8,6 +8,1600 @@
spool xallv.lst
set echo on
+/* Formatted on 29-3-2013 20:52:02 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE VIEW allv_v_rap_import_log
+AS
+ SELECT imp_log_status fclt_f_status,
+ imp_log_omschrijving omschrijving,
+ imp_log_hint opmerking
+ FROM imp_log l
+ WHERE l.fac_import_key = (SELECT MAX (fac_import_key)
+ FROM fac_import
+ WHERE fac_import_app_key = 421);
+
+/* Formatted on 29-3-2013 20:52:02 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE PROCEDURE allv_import_prs (p_import_key IN NUMBER)
+IS
+ c_fielddelimitor VARCHAR2 (1) := ';';
+ 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;
+ -- De importvelden:
+ v_prs_perslid_nr VARCHAR2 (256);
+ v_prs_perslid_naam VARCHAR2 (256);
+ v_prs_perslid_tussenvoegsel VARCHAR2 (256);
+ v_prs_perslid_voorletters VARCHAR2 (256);
+ v_prs_perslid_voornaam VARCHAR2 (256);
+ v_prs_perslid_geslacht VARCHAR2 (256);
+ --v_prs_afdeling_naam VARCHAR2 (256);
+ --v_prs_afdeling_omschrijving VARCHAR2 (256);
+ v_prs_kostenplaats_nr VARCHAR2 (256);
+ v_prs_srtperslid_omschrijving VARCHAR2 (256);
+ --v_alg_locatie_code VARCHAR2 (256);
+ v_alg_gebouw_code VARCHAR2 (256);
+ --v_alg_verdieping_code VARCHAR2 (256);
+ v_alg_ruimte_nr 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);
+ v_prs_perslid_ingangsdatum VARCHAR2 (256);
+ v_prs_perslid_einddatum VARCHAR2 (256);
+ -- Overig:
+ v_prs_perslid_ingangs_date DATE;
+ v_prs_perslid_eind_date DATE;
+
+ CURSOR c1
+ IS
+ SELECT *
+ FROM fac_imp_file
+ WHERE fac_import_key = p_import_key
+ ORDER BY fac_imp_file_index;
+BEGIN
+ DELETE FROM allv_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
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
+ -- 02
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
+ -- 03
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
+ -- 04
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
+ -- 05
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
+ -- 06
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_geslacht);
+ -- xx
+ --fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
+ -- xx
+ --fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_omschrijving);
+ -- 07
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_nr);
+ -- 09
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
+ -- xx
+ --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
+ -- 10
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
+ -- xx
+ --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_verdieping_code);
+ -- 11
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
+ -- 12
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
+ -- 13
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
+ -- 14
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
+ -- 15
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
+ -- 16
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_ingangsdatum);
+ -- 18
+ fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_einddatum);
+ --
+ v_aanduiding :=
+ '['
+ || v_prs_perslid_nr
+ || '|'
+ || v_prs_perslid_naam
+ || '|'
+ || v_prs_perslid_tussenvoegsel
+ || '|'
+ || v_prs_perslid_voornaam
+ || '] ';
+
+ -- 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_nr) = 'PERSONEELSNUMMER'
+ AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
+ AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
+ AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
+ AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
+ AND UPPER (v_prs_perslid_geslacht) = 'GESLACHT'
+ --AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
+ --AND UPPER (v_prs_afdeling_omschrijving) = 'AFDELINGSOMSCHRIJVING'
+ AND UPPER (v_prs_kostenplaats_nr) = 'KOSTENPLAATSNUMMER'
+ AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
+ --AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
+ AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
+ --AND UPPER (v_alg_verdieping_code) = 'BOUWLAAGVOLGNUMMER'
+ AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
+ AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
+ AND UPPER (v_prs_perslid_mobiel) = 'MOBIEL'
+ AND UPPER (v_prs_perslid_email) = 'EMAIL'
+ AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
+ AND UPPER (v_prs_perslid_ingangsdatum) = 'INDIENSTDATUM'
+ AND UPPER (v_prs_perslid_einddatum) = 'UITDIENSTDATUM')
+ THEN
+ header_is_valid := 1;
+ END IF;
+ ELSE
+ v_count_tot := v_count_tot + 1;
+ -- Controleer alle veldwaarden
+ v_errorhint := 'Ongeldig personeelsnummer';
+ v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
+
+ IF (v_prs_perslid_nr IS NULL OR LENGTH (v_prs_perslid_nr) > 16)
+ THEN
+ v_ongeldig := 1;
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Personeelsnummer onbekend/te lang',
+ 'Personeelsnummer verplicht; regel wordt overgeslagen!'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldige achternaam';
+ 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 || 'Achternaam te lang',
+ 'Achternaam wordt afgebroken tot ['
+ || v_prs_perslid_naam
+ || ']'
+ );
+ COMMIT;
+ ELSIF (v_prs_perslid_naam IS NULL)
+ THEN
+ v_ongeldig := 1;
+ fac.imp_writelog (
+ p_import_key,
+ 'E',
+ v_aanduiding || 'Achternaam onbekend',
+ 'Achternaam verplicht; regel wordt overgeslagen!'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldig tussenvoegsel';
+ v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
+
+ IF (LENGTH (v_prs_perslid_tussenvoegsel) > 10)
+ THEN
+ v_prs_perslid_tussenvoegsel :=
+ SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
+ 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 te lang',
+ 'Voornaam wordt afgebroken tot ['
+ || v_prs_perslid_voornaam
+ || ']'
+ );
+ COMMIT;
+ ELSIF (v_prs_perslid_voornaam IS NULL)
+ THEN
+ v_prs_perslid_voornaam := '-';
+ fac.imp_writelog (p_import_key,
+ 'W',
+ v_aanduiding || 'Voornaam onbekend',
+ 'Voornaam wordt gezet op [-]');
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldig geslacht';
+ v_prs_perslid_geslacht := TRIM (v_prs_perslid_geslacht);
+
+ IF (LENGTH (v_prs_perslid_geslacht) > 1)
+ THEN
+ v_prs_perslid_geslacht := NULL;
+ fac.imp_writelog (p_import_key,
+ 'W',
+ v_aanduiding || 'Geslacht te lang',
+ 'Geslacht wordt niet gezet');
+ COMMIT;
+ END IF;
+
+ /*
+ --
+ v_errorhint := 'Ongeldige afdelingscode';
+ v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
+
+ IF (v_prs_afdeling_naam IS NULL OR LENGTH (v_prs_afdeling_naam) > 10)
+ THEN
+ v_ongeldig := 1;
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Afdelingscode onbekend/te lang',
+ 'Afdelingscode verplicht; regel wordt overgeslagen!'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldige afdelingsomschrijving';
+ v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
+
+ IF (LENGTH (v_prs_afdeling_omschrijving) > 60)
+ THEN
+ v_prs_afdeling_omschrijving :=
+ SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Afdelingsomschrijving te lang',
+ 'Afdelingsomschrijving wordt afgebroken tot ['
+ || v_prs_afdeling_omschrijving
+ || ']'
+ );
+ COMMIT;
+ END IF;
+ */
+ --
+ v_errorhint := 'Ongeldig kostenplaatsnummer';
+ v_prs_kostenplaats_nr := TRIM (v_prs_kostenplaats_nr);
+
+ IF (v_prs_kostenplaats_nr IS NULL
+ OR LENGTH (v_prs_kostenplaats_nr) > 30)
+ THEN
+ v_ongeldig := 1;
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Kostenplaatsnummer onbekend/te lang',
+ 'Kostenplaatsnummer verplicht; regel wordt overgeslagen!'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ 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
+ || ']'
+ );
+ COMMIT;
+ ELSIF (v_prs_srtperslid_omschrijving IS NULL)
+ THEN
+ v_prs_srtperslid_omschrijving := 'Onbekend';
+ fac.imp_writelog (p_import_key,
+ 'W',
+ v_aanduiding || 'Functie onbekend',
+ 'Functie wordt gezet op [Onbekend]');
+ COMMIT;
+ END IF;
+
+ /*
+ --
+ v_errorhint := 'Ongeldige locatiecode';
+ v_alg_locatie_code := TRIM (v_alg_locatie_code);
+
+ IF (LENGTH (v_alg_locatie_code) > 10)
+ THEN
+ v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
+ 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 gebouwcode';
+ v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
+
+ IF (LENGTH (v_alg_gebouw_code) > 12)
+ THEN
+ v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
+ 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 := 'Ongeldige verdiepingcode';
+ v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
+
+ IF (LENGTH (v_alg_verdieping_code) > 10)
+ THEN
+ v_alg_verdieping_code := SUBSTR (v_alg_verdieping_code, 1, 10);
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Verdiepingcode te lang',
+ 'Verdiepingcode wordt afgebroken tot ['
+ || v_alg_verdieping_code
+ || ']'
+ );
+ COMMIT;
+ END IF;
+ */
+ --
+ v_errorhint := 'Ongeldig ruimtenummer';
+ v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
+
+ IF (LENGTH (v_alg_ruimte_nr) > 10)
+ THEN
+ v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
+ fac.imp_writelog (
+ p_import_key,
+ 'W',
+ v_aanduiding || 'Ruimtenummer te lang',
+ 'Ruimtenummer wordt afgebroken tot ['
+ || v_alg_ruimte_nr
+ || ']'
+ );
+ 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;
+
+ --
+ v_errorhint := 'Ongeldig mobielnummer';
+ 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 || 'Mobielnummer te lang',
+ 'Mobielnummer wordt afgebroken tot ['
+ || v_prs_perslid_mobiel
+ || ']'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldig e-mailadres';
+ v_prs_perslid_email := TRIM (v_prs_perslid_email);
+
+ IF (LENGTH (v_prs_perslid_email) > 50)
+ THEN
+ v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
+ 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 := 'Ongeldige 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
+ || ']'
+ );
+ COMMIT;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldige datum in dienst';
+ v_prs_perslid_ingangsdatum := TRIM (v_prs_perslid_ingangsdatum);
+
+ IF (v_prs_perslid_ingangsdatum IS NOT NULL)
+ THEN
+ BEGIN
+ v_prs_perslid_ingangs_date :=
+ TO_DATE (v_prs_perslid_ingangsdatum, 'dd-mm-yyyy');
+ EXCEPTION
+ WHEN OTHERS
+ THEN
+ v_ongeldig := 1;
+ 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,
+ 'Regel wordt overgeslagen!');
+ COMMIT;
+ END;
+ ELSE
+ v_prs_perslid_ingangs_date := NULL;
+ END IF;
+
+ --
+ v_errorhint := 'Ongeldige datum uit dienst';
+ v_prs_perslid_einddatum := TRIM (v_prs_perslid_einddatum);
+
+ IF (v_prs_perslid_einddatum IS NOT NULL)
+ THEN
+ BEGIN
+ v_prs_perslid_eind_date :=
+ TO_DATE (v_prs_perslid_einddatum, 'dd-mm-yyyy');
+ EXCEPTION
+ WHEN OTHERS
+ THEN
+ v_ongeldig := 1;
+ 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,
+ 'Regel wordt overgeslagen!');
+ COMMIT;
+ END;
+ ELSE
+ v_prs_perslid_eind_date := NULL;
+ END IF;
+
+ -- Insert geformatteerde import record
+ IF (v_ongeldig = 0)
+ THEN
+ BEGIN
+ v_errorhint :=
+ 'Fout bij toevoegen regel aan importtabel ALLV_IMP_PRS';
+
+ INSERT INTO allv_imp_prs (
+ imp_datum,
+ prs_perslid_nr,
+ prs_perslid_naam,
+ prs_perslid_tussenvoegsel,
+ prs_perslid_voorletters,
+ prs_perslid_voornaam,
+ prs_perslid_geslacht,
+ --prs_afdeling_naam,
+ --prs_afdeling_omschrijving,
+ prs_kostenplaats_nr,
+ prs_srtperslid_omschrijving,
+ --alg_locatie_code,
+ alg_gebouw_code,
+ --alg_verdieping_code,
+ alg_ruimte_nr,
+ prs_perslid_telefoonnr,
+ prs_perslid_mobiel,
+ prs_perslid_email,
+ prs_perslid_oslogin,
+ prs_perslid_ingangsdatum,
+ prs_perslid_einddatum
+ )
+ VALUES (
+ SYSDATE,
+ v_prs_perslid_nr,
+ v_prs_perslid_naam,
+ v_prs_perslid_tussenvoegsel,
+ v_prs_perslid_voorletters,
+ v_prs_perslid_voornaam,
+ DECODE (v_prs_perslid_geslacht,
+ '2', 1,
+ '1', 0,
+ NULL),
+ --v_prs_afdeling_naam,
+ --v_prs_afdeling_omschrijving,
+ v_prs_kostenplaats_nr,
+ v_prs_srtperslid_omschrijving,
+ --v_alg_locatie_code,
+ v_alg_gebouw_code,
+ --v_alg_verdieping_code,
+ v_alg_ruimte_nr,
+ v_prs_perslid_telefoonnr,
+ v_prs_perslid_mobiel,
+ v_prs_perslid_email,
+ v_prs_perslid_oslogin,
+ v_prs_perslid_ingangs_date,
+ v_prs_perslid_eind_date
+ );
+
+ 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/#ingelezen regels: ' || TO_CHAR (v_count_tot),
+ ''
+ );
+ fac.imp_writelog (
+ p_import_key,
+ 'S',
+ 'Persoon/#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, 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 allv_import_prs;
+/
+
+/* Formatted on 1-7-2013 12:35:25 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE PROCEDURE allv_update_prs (p_import_key IN NUMBER)
+IS
+ c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
+ -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
+ 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_groep_upper VARCHAR2 (30) := '_DEFAULT';
+ c_profiel_omschrijving VARCHAR2 (30) := 'DEFAULT';
+ v_aanduiding VARCHAR2 (200);
+ v_errorhint VARCHAR2 (1000);
+ v_errormsg VARCHAR2 (1000);
+ oracle_err_num NUMBER;
+ oracle_err_mes VARCHAR2 (200);
+ v_count_prs_import NUMBER (10); -- #actieve personen na import!
+ v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
+ 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_kostenplaats_key NUMBER (10);
+ v_srtperslid_key NUMBER (10);
+ --v_locatie_key NUMBER (10);
+ v_gebouw_key NUMBER (10);
+ v_gebouw_code VARCHAR2 (12);
+ --v_verdieping_key NUMBER (10);
+ v_ruimte_key NUMBER (10);
+ v_ruimte_nr VARCHAR2 (10);
+ v_wp_volgnr NUMBER (3);
+ v_wp_oms VARCHAR2 (30);
+ v_wp_key NUMBER (10);
+ v_groep_key NUMBER (10);
+ v_profiel_key NUMBER (10);
+
+ -- Let op! Personen die niet meer in dienst zijn -> niet in allv_imp_prs!
+ -- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
+ CURSOR cdelprs
+ IS
+ SELECT p.prs_perslid_key,
+ p.prs_perslid_nr,
+ p.prs_perslid_naam,
+ p.prs_perslid_voornaam
+ FROM prs_v_aanwezigperslid p
+ WHERE p.prs_perslid_nr IS NOT NULL
+ --AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\'
+ AND NOT EXISTS
+ (SELECT 1
+ FROM allv_imp_prs ip
+ WHERE UPPER (ip.prs_perslid_nr) =
+ UPPER (p.prs_perslid_nr));
+
+ -- Let op! Personen die niet meer in dienst zijn -> niet in allv_imp_prs!
+ CURSOR csrtperslid
+ IS
+ SELECT MIN (prs_perslid_nr) prs_perslid_nr,
+ MIN (prs_perslid_naam) prs_perslid_naam,
+ MIN (prs_perslid_voornaam) prs_perslid_voornaam,
+ MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
+ FROM allv_imp_prs
+ GROUP BY UPPER (prs_srtperslid_omschrijving);
+
+ -- Let op! Personen die niet meer in dienst zijn -> niet in allv_imp_prs!
+ -- Dubbele nummers? Dan wordt slechts 1 set persoongegevens toegevoegd!
+ -- Ook wordt in deze loop de afdelingsomschrijving eventueel bijgewerkt!
+ CURSOR cperslid
+ IS
+ SELECT * FROM allv_imp_prs;
+
+ -- Let op! Personen die niet meer in dienst zijn -> niet in allv_imp_prs!
+ -- Dubbele nummers? Dan krijgt iemand mogelijk de verkeerde plaats!
+ CURSOR cwp
+ IS
+ SELECT p.*, ip.alg_gebouw_code, ip.alg_ruimte_nr
+ FROM allv_imp_prs ip, prs_v_aanwezigperslid p
+ WHERE UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr)
+ AND (ip.alg_gebouw_code IS NOT NULL
+ OR ip.alg_ruimte_nr IS NOT NULL);
+
+ -- Alle actieve personen met nummer (ie. de import-doelgroep) zonder een werkplek
+ CURSOR cnowp
+ IS
+ SELECT p.prs_perslid_key,
+ p.prs_perslid_nr,
+ p.prs_perslid_naam,
+ p.prs_perslid_voornaam
+ FROM prs_v_aanwezigperslid p
+ WHERE p.prs_perslid_nr IS NOT NULL
+ AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
+ AND NOT EXISTS
+ (SELECT 1
+ FROM prs_v_aanwezigperslidwerkplek pw
+ WHERE pw.prs_perslid_key = p.prs_perslid_key);
+
+ -- Alle aanwezige personen met nummer (ie. de import-doelgroep) niet in een groep
+ CURSOR cnogroup
+ IS
+ SELECT p.prs_perslid_key,
+ p.prs_perslid_nr,
+ p.prs_perslid_naam,
+ p.prs_perslid_voornaam
+ FROM prs_v_aanwezigperslid p
+ WHERE p.prs_perslid_nr IS NOT NULL
+ AND NOT EXISTS
+ (SELECT 1
+ FROM fac_gebruikersgroep g
+ WHERE g.prs_perslid_key = p.prs_perslid_key);
+BEGIN
+ -- Bepaal nummer-match tussen Facilitor en RECENT importbestand ofwel het aantal
+ -- actieve personen na import.
+ -- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
+ -- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
+ -- worden gerapporteerd (nl. op basis van een oud importbestand in ALLV_IMP_PRS).
+ SELECT COUNT ( * )
+ INTO v_count_prs_import
+ FROM prs_v_aanwezigperslid p, allv_imp_prs ip
+ WHERE p.prs_perslid_nr IS NOT NULL
+ AND UPPER (p.prs_perslid_nr) = UPPER (ip.prs_perslid_nr)
+ AND (ip.imp_datum + 0.01) > SYSDATE;
+
+ -- Bepaal huidig aantal actieve personen in Facilitor.
+ SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
+ INTO v_count_prs_actual
+ FROM prs_v_aanwezigperslid
+ WHERE prs_perslid_nr IS NOT NULL;
+
+ IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
+ (100 - c_max_delta_percentage)))
+ THEN
+ -- Geldig importbestand wat betreft aantal personen
+ v_errorhint := 'Fout bij bepalen profiel';
+
+ SELECT MAX (fac_profiel_key), COUNT ( * )
+ INTO v_profiel_key, v_count
+ FROM fac_profiel
+ WHERE UPPER (TRIM (fac_profiel_omschrijving)) =
+ c_profiel_omschrijving;
+
+ IF (v_count = 0)
+ THEN
+ fac.imp_writelog (
+ p_import_key,
+ 'I',
+ 'Standaard profiel ['
+ || c_profiel_omschrijving
+ || '] niet gevonden.',
+ 'Personen zonder profiel kunnen niet worden gekoppeld aan een profiel.'
+ );
+ COMMIT;
+ END IF;
+
+ FOR recdelprs IN cdelprs
+ LOOP
+ BEGIN
+ v_aanduiding :=
+ recdelprs.prs_perslid_nr
+ || '|'
+ || recdelprs.prs_perslid_naam
+ || '|'
+ || recdelprs.prs_perslid_voornaam
+ || ' - ';
+ v_errorhint := 'Fout bij bepalen verplichtingen';
+
+ -- 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_nr
+ || '] en naam ['
+ || recdelprs.prs_perslid_naam
+ || ', '
+ || recdelprs.prs_perslid_voornaam
+ || '] is verwijderd',
+ 'Persoon is verwijderd'
+ );
+ COMMIT;
+ ELSE
+ -- Staat persoon INACTIEF?
+ v_errorhint := 'Fout bij bepalen 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 maken persoon';
+
+ -- Persoon INACTIEF maken (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_nr
+ || '] en naam ['
+ || recdelprs.prs_perslid_naam
+ || ', '
+ || recdelprs.prs_perslid_voornaam
+ || '] is INACTIEF gemaakt',
+ 'Persoon is INACTIEF gemaakt'
+ );
+ ELSE
+ v_errorhint := 'Fout bij INACTIEF houden persoon';
+
+ -- Persoon INACTIEF houden (reset oslogin; indien handmatig INACTIEF gemaakt)
+ 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_nr
+ || '] en naam ['
+ || recdelprs.prs_perslid_naam
+ || ', '
+ || recdelprs.prs_perslid_voornaam
+ || '] is INACTIEF',
+ 'Persoon is INACTIEF'
+ );
+ 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_aanduiding || v_errormsg,
+ v_errorhint);
+ COMMIT;
+ END;
+ END LOOP;
+
+ v_count_tot := 0;
+ v_count_error := 0;
+
+ FOR recsrtperslid IN csrtperslid
+ LOOP
+ BEGIN
+ v_count_tot := v_count_tot + 1;
+ v_aanduiding :=
+ recsrtperslid.prs_perslid_nr
+ || '|'
+ || recsrtperslid.prs_perslid_naam
+ || '|'
+ || recsrtperslid.prs_perslid_voornaam
+ || '|'
+ || recsrtperslid.prs_srtperslid_omschrijving
+ || ' - ';
+ v_errorhint := 'Fout bij bepalen functie';
+
+ SELECT COUNT ( * )
+ INTO v_count
+ FROM prs_v_aanwezigsrtperslid
+ WHERE UPPER (prs_srtperslid_omschrijving) =
+ UPPER (recsrtperslid.prs_srtperslid_omschrijving);
+
+ IF (v_count = 0)
+ THEN
+ v_errorhint := 'Fout bij toevoegen functie';
+
+ INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
+ VALUES (recsrtperslid.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_nr
+ || '|'
+ || recperslid.prs_perslid_naam
+ || '|'
+ || recperslid.prs_perslid_voornaam
+ || ' - ';
+ v_errorhint :=
+ 'Fout bij bepalen functie ['
+ || recperslid.prs_srtperslid_omschrijving
+ || ']';
+
+ SELECT prs_srtperslid_key
+ INTO v_srtperslid_key
+ FROM prs_v_aanwezigsrtperslid
+ WHERE UPPER (prs_srtperslid_omschrijving) =
+ UPPER (recperslid.prs_srtperslid_omschrijving);
+
+ v_errorhint :=
+ 'Fout bij bepalen afdeling met kostenplaats ['
+ || recperslid.prs_kostenplaats_nr
+ || ']';
+
+ SELECT a1.prs_afdeling_key
+ INTO v_afdeling_key
+ FROM prs_v_aanwezigafdeling a1, prs_v_aanwezigkostenplaats k1
+ WHERE a1.prs_kostenplaats_key = k1.prs_kostenplaats_key
+ AND k1.prs_kostenplaats_upper =
+ UPPER (recperslid.prs_kostenplaats_nr)
+ AND NOT EXISTS
+ (SELECT 1
+ FROM prs_v_aanwezigafdeling a2,
+ prs_v_aanwezigkostenplaats k2
+ WHERE a2.prs_kostenplaats_key =
+ k2.prs_kostenplaats_key
+ AND k2.prs_kostenplaats_upper =
+ UPPER (
+ recperslid.prs_kostenplaats_nr
+ )
+ AND a2.prs_afdeling_key >
+ a1.prs_afdeling_key);
+
+ --v_errorhint :=
+ -- 'Fout bij wijzigen afdelingsomschrijving ['
+ -- || recperslid.prs_afdeling_naam
+ -- || '|'
+ -- || recperslid.prs_afdeling_omschrijving
+ -- || ']';
+
+ --UPDATE prs_afdeling
+ -- SET prs_afdeling_omschrijving =
+ -- COALESCE (recperslid.prs_afdeling_omschrijving,
+ -- prs_afdeling_omschrijving)
+ -- WHERE prs_afdeling_key = v_afdeling_key;
+
+ --COMMIT;
+
+ v_errorhint := 'Fout bij bepalen persoon';
+
+ SELECT COUNT ( * ), MAX (prs_perslid_key)
+ INTO v_count, v_perslid_key
+ FROM prs_v_aanwezigperslid
+ WHERE UPPER (prs_perslid_nr) =
+ UPPER (recperslid.prs_perslid_nr);
+
+ IF (v_count > 1)
+ THEN
+ fac.imp_writelog (p_import_key,
+ 'W',
+ v_aanduiding || v_errorhint,
+ 'Kan persoon niet 1-duidig bepalen!');
+ ELSIF (v_count = 0)
+ THEN
+ v_errorhint := 'Fout bij toevoegen persoon';
+
+ INSERT INTO prs_perslid (
+ prs_perslid_module,
+ prs_srtperslid_key,
+ prs_afdeling_key,
+ prs_perslid_nr,
+ prs_perslid_naam,
+ prs_perslid_tussenvoegsel,
+ prs_perslid_voorletters,
+ prs_perslid_voornaam,
+ prs_perslid_geslacht,
+ --prs_perslid_telefoonnr,
+ --prs_perslid_mobiel,
+ prs_perslid_email,
+ prs_perslid_oslogin,
+ prs_perslid_ingangsdatum,
+ prs_perslid_einddatum,
+ fac_profiel_key
+ )
+ VALUES (
+ 'PRS',
+ v_srtperslid_key,
+ v_afdeling_key,
+ recperslid.prs_perslid_nr,
+ recperslid.prs_perslid_naam,
+ recperslid.prs_perslid_tussenvoegsel,
+ recperslid.prs_perslid_voorletters,
+ recperslid.prs_perslid_voornaam,
+ recperslid.prs_perslid_geslacht,
+ --recperslid.prs_perslid_telefoonnr,
+ --recperslid.prs_perslid_mobiel,
+ recperslid.prs_perslid_email,
+ recperslid.prs_perslid_oslogin,
+ COALESCE (recperslid.prs_perslid_ingangsdatum,
+ SYSDATE),
+ recperslid.prs_perslid_einddatum,
+ v_profiel_key
+ )
+ RETURNING prs_perslid_key INTO v_perslid_key;
+ ELSE
+ v_errorhint := 'Fout bij wijzigen persoon';
+
+ UPDATE prs_perslid
+ SET prs_srtperslid_key = v_srtperslid_key,
+ prs_afdeling_key = v_afdeling_key,
+ prs_perslid_naam = recperslid.prs_perslid_naam,
+ prs_perslid_tussenvoegsel =
+ recperslid.prs_perslid_tussenvoegsel,
+ prs_perslid_voorletters =
+ recperslid.prs_perslid_voorletters,
+ prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
+ prs_perslid_geslacht = recperslid.prs_perslid_geslacht,
+ --prs_perslid_telefoonnr =
+ -- recperslid.prs_perslid_telefoonnr,
+ --prs_perslid_mobiel = recperslid.prs_perslid_mobiel,
+ --prs_perslid_email = recperslid.prs_perslid_email,
+ prs_perslid_email =
+ COALESCE (prs_perslid_email,
+ recperslid.prs_perslid_email),
+ prs_perslid_oslogin =
+ COALESCE (prs_perslid_oslogin,
+ recperslid.prs_perslid_oslogin),
+ prs_perslid_ingangsdatum =
+ COALESCE (recperslid.prs_perslid_ingangsdatum,
+ prs_perslid_ingangsdatum),
+ prs_perslid_einddatum =
+ recperslid.prs_perslid_einddatum,
+ fac_profiel_key =
+ COALESCE (fac_profiel_key, v_profiel_key)
+ WHERE prs_perslid_key = v_perslid_key;
+ END IF;
+
+ COMMIT;
+ 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_nr
+ || '|'
+ || recwp.prs_perslid_naam
+ || '|'
+ || recwp.prs_perslid_voornaam
+ || '|'
+ --|| recwp.alg_locatie_code
+ --|| '|'
+ || recwp.alg_gebouw_code
+ || '|'
+ --|| recwp.alg_verdieping_code
+ --|| '|'
+ || recwp.alg_ruimte_nr
+ || ' - ';
+ v_errorhint := 'Fout bij bepalen persoon';
+
+ SELECT prs_perslid_key
+ INTO v_perslid_key
+ FROM prs_v_aanwezigperslid
+ WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
+
+ --v_locatie_key := NULL;
+ v_gebouw_key := NULL;
+ --v_verdieping_key := NULL;
+ v_ruimte_key := NULL;
+
+ --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 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 UPPER (alg_verdieping_code) =
+ -- UPPER (recwp.alg_verdieping_code)
+ -- AND alg_gebouw_key = v_gebouw_key;
+
+ v_errorhint := 'Fout bij bepalen beoogde ruimte in gebouw';
+
+ SELECT COUNT ( * )
+ INTO v_count
+ FROM alg_v_aanwezigruimte r, alg_verdieping v
+ WHERE r.alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr)
+ AND r.alg_verdieping_key = v.alg_verdieping_key
+ AND v.alg_gebouw_key = v_gebouw_key;
+
+ IF (v_count <> 1)
+ THEN
+ v_errorhint := 'Fout bij bepalen default ruimte in gebouw';
+
+ SELECT r.alg_ruimte_key
+ INTO v_ruimte_key
+ FROM alg_v_aanwezigruimte r, alg_verdieping v
+ WHERE r.alg_ruimte_upper_nr = c_ruimte_nr
+ AND r.alg_verdieping_key = v.alg_verdieping_key
+ AND v.alg_gebouw_key = v_gebouw_key;
+ ELSE
+ SELECT r.alg_ruimte_key
+ INTO v_ruimte_key
+ FROM alg_v_aanwezigruimte r, alg_verdieping v
+ WHERE r.alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr)
+ AND r.alg_verdieping_key = v.alg_verdieping_key
+ AND v.alg_gebouw_key = v_gebouw_key;
+ END IF;
+
+ v_errorhint :=
+ 'Fout bij bepalen of persoon in gebouw een werkplek heeft';
+
+ SELECT COUNT ( * )
+ INTO v_count
+ FROM prs_v_aanwezigperslidwerkplek pw,
+ prs_werkplek w,
+ alg_ruimte r,
+ alg_verdieping v
+ WHERE pw.prs_perslid_key = v_perslid_key
+ AND pw.prs_werkplek_key = w.prs_werkplek_key
+ AND w.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;
+
+ -- Als persoon in gebouw reeds een werkplek heeft en de nieuwe zou
+ -- in de default ruimte zijn (want ongedefinieerd bij import!), dan
+ -- wordt onderstaande overgeslagen.
+ IF (v_count = 0 OR recwp.alg_ruimte_nr != c_ruimte_nr)
+ THEN
+ v_errorhint := 'Fout bij bepalen of werkplek is gewijzigd';
+
+ SELECT COUNT ( * )
+ INTO v_count
+ FROM prs_v_aanwezigperslidwerkplek pw, prs_werkplek w
+ WHERE pw.prs_perslid_key = v_perslid_key
+ AND pw.prs_werkplek_key = w.prs_werkplek_key
+ AND w.prs_alg_ruimte_key = v_ruimte_key;
+
+ IF v_count = 0
+ THEN
+ v_errorhint :=
+ 'Fout bij verwijderen oude werkplek(ken) in gebouw';
+
+ UPDATE prs_perslidwerkplek
+ SET prs_perslidwerkplek_verwijder = SYSDATE
+ WHERE prs_perslidwerkplek_key IN
+ (SELECT pw.prs_perslidwerkplek_key
+ FROM prs_v_aanwezigperslidwerkplek pw,
+ prs_werkplek w,
+ alg_ruimte r,
+ alg_verdieping v
+ WHERE pw.prs_perslid_key = v_perslid_key
+ AND pw.prs_werkplek_key =
+ w.prs_werkplek_key
+ AND w.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);
+
+ -- Persoon krijgt wp op de hierboven eerder bepaalde ruimte.
+ v_errorhint := 'Fout bij bepalen vrije werkplek';
+
+ SELECT COUNT ( * )
+ INTO v_count
+ FROM prs_v_aanwezigwerkplek w
+ WHERE w.prs_alg_ruimte_key = v_ruimte_key
+ AND NOT EXISTS
+ (SELECT 1
+ FROM prs_v_aanwezigperslidwerkplek 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_v_aanwezigwerkplek w
+ WHERE w.prs_alg_ruimte_key = v_ruimte_key
+ AND NOT EXISTS
+ (SELECT 1
+ FROM prs_v_aanwezigperslidwerkplek pw
+ WHERE pw.prs_werkplek_key =
+ w.prs_werkplek_key);
+
+ -- Verwijder (keihard) de mogelijk eerder logisch verwijderde
+ -- koppeling tussen dezelfde persoon en werkplek!!!
+ DELETE FROM prs_perslidwerkplek pw
+ WHERE pw.prs_perslid_key = v_perslid_key
+ AND pw.prs_werkplek_key = v_wp_key
+ AND pw.prs_perslidwerkplek_verwijder IS NOT NULL;
+
+ 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 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 := v_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
+ v_errorhint := 'Fout bij toevoegen nieuwe werkplek';
+
+ INSERT INTO prs_werkplek (prs_werkplek_module,
+ prs_werkplek_volgnr,
+ prs_werkplek_omschrijving,
+ prs_alg_ruimte_key)
+ VALUES ('PRR',
+ v_wp_volgnr,
+ v_wp_oms,
+ v_ruimte_key)
+ RETURNING prs_werkplek_key INTO v_wp_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;
+ 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_nr
+ || '] 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;
+
+ FOR recnogroup IN cnogroup
+ LOOP
+ BEGIN
+ v_aanduiding :=
+ recnogroup.prs_perslid_nr
+ || '|'
+ || recnogroup.prs_perslid_naam
+ || '|'
+ || recnogroup.prs_perslid_voornaam
+ || ' - ';
+ v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
+
+ SELECT fac_groep_key
+ INTO v_groep_key
+ FROM fac_groep
+ WHERE fac_groep_upper = c_groep_upper;
+
+ v_errorhint :=
+ 'Fout bij koppelen persoon aan groep ['
+ || c_groep_upper
+ || ']';
+
+ INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
+ VALUES (v_groep_key, 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;
+
+ -- Verwijder ongebruikte functies; deze import bepaalt de functies!
+ DELETE FROM prs_srtperslid sp
+ WHERE NOT EXISTS
+ (SELECT 1
+ FROM prs_perslid p
+ WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key);
+
+ COMMIT;
+ ELSE
+ IF (v_count_prs_import = 0)
+ THEN
+ fac.imp_writelog (
+ p_import_key,
+ 'S',
+ 'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
+ ''
+ );
+ 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)
+ || '%]
'
+ || '- #personen importbestand = ['
+ || TO_CHAR (v_count_prs_import)
+ || ']
'
+ || '- #personen Facilitor = ['
+ || TO_CHAR (v_count_prs_actual)
+ || ']'
+ );
+ END IF;
+
+ COMMIT;
+ END IF;
+
+ COMMIT;
+END allv_update_prs;
+/
+
/* Formatted on 16-3-2010 10:44:04 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW allv_v_reserveringdetails
(
@@ -569,7 +2163,182 @@ AS
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
-/* Formatted on 22-1-2013 14:18:54 (QP5 v5.115.810.9015) */
+/* Formatted on 28-5-2013 10:25:25 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE VIEW allv_v_kostensoort
+(
+ kostensoort_key,
+ kostensoort_ref
+)
+AS
+ SELECT prs_kostensoort_key,
+ prs_kostensoort_oms || ' - ' || prs_kostensoort_opmerking
+ FROM prs_kostensoort ks;
+
+/* Formatted on 27-5-2013 11:30:24 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE VIEW allv_v_rap_ext_orders_exp
+(
+ leveranciernr,
+ orderdatum,
+ ordernr,
+ bedrag,
+ aantal,
+ kostensoort,
+ omschrijving,
+ kostenplaats
+)
+AS
+ SELECT bedr.prs_leverancier_nr,
+ TO_CHAR (bo.bes_bestelopdr_datum, 'dd-mm-yyyy') orderdatum,
+ bo.bes_bestelopdr_id ordernr,
+ ROUND (
+ SUM( boi.bes_bestelopdr_item_prijs
+ * boi.bes_bestelopdr_item_aantal
+ * (COALESCE (100 + bsd.bes_srtdeel_btw, 121) / 100)),
+ 2
+ )
+ bedrag, -- Incl. BTW!
+ 1 aantal,
+ ks.prs_kostensoort_oms kostensoort,
+ ks.prs_kostensoort_opmerking omschrijving,
+ kp.prs_kostenplaats_nr kostenplaats
+ FROM bes_bestelopdr bo,
+ bes_bestelopdr_item boi,
+ bes_bestelling_item bi,
+ bes_srtdeel bsd,
+ bes_srtgroep bsg,
+ bes_discipline bd,
+ bes_disc_params dp,
+ prs_kostensoort ks,
+ bes_bestelling b,
+ --prs_perslid p,
+ --prs_afdeling a,
+ prs_kostenplaats kp,
+ prs_bedrijf bedr
+ WHERE bo.bes_bestelopdr_status = 6 -- Geleverd (#besteld=#ontv.)
+ AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
+ AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
+ AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key
+ AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key
+ AND bsg.ins_discipline_key = bd.ins_discipline_key
+ AND bd.ins_discipline_key = dp.bes_ins_discipline_key
+ AND dp.bes_ins_discipline_key_inkoop IS NULL
+ AND bd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
+ AND bi.bes_bestelling_key = b.bes_bestelling_key
+ --AND b.prs_perslid_key = p.prs_perslid_key
+ --AND p.prs_afdeling_key = a.prs_afdeling_key
+ AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
+ AND bo.prs_bedrijf_key = bedr.prs_bedrijf_key
+ GROUP BY bedr.prs_leverancier_nr,
+ TO_CHAR (bo.bes_bestelopdr_datum, 'dd-mm-yyyy'),
+ bo.bes_bestelopdr_id,
+ ks.prs_kostensoort_oms,
+ ks.prs_kostensoort_opmerking,
+ kp.prs_kostenplaats_nr
+ UNION ALL
+ SELECT bedr.prs_leverancier_nr,
+ TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy') orderdatum,
+ sd.ins_srtdiscipline_prefix
+ || o.mld_melding_key
+ || '/'
+ || o.mld_opdr_bedrijfopdr_volgnr
+ ordernr,
+ o.mld_opdr_kosten bedrag, -- Incl. BTW!
+ 1 aantal,
+ ok.prs_kostensoort_oms kostensoort,
+ ok.prs_kostensoort_opmerking omschrijving,
+ kp.prs_kostenplaats_nr kostenplaats
+ FROM mld_opdr o,
+ mld_melding m,
+ mld_stdmelding sm,
+ mld_discipline md,
+ ins_srtdiscipline sd,
+ --prs_kostensoort ks1,
+ --prs_kostensoort ks2,
+ --prs_perslid p,
+ --prs_afdeling a,
+ prs_kostenplaats kp,
+ prs_bedrijf bedr,
+ (SELECT ok.mld_opdr_key,
+ ks.prs_kostensoort_oms,
+ ks.prs_kostensoort_opmerking
+ FROM mld_kenmerkopdr ok, mld_kenmerk k, prs_kostensoort ks
+ WHERE ok.mld_kenmerkopdr_verwijder IS NULL
+ AND ok.mld_kenmerk_key = k.mld_kenmerk_key
+ AND k.mld_kenmerk_verwijder IS NULL
+ AND k.mld_srtkenmerk_key = 101
+ AND fac.safe_to_number (ok.mld_kenmerkopdr_waarde) =
+ ks.prs_kostensoort_key) ok
+ WHERE o.mld_statusopdr_key = 6 -- Afgemeld
+ AND o.mld_melding_key = m.mld_melding_key
+ AND m.mld_stdmelding_key = sm.mld_stdmelding_key
+ --AND sm.prs_kostensoort_key = ks1.prs_kostensoort_key(+)
+ AND sm.mld_ins_discipline_key = md.ins_discipline_key
+ --AND md.prs_kostensoort_key = ks2.prs_kostensoort_key(+)
+ AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
+ AND sd.ins_srtdiscipline_key = 21 -- Bestelling
+ --AND m.prs_perslid_key = p.prs_perslid_key
+ --AND p.prs_afdeling_key = a.prs_afdeling_key
+ AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
+ AND o.mld_uitvoerende_keys = bedr.prs_bedrijf_key
+ AND o.mld_opdr_key = ok.mld_opdr_key(+);
+
+/* Formatted on 27-5-2013 11:30:36 (QP5 v5.115.810.9015) */
+CREATE OR REPLACE VIEW allv_v_rap_int_orders_exp
+(
+ boekingsdatum,
+ bedrag,
+ kostensoort,
+ omschrijving,
+ kostenplaats
+)
+AS
+ SELECT --bedr.prs_leverancier_nr,
+ TO_CHAR (fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key),
+ 'dd-mm-yyyy')
+ boekingsdatum,
+ --bo.bes_bestelopdr_id ordernr,
+ SUM (
+ boi.bes_bestelopdr_item_prijs * boi.bes_bestelopdr_item_aantal
+ )
+ bedrag, -- Incl. BTW!
+ --1 aantal,
+ ks.prs_kostensoort_oms kostensoort,
+ ks.prs_kostensoort_opmerking omschrijving,
+ kp.prs_kostenplaats_nr kostenplaats
+ FROM bes_bestelopdr bo,
+ bes_bestelopdr_item boi,
+ bes_bestelling_item bi,
+ bes_srtdeel bsd,
+ bes_srtgroep bsg,
+ bes_discipline bd,
+ bes_disc_params dp,
+ prs_kostensoort ks,
+ bes_bestelling b,
+ --prs_perslid p,
+ --prs_afdeling a,
+ prs_kostenplaats kp
+ WHERE bo.bes_bestelopdr_status = 6 -- Geleverd (#besteld=#ontv.)
+ AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
+ AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
+ AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key
+ AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key
+ AND bsg.ins_discipline_key = bd.ins_discipline_key
+ AND bd.ins_discipline_key = dp.bes_ins_discipline_key
+ AND dp.bes_ins_discipline_key_inkoop IS NOT NULL
+ AND bd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
+ AND bi.bes_bestelling_key = b.bes_bestelling_key
+ --AND b.prs_perslid_key = p.prs_perslid_key
+ --AND p.prs_afdeling_key = a.prs_afdeling_key
+ AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
+ GROUP BY TO_CHAR (fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key),
+ 'dd-mm-yyyy'),
+ --bo.bes_bestelopdr_id,
+ ks.prs_kostensoort_oms,
+ ks.prs_kostensoort_opmerking,
+ kp.prs_kostenplaats_nr;
+
+
+/* Formatted on 21-2-2013 12:36:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW allv_v_rap_voorraad
(
hide_f_ext_disc_key,
@@ -581,60 +2350,84 @@ CREATE OR REPLACE VIEW allv_v_rap_voorraad
ext_artikel_nr,
ext_artikel_oms,
ext_artikel_prijs,
+ intern_extern, -- UIT: "normalisatie-factor" naar IN-aantal
min_voorraad,
max_voorraad,
inkoop_geleverd, -- IN: daadwerkelijk geleverd
- intern_besteld, -- UIT: in bestelling + besteld + geleverd
- intern_extern, -- UIT/genormaliseerd: in bestelling + besteld + geleverd
+ intern_geleverd, -- UIT: daadwerkelijk geleverd
voorraad,
hide_f_voorraad_gisteren,
- inkoop_besteld, -- IN: in bestelling + besteld
+ inkoop_besteld, -- IN: in bestelling + besteld (nog niet geleverd)
+ intern_besteld, -- UIT: in bestelling + besteld (nog niet geleverd)
inkoop_gewenst -- IN: tot maximum als onder minimum
)
AS
SELECT extern.dkey,
COALESCE (extern.ins_discipline_omschrijving,
- intern.ins_discipline_omschrijving),
- DECODE (intern.besteld,
- intern.geleverd,
- DECODE (extern.besteld, extern.geleverd, 'Nee', 'Ja'),
- 'Ja'),
- intern.art_nr,
- intern.art_oms,
- TO_CHAR (intern.art_prijs),
- COALESCE (extern.art_nr, intern.match_nr),
- extern.art_oms,
- TO_CHAR (extern.art_prijs),
+ intern.ins_discipline_omschrijving)
+ catalogus,
+ DECODE (
+ COALESCE (intern.besteld, 0),
+ COALESCE (intern.geleverd, 0),
+ DECODE (COALESCE (extern.besteld, 0),
+ COALESCE (extern.geleverd, 0), 'Nee',
+ 'Ja'),
+ 'Ja'
+ )
+ actueel,
+ intern.art_nr intern_nr,
+ intern.art_oms intern_oms,
+ TO_CHAR (intern.art_prijs) intern_prijs,
+ COALESCE (extern.art_nr, intern.match_nr) extern_nr,
+ extern.art_oms extern_oms,
+ TO_CHAR (extern.art_prijs) extern_prijs,
+ COALESCE (intern.depotverdeelpct, 1) intern_extern,
extern.vmin,
extern.vmax,
- extern.geleverd,
- intern.besteld intern_besteld,
- ROUND (intern.besteld / intern.depotverdeelpct, 2) intern_extern,
- extern.geleverd
- - COALESCE (ROUND (intern.besteld / intern.depotverdeelpct, 2),
- 0)
+ extern.geleverd extern_geleverd,
+ intern.geleverd intern_geleverd,
+ COALESCE (extern.geleverd, 0)
+ - ROUND (
+ COALESCE (intern.geleverd, 0)
+ / COALESCE (intern.depotverdeelpct, 1),
+ 2
+ )
voorraad,
- extern.geleverd_gisteren
- - COALESCE (
- ROUND (intern.besteld_gisteren / intern.depotverdeelpct, 2),
- 0
+ COALESCE (extern.geleverd_gisteren, 0)
+ - ROUND (
+ COALESCE (intern.geleverd_gisteren, 0)
+ / COALESCE (intern.depotverdeelpct, 1),
+ 2
)
voorraad_gisteren,
- extern.besteld,
+ DECODE (
+ COALESCE (extern.besteld, 0),
+ COALESCE (extern.geleverd, 0),
+ NULL,
+ COALESCE (extern.besteld, 0) - COALESCE (extern.geleverd, 0)
+ )
+ extern_besteld,
+ DECODE (
+ COALESCE (intern.besteld, 0),
+ COALESCE (intern.geleverd, 0),
+ NULL,
+ COALESCE (intern.besteld, 0) - COALESCE (intern.geleverd, 0)
+ )
+ intern_besteld,
CASE
- WHEN ( (COALESCE (extern.besteld, 0)
- + COALESCE (extern.geleverd, 0))
- - COALESCE (
- ROUND (intern.besteld / intern.depotverdeelpct, 2),
- 0
+ WHEN (COALESCE (extern.besteld, 0)
+ - ROUND (
+ COALESCE (intern.besteld, 0)
+ / COALESCE (intern.depotverdeelpct, 1),
+ 2
)) < COALESCE (extern.vmin, 0)
THEN
COALESCE (extern.vmax, 0)
- - ( (COALESCE (extern.besteld, 0)
- + COALESCE (extern.geleverd, 0))
- - COALESCE (
- ROUND (intern.besteld / intern.depotverdeelpct, 2),
- 0
+ - (COALESCE (extern.besteld, 0)
+ - ROUND (
+ COALESCE (intern.besteld, 0)
+ / COALESCE (intern.depotverdeelpct, 1),
+ 2
))
ELSE
NULL
@@ -650,7 +2443,8 @@ AS
sd.bes_srtdeel_voorraadmax vmax, -- ext. voorraadmax
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
- WHERE b.bes_bestelling_status IN (2, 3, 4, 5)
+ WHERE b.bes_bestelling_status IN
+ (2, 3, 4, 5, 6, 7)
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
@@ -658,7 +2452,7 @@ AS
besteld,
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
- WHERE b.bes_bestelling_status > 5
+ WHERE b.bes_bestelling_status IN (6, 7)
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
@@ -667,7 +2461,7 @@ AS
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_datum < TRUNC (SYSDATE)
- AND b.bes_bestelling_status > 5
+ AND b.bes_bestelling_status IN (6, 7)
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
@@ -682,10 +2476,11 @@ AS
AND bd.ins_discipline_key =
dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NULL
- AND bd.ins_discipline_key IN
- (SELECT bes_ins_discipline_key_inkoop
- FROM bes_disc_params
- WHERE bes_ins_discipline_key_inkoop IS NOT NULL))
+ AND (bd.ins_discipline_key = 1141 -- Weststrate extern
+ OR bd.ins_discipline_key IN
+ (SELECT bes_ins_discipline_key_inkoop
+ FROM bes_disc_params
+ WHERE bes_ins_discipline_key_inkoop IS NOT NULL)))
extern -- Inkoop artikelen uit externe catalogus!
FULL JOIN
(SELECT intern.dkey, -- ext. cataloguskey (INKOOP-key)
@@ -701,8 +2496,6 @@ AS
besteld_gisteren.geleverd geleverd_gisteren
FROM ( SELECT bde.ins_discipline_key dkey,
bde.ins_discipline_omschrijving,
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr)
sd.bes_srtdeel_nr match_nr,
MIN(COALESCE (
SUBSTR (
@@ -728,9 +2521,13 @@ AS
NULL
))
art_prijs,
- MAX(COALESCE (
+ MAX(DECODE (
sd.bes_srtdeel_depotverdeelpct,
- 1
+ NULL,
+ 1,
+ 0,
+ 1,
+ sd.bes_srtdeel_depotverdeelpct
))
depotverdeelpct
FROM bes_srtdeel sd,
@@ -749,21 +2546,18 @@ AS
bde.ins_discipline_key
GROUP BY bde.ins_discipline_key,
bde.ins_discipline_omschrijving,
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr),
bes_srtdeel_nr) intern
LEFT JOIN
( SELECT dp.bes_ins_discipline_key_inkoop
dkey, -- INKOOP-key
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr)
sd.bes_srtdeel_nr match_nr,
SUM (bi.bes_bestelling_item_aantal)
aantal,
SUM(DECODE (
- SIGN(b.bes_bestelling_status
- - 5),
- -1,
+ b.bes_bestelling_status,
+ 6,
+ bi.bes_bestelling_item_aantal,
+ 7,
bi.bes_bestelling_item_aantal,
0
))
@@ -787,23 +2581,19 @@ AS
dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL
GROUP BY dp.bes_ins_discipline_key_inkoop,
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr),
bes_srtdeel_nr) besteld
ON intern.dkey = besteld.dkey
AND intern.match_nr = besteld.match_nr
LEFT JOIN
( SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr)
sd.bes_srtdeel_nr match_nr,
SUM (bi.bes_bestelling_item_aantal)
aantal,
SUM(DECODE (
- SIGN (
- b.bes_bestelling_status - 5
- ),
- -1,
+ b.bes_bestelling_status,
+ 6,
+ bi.bes_bestelling_item_aantal,
+ 7,
bi.bes_bestelling_item_aantal,
0
))
@@ -829,13 +2619,12 @@ AS
dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL
GROUP BY dp.bes_ins_discipline_key_inkoop,
- --COALESCE (sd.bes_srtdeel_image,
- -- sd.bes_srtdeel_nr),
bes_srtdeel_nr) besteld_gisteren
ON intern.dkey = besteld_gisteren.dkey
AND intern.match_nr = besteld_gisteren.match_nr)
intern -- Verkoop artikelen uit interne masker-catalogi!
- ON extern.dkey = intern.dkey AND extern.art_nr = intern.match_nr
+ --ON extern.dkey = intern.dkey AND extern.art_nr = intern.match_nr
+ ON extern.art_nr = intern.match_nr
WHERE intern.art_nr IS NOT NULL;
-- Bevat CUST01/02-notificaties (eind van de dag) naar magazijn-medewerkers
@@ -893,7 +2682,7 @@ AS
AND sn.fac_srtnotificatie_code = 'CUST02';
*/
-BEGIN fac.registercustversion('ALLV', 4); END;
+BEGIN fac.registercustversion('ALLV', 5); END;
/
BEGIN adm.systrackscript('$Workfile: allv.sql $', '$Revision$', 0); END;
/