-- -- $Id$ -- -- Script containing customer specific db-configuration for ALLV. DEFINE thisfile = 'ALLV.SQL' DEFINE dbuser = '^ALLV' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ /* 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 11-7-2013 10:48:58 (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_key NUMBER (10) := 21; -- Niet bevoegd tot bestellen! 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_perslidwerkplek 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 fac_profiel_key = c_profiel_key; IF (v_count = 0) THEN fac.imp_writelog ( p_import_key, 'I', 'Standaard profiel [key=' || TO_CHAR (c_profiel_key) || '] niet gevonden.', 'Personen zonder profiel krijgen geen default 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_perslidwerkplek 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 verhuizen naar nieuwe werkplek'; PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'G'); 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 ( HIDE_F_SORT, FCLT_F_LOCATIE, FCLT_F_DATUM, RESNR, AANTAL, RUIMTE, VAN, TOT, VOORZIENINGEN, OMSCHRIJVING, OPMERKING, HIDE_F_RSV_RUIMTE_KEY ) AS SELECT l.alg_locatie_code || TO_CHAR (res_geg.res_reservering_van, 'YYYY-MM-DD HH24:MI') || COALESCE (opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) || rrr.res_reservering_key || rrr.res_rsv_ruimte_volgnr || res_geg.res_type sort_loc_tijd_ruimte_resnr_cat, l.alg_locatie_code locatie, TO_CHAR (res_geg.res_reservering_van, 'DD-MM-YYYY') datum, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr END) resnr, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE TO_CHAR (rrr.res_rsv_ruimte_bezoekers) END) aantal, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE COALESCE (opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) END) ruimte, TO_CHAR (res_geg.res_reservering_van, 'HH24:MI') van, TO_CHAR (res_geg.res_reservering_tot, 'HH24:MI') tot, (CASE WHEN res_geg.aantal IS NOT NULL THEN TO_CHAR (res_geg.aantal) || ' * ' || res_geg.res_voorziening ELSE res_geg.res_voorziening END) voorzieningen, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE res_rsv_ruimte_omschrijving END) omschrijving, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE res_rsv_ruimte_opmerking END) opmerking, rrr.res_rsv_ruimte_key FROM (SELECT '1R' AS res_type, rrr.res_rsv_ruimte_key, rro.res_ruimte_key, rrr.res_rsv_ruimte_key AS res_item_key, rrr.res_rsv_ruimte_van AS res_reservering_van, rrr.res_rsv_ruimte_tot AS res_reservering_tot, TO_NUMBER (NULL) AS aantal, ro.res_opstelling_omschrijving AS res_voorziening, rr.res_discipline_key AS res_ins_discipline_key, rrr.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key, rrr.res_rsv_ruimte_prijs AS prijs, TO_NUMBER (NULL) AS stuks_prijs, 1 AS rsv_ruimte_aantal, NULL AS artikelnummer, '' AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rrr.res_rsv_ruimte_key) afmelder_key, fac.gettrackingdate ('RESAFM', rrr.res_rsv_ruimte_key) afmeld_datum FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rrr.res_rsv_ruimte_van BETWEEN TO_DATE ( TO_CHAR ( SYSDATE, 'yyyymmdd' ), 'yyyymmdd' ) AND TO_DATE ( TO_CHAR ( SYSDATE + 10, 'yyyymmdd' ), 'yyyymmdd' ) UNION ALL SELECT '2V' AS res_type, rrd.res_rsv_ruimte_key, (SELECT rro.res_ruimte_key FROM res_ruimte_opstelling rro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key, rrd.res_rsv_deel_key AS res_item_key, rrd.res_rsv_deel_van AS res_reservering_van, rrd.res_rsv_deel_tot AS res_reservering_tot, TO_NUMBER (NULL) AS aantal, ID.ins_deel_omschrijving || ' (' || COALESCE (rd.res_deel_eenheid, '') || ')' AS res_voorziening, rd.res_discipline_key AS res_ins_discipline_key, rrd.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key, TO_NUMBER (NULL) AS prijs, rd.res_deel_prijs AS stuks_prijs, TO_NUMBER (NULL) AS rsv_ruimte_aantal, NULL AS artikelnummer, '' AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rrd.res_rsv_deel_key) afmelder_key, fac.gettrackingdate ('RESAFM', rrd.res_rsv_deel_key) afmeld_datum FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_ruimte rrr, res_deel rd, ins_deel ID WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = ID.ins_deel_key AND rrd.res_rsv_deel_van BETWEEN TO_DATE ( TO_CHAR ( SYSDATE, 'yyyymmdd' ), 'yyyymmdd' ) AND TO_DATE ( TO_CHAR ( SYSDATE + 10, 'yyyymmdd' ), 'yyyymmdd' ) UNION ALL SELECT '3C' AS res_type, rra.res_rsv_ruimte_key, (SELECT rro.res_ruimte_key FROM res_ruimte_opstelling rro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key, res_rsv_artikel_key AS res_item_key, rra.res_rsv_artikel_levering AS res_reservering_van, res_rsv_ruimte_tot AS res_reservering_tot, rra.res_rsv_artikel_aantal AS aantal, LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' AS res_voorziening, ra.res_discipline_key AS res_ins_discipline_key, rra.res_status_bo_key, ra.res_artikel_key AS res_artikel_key, rra.res_rsv_artikel_prijs AS prijs, ra.res_artikel_prijs / rra.res_rsv_artikel_aantal AS stuks_prijs, TO_NUMBER (NULL) AS rsv_ruimte_aantal, ra.res_artikel_nr AS artikelnummer, ra.res_artikel_groep AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rra.res_rsv_artikel_key) afmelder_key, fac.gettrackingdate ('RESAFM', rra.res_rsv_artikel_key) afmeld_datum FROM res_v_aanwezigrsv_artikel rra, res_v_aanwezigrsv_ruimte rrr, res_artikel ra WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_rsv_artikel_levering BETWEEN TO_DATE ( TO_CHAR ( SYSDATE, 'yyyymmdd' ), 'yyyymmdd' ) AND TO_DATE ( TO_CHAR ( SYSDATE + 10, 'yyyymmdd' ), 'yyyymmdd' )) res_geg, res_rsv_ruimte rrr, alg_v_ruimte_gegevens ruimte_geg, ( SELECT res_ruimte_opstel_key, res_ruimte_nr, MIN (alg_ruimte_key) alg_ruimte_key FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr WHERE rro.res_ruimte_key = rar.res_ruimte_key AND rr.res_ruimte_key = rar.res_ruimte_key AND rar.res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg, alg_locatie l WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+) AND ruimte_geg.alg_ruimte_key = COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key) AND l.alg_locatie_key = ruimte_geg.alg_locatie_key AND res_geg.res_status_bo_key < 5 / /* Formatted on 16-3-2010 11:01:01 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW allv_v_rap_resweekdetails ( fclt_f_locatie, hide_f_sort_datum_tijd, hide_f_sort_ruimte, hide_f_sort_resnr, hide_f_sort_categorie, fclt_f_week, dag, resnr, aantal, ruimte, van, tot, voorzieningen, omschrijving, opmerking ) AS SELECT l.alg_locatie_code locatie, TO_CHAR (res_geg.res_reservering_van, 'YYYY-MM-DD HH24:MI') sort_datum_tijd, COALESCE (opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) sort_ruimte, rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr sort_resnr, res_geg.res_type sort_categorie, 'Week ' || TO_CHAR (res_geg.res_reservering_van, 'WW') week, TO_CHAR (res_geg.res_reservering_van, 'DD/MM') dag, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr END) resnr, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE TO_CHAR (rrr.res_rsv_ruimte_bezoekers) END) aantal, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE COALESCE (opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) END) ruimte, TO_CHAR (res_geg.res_reservering_van, 'HH24:MI') van, TO_CHAR (res_geg.res_reservering_tot, 'HH24:MI') tot, (CASE WHEN res_geg.aantal IS NOT NULL THEN TO_CHAR (res_geg.aantal) || ' * ' || res_geg.res_voorziening ELSE res_geg.res_voorziening END) voorzieningen, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE res_rsv_ruimte_omschrijving END) omschrijving, (CASE WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL THEN '' ELSE res_rsv_ruimte_opmerking END) opmerking FROM (SELECT '1R' AS res_type, rrr.res_rsv_ruimte_key, rro.res_ruimte_key, rrr.res_rsv_ruimte_key AS res_item_key, rrr.res_rsv_ruimte_van AS res_reservering_van, rrr.res_rsv_ruimte_tot AS res_reservering_tot, TO_NUMBER (NULL) AS aantal, ro.res_opstelling_omschrijving AS res_voorziening, rr.res_discipline_key AS res_ins_discipline_key, rrr.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key, rrr.res_rsv_ruimte_prijs AS prijs, TO_NUMBER (NULL) AS stuks_prijs, 1 AS rsv_ruimte_aantal, NULL AS artikelnummer, '' AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rrr.res_rsv_ruimte_key) afmelder_key, fac.gettrackingdate ('RESAFM', rrr.res_rsv_ruimte_key) afmeld_datum FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rrr.res_rsv_ruimte_van BETWEEN SYSDATE - 7 AND SYSDATE + 14 AND TO_CHAR (rrr.res_rsv_ruimte_van, 'WW') IN (TO_CHAR (SYSDATE, 'WW'), TO_CHAR (SYSDATE + 7, 'WW')) UNION ALL SELECT '2V' AS res_type, rrd.res_rsv_ruimte_key, (SELECT rro.res_ruimte_key FROM res_ruimte_opstelling rro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key, rrd.res_rsv_deel_key AS res_item_key, rrd.res_rsv_deel_van AS res_reservering_van, rrd.res_rsv_deel_tot AS res_reservering_tot, TO_NUMBER (NULL) AS aantal, ID.ins_deel_omschrijving || ' (' || COALESCE (rd.res_deel_eenheid, '') || ')' AS res_voorziening, rd.res_discipline_key AS res_ins_discipline_key, rrd.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key, TO_NUMBER (NULL) AS prijs, rd.res_deel_prijs AS stuks_prijs, TO_NUMBER (NULL) AS rsv_ruimte_aantal, NULL AS artikelnummer, '' AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rrd.res_rsv_deel_key) afmelder_key, fac.gettrackingdate ('RESAFM', rrd.res_rsv_deel_key) afmeld_datum FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_ruimte rrr, res_deel rd, ins_deel ID WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = ID.ins_deel_key AND rrd.res_rsv_deel_van BETWEEN SYSDATE - 7 AND SYSDATE + 14 AND TO_CHAR (rrd.res_rsv_deel_van, 'WW') IN (TO_CHAR (SYSDATE, 'WW'), TO_CHAR (SYSDATE + 7, 'WW')) UNION ALL SELECT '3C' AS res_type, rra.res_rsv_ruimte_key, (SELECT rro.res_ruimte_key FROM res_ruimte_opstelling rro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key, res_rsv_artikel_key AS res_item_key, rra.res_rsv_artikel_levering AS res_reservering_van, res_rsv_ruimte_tot AS res_reservering_tot, rra.res_rsv_artikel_aantal AS aantal, LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' AS res_voorziening, ra.res_discipline_key AS res_ins_discipline_key, rra.res_status_bo_key, ra.res_artikel_key AS res_artikel_key, rra.res_rsv_artikel_prijs AS prijs, ra.res_artikel_prijs / rra.res_rsv_artikel_aantal AS stuks_prijs, TO_NUMBER (NULL) AS rsv_ruimte_aantal, ra.res_artikel_nr AS artikelnummer, ra.res_artikel_groep AS artikel_groep, fac.gettrackinguserkey ('RESAFM', rra.res_rsv_artikel_key) afmelder_key, fac.gettrackingdate ('RESAFM', rra.res_rsv_artikel_key) afmeld_datum FROM res_v_aanwezigrsv_artikel rra, res_v_aanwezigrsv_ruimte rrr, res_artikel ra WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_rsv_artikel_levering BETWEEN SYSDATE - 7 AND SYSDATE + 14 AND TO_CHAR (rra.res_rsv_artikel_levering, 'WW') IN (TO_CHAR (SYSDATE, 'WW'), TO_CHAR (SYSDATE + 7, 'WW'))) res_geg, res_rsv_ruimte rrr, alg_v_ruimte_gegevens ruimte_geg, ( SELECT res_ruimte_opstel_key, res_ruimte_nr, MIN (alg_ruimte_key) alg_ruimte_key FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr WHERE rro.res_ruimte_key = rar.res_ruimte_key AND rr.res_ruimte_key = rar.res_ruimte_key AND rar.res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg, alg_locatie l WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+) AND ruimte_geg.alg_ruimte_key = COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key) AND l.alg_locatie_key = ruimte_geg.alg_locatie_key AND res_geg.res_status_bo_key < 5 / -- Dummy export NACHTWERK! /* Formatted on 29-11-2010 16:25:20 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW allv_v_export_nachtwerk (RESULT, result_order) AS SELECT '', 0 FROM DUAL WHERE 1 = 0 / CREATE OR REPLACE PROCEDURE allv_select_nachtwerk (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; BEGIN v_count := 0; 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 allv_select_nachtwerk; / /* Formatted on 14-1-2013 12:08:42 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW allv_v_imp_bes_artikel_sync ( fclt_f_catalogusnaam, leverancier, catdatum, artikelnr, groep, omschrijving, prijs, eenheid, picture, orderaantal, tax, duedate, inkoopprijs, minimum, staffeltabel, wijzigdagen, annuleerdagen ) AS SELECT td.ins_discipline_omschrijving, b.prs_bedrijf_naam, TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'), sd.bes_srtdeel_nr, sg.bes_srtgroep_omschrijving, sd.bes_srtdeel_omschrijving, TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)), sd.bes_srtdeel_eenheid, sd.bes_srtdeel_image, TO_CHAR (sd.bes_srtdeel_veelvoud), TO_CHAR (sd.bes_srtdeel_btw), TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'), TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)), NULL, bs.bes_staffeltabel_naam, sd.bes_srtdeel_wijzigdagen, sd.bes_srtdeel_annuleerdagen FROM ins_tab_discipline td, bes_srtgroep sg, bes_srtdeel sd, prs_bedrijf b, bes_staffeltabel bs WHERE td.ins_discipline_module = 'BES' AND td.ins_discipline_verwijder IS NULL AND td.ins_discipline_key = sg.ins_discipline_key AND sg.bes_srtgroep_verwijder IS NULL AND sg.bes_srtgroep_key = sd.bes_srtgroep_key AND sd.bes_srtdeel_verwijder IS NULL AND sd.prs_bedrijf_key = b.prs_bedrijf_key AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key; /* 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, fclt_f_catalogus, -- externe catalogusnaam fclt_x_actueel, int_artikel_nr, -- min. intern artikelnr int_artikel_oms, -- min. interne artikelomschrijving int_artikel_prijs, -- min. interne artikelprijs 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_geleverd, -- UIT: daadwerkelijk geleverd voorraad, hide_f_voorraad_gisteren, 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) 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 extern_geleverd, intern.geleverd intern_geleverd, COALESCE (extern.geleverd, 0) - ROUND ( COALESCE (intern.geleverd, 0) / COALESCE (intern.depotverdeelpct, 1), 2 ) voorraad, COALESCE (extern.geleverd_gisteren, 0) - ROUND ( COALESCE (intern.geleverd_gisteren, 0) / COALESCE (intern.depotverdeelpct, 1), 2 ) voorraad_gisteren, 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) - ROUND ( COALESCE (intern.besteld, 0) / COALESCE (intern.depotverdeelpct, 1), 2 )) < COALESCE (extern.vmin, 0) THEN COALESCE (extern.vmax, 0) - (COALESCE (extern.besteld, 0) - ROUND ( COALESCE (intern.besteld, 0) / COALESCE (intern.depotverdeelpct, 1), 2 )) ELSE NULL END extern_gewenst FROM (SELECT bd.ins_discipline_key dkey, -- ext. cataloguskey (INKOOP-key) bd.ins_discipline_omschrijving, -- ext. catalogusnaam sd.bes_srtdeel_nr art_nr, -- ext. artikelnr sd.bes_srtdeel_omschrijving art_oms, bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL) art_prijs, sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin 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, 6, 7) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) besteld, (SELECT SUM (bi.bes_bestelling_item_aantal) FROM bes_bestelling b, bes_bestelling_item bi WHERE b.bes_bestelling_status IN (6, 7) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) geleverd, (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 IN (6, 7) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) geleverd_gisteren FROM bes_srtdeel sd, -- ook de verwijderde (igv. punchout)! bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.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.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) intern.ins_discipline_omschrijving, -- ext. cat.naam intern.match_nr, -- ext. artikelnr intern.art_nr, -- min. intern artikelnr intern.art_oms, -- min. interne artikelomschrijving intern.art_prijs, -- min. interne artikelprijs intern.depotverdeelpct, besteld.aantal besteld, besteld.geleverd geleverd, besteld_gisteren.aantal besteld_gisteren, besteld_gisteren.geleverd geleverd_gisteren FROM ( SELECT bde.ins_discipline_key dkey, bde.ins_discipline_omschrijving, sd.bes_srtdeel_nr match_nr, MIN(COALESCE ( SUBSTR ( sd.bes_srtdeel_omschrijving, INSTR ( sd.bes_srtdeel_omschrijving, '[' ) + 1, INSTR ( sd.bes_srtdeel_omschrijving, ']' ) - 2 ), sd.bes_srtdeel_nr )) art_nr, MIN (sd.bes_srtdeel_omschrijving) art_oms, MIN(bes.getsrtdeelprijs ( sd.bes_srtdeel_key, NULL )) art_prijs, MAX(DECODE ( sd.bes_srtdeel_depotverdeelpct, NULL, 1, 0, 1, sd.bes_srtdeel_depotverdeelpct )) depotverdeelpct FROM bes_srtdeel sd, bes_srtgroep g, bes_discipline bdi, bes_disc_params dp, bes_discipline bde WHERE sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = bdi.ins_discipline_key AND bdi.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_ins_discipline_key_inkoop = bde.ins_discipline_key GROUP BY bde.ins_discipline_key, bde.ins_discipline_omschrijving, bes_srtdeel_nr) intern LEFT JOIN ( SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key sd.bes_srtdeel_nr match_nr, SUM (bi.bes_bestelling_item_aantal) aantal, SUM(DECODE ( b.bes_bestelling_status, 6, bi.bes_bestelling_item_aantal, 7, bi.bes_bestelling_item_aantal, 0 )) geleverd FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.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 GROUP BY dp.bes_ins_discipline_key_inkoop, 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 sd.bes_srtdeel_nr match_nr, SUM (bi.bes_bestelling_item_aantal) aantal, SUM(DECODE ( b.bes_bestelling_status, 6, bi.bes_bestelling_item_aantal, 7, bi.bes_bestelling_item_aantal, 0 )) geleverd FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE b.bes_bestelling_datum < TRUNC (SYSDATE) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.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 GROUP BY dp.bes_ins_discipline_key_inkoop, 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.art_nr = intern.match_nr WHERE intern.art_nr IS NOT NULL; -- Bevat CUST01/02-notificaties (eind van de dag) naar magazijn-medewerkers -- dat 1 of meer producten onder de minimale voorraad zitten! /* Formatted on 10-12-2010 16:34:34 (QP5 v5.115.810.9015) */ /* CREATE OR REPLACE VIEW allv_v_noti_voorraadreminder ( code, sender, receiver, text, KEY, par1, par2, xkey ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, gg.prs_perslid_key, sn.fac_srtnotificatie_oms, (SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_view_name = 'allv_v_rap_voorraad'), NULL, NULL, NULL FROM allv_v_rap_voorraad v, fac_gebruikersgroep gg, fac_srtnotificatie sn WHERE v.voorraad < v.min_voorraad AND v.hide_f_voorraad_gisteren >= v.min_voorraad AND v.hide_f_extern_diskey = 561 -- Representatiegeschenken-cat. AND gg.fac_groep_key = 61 -- COMM/Representatiegeschenken AND sn.fac_srtnotificatie_code = 'CUST01' UNION ALL SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, gg.prs_perslid_key, sn.fac_srtnotificatie_oms, (SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_view_name = 'allv_v_rap_voorraad'), NULL, NULL, NULL FROM allv_v_rap_voorraad v, fac_gebruikersgroep gg, fac_srtnotificatie sn WHERE v.voorraad < v.min_voorraad AND v.hide_f_voorraad_gisteren >= v.min_voorraad AND v.hide_f_extern_diskey = 562 -- Bestuursgeschenken-cat. AND gg.fac_groep_key = 121 -- COMM/Bestuursgeschenken AND sn.fac_srtnotificatie_code = 'CUST02'; */ ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile