diff --git a/VGLD/vgld.sql b/VGLD/vgld.sql index 17fa2c9e2..0e29b1ce5 100644 --- a/VGLD/vgld.sql +++ b/VGLD/vgld.sql @@ -10,1931 +10,2029 @@ SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; WHENEVER SQLERROR EXIT; -SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; + +SELECT adm.scriptspoolfile ('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; + WHENEVER SQLERROR CONTINUE; SPOOL &fcltlogfile SET DEFINE OFF ------ payload begin ------ -CREATE OR REPLACE PROCEDURE vgld_import_prs ( - p_import_key IN NUMBER -) +CREATE OR REPLACE PROCEDURE vgld_import_prs (p_import_key IN NUMBER) IS - c_fielddelimitor VARCHAR2 (1) := ';'; - -- LET OP: moet idem zijn als declaratie bij vgld_UPDATE_PRS - v_newline VARCHAR2 (1000); -- Input line - v_aanduiding VARCHAR2 (200); - v_errorhint VARCHAR2 (1000); - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - header_is_valid NUMBER := 0; - v_ongeldig NUMBER (1); - v_count_tot NUMBER (10); - v_count_import NUMBER (10); - v_count NUMBER; - v_pos NUMBER; - -- De importvelden: - v_prs_perslid_nr VARCHAR2 (256); - v_prs_perslid_voornaam VARCHAR2 (256); - v_prs_perslid_naam VARCHAR2 (256); - v_prs_perslid_tussenvoegsel VARCHAR2 (256); - v_prs_perslid_voorletters VARCHAR2 (256); - v_prs_afdeling_code VARCHAR2 (256); - v_prs_srtperslid_omschrijving VARCHAR2 (256); - v_prs_perslid_telefoonnr VARCHAR2 (256); - v_prs_perslid_mobiel VARCHAR2 (256); - v_prs_perslid_email VARCHAR2 (256); - v_prs_perslid_oslogin VARCHAR2 (256); + c_fielddelimitor VARCHAR2 (1) := ';'; + -- LET OP: moet idem zijn als declaratie bij vgld_UPDATE_PRS + v_newline VARCHAR2 (1000); -- Input line + v_aanduiding VARCHAR2 (200); + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + header_is_valid NUMBER := 0; + v_ongeldig NUMBER (1); + v_count_tot NUMBER (10); + v_count_import NUMBER (10); + v_count NUMBER; + v_pos NUMBER; + -- De importvelden: + v_prs_perslid_nr VARCHAR2 (256); + v_prs_perslid_voornaam VARCHAR2 (256); + v_prs_perslid_naam VARCHAR2 (256); + v_prs_perslid_tussenvoegsel VARCHAR2 (256); + v_prs_perslid_voorletters VARCHAR2 (256); + v_prs_afdeling_code VARCHAR2 (256); + v_prs_srtperslid_omschrijving VARCHAR2 (256); + v_prs_perslid_telefoonnr VARCHAR2 (256); + v_prs_perslid_mobiel VARCHAR2 (256); + v_prs_perslid_email VARCHAR2 (256); + v_prs_perslid_oslogin VARCHAR2 (256); - -- Overig: - v_alg_locatie_code VARCHAR2 (256); - v_alg_gebouw_code VARCHAR2 (256); + -- Overig: + v_alg_locatie_code VARCHAR2 (256); + v_alg_gebouw_code VARCHAR2 (256); - CURSOR c1 - IS - SELECT * - FROM fac_imp_file - WHERE fac_import_key = p_import_key - ORDER BY fac_imp_file_index; + CURSOR c1 IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; BEGIN - DELETE FROM vgld_imp_prs; + DELETE FROM vgld_imp_prs; - COMMIT; + COMMIT; - v_count_tot := 0; - v_count_import := 0; + 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 + FOR rec1 IN c1 + LOOP + BEGIN + v_newline := rec1.fac_imp_file_line; + v_aanduiding := ''; + v_errorhint := 'Fout bij opvragen te importeren rij'; + v_ongeldig := 0; + -- Lees alle veldwaarden - -- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam. - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam); - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters); - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel); - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); + -- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam. + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam); + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters); + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel); + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); - -- 05 - Peroneelsnr - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); + -- 05 - Peroneelsnr + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); - -- 06 - Afdelingscode - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code); + -- 06 - Afdelingscode + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code); - -- 07 - Functieomschrijving van medewerker - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving); + -- 07 - Functieomschrijving van medewerker + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving); - -- 08 - Email adres van medewerker - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); + -- 08 - Email adres van medewerker + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); - -- 09 - Mobiel van medewerker - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); + -- 09 - Mobiel van medewerker + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); - -- 10 - Telnr van medewerker - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr); + -- 10 - Telnr van medewerker + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr); - -- 11 - Usernaam/login - fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin); + -- 11 - Usernaam/login + fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin); - ------------------------------------------------------------------------- + ------------------------------------------------------------------------- - -- xx - Locatiecode werkplek van medewerker - --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code); - v_alg_locatie_code := NULL; + -- xx - Locatiecode werkplek van medewerker + --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code); + v_alg_locatie_code := NULL; - -- xx - Gebouwcode werkplek van medewerker - --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code); - v_alg_gebouw_code := NULL; - ------------------------------------------------------------------------- + -- xx - Gebouwcode werkplek van medewerker + --fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code); + v_alg_gebouw_code := NULL; + ------------------------------------------------------------------------- - -- - v_aanduiding := - '[' - || v_prs_perslid_nr - || '|' - || v_prs_perslid_naam - || '] '; - - -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen - -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! - -- Ik negeer alles totdat ik een geldige header ben gepasseerd. - IF (header_is_valid = 0) - THEN - IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM' - AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM' - AND UPPER (v_prs_perslid_nr) = 'PERSNR.' - AND UPPER (v_prs_afdeling_code) = 'AFDNR.' - AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE' - AND UPPER (v_prs_perslid_email) = 'E-MAIL' - AND UPPER (v_prs_perslid_mobiel) = 'MOBILE' - AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON' - AND UPPER (v_prs_perslid_oslogin) = 'LOGIN' - THEN - header_is_valid := 1; - END IF; - ELSE - v_count_tot := v_count_tot + 1; - -- Controleer alle veldwaarden - -- - v_errorhint := 'Ongeldige naam'; - v_prs_perslid_naam := TRIM (v_prs_perslid_naam); + v_aanduiding := '[' || v_prs_perslid_nr || '|' || v_prs_perslid_naam || '] '; - IF LENGTH (v_prs_perslid_naam) > 30 + -- 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 - v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Naam te lang', - 'Naam wordt afgebroken tot [' - || v_prs_perslid_naam - || ']' - ); + IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM' + AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM' + AND UPPER (v_prs_perslid_nr) = 'PERSNR.' + AND UPPER (v_prs_afdeling_code) = 'AFDNR.' + AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE' + AND UPPER (v_prs_perslid_email) = 'E-MAIL' + AND UPPER (v_prs_perslid_mobiel) = 'MOBILE' + AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON' + AND UPPER (v_prs_perslid_oslogin) = 'LOGIN' + THEN + header_is_valid := 1; + END IF; ELSE - IF (v_prs_perslid_naam IS NULL) - THEN - v_ongeldig := 1; - fac.imp_writelog - (p_import_key, - 'E', - v_aanduiding || 'Naam onbekend', - 'Naam is verplicht; regel wordt overgeslagen!' - ); - END IF; + v_count_tot := v_count_tot + 1; + -- Controleer alle veldwaarden + + -- + v_errorhint := 'Ongeldige naam'; + v_prs_perslid_naam := TRIM (v_prs_perslid_naam); + + IF LENGTH (v_prs_perslid_naam) > 30 + THEN + v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30); + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || 'Naam te lang', + 'Naam wordt afgebroken tot [' || v_prs_perslid_naam || ']'); + ELSE + IF (v_prs_perslid_naam IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || 'Naam onbekend', + 'Naam is verplicht; regel wordt overgeslagen!'); + END IF; + END IF; + + COMMIT; + + -- + + v_errorhint := 'Ongeldig loginnaam'; + v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin); + + IF LENGTH (v_prs_perslid_oslogin) > 30 + THEN + v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Loginnaam te lang', + 'Loginnaam wordt afgebroken tot [' || v_prs_perslid_oslogin || ']'); + ELSE + IF (v_prs_perslid_oslogin IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || 'Usernaam/login onbekend', + 'Usernaam/login is verplicht; regel wordt overgeslagen!'); + END IF; + END IF; + + COMMIT; + + -- + v_errorhint := 'Ongeldig e-mailadres'; + v_prs_perslid_email := TRIM (v_prs_perslid_email); + + IF LENGTH (v_prs_perslid_email) > 200 + THEN + v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'E-mailadres te lang', + 'E-mailadres wordt afgebroken tot [' || v_prs_perslid_email || ']'); + COMMIT; + END IF; + + v_errorhint := 'Ongeldig personeelsnummer'; + v_prs_perslid_nr := TRIM (v_prs_perslid_nr); + + IF LENGTH (v_prs_perslid_nr) > 16 + THEN + v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Personeelsnummer te lang', + 'Personeelsnummer wordt afgebroken tot [' || v_prs_perslid_nr || ']'); + END IF; + + COMMIT; + + + -- + v_errorhint := 'Ongeldig tussenvoegsel'; + v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel); + + IF LENGTH (v_prs_perslid_tussenvoegsel) > 15 + THEN + v_prs_perslid_tussenvoegsel := SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Tussenvoegsel te lang', + 'Tussenvoegsel wordt afgebroken tot [' + || v_prs_perslid_tussenvoegsel + || ']'); + COMMIT; + END IF; + + -- + v_errorhint := 'Ongeldige voorletters'; + v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters); + + IF LENGTH (v_prs_perslid_voorletters) > 10 + THEN + v_prs_perslid_voorletters := SUBSTR (v_prs_perslid_voorletters, 1, 10); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Voorletters te lang', + 'Voorletters worden afgebroken tot [' || v_prs_perslid_voorletters || ']'); + COMMIT; + END IF; + + -- + v_errorhint := 'Ongeldige voornaam'; + v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam); + + IF LENGTH (v_prs_perslid_voornaam) > 30 + THEN + v_prs_perslid_voornaam := SUBSTR (v_prs_perslid_voornaam, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Voornaam is te lang', + 'Voornaam wordt afgebroken tot [' || v_prs_perslid_voornaam || ']'); + END IF; + + COMMIT; + + + + v_errorhint := 'Ongeldige afdelingcode'; + v_prs_afdeling_code := TRIM (v_prs_afdeling_code); + + IF LENGTH (v_prs_afdeling_code) > 10 + THEN + v_prs_afdeling_code := SUBSTR (v_prs_afdeling_code, 1, 10); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Afdelingscode te lang', + 'Afdelingscode wordt afgebroken tot [' || v_prs_afdeling_code || ']'); + ELSE + IF (v_prs_afdeling_code IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || 'Afdelingscode onbekend', + 'Afdelingscode is verplicht; regel wordt overgeslagen!'); + END IF; + END IF; + + COMMIT; + + + -- + v_errorhint := 'Ongeldige functie'; + v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving); + + IF LENGTH (v_prs_srtperslid_omschrijving) > 60 + THEN + v_prs_srtperslid_omschrijving := SUBSTR (v_prs_srtperslid_omschrijving, 1, 60); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Functie te lang', + 'Functie wordt afgebroken tot [' || v_prs_srtperslid_omschrijving || ']'); + ELSE + IF (v_prs_srtperslid_omschrijving IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || 'Functie onbekend', + 'Functie is verplicht; regel wordt overgeslagen!'); + END IF; + END IF; + + COMMIT; + + -- + v_errorhint := 'Ongeldige plaats/locatiecode'; + v_alg_locatie_code := TRIM (v_alg_locatie_code); + + IF LENGTH (v_alg_locatie_code) > 5 + THEN + v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Locatiecode te lang', + 'Locatiecode wordt afgebroken tot [' || v_alg_locatie_code || ']'); + COMMIT; + END IF; + + -- + v_errorhint := 'Ongeldige plaats/gebouwcode'; + v_alg_gebouw_code := TRIM (v_alg_gebouw_code); + + IF LENGTH (v_alg_gebouw_code) > 10 + THEN + v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Gebouwcode te lang', + 'Gebouwcode wordt afgebroken tot [' || v_alg_gebouw_code || ']'); + COMMIT; + END IF; + + -- + v_errorhint := 'Ongeldig mobiel nummer'; + v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel); + + IF LENGTH (v_prs_perslid_mobiel) > 15 + THEN + v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Mobiel nummer te lang', + 'mobiel nummer wordt afgebroken tot [' || v_prs_perslid_mobiel || ']'); + COMMIT; + END IF; + + + v_errorhint := 'Ongeldig telefoonnummer'; + v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr); + + IF LENGTH (v_prs_perslid_telefoonnr) > 15 + THEN + v_prs_perslid_telefoonnr := SUBSTR (v_prs_perslid_telefoonnr, 1, 15); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Telefoonnummer te lang', + 'Telefoonnummer wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']'); + COMMIT; + END IF; + + COMMIT; + + + -- Insert geformatteerde import record + IF v_ongeldig = 0 + THEN + BEGIN + v_errorhint := 'Fout bij toevoegen regel aan importtabel VGLD_IMP_PRS'; + + INSERT INTO vgld_imp_prs (prs_perslid_nr, + prs_perslid_naam, + prs_perslid_tussenvoegsel, + prs_perslid_voorletters, + prs_perslid_voornaam, + prs_afdeling_code, + prs_srtperslid_omschrijving, + alg_locatie_code, + alg_gebouw_code, + alg_verdieping_volgnr, + alg_ruimte_nr, + prs_perslid_telefoonnr, + prs_perslid_mobiel, + prs_perslid_email, + prs_perslid_oslogin) + VALUES (v_prs_perslid_nr, + v_prs_perslid_naam, + v_prs_perslid_tussenvoegsel, + v_prs_perslid_voorletters, + v_prs_perslid_voornaam, + v_prs_afdeling_code, + v_prs_srtperslid_omschrijving, + v_alg_locatie_code, + v_alg_gebouw_code, + NULL, + NULL, + v_prs_perslid_telefoonnr, + v_prs_perslid_mobiel, + v_prs_perslid_email, + v_prs_perslid_oslogin); + + COMMIT; + v_count_import := v_count_import + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := + v_errorhint + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Ingelezen regel kan niet worden weggeschreven!'); + COMMIT; + END; + END IF; END IF; - COMMIT; + END; + END LOOP; - -- + IF (header_is_valid = 0) + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Ongeldig importbestand', + 'Geen header of header niet volgens specificatie!'); + ELSE + fac.imp_writelog (p_import_key, + 'S', + 'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog ( + p_import_key, + 'S', + 'Persoon: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import), + ''); + END IF; - v_errorhint := 'Ongeldig loginnaam'; - v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin); - - IF LENGTH (v_prs_perslid_oslogin) > 30 - THEN - v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Loginnaam te lang', - 'Loginnaam wordt afgebroken tot [' - || v_prs_perslid_oslogin - || ']' - ); - ELSE - IF (v_prs_perslid_oslogin IS NULL) - THEN - v_ongeldig := 1; - fac.imp_writelog - (p_import_key, - 'E', - v_aanduiding || 'Usernaam/login onbekend', - 'Usernaam/login is verplicht; regel wordt overgeslagen!' - ); - END IF; - END IF; - COMMIT; - - -- - v_errorhint := 'Ongeldig e-mailadres'; - v_prs_perslid_email := TRIM (v_prs_perslid_email); - - IF LENGTH (v_prs_perslid_email) > 200 - THEN - v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'E-mailadres te lang', - 'E-mailadres wordt afgebroken tot [' - || v_prs_perslid_email - || ']' - ); - COMMIT; - END IF; - - v_errorhint := 'Ongeldig personeelsnummer'; - v_prs_perslid_nr := TRIM (v_prs_perslid_nr); - - IF LENGTH (v_prs_perslid_nr) > 16 - THEN - v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Personeelsnummer te lang', - 'Personeelsnummer wordt afgebroken tot [' - || v_prs_perslid_nr - || ']' - ); - END IF; - COMMIT; - - - -- - v_errorhint := 'Ongeldig tussenvoegsel'; - v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel); - - IF LENGTH (v_prs_perslid_tussenvoegsel) > 15 - THEN - v_prs_perslid_tussenvoegsel := - SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Tussenvoegsel te lang', - 'Tussenvoegsel wordt afgebroken tot [' - || v_prs_perslid_tussenvoegsel - || ']' - ); - COMMIT; - END IF; - - -- - v_errorhint := 'Ongeldige voorletters'; - v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters); - - IF LENGTH (v_prs_perslid_voorletters) > 10 - THEN - v_prs_perslid_voorletters := - SUBSTR (v_prs_perslid_voorletters, 1, 10); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Voorletters te lang', - 'Voorletters worden afgebroken tot [' - || v_prs_perslid_voorletters - || ']' - ); - COMMIT; - END IF; - - -- - v_errorhint := 'Ongeldige voornaam'; - v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam); - - IF LENGTH (v_prs_perslid_voornaam) > 30 - THEN - v_prs_perslid_voornaam := - SUBSTR (v_prs_perslid_voornaam, 1, 30); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Voornaam is te lang', - 'Voornaam wordt afgebroken tot [' - || v_prs_perslid_voornaam - || ']' - ); - END IF; - COMMIT; - - - - - - v_errorhint := 'Ongeldige afdelingcode'; - v_prs_afdeling_code := TRIM (v_prs_afdeling_code); - - IF LENGTH (v_prs_afdeling_code) > 10 - THEN - v_prs_afdeling_code := SUBSTR (v_prs_afdeling_code, 1, 10); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Afdelingscode te lang', - 'Afdelingscode wordt afgebroken tot [' - || v_prs_afdeling_code - || ']' - ); - ELSE - IF (v_prs_afdeling_code IS NULL) - THEN - v_ongeldig := 1; - fac.imp_writelog - (p_import_key, - 'E', - v_aanduiding || 'Afdelingscode onbekend', - 'Afdelingscode is verplicht; regel wordt overgeslagen!' - ); - END IF; - END IF; - COMMIT; - - - -- - v_errorhint := 'Ongeldige functie'; - v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving); - - IF LENGTH (v_prs_srtperslid_omschrijving) > 60 - THEN - v_prs_srtperslid_omschrijving := - SUBSTR (v_prs_srtperslid_omschrijving, 1, 60); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Functie te lang', - 'Functie wordt afgebroken tot [' - || v_prs_srtperslid_omschrijving - || ']' - ); - ELSE - IF (v_prs_srtperslid_omschrijving IS NULL) - THEN - v_ongeldig := 1; - fac.imp_writelog - (p_import_key, - 'E', - v_aanduiding || 'Functie onbekend', - 'Functie is verplicht; regel wordt overgeslagen!' - ); - END IF; - END IF; - COMMIT; - - -- - v_errorhint := 'Ongeldige plaats/locatiecode'; - v_alg_locatie_code := TRIM(v_alg_locatie_code); - - IF LENGTH (v_alg_locatie_code) > 5 - THEN - v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Locatiecode te lang', - 'Locatiecode wordt afgebroken tot [' - || v_alg_locatie_code - || ']' - ); - COMMIT; - END IF; - - -- - v_errorhint := 'Ongeldige plaats/gebouwcode'; - v_alg_gebouw_code := TRIM(v_alg_gebouw_code); - - IF LENGTH (v_alg_gebouw_code) > 10 - THEN - v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Gebouwcode te lang', - 'Gebouwcode wordt afgebroken tot [' - || v_alg_gebouw_code - || ']' - ); - COMMIT; - END IF; - - -- - v_errorhint := 'Ongeldig mobiel nummer'; - v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel); - - IF LENGTH (v_prs_perslid_mobiel) > 15 - THEN - v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Mobiel nummer te lang', - 'mobiel nummer wordt afgebroken tot [' - || v_prs_perslid_mobiel - || ']' - ); - COMMIT; - END IF; - - - v_errorhint := 'Ongeldig telefoonnummer'; - v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr); - - IF LENGTH (v_prs_perslid_telefoonnr) > 15 - THEN - v_prs_perslid_telefoonnr := - SUBSTR (v_prs_perslid_telefoonnr, 1, 15); - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || 'Telefoonnummer te lang', - 'Telefoonnummer wordt afgebroken tot [' - || v_prs_perslid_telefoonnr - || ']' - ); - COMMIT; - END IF; - - COMMIT; - - - -- Insert geformatteerde import record - IF v_ongeldig = 0 - THEN - BEGIN - v_errorhint := - 'Fout bij toevoegen regel aan importtabel VGLD_IMP_PRS'; - - INSERT INTO vgld_imp_prs - (prs_perslid_nr, prs_perslid_naam, - prs_perslid_tussenvoegsel, - prs_perslid_voorletters, - prs_perslid_voornaam, - prs_afdeling_code, - prs_srtperslid_omschrijving, - alg_locatie_code, alg_gebouw_code, - alg_verdieping_volgnr, alg_ruimte_nr, - prs_perslid_telefoonnr, - prs_perslid_mobiel, - prs_perslid_email, - prs_perslid_oslogin - ) - VALUES (v_prs_perslid_nr, v_prs_perslid_naam, - v_prs_perslid_tussenvoegsel, - v_prs_perslid_voorletters, - v_prs_perslid_voornaam, - v_prs_afdeling_code, - v_prs_srtperslid_omschrijving, - v_alg_locatie_code, v_alg_gebouw_code, - NULL, NULL, - v_prs_perslid_telefoonnr, - v_prs_perslid_mobiel, - v_prs_perslid_email, - v_prs_perslid_oslogin - ); - COMMIT; - v_count_import := v_count_import + 1; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - v_errormsg := - v_errorhint - || ' ORACLE (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog - (p_import_key, - 'E', - v_aanduiding || v_errormsg, - 'Ingelezen regel kan niet worden weggeschreven!' - ); - COMMIT; - END; - END IF; - END IF; - END; - END LOOP; - - IF (header_is_valid = 0) - THEN - fac.imp_writelog (p_import_key, - 'E', - 'Ongeldig importbestand', - 'Geen header of header niet volgens specificatie!' - ); - ELSE - fac.imp_writelog (p_import_key, - 'S', - 'Persoon: aantal ingelezen regels: ' - || TO_CHAR (v_count_tot), - '' - ); - fac.imp_writelog (p_import_key, - 'S', - 'Persoon: aantal ongeldige importregels: ' - || TO_CHAR (v_count_tot - v_count_import), - '' - ); - END IF; - COMMIT; + COMMIT; EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - v_errormsg := - 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - v_errorhint - ); - COMMIT; + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + v_errorhint); + COMMIT; END vgld_import_prs; / -CREATE OR REPLACE PROCEDURE vgld_update_prs ( - p_import_key IN NUMBER -) +CREATE OR REPLACE PROCEDURE vgld_update_prs (p_import_key IN NUMBER) IS - -- LET OP: moet idem zijn als declaratie bij VGLD_IMPORT_PRS - c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: '; - -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer - c_max_delta_percentage NUMBER (10) := 20; - -- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw) - c_ruimte_nr VARCHAR2 (10) := '000'; - -- Groep waar personen in geplaatst worden (indien nog geen groep) + -- LET OP: moet idem zijn als declaratie bij VGLD_IMPORT_PRS + c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: '; + -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer + c_max_delta_percentage NUMBER (10) := 20; + -- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw) + c_ruimte_nr VARCHAR2 (10) := '000'; + -- Groep waar personen in geplaatst worden (indien nog geen groep) - c_key_default_rol NUMBER(10) := 1; + c_key_default_rol NUMBER (10) := 1; - v_aanduiding VARCHAR2 (200); - v_errorhint VARCHAR2 (1000); - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_count_prs_actual NUMBER (10); - v_count_prs_import NUMBER (10); -- Matching actual persons! - v_count_tot NUMBER (10); - v_count_error NUMBER (10); - v_count NUMBER (10); - -- - v_perslid_key NUMBER (10); - v_afdeling_key NUMBER (10); + v_aanduiding VARCHAR2 (200); + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count_prs_actual NUMBER (10); + v_count_prs_import NUMBER (10); -- Matching actual persons! + v_count_tot NUMBER (10); + v_count_error NUMBER (10); + v_count NUMBER (10); + -- + v_perslid_key NUMBER (10); + v_afdeling_key NUMBER (10); - v_srtperslid_key NUMBER (10); - v_oslogin VARCHAR2 (30); - v_wachtwoord VARCHAR2 (30); - v_locatie_key NUMBER (10); - v_gebouw_key NUMBER (10); - v_verdieping_key NUMBER (10); - v_ruimte_key NUMBER (10); - v_wp_key NUMBER (10); - v_wp_volgnr NUMBER (3); - v_wp_oms VARCHAR2 (30); - v_groep_defaultnaam VARCHAR2 (30); + v_srtperslid_key NUMBER (10); + v_oslogin VARCHAR2 (30); + v_wachtwoord VARCHAR2 (30); + v_locatie_key NUMBER (10); + v_gebouw_key NUMBER (10); + v_verdieping_key NUMBER (10); + v_ruimte_key NUMBER (10); + v_wp_key NUMBER (10); + v_wp_volgnr NUMBER (3); + v_wp_oms VARCHAR2 (30); + v_groep_defaultnaam VARCHAR2 (30); - -- Let op! Met eindatum zijn personen die niet meer in dienst zijn. - -- 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 NOT EXISTS ( - SELECT 1 - FROM vgld_imp_prs ip - WHERE ip.prs_perslid_nr = p.prs_perslid_nr); + -- Let op! Met eindatum zijn personen die niet meer in dienst zijn. + -- 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 NOT EXISTS + (SELECT 1 + FROM vgld_imp_prs ip + WHERE ip.prs_perslid_nr = p.prs_perslid_nr); - CURSOR csperslid - IS - SELECT prs_srtperslid_omschrijving - FROM vgld_imp_prs - GROUP BY prs_srtperslid_omschrijving; + CURSOR csperslid IS + SELECT prs_srtperslid_omschrijving + FROM vgld_imp_prs + GROUP BY prs_srtperslid_omschrijving; - CURSOR cprsafd - IS - SELECT UPPER(prs_afdeling_code) prs_afdeling_code, MIN(prs_afdeling_naam) prs_afdeling_naam - FROM vgld_imp_prs - GROUP BY UPPER (prs_afdeling_code); + CURSOR cprsafd IS + SELECT UPPER (prs_afdeling_code) prs_afdeling_code, + MIN (prs_afdeling_naam) prs_afdeling_naam + FROM vgld_imp_prs + GROUP BY UPPER (prs_afdeling_code); - CURSOR cperslid - IS - SELECT * - FROM vgld_imp_prs; + CURSOR cperslid IS SELECT * FROM vgld_imp_prs; - CURSOR cwp - IS - SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code - FROM vgld_imp_prs ip, prs_v_aanwezigperslid p - WHERE ip.alg_locatie_code IS NOT NULL - AND ip.alg_gebouw_code IS NOT NULL - AND UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr); - - -- Alle actieve personen met personeelsnummer (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 personeelsnummer (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); + CURSOR cwp IS + SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code + FROM vgld_imp_prs ip, prs_v_aanwezigperslid p + WHERE ip.alg_locatie_code IS NOT NULL + AND ip.alg_gebouw_code IS NOT NULL + AND UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr); + -- Alle actieve personen met personeelsnummer (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 personeelsnummer (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 - SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) - INTO v_count_prs_actual - FROM prs_perslid - WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL; - - SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) - INTO v_count_prs_import - FROM prs_perslid p, vgld_imp_prs ip - WHERE p.prs_perslid_nr IS NOT NULL - AND p.prs_perslid_verwijder IS NULL - AND p.prs_perslid_nr = ip.prs_perslid_nr; - - IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >= - (100 - c_max_delta_percentage - ) - ) - ) - THEN - -- Geldig importbestand wat betreft aantal personen - FOR recdelprs IN cdelprs - LOOP - BEGIN - -- Heeft persoon actuele/toekomstige verplichtingen? - SELECT COUNT (*) - INTO v_count - FROM prs_perslid p, prs_v_verplichting_keys r - WHERE p.prs_perslid_key = r.prs_perslid_key - AND p.prs_perslid_key = recdelprs.prs_perslid_key; - - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij verwijderen persoon'; - - UPDATE prs_perslid - SET prs_perslid_verwijder = SYSDATE - WHERE prs_perslid_key = recdelprs.prs_perslid_key; - - fac.imp_writelog (p_import_key, - 'I', - 'Persoon met nummer [' - || recdelprs.prs_perslid_nr - || '] en naam [' - || recdelprs.prs_perslid_naam - || ', ' - || recdelprs.prs_perslid_voornaam - || '] is verwijderd', - 'Persoon is verwijderd' - ); - COMMIT; - ELSE - -- Staat persoon INACTIEF? - SELECT COUNT (*) - INTO v_count - FROM prs_perslid p - WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%' - AND p.prs_perslid_key = recdelprs.prs_perslid_key; - - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij INACTIEF zetten persoon'; - - -- Persoon INACTIEF zetten (update naam + reset oslogin) - UPDATE prs_perslid - SET prs_perslid_naam = - SUBSTR (c_persoon_inactief || prs_perslid_naam, - 1, - 30 - ), - prs_perslid_oslogin = NULL - WHERE prs_perslid_key = recdelprs.prs_perslid_key; - - fac.imp_writelog (p_import_key, - 'I', - 'Persoon met nummer [' - || recdelprs.prs_perslid_nr - || '] en naam [' - || recdelprs.prs_perslid_naam - || ', ' - || recdelprs.prs_perslid_voornaam - || '] is INACTIEF gezet', - 'Persoon is INACTIEF gezet' - ); - ELSE - v_errorhint := 'Fout bij INACTIEF maken persoon'; - - -- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet) - UPDATE prs_perslid - SET prs_perslid_oslogin = NULL - WHERE prs_perslid_naam LIKE c_persoon_inactief || '%' - AND prs_perslid_oslogin IS NOT NULL; - - fac.imp_writelog (p_import_key, - 'I', - 'Persoon met nummer [' - || recdelprs.prs_perslid_nr - || '] en naam [' - || recdelprs.prs_perslid_naam - || ', ' - || recdelprs.prs_perslid_voornaam - || '] is INACTIEF gemaakt', - 'Persoon is INACTIEF gemaakt' - ); - END IF; - COMMIT; - END IF; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - 'OTHERS (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_errormsg, - v_errorhint - ); - COMMIT; - END; - END LOOP; - - v_count_tot := 0; - v_count_error := 0; - - FOR recsperslid IN csperslid - LOOP - BEGIN - v_count_tot := v_count_tot + 1; - v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - '; - v_errorhint := 'Fout bij bepalen functie'; - - SELECT COUNT (*) - INTO v_count - FROM prs_srtperslid - WHERE UPPER (prs_srtperslid_omschrijving) = - UPPER (recsperslid.prs_srtperslid_omschrijving) - AND prs_srtperslid_verwijder IS NULL; - - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij toevoegen functie'; - - INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) - VALUES (recsperslid.prs_srtperslid_omschrijving); - COMMIT; - END IF; - EXCEPTION - WHEN OTHERS - THEN - v_count_error := v_count_error + 1; - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - 'OTHERS (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - v_errorhint - ); - COMMIT; - END; - END LOOP; - - fac.imp_writelog (p_import_key, - 'S', - 'Functie: verwerkte regels zonder foutmelding: ' - || TO_CHAR (v_count_tot - v_count_error), - '' - ); - fac.imp_writelog (p_import_key, - 'S', - 'Functie: verwerkte regels met foutmelding: ' - || TO_CHAR (v_count_error), - '' - ); - - COMMIT; - - v_count_tot := 0; - v_count_error := 0; - - FOR recperslid IN cperslid - LOOP - BEGIN - v_count_tot := v_count_tot + 1; - v_aanduiding := - recperslid.prs_perslid_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_srtperslid - WHERE prs_srtperslid_verwijder IS NULL - AND UPPER (prs_srtperslid_omschrijving) = - UPPER (recperslid.prs_srtperslid_omschrijving); - - v_errorhint := - 'Fout bij bepalen afdeling [' - || recperslid.prs_afdeling_naam - || ']'; - - SELECT prs_afdeling_key - INTO v_afdeling_key - FROM prs_afdeling - WHERE prs_afdeling_verwijder IS NULL - AND UPPER (prs_afdeling_naam) = UPPER (recperslid.prs_afdeling_code); - - - v_errorhint := 'Fout bij bepalen persoon'; - - SELECT COUNT (*), MAX (prs_perslid_key) - INTO v_count, v_perslid_key - FROM prs_perslid - WHERE prs_perslid_verwijder IS NULL - AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr); - - - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij toevoegen persoon'; - -- Nieuwe persoon uit importbestand, wordt toegevoegd in Facilitor. - INSERT INTO prs_perslid - (prs_perslid_module, prs_srtperslid_key, - prs_afdeling_key, prs_perslid_naam, - prs_perslid_voorletters, - prs_perslid_tussenvoegsel, - prs_perslid_voornaam, - prs_perslid_telefoonnr, - prs_perslid_mobiel, - prs_perslid_email, - prs_perslid_nr, - prs_perslid_oslogin - ) - VALUES ('PRS', v_srtperslid_key, - v_afdeling_key, recperslid.prs_perslid_naam, - recperslid.prs_perslid_voorletters, - recperslid.prs_perslid_tussenvoegsel, - recperslid.prs_perslid_voornaam, - recperslid.prs_perslid_telefoonnr, - recperslid.prs_perslid_mobiel, - recperslid.prs_perslid_email, - recperslid.prs_perslid_nr, - recperslid.prs_perslid_oslogin - ); - COMMIT; - ELSE - - v_errorhint := 'Fout bij wijzigen persoon'; - - -- Functie, Afdeling altijd bijwerken - -- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond. - -- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). - -- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). - -- Personeelsnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). - -- Login: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). - - UPDATE prs_perslid - SET prs_srtperslid_key = v_srtperslid_key, - prs_afdeling_key = v_afdeling_key, - prs_perslid_naam = COALESCE(recperslid.prs_perslid_naam,prs_perslid_naam), - prs_perslid_voorletters = COALESCE(recperslid.prs_perslid_voorletters,prs_perslid_voorletters), - prs_perslid_tussenvoegsel = COALESCE(recperslid.prs_perslid_tussenvoegsel,prs_perslid_tussenvoegsel), - prs_perslid_voornaam = COALESCE(recperslid.prs_perslid_voornaam,prs_perslid_voornaam), - -- VGLD#31908 prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr), - -- VGLD#31908 prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel), - prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email), - prs_perslid_nr = COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr), - prs_perslid_oslogin = COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin) - WHERE prs_perslid_key = v_perslid_key; - COMMIT; - END IF; - - - - EXCEPTION - WHEN OTHERS - THEN - v_count_error := v_count_error + 1; - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - 'OTHERS (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - v_errorhint - ); - COMMIT; - END; - END LOOP; - - fac.imp_writelog (p_import_key, - 'S', - 'Persoon: verwerkte regels zonder foutmelding: ' - || TO_CHAR (v_count_tot - v_count_error), - '' - ); - fac.imp_writelog (p_import_key, - 'S', - 'Persoon: verwerkte regels met foutmelding: ' - || TO_CHAR (v_count_error), - '' - ); - COMMIT; - - v_count_tot := 0; - v_count_error := 0; - - FOR recwp IN cwp - LOOP - BEGIN - v_count_tot := v_count_tot + 1; - v_aanduiding := - recwp.prs_perslid_nr - || '|' - || recwp.prs_perslid_naam - || '|' - || recwp.prs_perslid_voornaam - || '|' - || recwp.alg_locatie_code - || '|' - || recwp.alg_gebouw_code - || ' - '; - v_errorhint := 'Fout bij bepalen persoon'; - - SELECT prs_perslid_key - INTO v_perslid_key - FROM prs_v_aanwezigperslid - WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr); - - v_errorhint := 'Fout bij bepalen locatie'; - - SELECT alg_locatie_key - INTO v_locatie_key - FROM alg_v_aanweziglocatie - WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code); - - v_errorhint := 'Fout bij bepalen gebouw'; - - SELECT alg_gebouw_key - INTO v_gebouw_key - FROM alg_v_aanweziggebouw - WHERE alg_locatie_key = v_locatie_key - AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code); - - v_errorhint := 'Fout bij bepalen verdieping'; - - SELECT alg_verdieping_key - INTO v_verdieping_key - FROM alg_v_aanwezigverdieping - WHERE alg_gebouw_key = v_gebouw_key - AND alg_verdieping_volgnr = (SELECT MIN (v.alg_verdieping_volgnr) - FROM alg_verdieping v - WHERE v.alg_gebouw_key = v_gebouw_key - AND v.alg_verdieping_volgnr >= 0); - - v_errorhint := - 'Fout bij bepalen of persoon in gebouw een werkplek heeft'; - - SELECT COUNT (*) - INTO v_count - FROM prs_perslidwerkplek pw, - prs_werkplek wp, - alg_ruimte r, - alg_verdieping v - WHERE pw.prs_perslid_key = v_perslid_key - AND pw.prs_werkplek_key = wp.prs_werkplek_key - AND wp.prs_alg_ruimte_key = r.alg_ruimte_key - AND r.alg_verdieping_key = v.alg_verdieping_key - AND v.alg_gebouw_key = v_gebouw_key; - - -- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw. - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij bepalen ruimte'; - - SELECT COUNT (*) - INTO v_count - FROM alg_v_aanwezigruimte r - WHERE r.alg_verdieping_key = v_verdieping_key - AND r.alg_ruimte_nr = c_ruimte_nr; - - -- v_count=0 -> ruimte '000' bestaat nog niet. - IF (v_count = 0) - THEN - v_errorhint := 'Fout bij toevoegen ruimte'; - - INSERT INTO alg_ruimte - (alg_verdieping_key, alg_srtruimte_key, - alg_ruimte_nr - ) - VALUES (v_verdieping_key, 21, -- facilitaire ruimte - c_ruimte_nr - ); - COMMIT; - END IF; - - v_errorhint := 'Fout bij bepalen ruimte'; - - SELECT alg_ruimte_key - INTO v_ruimte_key - FROM alg_v_aanwezigruimte r - WHERE r.alg_verdieping_key = v_verdieping_key - AND r.alg_ruimte_nr = c_ruimte_nr; - - v_errorhint := 'Fout bij bepalen vrije werkplek'; - - SELECT COUNT (w.prs_werkplek_key) - INTO v_count - FROM prs_werkplek w - WHERE w.prs_alg_ruimte_key = v_ruimte_key - AND NOT EXISTS ( - SELECT 1 - FROM prs_perslidwerkplek pw - WHERE pw.prs_werkplek_key = - w.prs_werkplek_key); - - IF (v_count > 0) - THEN - SELECT MIN (w.prs_werkplek_key) - INTO v_wp_key - FROM prs_werkplek w - WHERE w.prs_alg_ruimte_key = v_ruimte_key - AND NOT EXISTS ( - SELECT 1 - FROM prs_perslidwerkplek pw - WHERE pw.prs_werkplek_key = - w.prs_werkplek_key); - - v_errorhint := - 'Fout bij koppelen persoon aan vrije werkplek'; - - INSERT INTO prs_perslidwerkplek - (prs_perslid_key, prs_werkplek_key, - prs_perslidwerkplek_bezetting - ) - VALUES (v_perslid_key, v_wp_key, - 100 - ); - COMMIT; - ELSE - v_errorhint := 'Fout bij bepalen nieuwe werkplek'; - - SELECT prs_s_prs_werkplek_key.NEXTVAL - INTO v_wp_key - FROM DUAL; - - SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1 - INTO v_wp_volgnr - FROM prs_werkplek w - WHERE w.prs_alg_ruimte_key = v_ruimte_key; - - v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr); - - v_errorhint := 'Fout bij aanmaken nieuwe werkplek'; - - INSERT INTO prs_werkplek - (prs_werkplek_key, prs_werkplek_module, - prs_werkplek_volgnr, - prs_werkplek_omschrijving, prs_alg_ruimte_key - ) - VALUES (v_wp_key, 'PRR', - v_wp_volgnr, - v_wp_oms, v_ruimte_key - ); - - v_errorhint := - 'Fout bij koppelen persoon aan nieuwe werkplek'; - - INSERT INTO prs_perslidwerkplek - (prs_perslid_key, prs_werkplek_key, - prs_perslidwerkplek_bezetting - ) - VALUES (v_perslid_key, v_wp_key, - 100 - ); - COMMIT; - END IF; - END IF; - EXCEPTION - WHEN OTHERS - THEN - v_count_error := v_count_error + 1; - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - 'OTHERS (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - v_errorhint - ); - COMMIT; - END; - END LOOP; - - fac.imp_writelog (p_import_key, - 'S', - 'Werkplek: verwerkte regels zonder foutmelding: ' - || TO_CHAR (v_count_tot - v_count_error), - '' - ); - fac.imp_writelog (p_import_key, - 'S', - 'Werkplek: verwerkte regels met foutmelding: ' - || TO_CHAR (v_count_error), - '' - ); - COMMIT; - - FOR recnowp IN cnowp - LOOP - BEGIN - fac.imp_writelog (p_import_key, - 'I', - 'Persoon met nummer [' - || recnowp.prs_perslid_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; - - -- Iedereen krijgt _default-rol die nog geen groep heeft. - 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 met key [' || c_key_default_rol || ']'; - - SELECT fac_groep_upper - INTO v_groep_defaultnaam - FROM fac_groep - WHERE fac_groep_key = c_key_default_rol; - - - v_errorhint := - 'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']'; - - INSERT INTO fac_gebruikersgroep - (fac_groep_key, prs_perslid_key - ) - VALUES (c_key_default_rol, recnogroup.prs_perslid_key - ); - COMMIT; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - 'OTHERS (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_errormsg, - v_errorhint - ); - COMMIT; - END; - END LOOP; - - - ELSE - fac.imp_writelog - (p_import_key, - 'E', - 'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!', - '- max. verschilpercentage = [' - || TO_CHAR (c_max_delta_percentage) - || '%]
' - || '- #personen importbestand = [' - || TO_CHAR (v_count_prs_import) - || ']
' - || '- #personen Facilitor = [' - || TO_CHAR (v_count_prs_actual) - || ']' - ); - COMMIT; - END IF; -- Geldig importbestand wat betreft aantal inserts - COMMIT; - --- VGLD#51449 iedereen mandateren voor alle kostenplaatsen -INSERT INTO prs_perslidkostenplaats (prs_perslid_key, - prs_kostenplaats_key, - prs_perslidkostenplaats_boeken, - prs_perslidkostenplaats_inzage) - SELECT p.prs_perslid_key, - NULL, - 1, - 0 - FROM prs_v_aanwezigperslid p - WHERE NOT EXISTS (SELECT 1 - FROM prs_perslidkostenplaats - WHERE prs_perslid_key = p.prs_perslid_key); - + SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) + INTO v_count_prs_actual + FROM prs_perslid + WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL; + + SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) + INTO v_count_prs_import + FROM prs_perslid p, vgld_imp_prs ip + WHERE p.prs_perslid_nr IS NOT NULL + AND p.prs_perslid_verwijder IS NULL + AND p.prs_perslid_nr = ip.prs_perslid_nr; + + IF ((TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >= (100 - c_max_delta_percentage))) + THEN + -- Geldig importbestand wat betreft aantal personen + FOR recdelprs IN cdelprs + LOOP + BEGIN + -- Heeft persoon actuele/toekomstige verplichtingen? + SELECT COUNT (*) + INTO v_count + FROM prs_perslid p, prs_v_verplichting_keys r + WHERE p.prs_perslid_key = r.prs_perslid_key + AND p.prs_perslid_key = recdelprs.prs_perslid_key; + + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij verwijderen persoon'; + + UPDATE prs_perslid + SET prs_perslid_verwijder = SYSDATE + WHERE prs_perslid_key = recdelprs.prs_perslid_key; + + fac.imp_writelog ( + p_import_key, + 'I', + 'Persoon met nummer [' + || recdelprs.prs_perslid_nr + || '] en naam [' + || recdelprs.prs_perslid_naam + || ', ' + || recdelprs.prs_perslid_voornaam + || '] is verwijderd', + 'Persoon is verwijderd'); + COMMIT; + ELSE + -- Staat persoon INACTIEF? + SELECT COUNT (*) + INTO v_count + FROM prs_perslid p + WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%' + AND p.prs_perslid_key = recdelprs.prs_perslid_key; + + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij INACTIEF zetten persoon'; + + -- Persoon INACTIEF zetten (update naam + reset oslogin) + UPDATE prs_perslid + SET prs_perslid_naam = + SUBSTR (c_persoon_inactief || prs_perslid_naam, 1, 30), + prs_perslid_oslogin = NULL + WHERE prs_perslid_key = recdelprs.prs_perslid_key; + + fac.imp_writelog ( + p_import_key, + 'I', + 'Persoon met nummer [' + || recdelprs.prs_perslid_nr + || '] en naam [' + || recdelprs.prs_perslid_naam + || ', ' + || recdelprs.prs_perslid_voornaam + || '] is INACTIEF gezet', + 'Persoon is INACTIEF gezet'); + ELSE + v_errorhint := 'Fout bij INACTIEF maken persoon'; + + -- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet) + UPDATE prs_perslid + SET prs_perslid_oslogin = NULL + WHERE prs_perslid_naam LIKE c_persoon_inactief || '%' + AND prs_perslid_oslogin IS NOT NULL; + + fac.imp_writelog ( + p_import_key, + 'I', + 'Persoon met nummer [' + || recdelprs.prs_perslid_nr + || '] en naam [' + || recdelprs.prs_perslid_naam + || ', ' + || recdelprs.prs_perslid_voornaam + || '] is INACTIEF gemaakt', + 'Persoon is INACTIEF gemaakt'); + END IF; + + COMMIT; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); + COMMIT; + END; + END LOOP; + + v_count_tot := 0; + v_count_error := 0; + + FOR recsperslid IN csperslid + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - '; + v_errorhint := 'Fout bij bepalen functie'; + + SELECT COUNT (*) + INTO v_count + FROM prs_srtperslid + WHERE UPPER (prs_srtperslid_omschrijving) = + UPPER (recsperslid.prs_srtperslid_omschrijving) + AND prs_srtperslid_verwijder IS NULL; + + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij toevoegen functie'; + + INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) + VALUES (recsperslid.prs_srtperslid_omschrijving); + + COMMIT; + END IF; + EXCEPTION + WHEN OTHERS + THEN + v_count_error := v_count_error + 1; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + v_errorhint); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'Functie: verwerkte regels zonder foutmelding: ' + || TO_CHAR (v_count_tot - v_count_error), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Functie: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), + ''); + + COMMIT; + + v_count_tot := 0; + v_count_error := 0; + + FOR recperslid IN cperslid + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + recperslid.prs_perslid_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_srtperslid + WHERE prs_srtperslid_verwijder IS NULL + AND UPPER (prs_srtperslid_omschrijving) = + UPPER (recperslid.prs_srtperslid_omschrijving); + + v_errorhint := 'Fout bij bepalen afdeling [' || recperslid.prs_afdeling_naam || ']'; + + SELECT prs_afdeling_key + INTO v_afdeling_key + FROM prs_afdeling + WHERE prs_afdeling_verwijder IS NULL + AND UPPER (prs_afdeling_naam) = UPPER (recperslid.prs_afdeling_code); + + + v_errorhint := 'Fout bij bepalen persoon'; + + SELECT COUNT (*), MAX (prs_perslid_key) + INTO v_count, v_perslid_key + FROM prs_perslid + WHERE prs_perslid_verwijder IS NULL + AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr); + + + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij toevoegen persoon'; + + -- Nieuwe persoon uit importbestand, wordt toegevoegd in Facilitor. + INSERT INTO prs_perslid (prs_perslid_module, + prs_srtperslid_key, + prs_afdeling_key, + prs_perslid_naam, + prs_perslid_voorletters, + prs_perslid_tussenvoegsel, + prs_perslid_voornaam, + prs_perslid_telefoonnr, + prs_perslid_mobiel, + prs_perslid_email, + prs_perslid_nr, + prs_perslid_oslogin) + VALUES ('PRS', + v_srtperslid_key, + v_afdeling_key, + recperslid.prs_perslid_naam, + recperslid.prs_perslid_voorletters, + recperslid.prs_perslid_tussenvoegsel, + recperslid.prs_perslid_voornaam, + recperslid.prs_perslid_telefoonnr, + recperslid.prs_perslid_mobiel, + recperslid.prs_perslid_email, + recperslid.prs_perslid_nr, + recperslid.prs_perslid_oslogin); + + COMMIT; + ELSE + v_errorhint := 'Fout bij wijzigen persoon'; + + -- Functie, Afdeling altijd bijwerken + -- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond. + -- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). + -- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). + -- Personeelsnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). + -- Login: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). + + UPDATE prs_perslid + SET prs_srtperslid_key = v_srtperslid_key, + prs_afdeling_key = v_afdeling_key, + prs_perslid_naam = + COALESCE (recperslid.prs_perslid_naam, prs_perslid_naam), + prs_perslid_voorletters = + COALESCE (recperslid.prs_perslid_voorletters, + prs_perslid_voorletters), + prs_perslid_tussenvoegsel = + COALESCE (recperslid.prs_perslid_tussenvoegsel, + prs_perslid_tussenvoegsel), + prs_perslid_voornaam = + COALESCE (recperslid.prs_perslid_voornaam, prs_perslid_voornaam), + -- VGLD#31908 prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr), + -- VGLD#31908 prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel), + prs_perslid_email = + COALESCE (recperslid.prs_perslid_email, prs_perslid_email), + prs_perslid_nr = COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr), + prs_perslid_oslogin = + COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin) + WHERE prs_perslid_key = v_perslid_key; + + COMMIT; + END IF; + EXCEPTION + WHEN OTHERS + THEN + v_count_error := v_count_error + 1; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + v_errorhint); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'Persoon: verwerkte regels zonder foutmelding: ' + || TO_CHAR (v_count_tot - v_count_error), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Persoon: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), + ''); + COMMIT; + + v_count_tot := 0; + v_count_error := 0; + + FOR recwp IN cwp + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + recwp.prs_perslid_nr + || '|' + || recwp.prs_perslid_naam + || '|' + || recwp.prs_perslid_voornaam + || '|' + || recwp.alg_locatie_code + || '|' + || recwp.alg_gebouw_code + || ' - '; + v_errorhint := 'Fout bij bepalen persoon'; + + SELECT prs_perslid_key + INTO v_perslid_key + FROM prs_v_aanwezigperslid + WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr); + + v_errorhint := 'Fout bij bepalen locatie'; + + SELECT alg_locatie_key + INTO v_locatie_key + FROM alg_v_aanweziglocatie + WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code); + + v_errorhint := 'Fout bij bepalen gebouw'; + + SELECT alg_gebouw_key + INTO v_gebouw_key + FROM alg_v_aanweziggebouw + WHERE alg_locatie_key = v_locatie_key + AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code); + + v_errorhint := 'Fout bij bepalen verdieping'; + + SELECT alg_verdieping_key + INTO v_verdieping_key + FROM alg_v_aanwezigverdieping + WHERE alg_gebouw_key = v_gebouw_key + AND alg_verdieping_volgnr = + (SELECT MIN (v.alg_verdieping_volgnr) + FROM alg_verdieping v + WHERE v.alg_gebouw_key = v_gebouw_key AND v.alg_verdieping_volgnr >= 0); + + v_errorhint := 'Fout bij bepalen of persoon in gebouw een werkplek heeft'; + + SELECT COUNT (*) + INTO v_count + FROM prs_perslidwerkplek pw, + prs_werkplek wp, + alg_ruimte r, + alg_verdieping v + WHERE pw.prs_perslid_key = v_perslid_key + AND pw.prs_werkplek_key = wp.prs_werkplek_key + AND wp.prs_alg_ruimte_key = r.alg_ruimte_key + AND r.alg_verdieping_key = v.alg_verdieping_key + AND v.alg_gebouw_key = v_gebouw_key; + + -- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw. + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij bepalen ruimte'; + + SELECT COUNT (*) + INTO v_count + FROM alg_v_aanwezigruimte r + WHERE r.alg_verdieping_key = v_verdieping_key + AND r.alg_ruimte_nr = c_ruimte_nr; + + -- v_count=0 -> ruimte '000' bestaat nog niet. + IF (v_count = 0) + THEN + v_errorhint := 'Fout bij toevoegen ruimte'; + + INSERT INTO alg_ruimte (alg_verdieping_key, + alg_srtruimte_key, + alg_ruimte_nr) + VALUES (v_verdieping_key, 21, -- facilitaire ruimte + c_ruimte_nr); + + COMMIT; + END IF; + + v_errorhint := 'Fout bij bepalen ruimte'; + + SELECT alg_ruimte_key + INTO v_ruimte_key + FROM alg_v_aanwezigruimte r + WHERE r.alg_verdieping_key = v_verdieping_key + AND r.alg_ruimte_nr = c_ruimte_nr; + + v_errorhint := 'Fout bij bepalen vrije werkplek'; + + SELECT COUNT (w.prs_werkplek_key) + INTO v_count + FROM prs_werkplek w + WHERE w.prs_alg_ruimte_key = v_ruimte_key + AND NOT EXISTS + (SELECT 1 + FROM prs_perslidwerkplek pw + WHERE pw.prs_werkplek_key = w.prs_werkplek_key); + + IF (v_count > 0) + THEN + SELECT MIN (w.prs_werkplek_key) + INTO v_wp_key + FROM prs_werkplek w + WHERE w.prs_alg_ruimte_key = v_ruimte_key + AND NOT EXISTS + (SELECT 1 + FROM prs_perslidwerkplek pw + WHERE pw.prs_werkplek_key = w.prs_werkplek_key); + + v_errorhint := 'Fout bij koppelen persoon aan vrije werkplek'; + + INSERT INTO prs_perslidwerkplek (prs_perslid_key, + prs_werkplek_key, + prs_perslidwerkplek_bezetting) + VALUES (v_perslid_key, v_wp_key, 100); + + COMMIT; + ELSE + v_errorhint := 'Fout bij bepalen nieuwe werkplek'; + + SELECT prs_s_prs_werkplek_key.NEXTVAL INTO v_wp_key FROM DUAL; + + SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1 + INTO v_wp_volgnr + FROM prs_werkplek w + WHERE w.prs_alg_ruimte_key = v_ruimte_key; + + v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr); + + v_errorhint := 'Fout bij aanmaken nieuwe werkplek'; + + INSERT INTO prs_werkplek (prs_werkplek_key, + prs_werkplek_module, + prs_werkplek_volgnr, + prs_werkplek_omschrijving, + prs_alg_ruimte_key) + VALUES (v_wp_key, + 'PRR', + v_wp_volgnr, + v_wp_oms, + v_ruimte_key); + + v_errorhint := 'Fout bij koppelen persoon aan nieuwe werkplek'; + + INSERT INTO prs_perslidwerkplek (prs_perslid_key, + prs_werkplek_key, + prs_perslidwerkplek_bezetting) + VALUES (v_perslid_key, v_wp_key, 100); + + COMMIT; + END IF; + END IF; + EXCEPTION + WHEN OTHERS + THEN + v_count_error := v_count_error + 1; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + v_errorhint); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'Werkplek: verwerkte regels zonder foutmelding: ' + || TO_CHAR (v_count_tot - v_count_error), + ''); + fac.imp_writelog ( + p_import_key, + 'S', + 'Werkplek: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), + ''); + COMMIT; + + FOR recnowp IN cnowp + LOOP + BEGIN + fac.imp_writelog ( + p_import_key, + 'I', + 'Persoon met nummer [' + || recnowp.prs_perslid_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; + + -- Iedereen krijgt _default-rol die nog geen groep heeft. + 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 met key [' || c_key_default_rol || ']'; + + SELECT fac_groep_upper + INTO v_groep_defaultnaam + FROM fac_groep + WHERE fac_groep_key = c_key_default_rol; + + + v_errorhint := + 'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']'; + + INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) + VALUES (c_key_default_rol, recnogroup.prs_perslid_key); + + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); + COMMIT; + END; + END LOOP; + ELSE + fac.imp_writelog ( + p_import_key, + 'E', + 'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!', + '- max. verschilpercentage = [' + || TO_CHAR (c_max_delta_percentage) + || '%]
' + || '- #personen importbestand = [' + || TO_CHAR (v_count_prs_import) + || ']
' + || '- #personen Facilitor = [' + || TO_CHAR (v_count_prs_actual) + || ']'); + COMMIT; + END IF; -- Geldig importbestand wat betreft aantal inserts + + COMMIT; + + -- VGLD#51449 iedereen mandateren voor alle kostenplaatsen + INSERT INTO prs_perslidkostenplaats (prs_perslid_key, + prs_kostenplaats_key, + prs_perslidkostenplaats_boeken, + prs_perslidkostenplaats_inzage) + SELECT p.prs_perslid_key, + NULL, + 1, + 0 + FROM prs_v_aanwezigperslid p + WHERE NOT EXISTS + (SELECT 1 + FROM prs_perslidkostenplaats + WHERE prs_perslid_key = p.prs_perslid_key); END vgld_update_prs; / - - ------ ------ FACTUUREXPORT / KOPPELING EXACT ------ -- View waarin bij de factuur met fin_factuur_key het bijbehorende factuurbestand (PDF) geldt. -CREATE OR REPLACE VIEW vgld_v_factuur_bestand (fin_factuur_key, fin_factuur_bestand) + +CREATE OR REPLACE VIEW vgld_v_factuur_bestand +( + fin_factuur_key, + fin_factuur_bestand +) AS -SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde -FROM fin_kenmerkfactuur kf -WHERE kf.fin_kenmerkfactuur_verwijder IS NULL -AND fin_kenmerk_key = 1; + SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde + FROM fin_kenmerkfactuur kf + WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 1; -- View waarin bij de factuur met fin_factuur_key het bijbehorende betaalreferentie of betaalkenmerk geldt. -CREATE OR REPLACE VIEW vgld_v_factuur_betaalref (fin_factuur_key, fin_factuur_betaalref) + +CREATE OR REPLACE VIEW vgld_v_factuur_betaalref +( + fin_factuur_key, + fin_factuur_betaalref +) AS -SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde -FROM fin_kenmerkfactuur kf -WHERE kf.fin_kenmerkfactuur_verwijder IS NULL -AND fin_kenmerk_key = 2; + SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde + FROM fin_kenmerkfactuur kf + WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 2; -- View waarin bij de factuur met fin_factuur_key de omschrijving van de kopregel (naar Exact) wordt bepaald. -CREATE OR REPLACE VIEW vgld_v_factuur_omschr_kopregel (fin_factuur_key, fin_factuur_omschr_kopregel) + +CREATE OR REPLACE VIEW vgld_v_factuur_omschr_kopregel +( + fin_factuur_key, + fin_factuur_omschr_kopregel +) AS -SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde -FROM fin_kenmerkfactuur kf -WHERE kf.fin_kenmerkfactuur_verwijder IS NULL -AND fin_kenmerk_key = 81; + SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde + FROM fin_kenmerkfactuur kf + WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 81; -- View waarin bij de factuur met fin_factuur_key de omschrijving van de kopregel (naar Exact) wordt bepaald. -CREATE OR REPLACE VIEW vgld_v_factuurregel_datum (fin_factuurregel_key, fin_factuurregel_datum) + +CREATE OR REPLACE VIEW vgld_v_factuurregel_datum +( + fin_factuurregel_key, + fin_factuurregel_datum +) AS -SELECT kfr.fin_factuurregel_key, kfr.fin_kenmerkfactregel_waarde -FROM fin_kenmerkfactregel kfr -WHERE kfr.fin_kenmerkfactregel_verwijder IS NULL -AND fin_kenmerk_key = 82; + SELECT kfr.fin_factuurregel_key, kfr.fin_kenmerkfactregel_waarde + FROM fin_kenmerkfactregel kfr + WHERE kfr.fin_kenmerkfactregel_verwijder IS NULL AND fin_kenmerk_key = 82; -- view tbv export naar exact -CREATE OR REPLACE VIEW vgld_v_factuur_mldcnt_gegevens ( - fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_boekmaand, - fin_factuur_nr, - fin_factuur_bestand, - prs_bedrijf_key, - fin_factuurregel_totaal, - fin_factuurregel_btw, - fin_factuurregel_btw_perc, - fin_btwtabelwaarde_btwcode, - fin_factuurregel_nr, - fin_factuurregel_omschrijving, - fin_factuurregel_datum, - fin_factuur_debiteur_nr, - fin_factuur_betaalref, - fin_factuur_omschr_kopregel, - project_nummer, - prs_kostensoort_oms, - prs_kostensoort_doorbelasten, - prs_kostenplaats_nr, - bes_opdr_key, - mld_opdr_key, - cnt_contract_key, - fin_factuur_statuses_key - ) + +CREATE OR REPLACE VIEW vgld_v_factuur_mldcnt_gegevens +( + fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuurregel_totaal, + fin_factuurregel_btw, + fin_factuurregel_btw_perc, + fin_btwtabelwaarde_btwcode, + fin_factuurregel_nr, + fin_factuurregel_omschrijving, + fin_factuurregel_datum, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + fin_factuur_omschr_kopregel, + project_nummer, + prs_kostensoort_oms, + prs_kostensoort_doorbelasten, + prs_kostenplaats_nr, + bes_opdr_key, + mld_opdr_key, + cnt_contract_key, + fin_factuur_statuses_key +) AS - SELECT DISTINCT f.fin_factuur_key, - COALESCE (TO_CHAR (cnt_contract_nummer), - (SELECT sd.ins_srtdiscipline_prefix - || m.mld_melding_key - || '/' - || o.mld_opdr_bedrijfopdr_volgnr - FROM mld_melding m, - mld_stdmelding std, - ins_tab_discipline d, - ins_srtdiscipline sd - WHERE m.mld_melding_key = o.mld_melding_key - AND m.mld_stdmelding_key = std.mld_stdmelding_key - AND std.mld_ins_discipline_key = d.ins_discipline_key - AND d.ins_srtdiscipline_key = - sd.ins_srtdiscipline_key) - ) - opdracht_id, - f.fin_factuur_datum, - f.fin_factuur_boekmaand, - f.fin_factuur_nr, - fb.fin_factuur_bestand, - COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key, - fr.fin_factuurregel_totaal, - fr.fin_factuurregel_btw, - btw.fin_btwtabelwaarde_perc, - btw.fin_btwtabelwaarde_code, - fr.fin_factuurregel_nr, - fr.fin_factuurregel_omschrijving, - frd.fin_factuurregel_datum, - f.fin_factuur_debiteur_nr, - fbr.fin_factuur_betaalref, - fok.fin_factuur_omschr_kopregel, - NULL projectnummer, - COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms), - DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten), - COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr, - NULL bes_opdr_key, - o.mld_opdr_key, - c.cnt_contract_key, - f.fin_factuur_statuses_key - FROM fin_factuur f, - vgld_v_factuur_bestand fb, - vgld_v_factuur_betaalref fbr, - vgld_v_factuur_omschr_kopregel fok, - fin_factuurregel fr, - vgld_v_factuurregel_datum frd, - fin_btwtabelwaarde btw, - mld_opdr o, - mld_typeopdr ot, - cnt_contract c, - prs_bedrijf b_o, - prs_bedrijf b_c, - prs_kostensoort ks, - prs_kostensoort ks_regel, - prs_kostenplaats kp_c, - prs_kostenplaats kp_o - WHERE f.fin_factuur_key = fr.fin_factuur_key - AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+) - AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key - AND f.fin_factuur_key = fb.fin_factuur_key(+) - AND f.fin_factuur_key = fbr.fin_factuur_key(+) - AND f.fin_factuur_key = fok.fin_factuur_key(+) - AND f.bes_bestelopdr_key is null - AND f.mld_opdr_key = o.mld_opdr_key(+) - AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+) - AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+) - AND f.cnt_contract_key = c.cnt_contract_key(+) - AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+) - AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+) - AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+) - AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) - AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+); + SELECT DISTINCT + f.fin_factuur_key, + COALESCE ( + TO_CHAR (cnt_contract_nummer), + (SELECT sd.ins_srtdiscipline_prefix + || m.mld_melding_key + || '/' + || o.mld_opdr_bedrijfopdr_volgnr + FROM mld_melding m, + mld_stdmelding std, + ins_tab_discipline d, + ins_srtdiscipline sd + WHERE m.mld_melding_key = o.mld_melding_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = d.ins_discipline_key + AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)) + opdracht_id, + f.fin_factuur_datum, + f.fin_factuur_boekmaand, + f.fin_factuur_nr, + fb.fin_factuur_bestand, + COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) + prs_bedrijf_key, + fr.fin_factuurregel_totaal, + fr.fin_factuurregel_btw, + btw.fin_btwtabelwaarde_perc, + btw.fin_btwtabelwaarde_code, + fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, + frd.fin_factuurregel_datum, + f.fin_factuur_debiteur_nr, + fbr.fin_factuur_betaalref, + fok.fin_factuur_omschr_kopregel, + NULL + projectnummer, + COALESCE (ks_regel.prs_kostensoort_oms, ks.prs_kostensoort_oms), + DECODE (ks_regel.prs_kostensoort_oms, + NULL, ks.prs_kostensoort_doorbelasten, + ks_regel.prs_kostensoort_doorbelasten), + COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) + prs_kostenplaats_nr, + NULL + bes_opdr_key, + o.mld_opdr_key, + c.cnt_contract_key, + f.fin_factuur_statuses_key + FROM fin_factuur f, + vgld_v_factuur_bestand fb, + vgld_v_factuur_betaalref fbr, + vgld_v_factuur_omschr_kopregel fok, + fin_factuurregel fr, + vgld_v_factuurregel_datum frd, + fin_btwtabelwaarde btw, + mld_opdr o, + mld_typeopdr ot, + cnt_contract c, + prs_bedrijf b_o, + prs_bedrijf b_c, + prs_kostensoort ks, + prs_kostensoort ks_regel, + prs_kostenplaats kp_c, + prs_kostenplaats kp_o + WHERE f.fin_factuur_key = fr.fin_factuur_key + AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+) + AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key + AND f.fin_factuur_key = fb.fin_factuur_key(+) + AND f.fin_factuur_key = fbr.fin_factuur_key(+) + AND f.fin_factuur_key = fok.fin_factuur_key(+) + AND f.bes_bestelopdr_key IS NULL + AND f.mld_opdr_key = o.mld_opdr_key(+) + AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key(+) + AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+) + AND f.cnt_contract_key = c.cnt_contract_key(+) + AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+) + AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+) + AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key(+) + AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) + AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+); -CREATE OR REPLACE VIEW vgld_v_factuur_bes_gegevens ( - fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_boekmaand, - fin_factuur_nr, - fin_factuur_bestand, - prs_bedrijf_key, - fin_factuurregel_totaal, - fin_factuurregel_btw, - fin_factuurregel_btw_perc, - fin_btwtabelwaarde_btwcode, - fin_factuurregel_nr, - fin_factuurregel_omschrijving, - fin_factuurregel_datum, - fin_factuur_debiteur_nr, - fin_factuur_betaalref, - fin_factuur_omschr_kopregel, - project_nummer, - prs_kostensoort_oms, - prs_kostensoort_doorbelasten, - prs_kostenplaats_nr, - bes_opdr_key, - mld_opdr_key, - cnt_contract_key, - fin_factuur_statuses_key - ) +CREATE OR REPLACE VIEW vgld_v_factuur_bes_gegevens +( + fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuurregel_totaal, + fin_factuurregel_btw, + fin_factuurregel_btw_perc, + fin_btwtabelwaarde_btwcode, + fin_factuurregel_nr, + fin_factuurregel_omschrijving, + fin_factuurregel_datum, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + fin_factuur_omschr_kopregel, + project_nummer, + prs_kostensoort_oms, + prs_kostensoort_doorbelasten, + prs_kostenplaats_nr, + bes_opdr_key, + mld_opdr_key, + cnt_contract_key, + fin_factuur_statuses_key +) AS - SELECT DISTINCT f.fin_factuur_key, - TO_CHAR (bo.bes_bestelopdr_id) opdracht_id, - f.fin_factuur_datum, - f.fin_factuur_boekmaand, - f.fin_factuur_nr, - fb.fin_factuur_bestand, - b.prs_bedrijf_key, - fr.fin_factuurregel_totaal, - fr.fin_factuurregel_btw, - btw.fin_btwtabelwaarde_perc, - btw.fin_btwtabelwaarde_code, - fr.fin_factuurregel_nr, - fr.fin_factuurregel_omschrijving, - frd.fin_factuurregel_datum, - f.fin_factuur_debiteur_nr, - fbr.fin_factuur_betaalref, - fok.fin_factuur_omschr_kopregel, - NULL projectnummer, - COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms), - DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten), - kp.prs_kostenplaats_nr, - bo.bes_bestelopdr_key bes_opdr_key, - NULL mld_opdr_key, - NULL cnt_contract_key, - f.fin_factuur_statuses_key - FROM bes_bestelopdr bo, - prs_bedrijf b, - bes_bestelling bes, - bes_bestelopdr_item boi, - bes_bestelling_item bi, - fin_factuur f, - vgld_v_factuur_bestand fb, - vgld_v_factuur_betaalref fbr, - vgld_v_factuur_omschr_kopregel fok, - fin_factuurregel fr, - vgld_v_factuurregel_datum frd, - fin_btwtabelwaarde btw, - prs_kostensoort ks, - prs_kostensoort ks_regel, - prs_kostenplaats kp - WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key - AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key - AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key - AND bes.bes_bestelling_key = bi.bes_bestelling_key - AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key - AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) - AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+) - AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key - AND f.fin_factuur_key = fr.fin_factuur_key - AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+) - AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key - AND f.fin_factuur_key = fb.fin_factuur_key(+) - AND f.fin_factuur_key = fbr.fin_factuur_key(+) - AND f.fin_factuur_key = fok.fin_factuur_key(+); + SELECT DISTINCT + f.fin_factuur_key, + TO_CHAR (bo.bes_bestelopdr_id) + opdracht_id, + f.fin_factuur_datum, + f.fin_factuur_boekmaand, + f.fin_factuur_nr, + fb.fin_factuur_bestand, + b.prs_bedrijf_key, + fr.fin_factuurregel_totaal, + fr.fin_factuurregel_btw, + btw.fin_btwtabelwaarde_perc, + btw.fin_btwtabelwaarde_code, + fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, + frd.fin_factuurregel_datum, + f.fin_factuur_debiteur_nr, + fbr.fin_factuur_betaalref, + fok.fin_factuur_omschr_kopregel, + NULL + projectnummer, + COALESCE (ks_regel.prs_kostensoort_oms, ks.prs_kostensoort_oms), + DECODE (ks_regel.prs_kostensoort_oms, + NULL, ks.prs_kostensoort_doorbelasten, + ks_regel.prs_kostensoort_doorbelasten), + kp.prs_kostenplaats_nr, + bo.bes_bestelopdr_key + bes_opdr_key, + NULL + mld_opdr_key, + NULL + cnt_contract_key, + f.fin_factuur_statuses_key + FROM bes_bestelopdr bo, + prs_bedrijf b, + bes_bestelling bes, + bes_bestelopdr_item boi, + bes_bestelling_item bi, + fin_factuur f, + vgld_v_factuur_bestand fb, + vgld_v_factuur_betaalref fbr, + vgld_v_factuur_omschr_kopregel fok, + fin_factuurregel fr, + vgld_v_factuurregel_datum frd, + fin_btwtabelwaarde btw, + prs_kostensoort ks, + prs_kostensoort ks_regel, + prs_kostenplaats kp + WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key + AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key + AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key + AND bes.bes_bestelling_key = bi.bes_bestelling_key + AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key + AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) + AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+) + AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key + AND f.fin_factuur_key = fr.fin_factuur_key + AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+) + AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key + AND f.fin_factuur_key = fb.fin_factuur_key(+) + AND f.fin_factuur_key = fbr.fin_factuur_key(+) + AND f.fin_factuur_key = fok.fin_factuur_key(+); CREATE OR REPLACE VIEW vgld_v_factuur_geg AS -SELECT * from vgld_v_factuur_mldcnt_gegevens -UNION -SELECT * from vgld_v_factuur_bes_gegevens; + SELECT * FROM vgld_v_factuur_mldcnt_gegevens + UNION + SELECT * FROM vgld_v_factuur_bes_gegevens; CREATE OR REPLACE VIEW vgld_v_factuur_geg_akkoord AS -SELECT * from vgld_v_factuur_mldcnt_gegevens -WHERE fin_factuur_statuses_key = 6 -UNION -SELECT * from vgld_v_factuur_bes_gegevens -WHERE fin_factuur_statuses_key = 6; + SELECT * + FROM vgld_v_factuur_mldcnt_gegevens + WHERE fin_factuur_statuses_key = 6 + UNION + SELECT * + FROM vgld_v_factuur_bes_gegevens + WHERE fin_factuur_statuses_key = 6; -- De OUDE ascii-rapportage van het exportbestand die voor Exact zou worden gegenereerd. + CREATE OR REPLACE VIEW vgld_v_rap_exact -(regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr, - crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd, - empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30, - empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, field40) +( + regelnummer, + dagb_type, + dagbknr, + periode, + bkjcode, + bkstnr, + oms25, + datum, + empty9, + debnr, + crdnr, + empty12, + bedrag, + drbk_in_val, + valcode, + koers, + kredbep, + bdrkredbep, + vervdatfak, + vervdatkrd, + empty21, + empty22, + weeknummer, + betaalref, + betwijze, + grek_bdr, + empty27, + empty28, + empty29, + empty30, + empty31, + transsubtype, + empty33, + empty34, + empty35, + empty36, + empty37, + empty38, + projectnr, + field40 +) AS - SELECT regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr, - crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd, - empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30, - empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, '!' - FROM (SELECT 0 regelnummer, - 'I' dagb_type, - '42' dagbknr, - '' periode, - '' bkjcode, - TO_CHAR (fin_factuur_key) bkstnr, - opdracht_id oms25, - TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, - '' empty9, - '' debnr, - (SELECT prs_leverancier_nr - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) - crdnr, - '' empty12, - REPLACE (TO_CHAR (bedrag), ',', '.') bedrag, - '' drbk_in_val, - '' valcode, - '' koers, - '' kredbep, - '' bdrkredbep, - '' vervdatfak, - '' vervdatkrd, - '' empty21, - '' empty22, - '' weeknummer, - COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalref, - '' betwijze, - '' grek_bdr, - '' empty27, - '' empty28, - '' empty29, - '' empty30, - '' empty31, - '' transsubtype, - '' empty33, - '' empty34, - '' empty35, - '' empty36, - '' empty37, - '' empty38, - '' projectnr, - '!' empty40 - FROM (SELECT fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_nr, - prs_bedrijf_key, - fin_factuur_debiteur_nr, - fin_factuur_betaalref, - SUM (fin_factuurregel_totaal + fin_factuurregel_btw) - bedrag - FROM vgld_v_factuur_geg_akkoord - GROUP BY fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_nr, - prs_bedrijf_key, - fin_factuur_debiteur_nr, - fin_factuur_betaalref) fg - UNION ALL - SELECT fin_factuurregel_nr regelnummer, - 'I' dagb_type, - '42' dagbknr, - '' periode, - '' bkjcode, - TO_CHAR (fin_factuur_key) boekstuknummer, - COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) oms25, - TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, - prs_kostensoort_oms reknr, - '' debnr, - (SELECT prs_leverancier_nr - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) - crdnr, - '' empty12, - REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag, - '' drbk_in_val, - '' val_code, - '' koers, - '' kredbep, - '' bdrkredbep, - '' vervdatfak, - '' vervdatkrd, - fin_btwtabelwaarde_btwcode btw_code, - REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr, - '' weeknummer, - '' empty24, - '' empty25, - '' empty26, - prs_kostenplaats_nr kstplcode, - '' kstdrcode, - '' empty29, - '' empty30, - '' empty31, - '' transsubtype, - '' empty33, - '' empty34, - '' emtpy35, - '' empty36, - '' empty37, - '' empty38, - project_nummer projectnr, - '!' empty40 - FROM vgld_v_factuur_geg_akkoord fg); - - - + SELECT regelnummer, + dagb_type, + dagbknr, + periode, + bkjcode, + bkstnr, + oms25, + datum, + empty9, + debnr, + crdnr, + empty12, + bedrag, + drbk_in_val, + valcode, + koers, + kredbep, + bdrkredbep, + vervdatfak, + vervdatkrd, + empty21, + empty22, + weeknummer, + betaalref, + betwijze, + grek_bdr, + empty27, + empty28, + empty29, + empty30, + empty31, + transsubtype, + empty33, + empty34, + empty35, + empty36, + empty37, + empty38, + projectnr, + '!' + FROM (SELECT 0 regelnummer, + 'I' dagb_type, + '42' dagbknr, + '' periode, + '' bkjcode, + TO_CHAR (fin_factuur_key) bkstnr, + opdracht_id oms25, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + '' empty9, + '' debnr, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crdnr, + '' empty12, + REPLACE (TO_CHAR (bedrag), ',', '.') bedrag, + '' drbk_in_val, + '' valcode, + '' koers, + '' kredbep, + '' bdrkredbep, + '' vervdatfak, + '' vervdatkrd, + '' empty21, + '' empty22, + '' weeknummer, + COALESCE (fin_factuur_betaalref, + fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalref, + '' betwijze, + '' grek_bdr, + '' empty27, + '' empty28, + '' empty29, + '' empty30, + '' empty31, + '' transsubtype, + '' empty33, + '' empty34, + '' empty35, + '' empty36, + '' empty37, + '' empty38, + '' projectnr, + '!' empty40 + FROM ( SELECT fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag + FROM vgld_v_factuur_geg_akkoord + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref) fg + UNION ALL + SELECT fin_factuurregel_nr regelnummer, + 'I' dagb_type, + '42' dagbknr, + '' periode, + '' bkjcode, + TO_CHAR (fin_factuur_key) boekstuknummer, + COALESCE (fin_factuur_betaalref, + fin_factuur_nr || '/' || fin_factuur_debiteur_nr) oms25, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + prs_kostensoort_oms reknr, + '' debnr, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crdnr, + '' empty12, + REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag, + '' drbk_in_val, + '' val_code, + '' koers, + '' kredbep, + '' bdrkredbep, + '' vervdatfak, + '' vervdatkrd, + fin_btwtabelwaarde_btwcode btw_code, + REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr, + '' weeknummer, + '' empty24, + '' empty25, + '' empty26, + prs_kostenplaats_nr kstplcode, + '' kstdrcode, + '' empty29, + '' empty30, + '' empty31, + '' transsubtype, + '' empty33, + '' empty34, + '' emtpy35, + '' empty36, + '' empty37, + '' empty38, + project_nummer projectnr, + '!' empty40 + FROM vgld_v_factuur_geg_akkoord fg); -- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' waarvan de waarde_code met een -- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht. -CREATE OR REPLACE VIEW vgld_v_fclt_factuur_header ( - result, - result_order - ) -AS -SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '', 1 -FROM fac_usrdata -WHERE fac_usrtab_key = 21 -AND fac_usrdata_verwijder is null; -CREATE OR REPLACE VIEW vgld_v_fclt_factuur_body ( - result, - result_order - ) -AS - SELECT DECODE(regelnummer,0,'','') - || '' || fin_factuur_key || '' - || '' || xml.char_to_html(fin_factuur_nr) || '' - || '' || xml.char_to_html(fin_factuur_bestand) || '' - || '' || xml.char_to_html(fin_factuur_debiteur_nr) || '' - || '' || xml.char_to_html(fin_factuur_omschr_kopregel) || '' - || '' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '' - || '' || datum || '' - || '' || fin_factuur_boekmaand || '' - || '' || xml.char_to_html(grootboekrekening) || '' - || '' || xml.char_to_html(kostensoort_doorbelasten)|| '' - || '' || xml.char_to_html(betaalreferentie) || '' - || '' || xml.char_to_html(crediteur_nr) || '' - || '' || xml.char_to_html(crediteur_naam) || '' - || '' || fin_factuur_totaal_exbtw || '' - || '' || fin_factuur_totaal_incbtw || '' - || '' || xml.char_to_html(fin_factuurregel_omschrijving) || '' - || '' || xml.char_to_html(fin_factuurregel_datum) || '' - || '' || fin_factuurregel_totaal || '' - || '' || btw_percentage || '' - || '' || xml.char_to_html(btw_code) || '' - || '' || btw_bedrag || '' - || '' || xml.char_to_html(prs_kostenplaats_nr) || '' - || DECODE(regelnummer, 0, '', DECODE(max_factuur_regelnr - regelnummer,0,'','')) - , - (1000000 + fin_factuur_key) * 10000 + regelnummer - FROM (SELECT 0 regelnummer, - aant_factuur_regels, - max_factuur_regelnr, - fin_factuur_key, - fin_factuur_nr, - fin_factuur_bestand, - fin_factuur_debiteur_nr, - fin_factuur_omschr_kopregel, - opdracht_id bes_mld_cnt_opdracht_id, - TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, - fin_factuur_boekmaand, - '' grootboekrekening, - '' kostensoort_doorbelasten, - betaalreferentie, - (SELECT prs_leverancier_nr - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr, - (SELECT prs_bedrijf_naam - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam, - REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw, - REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw, - '' fin_factuurregel_omschrijving, - '' fin_factuurregel_datum, - '' fin_factuurregel_totaal, - '' btw_percentage, - '' btw_code, - '' btw_bedrag, - '' prs_kostenplaats_nr - FROM (SELECT fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_boekmaand, - fin_factuur_nr, - fin_factuur_bestand, - prs_bedrijf_key, - fin_factuur_debiteur_nr, - COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie, - fin_factuur_omschr_kopregel, - COUNT(fin_factuur_key) AS aant_factuur_regels, - MAX (fin_factuurregel_nr) AS max_factuur_regelnr, - SUM (fin_factuurregel_totaal) bedrag_exbtw, - SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw - FROM vgld_v_factuur_geg_akkoord - GROUP BY fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_boekmaand, - fin_factuur_nr, - fin_factuur_bestand, - prs_bedrijf_key, - fin_factuur_debiteur_nr, - fin_factuur_betaalref, - fin_factuur_omschr_kopregel) fg - UNION ALL - SELECT fin_factuurregel_nr regelnummer, - (SELECT COUNT(fin_factuur_key) - FROM vgld_v_factuur_geg_akkoord fc - WHERE fc.fin_factuur_key = fg.fin_factuur_key - GROUP BY fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_nr, - prs_bedrijf_key, - fin_factuur_debiteur_nr) AS aant_factuur_regels, - (SELECT MAX(fin_factuurregel_nr) - FROM vgld_v_factuur_geg_akkoord fc - WHERE fc.fin_factuur_key = fg.fin_factuur_key - GROUP BY fin_factuur_key, - opdracht_id, - fin_factuur_datum, - fin_factuur_nr, - prs_bedrijf_key, - fin_factuur_debiteur_nr) AS max_factuur_regelnr, - fin_factuur_key, - fin_factuur_nr, - '' fin_factuur_bestand, - fin_factuur_debiteur_nr, - '' fin_factuur_omschr_kopregel, - '' bes_mld_cnt_opdracht_id, - TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, - fin_factuur_boekmaand, - prs_kostensoort_oms grootboekrekening, - TO_CHAR(prs_kostensoort_doorbelasten) kostensoort_doorbelasten, - COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie, - (SELECT prs_leverancier_nr - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr, - (SELECT prs_bedrijf_naam - FROM prs_bedrijf b - WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam, - '' fin_factuur_totaal_exbtw, - '' fin_factuur_totaal_incbtw, - fin_factuurregel_omschrijving, - fin_factuurregel_datum, - REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal, - TO_CHAR(fin_factuurregel_btw_perc) btw_percentage, - fin_btwtabelwaarde_btwcode btw_code, - REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag, - prs_kostenplaats_nr - FROM vgld_v_factuur_geg_akkoord fg - ORDER BY fin_factuur_key, regelnummer); - - - - -CREATE OR REPLACE VIEW vgld_v_export_fclt_factuur ( - result, - result_order - ) -AS -SELECT '',0 FROM DUAL -UNION -SELECT result, result_order FROM vgld_v_fclt_factuur_header -UNION -SELECT result, result_order FROM vgld_v_fclt_factuur_body -UNION -SELECT '',99999999999999999999 FROM DUAL; - - - -CREATE OR REPLACE PROCEDURE vgld_export_fclt_factuur ( - p_applname IN VARCHAR2, - p_applrun IN VARCHAR2, - p_filedir IN VARCHAR2, - p_filename IN VARCHAR2 +CREATE OR REPLACE VIEW vgld_v_fclt_factuur_header +( + result, + result_order ) AS + SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '', + 1 + FROM fac_usrdata + WHERE fac_usrtab_key = 21 AND fac_usrdata_verwijder IS NULL; - -- In cursor cfactuur alle facturen die worden geexporteerd... - CURSOR cfactuur - IS - SELECT fin_factuur_key - FROM vgld_v_factuur_geg_akkoord +CREATE OR REPLACE VIEW vgld_v_fclt_factuur_body +( + result, + result_order +) +AS + SELECT DECODE (regelnummer, 0, '', '') + || '' + || fin_factuur_key + || '' + || '' + || xml.char_to_html (fin_factuur_nr) + || '' + || '' + || xml.char_to_html (fin_factuur_bestand) + || '' + || '' + || xml.char_to_html (fin_factuur_debiteur_nr) + || '' + || '' + || xml.char_to_html (fin_factuur_omschr_kopregel) + || '' + || '' + || xml.char_to_html (bes_mld_cnt_opdracht_id) + || '' + || '' + || datum + || '' + || '' + || fin_factuur_boekmaand + || '' + || '' + || xml.char_to_html (grootboekrekening) + || '' + || '' + || xml.char_to_html (kostensoort_doorbelasten) + || '' + || '' + || xml.char_to_html (betaalreferentie) + || '' + || '' + || xml.char_to_html (crediteur_nr) + || '' + || '' + || xml.char_to_html (crediteur_naam) + || '' + || '' + || fin_factuur_totaal_exbtw + || '' + || '' + || fin_factuur_totaal_incbtw + || '' + || '' + || xml.char_to_html (fin_factuurregel_omschrijving) + || '' + || '' + || xml.char_to_html (fin_factuurregel_datum) + || '' + || '' + || fin_factuurregel_totaal + || '' + || '' + || btw_percentage + || '' + || '' + || xml.char_to_html (btw_code) + || '' + || '' + || btw_bedrag + || '' + || '' + || xml.char_to_html (prs_kostenplaats_nr) + || '' + || DECODE ( + regelnummer, + 0, '', + DECODE (max_factuur_regelnr - regelnummer, + 0, '', + '')), + (1000000 + fin_factuur_key) * 10000 + regelnummer + FROM (SELECT 0 + regelnummer, + aant_factuur_regels, + max_factuur_regelnr, + fin_factuur_key, + fin_factuur_nr, + fin_factuur_bestand, + fin_factuur_debiteur_nr, + fin_factuur_omschr_kopregel, + opdracht_id + bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') + datum, + fin_factuur_boekmaand, + '' + grootboekrekening, + '' + kostensoort_doorbelasten, + betaalreferentie, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crediteur_nr, + (SELECT prs_bedrijf_naam + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crediteur_naam, + REPLACE (TO_CHAR (ROUND (bedrag_exbtw, 2)), ',', '.') + fin_factuur_totaal_exbtw, + REPLACE (TO_CHAR (ROUND (bedrag_incbtw, 2)), ',', '.') + fin_factuur_totaal_incbtw, + '' + fin_factuurregel_omschrijving, + '' + fin_factuurregel_datum, + '' + fin_factuurregel_totaal, + '' + btw_percentage, + '' + btw_code, + '' + btw_bedrag, + '' + prs_kostenplaats_nr + FROM ( SELECT fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + COALESCE (fin_factuur_betaalref, + fin_factuur_nr || '/' || fin_factuur_debiteur_nr) + betaalreferentie, + fin_factuur_omschr_kopregel, + COUNT (fin_factuur_key) + AS aant_factuur_regels, + MAX (fin_factuurregel_nr) + AS max_factuur_regelnr, + SUM (fin_factuurregel_totaal) + bedrag_exbtw, + SUM (fin_factuurregel_totaal + fin_factuurregel_btw) + bedrag_incbtw + FROM vgld_v_factuur_geg_akkoord + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + fin_factuur_omschr_kopregel) fg + UNION ALL + SELECT fin_factuurregel_nr + regelnummer, + ( SELECT COUNT (fin_factuur_key) + FROM vgld_v_factuur_geg_akkoord fc + WHERE fc.fin_factuur_key = fg.fin_factuur_key + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr) + AS aant_factuur_regels, + ( SELECT MAX (fin_factuurregel_nr) + FROM vgld_v_factuur_geg_akkoord fc + WHERE fc.fin_factuur_key = fg.fin_factuur_key + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr) + AS max_factuur_regelnr, + fin_factuur_key, + fin_factuur_nr, + '' + fin_factuur_bestand, + fin_factuur_debiteur_nr, + '' + fin_factuur_omschr_kopregel, + '' + bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') + datum, + fin_factuur_boekmaand, + prs_kostensoort_oms + grootboekrekening, + TO_CHAR (prs_kostensoort_doorbelasten) + kostensoort_doorbelasten, + COALESCE (fin_factuur_betaalref, + fin_factuur_nr || '/' || fin_factuur_debiteur_nr) + betaalreferentie, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crediteur_nr, + (SELECT prs_bedrijf_naam + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crediteur_naam, + '' + fin_factuur_totaal_exbtw, + '' + fin_factuur_totaal_incbtw, + fin_factuurregel_omschrijving, + fin_factuurregel_datum, + REPLACE (TO_CHAR (ROUND (fin_factuurregel_totaal, 2)), ',', '.') + fin_factuurregel_totaal, + TO_CHAR (fin_factuurregel_btw_perc) + btw_percentage, + fin_btwtabelwaarde_btwcode + btw_code, + REPLACE (TO_CHAR (ROUND (fin_factuurregel_btw, 2)), ',', '.') + btw_bedrag, + prs_kostenplaats_nr + FROM vgld_v_factuur_geg_akkoord fg + ORDER BY fin_factuur_key, regelnummer); + + + +CREATE OR REPLACE VIEW vgld_v_export_fclt_factuur +( + result, + result_order +) +AS + SELECT '', 0 FROM DUAL + UNION + SELECT result, result_order FROM vgld_v_fclt_factuur_header + UNION + SELECT result, result_order FROM vgld_v_fclt_factuur_body + UNION + SELECT '', 99999999999999999999 FROM DUAL; + + + +CREATE OR REPLACE PROCEDURE vgld_export_fclt_factuur (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2) +AS + -- In cursor cfactuur alle facturen die worden geexporteerd... + CURSOR cfactuur IS + SELECT fin_factuur_key + FROM vgld_v_factuur_geg_akkoord GROUP BY fin_factuur_key; - BEGIN - -- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT... - FOR cfact IN cfactuur - LOOP - -- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten - fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); - END LOOP; + -- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT... + FOR cfact IN cfactuur + LOOP + -- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten + fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); + END LOOP; END; / -CREATE OR REPLACE VIEW vgld_v_export_undo_exact ( - result, - result_order - ) -AS -SELECT REPLACE(REPLACE(f.fin_factuur_key - || ';' - || opdracht_id - || ';' - || fin_factuur_datum - || ';' - || fin_factuur_nr - || ';' - || prs_bedrijf_key - || ';' - || fin_factuurregel_totaal - || ';' - || fin_factuurregel_btw - || ';' - || fin_factuurregel_nr - || ';' - || fin_factuur_debiteur_nr - || ';' - || project_nummer - || ';' - || prs_kostensoort_oms - || ';' - || bes_opdr_key - || ';' - || mld_opdr_key - || ';' - || cnt_contract_key - ,CHR (13), ''), CHR (10), ''), f.fin_factuur_key - FROM vgld_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code ='FINVER' - AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key - AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60)) - FROM fac_tracking t1 - WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key) - AND f.fin_factuur_key = t.fac_tracking_refkey - AND f.fin_factuur_statuses_key = 7; - - - -CREATE OR REPLACE PROCEDURE vgld_select_undo_exact ( - p_applname IN VARCHAR2, - p_applrun IN VARCHAR2 +CREATE OR REPLACE VIEW vgld_v_export_undo_exact +( + result, + result_order ) AS - v_errormsg VARCHAR (200); -BEGIN - v_errormsg := 'Geen akties'; + SELECT REPLACE ( + REPLACE ( + f.fin_factuur_key + || ';' + || opdracht_id + || ';' + || fin_factuur_datum + || ';' + || fin_factuur_nr + || ';' + || prs_bedrijf_key + || ';' + || fin_factuurregel_totaal + || ';' + || fin_factuurregel_btw + || ';' + || fin_factuurregel_nr + || ';' + || fin_factuur_debiteur_nr + || ';' + || project_nummer + || ';' + || prs_kostensoort_oms + || ';' + || bes_opdr_key + || ';' + || mld_opdr_key + || ';' + || cnt_contract_key, + CHR (13), + ''), + CHR (10), + ''), + f.fin_factuur_key + FROM vgld_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn + WHERE sn.fac_srtnotificatie_code = 'FINVER' + AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key + AND t.fac_tracking_datum >= + (SELECT MAX (t1.fac_tracking_datum) - (1 / (24 * 60)) + FROM fac_tracking t1 + WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key) + AND f.fin_factuur_key = t.fac_tracking_refkey + AND f.fin_factuur_statuses_key = 7; + + +CREATE OR REPLACE PROCEDURE vgld_select_undo_exact (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) +AS + v_errormsg VARCHAR (200); +BEGIN + v_errormsg := 'Geen akties'; END; / -- Procedure om alle geexporteerde facturen naar status verwerkt te zetten. -CREATE OR REPLACE PROCEDURE vgld_export_undo_exact ( - p_applname IN VARCHAR2, - p_applrun IN VARCHAR2, - p_filedir IN VARCHAR2, - p_filename IN VARCHAR2 -) + +CREATE OR REPLACE PROCEDURE vgld_export_undo_exact (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2) AS - CURSOR cfactuur - IS - SELECT DISTINCT f.fin_factuur_key - FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f - WHERE sn.fac_srtnotificatie_code ='FINVER' - AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key - AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60)) - FROM fac_tracking t1 - WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key) - AND f.fin_factuur_key = t.fac_tracking_refkey - AND fin_factuur_statuses_key = 7; + CURSOR cfactuur IS + SELECT DISTINCT f.fin_factuur_key + FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f + WHERE sn.fac_srtnotificatie_code = 'FINVER' + AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key + AND t.fac_tracking_datum >= + (SELECT MAX (t1.fac_tracking_datum) - (1 / (24 * 60)) + FROM fac_tracking t1 + WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key) + AND f.fin_factuur_key = t.fac_tracking_refkey + AND fin_factuur_statuses_key = 7; - v_errormsg VARCHAR (200); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); + v_errormsg VARCHAR (200); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); BEGIN - v_errormsg := 'Geen akties'; + v_errormsg := 'Geen akties'; - FOR cfact IN cfactuur - LOOP - -- Eerst de factuur in tracking zetten... - -- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via - -- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL); + FOR cfact IN cfactuur + LOOP + -- Eerst de factuur in tracking zetten... + -- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via + -- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL); - -- Dan maar zelf en custom-made: - fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet'); - UPDATE fin_factuur - SET fin_factuur_statuses_key = 6 - WHERE fin_factuur_key = cfact.fin_factuur_key; + -- Dan maar zelf en custom-made: + fac.trackaction ('FINFOK', + cfact.fin_factuur_key, + NULL, + NULL, + 'Factuur uit archief teruggezet'); - END LOOP; + UPDATE fin_factuur + SET fin_factuur_statuses_key = 6 + WHERE fin_factuur_key = cfact.fin_factuur_key; + END LOOP; END; / @@ -1944,97 +2042,97 @@ END; CREATE OR REPLACE VIEW vgld_v_rap_res_infobord ( - aktief, - offset, - fclt_f_jaar, - fclt_f_maand, - fclt_f_dag, - dag, - tijd_van, - tijd_tot, - reserv_ruimte, - fclt_f_ruimte, - fclt_f_dagoverzicht, - activiteit, - catalogus, - aanvrager, - gastheer, - omschrijving, - status, - locatie_code, - gebouw_code, - verdieping_code, - locatie_omschrijving, - gebouw_omschrijving, - verdieping_omschrijving, - alg_locatie_key, - alg_gebouw_key, - alg_verdieping_key, - alg_ruimte_key + aktief, + offset, + fclt_f_jaar, + fclt_f_maand, + fclt_f_dag, + dag, + tijd_van, + tijd_tot, + reserv_ruimte, + fclt_f_ruimte, + fclt_f_dagoverzicht, + activiteit, + catalogus, + aanvrager, + gastheer, + omschrijving, + status, + locatie_code, + gebouw_code, + verdieping_code, + locatie_omschrijving, + gebouw_omschrijving, + verdieping_omschrijving, + alg_locatie_key, + alg_gebouw_key, + alg_verdieping_key, + alg_ruimte_key ) AS -SELECT (CASE + SELECT (CASE WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected' WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed' ELSE 'active' - END) aktief, - TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset, - TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy') fclt_f_jaar, - TO_CHAR (rrr.res_rsv_ruimte_van, 'mm') fclt_f_maand, - TO_CHAR (rrr.res_rsv_ruimte_van, 'dd') fclt_f_dag, - TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag, - TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van, - TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot, - rrg.res_ruimte_nr ruimte, - r.alg_ruimte_omschrijving, - DECODE(RK.ALG_ONRGOEDKENMERK_WAARDE,'1', 'Ja', 'Nee'), - A.RES_ACTIVITEIT_OMSCHRIJVING, - rd.ins_discipline_omschrijving catalogus, - aanvrager.prs_perslid_naam_full aanvrager, - gastheer.prs_perslid_naam_full gastheer, - rrr.res_rsv_ruimte_omschrijving omschrijving, - sf.res_status_fo_omschrijving status, - l.alg_locatie_code locatie_code, - g.alg_gebouw_code gebouw_code, - v.alg_verdieping_code verdieping_code, - l.alg_locatie_omschrijving locatie_omschrijving, - g.alg_gebouw_omschrijving gebouw_omschrijving, - v.alg_verdieping_omschrijving verdieping_omschrijving, - l.alg_locatie_key, - g.alg_gebouw_key, - v.alg_verdieping_key, - r.alg_ruimte_key - FROM res_v_aanwezigrsv_ruimte rrr, - res_ruimte_opstelling rro, - res_v_res_ruimte_gegevens rrg, - res_alg_ruimte rar, - prs_v_perslid_fullnames aanvrager, - prs_v_perslid_fullnames gastheer, - alg_locatie l, - alg_gebouw g, - alg_verdieping v, - alg_ruimte r, - alg_onrgoedkenmerk rk, - res_status_fo sf, - res_activiteit a, - res_discipline rd - WHERE rrr.res_status_fo_key IN (1, 2) - AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key - AND rro.res_ruimte_key = rrg.res_ruimte_key - AND rrg.res_ruimte_key = RAR.RES_RUIMTE_KEY - and RAR.ALG_RUIMTE_KEY = r.alg_ruimte_key - AND rk.alg_onrgoed_key (+)= r.alg_ruimte_key - AND rk.alg_kenmerk_key (+) = 1000 - AND rk.alg_onrgoed_niveau (+) ='R' - AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key - AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key - AND rrg.alg_locatie_key = l.alg_locatie_key - AND rrg.alg_gebouw_key = g.alg_gebouw_key - AND rrg.alg_verdieping_key = v.alg_verdieping_key - AND rrr.res_status_fo_key = sf.res_status_fo_key - AND rrr.res_activiteit_key = a.res_activiteit_key - AND a.res_srtactiviteit_key = 1 -- Ruimte (géén Voorz. + WP)! - AND rrg.res_discipline_key = rd.ins_discipline_key; + END) aktief, + TRUNC ((SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset, + TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy') fclt_f_jaar, + TO_CHAR (rrr.res_rsv_ruimte_van, 'mm') fclt_f_maand, + TO_CHAR (rrr.res_rsv_ruimte_van, 'dd') fclt_f_dag, + TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag, + TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van, + TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot, + rrg.res_ruimte_nr ruimte, + r.alg_ruimte_omschrijving, + DECODE (RK.ALG_ONRGOEDKENMERK_WAARDE, '1', 'Ja', 'Nee'), + A.RES_ACTIVITEIT_OMSCHRIJVING, + rd.ins_discipline_omschrijving catalogus, + aanvrager.prs_perslid_naam_full aanvrager, + gastheer.prs_perslid_naam_full gastheer, + rrr.res_rsv_ruimte_omschrijving omschrijving, + sf.res_status_fo_omschrijving status, + l.alg_locatie_code locatie_code, + g.alg_gebouw_code gebouw_code, + v.alg_verdieping_code verdieping_code, + l.alg_locatie_omschrijving locatie_omschrijving, + g.alg_gebouw_omschrijving gebouw_omschrijving, + v.alg_verdieping_omschrijving verdieping_omschrijving, + l.alg_locatie_key, + g.alg_gebouw_key, + v.alg_verdieping_key, + r.alg_ruimte_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_v_res_ruimte_gegevens rrg, + res_alg_ruimte rar, + prs_v_perslid_fullnames aanvrager, + prs_v_perslid_fullnames gastheer, + alg_locatie l, + alg_gebouw g, + alg_verdieping v, + alg_ruimte r, + alg_onrgoedkenmerk rk, + res_status_fo sf, + res_activiteit a, + res_discipline rd + WHERE rrr.res_status_fo_key IN (1, 2) + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rrg.res_ruimte_key + AND rrg.res_ruimte_key = RAR.RES_RUIMTE_KEY + AND RAR.ALG_RUIMTE_KEY = r.alg_ruimte_key + AND rk.alg_onrgoed_key(+) = r.alg_ruimte_key + AND rk.alg_kenmerk_key(+) = 1000 + AND rk.alg_onrgoed_niveau(+) = 'R' + AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key + AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key + AND rrg.alg_locatie_key = l.alg_locatie_key + AND rrg.alg_gebouw_key = g.alg_gebouw_key + AND rrg.alg_verdieping_key = v.alg_verdieping_key + AND rrr.res_status_fo_key = sf.res_status_fo_key + AND rrr.res_activiteit_key = a.res_activiteit_key + AND a.res_srtactiviteit_key = 1 -- Ruimte (géén Voorz. + WP)! + AND rrg.res_discipline_key = rd.ins_discipline_key; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -2048,14 +2146,13 @@ SELECT (CASE CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_od (p_import_key IN NUMBER) AS - v_seq_of_columns VARCHAR(50); + v_seq_of_columns VARCHAR (50); BEGIN - ---In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) ---hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' + --In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) + --hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;0;0;0;0;0;0;0;0;0'; - -- Variabelelijst + -- Variabelelijst -- v_leveranciernr: 1 -- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet") -- v_factuurdatum: 3 @@ -2078,7 +2175,7 @@ BEGIN -- v_kenmerk1: 20 -- v_boekmaand: 21 - fac_import_factuur_body(p_import_key, v_seq_of_columns); + fac_import_factuur_body (p_import_key, v_seq_of_columns); END; / @@ -2086,8 +2183,8 @@ END; CREATE OR REPLACE PROCEDURE vgld_update_fin_factuur_od (p_import_key IN NUMBER) AS BEGIN - -- Standaard FCLT verwerk import facturen - fac_update_factuur (p_import_key); + -- Standaard FCLT verwerk import facturen + fac_update_factuur (p_import_key); END; / @@ -2101,160 +2198,141 @@ END; CREATE OR REPLACE PROCEDURE vgld_post_import_ext_bedrijf (p_import_key IN NUMBER) AS BEGIN - -- VGLD stuurt geen LUC mee, afgesproken dat elke leverancier LUC gaat zijn (leverancier, uitvoerende en contractant). - -- Daarom in deze post-import alle bedrijven in de import met p_import_key een LUC markeren. + -- VGLD stuurt geen LUC mee, afgesproken dat elke leverancier LUC gaat zijn (leverancier, uitvoerende en contractant). + -- Daarom in deze post-import alle bedrijven in de import met p_import_key een LUC markeren. - UPDATE fac_imp_ext_bedrijf - SET prs_bedrijf_leverancier = 1, - prs_bedrijf_uitvoerende = 1, - prs_bedrijf_contract = 1; - - -- Alle @@ (deze worden in de XSL geplaatst) worden door CR/LF vervangen. - UPDATE fac_imp_ext_bedrijf - SET prs_bedrijf_opmerking = replace(prs_bedrijf_opmerking, '@@',CHR (10)); + UPDATE fac_imp_ext_bedrijf + SET prs_bedrijf_leverancier = 1, prs_bedrijf_uitvoerende = 1, prs_bedrijf_contract = 1; + -- Alle @@ (deze worden in de XSL geplaatst) worden door CR/LF vervangen. + UPDATE fac_imp_ext_bedrijf + SET prs_bedrijf_opmerking = REPLACE (prs_bedrijf_opmerking, '@@', CHR (10)); END; / CREATE OR REPLACE PROCEDURE vgld_import_extern_bedrijf (p_import_key IN NUMBER) AS - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_seq_of_columns VARCHAR(255); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_seq_of_columns VARCHAR (255); BEGIN - -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4 - v_seq_of_columns := '2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;0;4;0;0'; - fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 0); - vgld_post_import_ext_bedrijf (p_import_key); - + -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4 + v_seq_of_columns := '2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;0;4;0;0'; + fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 0); + vgld_post_import_ext_bedrijf (p_import_key); 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.imp_writelog (p_import_key, - 'E', - v_errormsg, - 'Inleesproces relaties afgebroken!'); + 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.imp_writelog (p_import_key, + 'E', + v_errormsg, + 'Inleesproces relaties afgebroken!'); END vgld_import_extern_bedrijf; / -CREATE OR REPLACE PROCEDURE vgld_update_extern_bedrijf ( - p_import_key IN NUMBER) +CREATE OR REPLACE PROCEDURE vgld_update_extern_bedrijf (p_import_key IN NUMBER) AS - CURSOR ciban - IS - SELECT b.prs_bedrijf_key, - i.prs_leverancier_nr, - SUBSTR (i.prs_bedrijf_opmerking, - 7, - INSTR (i.prs_bedrijf_opmerking, CHR (10)) - 7) - AS importiban, - (SELECT prs_kenmerklink_waarde - FROM prs_kenmerklink - WHERE prs_kenmerk_key = 1080 --Kenmerk Bankrekening - AND prs_link_key = b.prs_bedrijf_key) - AS iban - FROM fac_imp_ext_bedrijf i, prs_bedrijf b - WHERE b.prs_leverancier_nr = i.prs_leverancier_nr - AND b.prs_bedrijf_verwijder IS NULL; + CURSOR ciban IS + SELECT b.prs_bedrijf_key, + i.prs_leverancier_nr, + SUBSTR (i.prs_bedrijf_opmerking, 7, INSTR (i.prs_bedrijf_opmerking, CHR (10)) - 7) + AS importiban, + (SELECT prs_kenmerklink_waarde + FROM prs_kenmerklink + WHERE prs_kenmerk_key = 1080 --Kenmerk Bankrekening + AND prs_link_key = b.prs_bedrijf_key) + AS iban + FROM fac_imp_ext_bedrijf i, prs_bedrijf b + WHERE b.prs_leverancier_nr = i.prs_leverancier_nr AND b.prs_bedrijf_verwijder IS NULL; BEGIN - -- Parameter p_sync = 0 of 1: - -- 0 = er wordt niet gesynchroniseerd (op leveranciersnummer), maar gewoon (ala FIP) aangevuld. Elke leverancier wordt toegevoegd. - -- 1 = er wel wel gesynchroniseerd (op leveranciernummer), dus add + update + delete - fac_update_bedrijf_body (p_import_key, 1); + -- Parameter p_sync = 0 of 1: + -- 0 = er wordt niet gesynchroniseerd (op leveranciersnummer), maar gewoon (ala FIP) aangevuld. Elke leverancier wordt toegevoegd. + -- 1 = er wel wel gesynchroniseerd (op leveranciernummer), dus add + update + delete + fac_update_bedrijf_body (p_import_key, 1); - --VGLD#55300: Ook kenmerk 'Bankrekening' vullen met IBAN nummer - FOR reciban IN ciban - LOOP - BEGIN - prs.upsertkenmerk (1080, - reciban.prs_bedrijf_key, - reciban.importiban); - END; - END LOOP; + --VGLD#55300: Ook kenmerk 'Bankrekening' vullen met IBAN nummer + FOR reciban IN ciban + LOOP + BEGIN + prs.upsertkenmerk (1080, reciban.prs_bedrijf_key, reciban.importiban); + END; + END LOOP; END; / CREATE OR REPLACE VIEW vgld_v_rap_besstatuslist AS - SELECT bes_bestelling_key, - TO_CHAR (bes_bestelling_key) bestelling, - bes_bestellingstatuses_omschr status, - DECODE (bes_bestelling_status, - 2, 'Actief', - 3, 'Actief', - 4, 'Actief', - 5, 'Actief', - 'Gesloten') - actief, - DECODE (bes_bestelling_status, - 1, 'Afgewezen', - 2, 'Nieuw', - 3, 'Gefiatteerd', - 4, 'Geaccepteerd door FBB', - 5, 'Besteld door FBB', - 6, 'Geleverd', - 7, 'Verwerkt', - 8, 'Geannuleerd', - 9, 'Ontvangen', - '?') - vlgd_status, - b.prs_perslid_key, - b.prs_perslid_key_voor, - pf1.prs_perslid_naam_full besteller, - pf2.prs_perslid_naam_full besteld_voor, - bes_bestelling_datum aanvraagdatum, - (SELECT MAX (fac_tracking_datum) - FROM fac_tracking ft, fac_srtnotificatie sn - WHERE fac_tracking_refkey = b.bes_bestelling_key - AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key - AND fac_srtnotificatie_xmlnode = 'bestelling' - AND fac_srtnotificatie_code = 'BESACP') - facilitair_bedrijfsbureau, - (SELECT MAX (fac_tracking_datum) - FROM fac_tracking ft, fac_srtnotificatie sn - WHERE fac_tracking_refkey = b.bes_bestelling_key - AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key - AND fac_srtnotificatie_xmlnode = 'bestelling' - AND fac_srtnotificatie_code = 'BESFIT') - fiat_manager, - (SELECT MAX (fac_tracking_datum) - FROM fac_tracking ft, fac_srtnotificatie sn - WHERE fac_tracking_refkey = b.bes_bestelling_key - AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key - AND fac_srtnotificatie_xmlnode = 'bestelling' - AND fac_srtnotificatie_code = 'BESBES') - besteld, - bes_bestelling_leverdatum plan_levdatum, - ( SELECT MAX (bes_bestelopdr_item_ontvangen) - FROM bes_bestelopdr bo, - bes_bestelopdr_item boi, - bes_bestelling_item bbi, - bes_bestelling b1 - WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key - AND bbi.bes_bestelopdr_item_key = - boi.bes_bestelopdr_item_key - AND b1.bes_bestelling_key = bbi.bes_bestelling_key - AND b1.bes_bestelling_status IN (6, 7, 9) -- Geleverd, Verwerkt, Ontvangen - AND b.bes_bestelling_key = b1.bes_bestelling_key - GROUP BY b1.bes_bestelling_key) - afgeleverd, - bes_bestelling_opmerking opmerking, - bes_bestelling_lev_opm lever_opemerking - FROM bes_bestelling b, - bes_bestellingstatuses bs, - prs_v_perslid_fullnames_all pf1, - prs_v_perslid_fullnames_all pf2 - WHERE b.bes_bestelling_status = bs.bes_bestellingstatuses_key - AND b.prs_perslid_key = pf1.prs_perslid_key - AND b.prs_perslid_key_voor = pf2.prs_perslid_key - AND fac_activiteit_key IS NULL; + SELECT bes_bestelling_key, + TO_CHAR (bes_bestelling_key) bestelling, + bes_bestellingstatuses_omschr status, + DECODE (bes_bestelling_status, + 2, 'Actief', + 3, 'Actief', + 4, 'Actief', + 5, 'Actief', + 'Gesloten') actief, + DECODE (bes_bestelling_status, + 1, 'Afgewezen', + 2, 'Nieuw', + 3, 'Gefiatteerd', + 4, 'Geaccepteerd door FBB', + 5, 'Besteld door FBB', + 6, 'Geleverd', + 7, 'Verwerkt', + 8, 'Geannuleerd', + 9, 'Ontvangen', + '?') vlgd_status, + b.prs_perslid_key, + b.prs_perslid_key_voor, + pf1.prs_perslid_naam_full besteller, + pf2.prs_perslid_naam_full besteld_voor, + bes_bestelling_datum aanvraagdatum, + (SELECT MAX (fac_tracking_datum) + FROM fac_tracking ft, fac_srtnotificatie sn + WHERE fac_tracking_refkey = b.bes_bestelling_key + AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key + AND fac_srtnotificatie_xmlnode = 'bestelling' + AND fac_srtnotificatie_code = 'BESACP') facilitair_bedrijfsbureau, + (SELECT MAX (fac_tracking_datum) + FROM fac_tracking ft, fac_srtnotificatie sn + WHERE fac_tracking_refkey = b.bes_bestelling_key + AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key + AND fac_srtnotificatie_xmlnode = 'bestelling' + AND fac_srtnotificatie_code = 'BESFIT') fiat_manager, + (SELECT MAX (fac_tracking_datum) + FROM fac_tracking ft, fac_srtnotificatie sn + WHERE fac_tracking_refkey = b.bes_bestelling_key + AND sn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key + AND fac_srtnotificatie_xmlnode = 'bestelling' + AND fac_srtnotificatie_code = 'BESBES') besteld, + bes_bestelling_leverdatum plan_levdatum, + ( SELECT MAX (bes_bestelopdr_item_ontvangen) + FROM bes_bestelopdr bo, + bes_bestelopdr_item boi, + bes_bestelling_item bbi, + bes_bestelling b1 + WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key + AND bbi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key + AND b1.bes_bestelling_key = bbi.bes_bestelling_key + AND b1.bes_bestelling_status IN (6, 7, 9) -- Geleverd, Verwerkt, Ontvangen + AND b.bes_bestelling_key = b1.bes_bestelling_key + GROUP BY b1.bes_bestelling_key) afgeleverd, + bes_bestelling_opmerking opmerking, + bes_bestelling_lev_opm lever_opemerking + FROM bes_bestelling b, + bes_bestellingstatuses bs, + prs_v_perslid_fullnames_all pf1, + prs_v_perslid_fullnames_all pf2 + WHERE b.bes_bestelling_status = bs.bes_bestellingstatuses_key + AND b.prs_perslid_key = pf1.prs_perslid_key + AND b.prs_perslid_key_voor = pf2.prs_perslid_key + AND fac_activiteit_key IS NULL; CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_marx (p_import_key IN NUMBER) AS @@ -2274,88 +2352,92 @@ AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); c_kenmerk_key_bijlage NUMBER (10); - c_kenmerk_key_soort VARCHAR (1) := 'M'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand) - v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren - v_fin_factuur_key NUMBER(10); - v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE; - - CURSOR cfactuur -IS - SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key - FROM fac_imp_factuur i, fin_factuur f - WHERE i.fin_factuur_key IS NOT NULL - AND i.fac_import_key = p_import_key - AND f.fin_factuur_key = i.fin_factuur_key -- Incl bijlage - AND kenmerk1 IS NOT NULL; - + c_kenmerk_key_soort VARCHAR (1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand) + v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren + v_fin_factuur_key NUMBER (10); + v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE; + + CURSOR cfactuur IS + SELECT i.fin_factuur_key, + factuurdatum, + i.kenmerk1, + i.kenmerk2, + i.kenmerk3, + i.kenmerk6, + i.kenmerk7, + i.kenmerk8, + i.kenmerk9, + i.factuurnr, + i.fac_imp_file_index, + f.fin_factuur_totaal, + f.fin_factuur_totaal_btw, + f.mld_opdr_key, + f.cnt_contract_key, + f.bes_bestelopdr_key + FROM fac_imp_factuur i, fin_factuur f + WHERE i.fin_factuur_key IS NOT NULL + AND i.fac_import_key = p_import_key + AND f.fin_factuur_key = i.fin_factuur_key -- Incl bijlage + AND kenmerk1 IS NOT NULL; BEGIN -- Nu kunnen we de standaard FCLT verwerk import facturen draaien fac_update_factuur (p_import_key); -- CUST: post processing voor verwerking van het PDF document SELECT MIN (fin_kenmerk_key) - INTO c_kenmerk_key_bijlage + INTO c_kenmerk_key_bijlage FROM fin_kenmerk WHERE fin_kenmerk_code = 'FACTUURBESTAND' AND fin_kenmerk_verwijder IS NULL; FOR rec IN cfactuur LOOP BEGIN - LOOP + -- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten.... + IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL + THEN BEGIN - -- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten.... - IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + 'IMPORT:' || TO_CHAR (p_import_key), + 'flexcode', + 'FIN:' + || TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan! + || ':' + || c_kenmerk_key_bijlage + || ':' -- De kenmerk key + || c_kenmerk_key_soort -- 'F of M' + ); + + -- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk) + -- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet + IF c_kenmerk_key_soort = 'F' THEN - BEGIN - INSERT INTO fac_result (fac_result_sessionid, - fac_result_naam, - fac_result_waarde) - VALUES ( - 'IMPORT:' || TO_CHAR (p_import_key), - 'flexcode', - 'FIN:' - || TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan! - || ':' - || c_kenmerk_key_bijlage - || ':' -- De kenmerk key - || c_kenmerk_key_soort -- 'F of M' - ); - - -- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk) - -- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet - IF c_kenmerk_key_soort = 'M' - THEN - INSERT INTO fin_kenmerkfactuur (fin_factuur_key, - fin_kenmerk_key, - fin_kenmerkfactuur_waarde) - VALUES (rec.fin_factuur_key, - c_kenmerk_key_bijlage, - rec.kenmerk1); - END IF; - EXCEPTION - WHEN OTHERS - THEN - v_aanduiding_controle := - 'Van factuur met key ' - || rec.fin_factuur_key - || ' is de bestandsnaam niet bewaard (regel ' - || rec.fac_imp_file_index - || ')'; - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding_controle, - 'Factuurnr:' - || rec.factuurnr - || ' / Bestandsnaam: ' - || rec.kenmerk1); - - END; - - COMMIT; + INSERT INTO fin_kenmerkfactuur (fin_factuur_key, + fin_kenmerk_key, + fin_kenmerkfactuur_waarde) + VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1); END IF; + + EXCEPTION + WHEN OTHERS + THEN + v_aanduiding_controle := + 'Van factuur met key ' + || rec.fin_factuur_key + || ' is de bestandsnaam niet bewaard (regel ' + || rec.fac_imp_file_index + || ')'; + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding_controle, + 'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1); END; - END LOOP; + + COMMIT; + END IF; END; END LOOP; EXCEPTION @@ -2419,7 +2501,10 @@ END; ------ payload end ------ SET DEFINE OFF -BEGIN adm.systrackscriptId ('$Id$', 0); END; + +BEGIN + adm.systrackscriptId ('$Id$', 0); +END; / COMMIT;