-- Script containing customer specific configuration sql statements for SKAF -- (c) 2009 SG|facilitor bv -- $Revision$ -- $Id$ -- -- Support: +31 53 4800710 DEFINE thisfile = 'SKAF.SQL' DEFINE dbuser = 'SKAF' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE VIEW skaf_v_import_log AS SELECT imp_log_status fclt_f_status, imp_log_omschrijving omschrijving, imp_log_hint opmerking FROM imp_log WHERE imp_log_applicatie = 'PRS'; -- Mail2Melding - Basis uit SVRZ overgenomen: --- IT SKAF -: key= 861= Melding ICT Overig/Restmail (ict@skaf.facilitor.nl) CREATE OR REPLACE PROCEDURE SKAF_processemail ( pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS c_onbekend_key NUMBER (10) := 10001 ; -- PROD = 10001; -- Melder onbekend v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_exist_ticket VARCHAR2 (255) := ''; v_perslid_key NUMBER (10); v_kostenplaats_key NUMBER (10); v_locatie_key NUMBER (10); v_discipline_key NUMBER (10); v_stdmelding_key NUMBER (10); v_melding_key NUMBER (10); v_folder_kkey NUMBER (10); v_count NUMBER (10); v_count_wp NUMBER (10); v_fac_result_from VARCHAR2 (250); v_fac_result_fromaddr VARCHAR2 (250); v_fw_from VARCHAR2 (1000) := ''; v_from_string VARCHAR2 (1000) := ''; v_voor_at VARCHAR2 (1000) := ''; v_na_at VARCHAR2 (1000) := ''; BEGIN CASE WHEN UPPER (pto) LIKE 'ICT@%' THEN -- 1. HANDMATIG doorgestuurd vanuit ICT@ska.nl - gaan we eerst de van-regel eruit halen ----- From: Brandon van Gelder | Ska > IF INSTR (pbody, '@',1,1)>0 AND REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)>0 AND (INSTR (pbody, '@',1,1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) >0 -- Er moet een Van-regel inclusief een @ in staan THEN v_from_string := SUBSTR(pbody, REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1), INSTR(pbody,CHR(10),REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) ; IF INSTR(v_from_string, '<',1,1)>0 THEN v_na_at := SUBSTR(v_from_string, INSTR(v_from_string,'@',1,1)+1, INSTR(v_from_string,'.nl')+3 - INSTR(v_from_string,'@',1,1)-1) ; v_voor_at := SUBSTR (v_from_string, INSTR (v_from_string, '<',1,1) + 1, INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, '<',1,1) -1); v_fw_from := v_voor_at || '@' || v_na_at; ELSE v_na_at := SUBSTR(v_from_string, INSTR(v_from_string,'@',1,1)+1, REGEXP_INSTR(v_from_string,'$')-INSTR(v_from_string,'@',1,1)-1) ; v_voor_at := SUBSTR (v_from_string, INSTR (v_from_string, ':',1,1) + 2, INSTR (v_from_string, '@',1,1) - INSTR (v_from_string, ':',1,1) -2); v_fw_from := v_voor_at || '@' || v_na_at; END IF; ELSE -- 2. AUTOMATISCH doorgestuurde mail OF geen "Van: met email-adres" in de body. Dan dus maar terugvallen op de v_fromaddr... SELECT fac_result_waarde INTO v_fac_result_fromaddr FROM fac_result WHERE fac_result_sessionid = psessionid AND fac_result_naam = 'fromaddr' ; v_fac_result_fromaddr := REPLACE(REPLACE(v_fac_result_fromaddr,'>',''),'<','') ; v_fw_from := v_fac_result_fromaddr; END IF; v_fw_from := SUBSTR (v_fw_from, 1, 50); -- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom? v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???'); SELECT COUNT (*), max(prs_perslid_key) INTO v_count, v_perslid_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) LIKE UPPER (v_fw_from) || '%'; -- Als er persoon gevonden is, dan ff checken of er ook werkplekkoppelingen onder zijn aangemaakt IF v_count = 1 THEN SELECT COUNT (*) INTO v_count_wp FROM prs_perslidwerkplek WHERE prs_perslid_key = v_perslid_key; END IF; -- Als er persoon gevonden is, dan ff checken of er op gekoppelde Afdeling ook een kostenplaats is gekoppeld IF v_count = 1 THEN SELECT MIN(a.prs_kostenplaats_key) INTO v_kostenplaats_key FROM prs_v_aanwezigperslid p, prs_afdeling a WHERE prs_perslid_key = v_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key ; END IF; -- Locatie erbij halen IF v_count = 1 AND v_count_wp > 0 THEN SELECT p.prs_perslid_key, MIN (wpg.alg_locatie_key) INTO v_perslid_key, v_locatie_key FROM prs_v_aanwezigperslid p, (SELECT pw.prs_perslid_key, pw.prs_werkplek_key FROM prs_perslidwerkplek pw WHERE NOT EXISTS (SELECT 1 FROM prs_perslidwerkplek WHERE prs_perslid_key = pw.prs_perslid_key AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw, prs_v_werkplekperslid_gegevens wpg WHERE p.prs_perslid_key = v_perslid_key AND p.prs_perslid_key = pw.prs_perslid_key(+) AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+) GROUP BY p.prs_perslid_key; END IF; -- Geen werkplek of Melder onbekend - Dan melding op locatie_key 922 (Servicecentrum Amsterdamseweg) IF (v_count = 1 AND v_count_wp = 0) OR v_count = 0 THEN v_locatie_key := 922; END IF; -- Melder kan niet bepaald worden, dus inlezen onder 'Melder onbekend (M2M)' -- Op deze 'Melder onbekend' is aan voorkant wel afdeling ICT en bijbehorende kostenplaats gekoppeld. Deze kp halen we er daarom nu ook bij IF v_count = 0 THEN SELECT p.prs_perslid_key, a.prs_kostenplaats_key INTO v_perslid_key, v_kostenplaats_key FROM prs_v_aanwezigperslid p, prs_afdeling a WHERE p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_perslid_key = c_onbekend_key; END IF; v_errormsg := 'Fout bepalen bestaande melding'; v_exist_ticket := psubject; IF REGEXP_INSTR (v_exist_ticket, '\d') > 0 THEN v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'! v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket! ELSE v_exist_ticket := 'x'; END IF; SELECT COUNT (*) INTO v_count FROM mld_melding WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket); -- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het -- toevoegen van Notities, dit alleen doen voor nummers > 16000! IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000 THEN -- Notitie bij bestaande melding! SELECT mld_stdmelding_key, mld_melding_key INTO v_stdmelding_key, v_melding_key FROM mld_melding WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket); v_errormsg := 'Fout toevoegen notitie'; INSERT INTO mld_melding_note (mld_melding_key, prs_perslid_key, mld_melding_note_omschrijving, mld_melding_note_flag) VALUES (v_melding_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000), 0); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key); -- Vlaggetjes zetten zoals mld_edit_note.asp dat doet! UPDATE mld_melding SET mld_melding_actiecode = 1 + 128 -- BO + Attentie WHERE mld_melding_key = v_melding_key; ELSE -- Nieuwe melding! -- Bepaal de afgesproken soortmelding met key= 861 Overig - Postbus ICT v_errormsg := 'Fout bepalen soortmelding'; SELECT mld_ins_discipline_key, mld_stdmelding_key INTO v_discipline_key, v_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_key = 861; -- PROD-KEY 861 -- Suggested extensions: -- - Check for MLDUSE-write autorisations -- - Parse the subject to find the appropriate stdmelding, if uniquely possible -- - Append (as a note?) to an existing melding if #key is found in the subject v_errormsg := 'Fout toevoegen melding'; INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_omschrijving, mld_stdmelding_key, mld_melding_t_uitvoertijd, prs_kostenplaats_key, prs_perslid_key, prs_perslid_key_voor, mld_melding_status, mld_melding_spoed, mld_melding_onderwerp, mld_melding_behandelaar2_key, mld_ins_discipline_key) VALUES ('MLD', 4, -- email v_locatie_key, NULL, --v_onrgoed_keys, SYSDATE, 'From-adres: ' || v_fw_from || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000), v_stdmelding_key, NULL, v_kostenplaats_key, v_perslid_key, v_perslid_key, NULL, 3, -- prio normaal SUBSTR (psubject, 1, 80), NULL, NULL) -- BT Helpdesk I+A RETURNING mld_melding_key INTO v_melding_key; mld.setmeldingstatus (v_melding_key, 2, v_perslid_key); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key); END IF; -- Find the lowest volgnummer of the Folder-flexfield. SELECT MIN (k1.mld_kenmerk_key) INTO v_folder_kkey FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1 WHERE sm1.mld_stdmelding_key = v_stdmelding_key AND sm1.mld_ins_discipline_key = td1.ins_discipline_key AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key AND sk1.mld_srtkenmerk_kenmerktype = 'M' AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S') OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D') OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T') OR (k1.mld_kenmerk_niveau = 'A') ) AND NOT EXISTS (SELECT 1 FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2 WHERE sm2.mld_stdmelding_key = v_stdmelding_key AND sm2.mld_ins_discipline_key = td2.ins_discipline_key AND k2.mld_kenmerk_verwijder IS NULL AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key AND sk2.mld_srtkenmerk_kenmerktype = 'M' AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S') OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D') OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T') OR (k1.mld_kenmerk_niveau = 'A') ) AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer); IF v_folder_kkey IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\'); END IF; ELSE INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder '); END CASE; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('PROCESSEMAIL', 'E', 'BLOS_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder '); COMMIT; END; / CREATE OR REPLACE PROCEDURE skaf_import_prs ( p_import_key IN NUMBER ) IS c_fielddelimitor VARCHAR2 (1) := ';'; -- LET OP: moet idem zijn als declaratie bij skaf_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; -- De importvelden: v_prs_perslid_nr VARCHAR2 (256); v_prs_perslid_naam VARCHAR2 (256); v_prs_perslid_tussenvoegsel VARCHAR2 (256); v_prs_perslid_voorletters VARCHAR2 (256); v_prs_perslid_voornaam VARCHAR2 (256); v_prs_afdeling_naam VARCHAR2 (256); -- Versie 1 was op afdelingscode. Versie 2 is op afdelings_kostenplaats v_prs_srtperslid_omschrijving VARCHAR2 (256); v_prs_perslid_telefoonnr VARCHAR2 (256); v_prs_perslid_email VARCHAR2 (256); v_prs_perslid_oslogin VARCHAR2 (256); v_prs_perslid_wachtwoord VARCHAR2 (256); -- Overig: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM skaf_imp_prs; COMMIT; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := ''; v_errorhint := 'Fout bij opvragen te importeren rij'; v_ongeldig := 0; -- Lees alle veldwaarden -- 01 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam); -- 02 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); -- 03 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel); -- 04 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters); -- 05 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam); -- 06 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr); -- 07 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); -- 08 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving); -- 09 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); -- 10 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin); -- 11 -- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_wachtwoord); -- v_aanduiding := '[' || v_prs_perslid_nr || '|' || v_prs_perslid_naam || '|' || v_prs_perslid_tussenvoegsel || '|' || v_prs_perslid_voornaam || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE' AND UPPER (v_prs_perslid_naam) = 'PERSOONACHTERNAAM' AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL' AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS' AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM' AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER' AND UPPER (v_prs_perslid_email) = 'EMAIL' AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE' AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER' AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errorhint := 'Ongeldig personeelsnummer'; v_prs_perslid_nr := TRIM (v_prs_perslid_nr); IF 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 || ']' ); ELSE IF (v_prs_perslid_nr IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Personeelsnummer onbekend', 'Personeelsnummer is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- 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 tussenvoegsel'; v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel); IF LENGTH (v_prs_perslid_tussenvoegsel) > 10 THEN v_prs_perslid_tussenvoegsel := SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Tussenvoegsel te lang', 'Tussenvoegsel wordt afgebroken tot [' || v_prs_perslid_tussenvoegsel || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige voorletters'; v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters); IF LENGTH (v_prs_perslid_voorletters) > 10 THEN v_prs_perslid_voorletters := SUBSTR (v_prs_perslid_voorletters, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voorletters te lang', 'Voorletters worden afgebroken tot [' || v_prs_perslid_voorletters || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige voornaam'; v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam); IF LENGTH (v_prs_perslid_voornaam) > 30 THEN v_prs_perslid_voornaam := SUBSTR (v_prs_perslid_voornaam, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voornaam is te lang', 'Voornaam wordt afgebroken tot [' || v_prs_perslid_voornaam || ']' ); ELSE IF (v_prs_perslid_voornaam IS NULL) THEN v_prs_perslid_voornaam := '-'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voornaam onbekend', 'Voornaam wordt gezet op [-]' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige afdelingscode'; v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam); IF LENGTH (v_prs_afdeling_naam) > 15 THEN v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdelingscode te lang', 'Afdelingscode wordt afgebroken tot [' || v_prs_afdeling_naam || ']' ); ELSE IF (v_prs_afdeling_naam 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 := 'Ongeldig telefoonnummer'; v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr); IF LENGTH (v_prs_perslid_telefoonnr) > 15 THEN v_prs_perslid_telefoonnr := SUBSTR (v_prs_perslid_telefoonnr, 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Telefoonnummer te lang', 'Telefoonnummer wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig e-mailadres'; v_prs_perslid_email := TRIM (v_prs_perslid_email); IF LENGTH (v_prs_perslid_email) > 150 THEN v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 150); 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 loginnaam'; v_prs_perslid_oslogin := TRIM(SUBSTR (v_prs_perslid_oslogin, 1, INSTR (v_prs_perslid_oslogin, '@', 1, 1) - 1)); IF LENGTH (v_prs_perslid_oslogin) > 30 THEN v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Loginnaam te lang', 'Loginnaam wordt afgebroken tot [' || v_prs_perslid_oslogin || ']' ); COMMIT; END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errorhint := 'Fout bij toevoegen regel aan importtabel skaf_IMP_PRS'; INSERT INTO skaf_imp_prs (prs_perslid_nr, prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voorletters, prs_perslid_voornaam, prs_afdeling_naam, prs_srtperslid_omschrijving, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, prs_perslid_telefoonnr, prs_perslid_email, prs_perslid_oslogin, prs_perslid_wachtwoord ) VALUES (v_prs_perslid_nr, v_prs_perslid_naam, v_prs_perslid_tussenvoegsel, v_prs_perslid_voorletters, v_prs_perslid_voornaam, v_prs_afdeling_naam, v_prs_srtperslid_omschrijving, NULL, NULL, NULL, NULL, v_prs_perslid_telefoonnr, v_prs_perslid_email, v_prs_perslid_oslogin, NULL ); COMMIT; v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Ingelezen regel kan niet worden weggeschreven!' ); COMMIT; END; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!' ); ELSE fac.imp_writelog (p_import_key, 'S', 'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog (p_import_key, 'S', 'Persoon: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END skaf_import_prs; / CREATE OR REPLACE PROCEDURE skaf_update_prs ( p_import_key IN NUMBER ) IS -- LET OP: moet idem zijn als declaratie bij SKAF_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) := 50; -- Eenmalig 25-10-2020 op 50 gezet... Moet/kan daarna weer op 20 -- Groep waar personen in geplaatst worden (indien nog geen groep) c_key_default_rol NUMBER(10) := 1; v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_prs_actual NUMBER (10); v_count_prs_import NUMBER (10); -- Matching actual persons! v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); -- v_perslid_key NUMBER (10); v_afdeling_key NUMBER (10); v_srtperslid_key NUMBER (10); v_oslogin VARCHAR2 (30); v_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 skaf_imp_prs ip WHERE ip.prs_perslid_nr = p.prs_perslid_nr); -- Let op! Met eindatum zijn personen die niet meer in dienst zijn. CURSOR csperslid IS SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving FROM skaf_imp_prs GROUP BY UPPER (prs_srtperslid_omschrijving); CURSOR cperslid IS SELECT * FROM skaf_imp_prs; -- 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, skaf_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 || '] was en blijft INACTIEF', 'Persoon was en blijft INACTIEF' ); END IF; COMMIT; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_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 (via kostenplaatsnr) [' || recperslid.prs_afdeling_naam || ']'; SELECT prs_afdeling_key INTO v_afdeling_key FROM prs_afdeling a, prs_kostenplaats k WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL AND UPPER (k.prs_kostenplaats_nr) = UPPER (recperslid.prs_afdeling_naam); 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); -- Login is afgeleid uit e-mail (alles voor @) en max 30 posities -- Dit is al in import-deel geregeld -- v_oslogin := SUBSTR (recperslid.prs_perslid_email, 1, INSTR (recperslid.prs_perslid_email, '@', 1, 1) - 1); v_oslogin := recperslid.prs_perslid_oslogin; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen persoon'; INSERT INTO prs_perslid (prs_perslid_module, prs_srtperslid_key, prs_afdeling_key, prs_perslid_naam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_perslid_telefoonnr, 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_email, recperslid.prs_perslid_nr, v_oslogin ) RETURNING prs_perslid_key INTO v_perslid_key; fac.imp_writelog (p_import_key, 'I', 'Persoon met nummer [' || recperslid.prs_perslid_nr || '] en naam [' || recperslid.prs_perslid_naam || ', ' || recperslid.prs_perslid_voornaam || '] is toegevoegd', 'Persoon is toegevoegd' ); fac.trackaction ('PRSUPD', v_perslid_key, 4,sysdate, v_aanduiding || ' is toegevoegd uit afas-prs-import') ; COMMIT; ELSE IF (v_count > 1) THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || ' kan persoon niet 1-duidig bepalen', v_errorhint ); COMMIT; END IF; v_errorhint := 'Fout bij wijzigen persoon'; UPDATE prs_perslid SET prs_srtperslid_key = v_srtperslid_key, prs_afdeling_key = v_afdeling_key, prs_perslid_naam = recperslid.prs_perslid_naam, prs_perslid_voorletters = recperslid.prs_perslid_voorletters, prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel, prs_perslid_voornaam = recperslid.prs_perslid_voornaam, prs_perslid_telefoonnr = recperslid.prs_perslid_telefoonnr, prs_perslid_email = recperslid.prs_perslid_email, prs_perslid_nr = recperslid.prs_perslid_nr, prs_perslid_oslogin = COALESCE (v_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; -- 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 DELETE FROM skaf_imp_prs; -- Ivm IB maken we de personentabel weer leeg COMMIT; END skaf_update_prs; / -- Import voor Viking - catalogus Boodschappen - Beperkt Assortiment CREATE OR REPLACE PROCEDURE skaf_import_catalogus (p_import_key IN NUMBER) AS CURSOR c IS SELECT ins_srtdeel_nr, ins_srtdeel_prijs, ins_srtdeel_btw FROM fac_imp_catalogus WHERE ins_srtdeel_prijs IS NOT NULL and ins_srtdeel_btw IS NOT NULL; v_ins_srtdeel_prijs NUMBER(8,2); BEGIN -- standaard catalogus-import aanroepen fac_import_catalogus(p_import_key) ; -- updaten prijzen: Wordt door Viking exclusief btw aangeleverd en zetten we hier om naar prijzen inclusief btw FOR rec IN c LOOP BEGIN v_ins_srtdeel_prijs := rec.ins_srtdeel_prijs * ((100 + rec.ins_srtdeel_btw)/100); UPDATE fac_imp_catalogus SET ins_srtdeel_prijs = v_ins_srtdeel_prijs WHERE ins_srtdeel_nr = rec.ins_srtdeel_nr ; END; END LOOP; END skaf_import_catalogus; / CREATE OR REPLACE PROCEDURE skaf_update_catalogus (p_import_key IN NUMBER) AS BEGIN -- standaard catalogus-update aanroepen fac_update_catalogus(p_import_key); END skaf_update_catalogus; / CREATE OR REPLACE VIEW skaf_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 = (select fac.safe_to_number(fac_usrdata_omschr) from fac_usrdata where fac_usrtab_key = (select fac_usrtab_key from fac_usrtab where fac_usrtab_naam = '$SYSTEM') and fac_usrdata_code='$FIN_KENMERK_KEY_BESTAND' and fac_usrdata_verwijder is null ); -- view tbv export naar exact CREATE OR REPLACE VIEW skaf_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_nr, fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, project_nummer, prs_kostensoort_refcode, 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, fr.fin_factuurregel_nr, fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, NULL projectnummer, ks.prs_kostensoort_refcode, 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, skaf_v_factuur_bestand fb, fin_factuurregel fr, mld_opdr o, mld_typeopdr ot, cnt_contract c, prs_bedrijf b_o, prs_bedrijf b_c, prs_kostensoort ks, prs_kostenplaats kp_c, prs_kostenplaats kp_o WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_key = fb.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(+); CREATE OR REPLACE VIEW skaf_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_nr, fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, project_nummer, prs_kostensoort_refcode, 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, fr.fin_factuurregel_nr, fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, NULL projectnummer, ks.prs_kostensoort_refcode, 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, skaf_v_factuur_bestand fb, fin_factuurregel fr, prs_kostensoort ks, 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 f.bes_bestelopdr_key = bo.bes_bestelopdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_key = fb.fin_factuur_key(+); CREATE OR REPLACE VIEW skaf_v_factuur_geg AS SELECT * from skaf_v_factuur_mldcnt_gegevens UNION SELECT * from skaf_v_factuur_bes_gegevens; CREATE OR REPLACE VIEW skaf_v_factuur_geg_akkoord AS SELECT * from skaf_v_factuur_mldcnt_gegevens WHERE fin_factuur_statuses_key = 6 UNION SELECT * from skaf_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 skaf_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) 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, 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, SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag FROM skaf_v_factuur_geg_akkoord GROUP BY fin_factuur_key, opdracht_id, fin_factuur_datum, fin_factuur_nr, prs_bedrijf_key, fin_factuur_debiteur_nr) fg UNION ALL SELECT fin_factuurregel_nr regelnummer, 'I' dagb_type, '42' dagbknr, '' periode, '' bkjcode, TO_CHAR (fin_factuur_key) boekstuknummer, fin_factuur_nr || '/' || fin_factuur_debiteur_nr oms25, TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, prs_kostensoort_refcode 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, DECODE (ROUND( (fin_factuurregel_btw / decode(fin_factuurregel_totaal,0,0.000000001,fin_factuurregel_totaal)) * 100), 19, '4', 6, '2', 0, '0', '-1' ) 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 skaf_v_factuur_geg_akkoord fg); --------------------------------------------------------------------------------------------------------------- --- notificatiejobs --- --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE VIEW skaf_v_noti_cntreminder ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT 'CNTMAI', NULL, c.prs_perslid_key_beh, 'Rappel: Contract ' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy') || ' worden verlengd of opgezegd.', c.cnt_contract_key, NULL, NULL, NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND cnt_contract_status = 0 AND NOT EXISTS (SELECT km.cnt_contract_key FROM cnt_kenmerkcontract km, cnt_kenmerk k WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 61) AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)) ; --------------------------------------------------------------------------------------------------------------- --- Facilitor Graphics / CAD --- --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE VIEW skaf_v_thema_set_res_wp AS SELECT ins_deel_key, DECODE (rd.res_deel_key, NULL, 0, 1) waarde FROM ins_deel d, (SELECT * FROM res_deel WHERE res_deel_verwijder IS NULL) rd WHERE d.ins_deel_key = rd.res_ins_deel_key(+); CREATE OR REPLACE VIEW skaf_v_thema_vloersoort ( ALG_RUIMTE_KEY, WAARDE, WAARDE_KEY ) AS SELECT r.alg_ruimte_key, COALESCE (va.fac_usrdata_omschr, 'Onbekend'), va.fac_usrdata_key FROM alg_ruimte r, (SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr, ud.fac_usrdata_key FROM alg_onrgoedkenmerk ok, fac_usrdata ud, fac_kenmerkdomein rk, alg_kenmerk k, alg_v_aanwezigruimte rr WHERE rk.fac_usrtab_key = ud.fac_usrtab_key AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde AND ok.alg_kenmerk_key = 1020 AND k.alg_kenmerk_niveau = 'R' AND k.alg_kenmerk_verwijder IS NULL AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va WHERE r.alg_ruimte_key = va.alg_ruimte_key(+); CREATE OR REPLACE VIEW skaf_v_thema_typeopvang ( ALG_RUIMTE_KEY, WAARDE, WAARDE_KEY ) AS SELECT v.alg_ruimte_key, CASE WHEN v.kdv is not null and v.bso is not null and v.slg is not null then 'KDV/BSO/SLG' WHEN v.kdv is not null and v.bso is not null and v.slg is null then 'KDV/BSO' WHEN v.kdv is not null and v.bso is null and v.slg is not null then 'KDV/SLG' WHEN v.kdv is null and v.bso is not null and v.slg is not null then 'BSO/SLG' WHEN v.kdv is not null and v.bso is null and v.slg is null then 'KDV' WHEN v.kdv is null and v.bso is not null and v.slg is null then 'BSO' WHEN v.kdv is null and v.bso is null and v.slg is not null then 'SLG' ELSE '' END as waarde, '1' waarde_key FROM (SELECT r.alg_ruimte_key, kdv.bestaat KDV, bso.bestaat BSO, slg.bestaat SLG FROM alg_ruimte r, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'KDV') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) kdv, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'BSO') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) bso, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'SLG') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) slg WHERE r.alg_ruimte_key = kdv.alg_ruimte_key(+) AND r.alg_ruimte_key = bso.alg_ruimte_key(+) AND r.alg_ruimte_key = slg.alg_ruimte_key(+) AND r.alg_ruimte_verwijder IS NULL) v ; CREATE OR REPLACE VIEW skaf_v_thema_typeopvang_spec ( ALG_RUIMTE_KEY, WAARDE, WAARDE_KEY ) AS SELECT alg_ruimte_key, 'KDV' AS waarde, '1' AS waarde_key FROM skaf_v_thema_typeopvang WHERE INSTR (waarde, 'KDV') > 0 UNION SELECT alg_ruimte_key, 'BSO' AS waarde, '2' AS waarde_key FROM skaf_v_thema_typeopvang WHERE INSTR (waarde, 'BSO') > 0 UNION SELECT alg_ruimte_key, 'SLG' AS waarde, '3' AS waarde_key FROM skaf_v_thema_typeopvang WHERE INSTR (waarde, 'SLG') > 0; CREATE OR REPLACE VIEW skaf_v_label_ruimteomschr ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT r.alg_ruimte_key, r.alg_ruimte_omschrijving FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; CREATE OR REPLACE VIEW skaf_v_label_ruimteopp ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT r.alg_ruimte_key, r.alg_ruimte_bruto_vloeropp || ' m2' FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; CREATE OR REPLACE VIEW SKAF_V_LABEL_RMOMS_ROPP ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT r.alg_ruimte_key, r.alg_ruimte_omschrijving || ' - ' || r.alg_ruimte_bruto_vloeropp || ' m2' FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; -- Stap 5b: Actie/trigger bij sleur+pleur van thema HV-divisie CREATE OR REPLACE TRIGGER skaf_t_thema_vloersoort_i_iu INSTEAD OF INSERT OR UPDATE ON skaf_v_thema_vloersoort DECLARE BEGIN DELETE FROM alg_onrgoedkenmerk ok WHERE ok.alg_onrgoed_key = :new.alg_ruimte_key AND ok.alg_kenmerk_key = 1020 AND ok.alg_onrgoed_niveau='R'; --UPDATE alg_onrgoedkenmerk ok --SET ok.alg_onrgoedkenmerk_waarde = TO_CHAR(:new.waarde_key) --WHERE ok.alg_onrgoed_key = :new.alg_ruimte_key --AND ok.alg_kenmerk_key = 1020 --AND ok.alg_onrgoed_niveau='R'; INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key, alg_onrgoed_niveau, alg_kenmerk_key, alg_onrgoedkenmerk_waarde) VALUES (:new.alg_ruimte_key, 'R', 1020, to_char(:new.waarde_key)); EXCEPTION WHEN OTHERS THEN NULL; END; / --- EINDE - Facilitor Graphics / CAD --- --- Rapportage --- CREATE OR REPLACE VIEW skaf_v_rap_sch_ruimtenivo (fclt_f_locatie, fclt_f_gebouw, fclt_f_verdieping, ruimte, ruimte_omschrijving, fclt_f_ruimtesoort, fclt_f_vloer, oppervlak, KDV, BSO, SLG) AS SELECT l.alg_locatie_code || '-' || l.alg_locatie_omschrijving, g.alg_gebouw_naam, to_char(v.alg_verdieping_volgnr), r.alg_ruimte_nr, r.alg_ruimte_omschrijving, sr.alg_srtruimte_omschrijving, vloer.fac_usrdata_omschr, r.alg_ruimte_bruto_vloeropp, COALESCE(kdv.bestaat,'Nee') KDV, COALESCE(bso.bestaat,'Nee') BSO, COALESCE(slg.bestaat,'Nee') SLG FROM alg_v_aanwezigruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l, (SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr, ud.fac_usrdata_key FROM alg_onrgoedkenmerk ok, fac_usrdata ud, fac_kenmerkdomein rk, alg_kenmerk k, alg_v_aanwezigruimte rr WHERE rk.fac_usrtab_key = ud.fac_usrtab_key AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde AND k.alg_kenmerk_key = 1020 AND rr.alg_ruimte_key = ok.alg_onrgoed_key) vloer, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'KDV') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) kdv, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'BSO') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) bso, (SELECT ra.alg_ruimte_key, a.prs_afdeling_key, 'Ja' AS bestaat FROM prs_ruimteafdeling ra, prs_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND INSTR (UPPER (a.prs_afdeling_omschrijving), 'SLG') > 0 AND ra.prs_ruimteafdeling_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL) slg WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND r.alg_ruimte_key = vloer.alg_ruimte_key (+) AND r.alg_ruimte_key = kdv.alg_ruimte_key(+) AND r.alg_ruimte_key = bso.alg_ruimte_key(+) AND r.alg_ruimte_key = slg.alg_ruimte_key(+) ; CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie_rsoort (fclt_f_locatie, fclt_f_ruimtesoort, oppervlak) AS SELECT fclt_f_locatie, fclt_f_ruimtesoort, SUM(oppervlak) FROM skaf_v_rap_sch_ruimtenivo GROUP BY fclt_f_locatie, fclt_f_ruimtesoort; CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie_vloer (fclt_f_locatie, fclt_f_vloer, oppervlak) AS SELECT fclt_f_locatie, fclt_f_vloer, SUM(oppervlak) FROM skaf_v_rap_sch_ruimtenivo GROUP BY fclt_f_locatie, fclt_f_vloer; CREATE OR REPLACE VIEW skaf_v_rap_sch_locatie (fclt_f_locatie, oppervlak) AS SELECT fclt_f_locatie, SUM(oppervlak) FROM skaf_v_rap_sch_ruimtenivo GROUP BY fclt_f_locatie; -- 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 skaf_v_fclt_factuur_header ( result, result_order ) AS SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '', 1 FROM fac_usrdata WHERE fac_usrtab_key = (SELECT fac_usrtab_key FROM fac_usrtab WHERE fac_usrtab_naam = '$SYSTEM') AND UPPER(fac_usrdata_code) LIKE (SELECT UPPER(fac_usrdata_omschr) || '%' FROM fac_usrdata WHERE fac_usrtab_key = (SELECT fac_usrtab_key FROM fac_usrtab WHERE fac_usrtab_naam = '$SYSTEM') AND fac_usrdata_code = '$PREFIX_FCLT_FACTUUR_XML_HEADER' AND fac_usrdata_verwijder is null) AND fac_usrdata_verwijder is null; CREATE OR REPLACE VIEW skaf_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(bes_mld_cnt_opdracht_id) || '' || '' || datum || '' || '' || fin_factuur_boekmaand || '' || '' || xml.char_to_html(grootboekrekening) || '' || '' || 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) || '' || '' || fin_factuurregel_totaal || '' || '' || btw_percentage || '' || '' || btw_bedrag || '' || '' || xml.char_to_html(prs_kostenplaats_nr) || '' || DECODE(regelnummer, 0, '', DECODE(aant_factuur_regels - regelnummer,0,'','')) , (10000000 + fin_factuur_key) * 100 + regelnummer FROM (SELECT 0 regelnummer, aant_factuur_regels, fin_factuur_key, fin_factuur_nr, fin_factuur_bestand, fin_factuur_debiteur_nr, opdracht_id bes_mld_cnt_opdracht_id, TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, fin_factuur_boekmaand, '' grootboekrekening, (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_totaal, '' btw_percentage, '' 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, COUNT(fin_factuur_key) AS aant_factuur_regels, SUM (fin_factuurregel_totaal) bedrag_exbtw, SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw FROM skaf_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) fg UNION ALL SELECT fin_factuurregel_nr regelnummer, (SELECT COUNT(fin_factuur_key) FROM skaf_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, fin_factuur_key, fin_factuur_nr, '' fin_factuur_bestand, fin_factuur_debiteur_nr, '' bes_mld_cnt_opdracht_id, TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, fin_factuur_boekmaand, prs_kostensoort_refcode grootboekrekening, (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, REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal, DECODE (ROUND( (fin_factuurregel_btw / decode(fin_factuurregel_totaal,0,0.000000001,fin_factuurregel_totaal)) * 100) , 19,'19', 6, '6', 0, '0', '-1') btw_percentage, REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag, prs_kostenplaats_nr FROM skaf_v_factuur_geg_akkoord fg ORDER BY fin_factuur_key, regelnummer); CREATE OR REPLACE VIEW skaf_v_export_fclt_factuur ( result, result_order ) AS SELECT '',0 FROM DUAL UNION SELECT result, result_order FROM skaf_v_fclt_factuur_header UNION SELECT result, result_order FROM skaf_v_fclt_factuur_body UNION SELECT '',99999999999999999999 FROM DUAL; CREATE OR REPLACE PROCEDURE skaf_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 skaf_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; END; / CREATE OR REPLACE VIEW skaf_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_refcode || ';' || bes_opdr_key || ';' || mld_opdr_key || ';' || cnt_contract_key ,CHR (13), ''), CHR (10), ''), f.fin_factuur_key FROM skaf_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 skaf_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 skaf_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; v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN 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); -- 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; END LOOP; END; / -- Views voor Graphs / Dashboard CREATE OR REPLACE FORCE VIEW skaf_v_rap_mld_status (key, mld_melding_behandelaar_key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, alg_district_key, code) AS SELECT mld_melding_key, mld_melding_behandelaar_key, d.ins_discipline_key, m.mld_alg_locatie_key, l.alg_district_key, 'MLD_NEW' FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, alg_locatie l WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND mld_melding_status IN (2, 3, 0) -- 2-ingevoerd, 3-ingezien/te accepteren, 0-pending EN NIET 4-geaccepteerd, 7-uitgegeven, 99- niet opgelost AND std.mld_ins_discipline_key = d.ins_discipline_key UNION ALL SELECT mld_melding_key, mld_melding_behandelaar_key, d.ins_discipline_key, m.mld_alg_locatie_key, l.alg_district_key, 'MLD_READY2CLOSE' FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, alg_locatie l WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND mld_melding_status IN (4, 7, 99) -- 4-geaccepteerd, 7-uitgegeven, 99- niet opgelost EN NIET 2-ingevoerd, 3-ingezien, , 0-pending AND std.mld_ins_discipline_key = d.ins_discipline_key; CREATE OR REPLACE FORCE VIEW skaf_v_rap_mld_status_overall (key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code) AS SELECT key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code FROM skaf_v_rap_mld_status; CREATE OR REPLACE FORCE VIEW skaf_v_rap_bes_status (key, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, code) AS SELECT DISTINCT b.bes_bestelopdr_key, bid.ins_discipline_key , l.alg_locatie_key, 'BES_READY2CLOSE' FROM bes_bestelopdr b, mld_adres a, alg_locatie l, bes_bestelopdr_item boi, bes_bestelling_item bi, bes_bestelling bst, bes_srtdeel isd, bes_srtgroep isg, ins_tab_discipline bid WHERE l.alg_locatie_key = A.ALG_LOCATIE_KEY and A.MLD_ADRES_KEY = b.mld_adres_key_lev and bes_bestelopdr_status = 4 AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bst.bes_bestelling_key = bi.bes_bestelling_key AND boi.bes_bestelopdr_key = b.bes_bestelopdr_key AND bi.bes_srtdeel_key = isd.bes_srtdeel_key AND isd.bes_srtgroep_key = isg.bes_srtgroep_key AND isg.ins_discipline_key = bid.ins_discipline_key; CREATE OR REPLACE VIEW SKAF_V_GRAPH_MLD_BEHAND (FCLT_XAS_, FCLT_YAS_, FCLT_URL) AS SELECT prs_perslid_voornaam, count(*), '/appl/mld/mld_search.asp?urole=bo' || '&' || 'behandel_key=' || MIN(prs_perslid_key) || '&' || 'autosearch=1' FROM skaf_v_rap_mld_status, prs_perslid WHERE mld_melding_behandelaar_key IS NOT NULL AND prs_perslid_key = mld_melding_behandelaar_key GROUP BY prs_perslid_voornaam; CREATE OR REPLACE VIEW SKAF_V_GRAPH_MLD_PER_WIJK (FCLT_XAS_, FCLT_YAS_, FCLT_URL) AS SELECT SUBSTR(alg_district_omschrijving,1,10), count(*), '/appl/mld/mld_search.asp?urole=mi' || '&' || 'districtkey=' || MIN(d.alg_district_key) || '&' || 'mldstatus_str=4, 7, 99' || '&' || 'autosearch=1' FROM skaf_v_rap_mld_status r, alg_district d WHERE r.alg_district_key = d.alg_district_key GROUP BY alg_district_omschrijving; -- QRC-codes voor meldingen op objecten -- Twee varianten (arai + ykpn) - Doorspreken op Acceptatie..keuze maken.. -- 1 - ARAI CREATE OR REPLACE VIEW skaf_v_ins_qrc_mld AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, o.alg_plaatsaanduiding fclt_f_plaats, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding, i.ins_deel_key, s.ins_srtdeel_key, o.alg_gebouw_code, o.alg_verdieping_code, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, (SELECT km.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel km, ins_kenmerk k WHERE km.ins_deel_key = i.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 62 AND km.ins_kenmerkdeel_verwijder IS NULL) merk, (SELECT km.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel km, ins_kenmerk k WHERE km.ins_deel_key = i.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 61 AND km.ins_kenmerkdeel_verwijder IS NULL) serienummer, (SELECT d.fac_usrdata_omschr FROM ins_kenmerkdeel km, ins_kenmerk k, fac_usrtab t, fac_usrdata d WHERE km.ins_deel_key = i.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 63 AND km.ins_kenmerkdeel_verwijder IS NULL AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_key = 161 AND fac.safe_to_number(km.ins_kenmerkdeel_waarde) = d.fac_usrdata_key) type_opvang, b.fac_bookmark_id hide_f_bookmark_id FROM ins_deel i, ins_v_alg_overzicht o, ins_srtdeel s, ins_srtgroep g, ins_discipline d, alg_locatie l, fac_bookmark b, mld_stdmelding sm, mld_stdmelding_srtinst si WHERE b.fac_bookmark_naam = 'QRC_MELDING_STORING' AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE) AND ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND s.ins_srtdeel_key = i.ins_srtdeel_key AND g.ins_srtgroep_key = s.ins_srtgroep_key AND d.ins_discipline_key = g.ins_discipline_key AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type AND i.ins_alg_ruimte_type IN ('T', 'R', 'W') AND o.alg_locatie_key = i.ins_alg_locatie_key AND i.ins_alg_locatie_key = l.alg_locatie_key AND sm.mld_stdmelding_key = si.mld_stdmelding_key AND si.ins_srtinstallatie_key = DECODE(si.ins_srtinstallatie_niveau, 'S', i.ins_srtdeel_key, 'G', s.ins_srtgroep_key, 'D', g.ins_discipline_key) ; --2. YKPN CREATE OR REPLACE VIEW skaf_v_rap_mld_qrc2 ( omgeving, fclt_3d_locatie_key, fclt_3d_discipline_key, fclt_f_discipline, mld_stdmelding_omschrijving, stdmelding_key, alg_locatie_omschrijving, fclt_f_gebouw, fclt_f_verdieping, plaats, ruimte_key, ruimtefunctie, fclt_f_objectdiscipline, fclt_f_objectgroep, objectsoort_key, fclt_f_objectsoort, objectsoort_code, ins_deel_key, ins_deel_omschrijving, ins_deel_upper, merk, serienummer, type_opvang, hide_f_bookmark_id, hide_f_bookmark_path, hide_f_bookmark_query, variabele ) AS SELECT user omgeving, l.alg_locatie_key, disc.ins_discipline_key, disc.ins_discipline_omschrijving, msd.mld_stdmelding_omschrijving, msd.mld_stdmelding_key, l.alg_locatie_omschrijving, o.alg_gebouw_omschrijving, o.alg_verdieping_omschrijving, o.alg_plaatsaanduiding plaats, d.ins_alg_ruimte_key ruimte_key, sr.alg_srtruimte_omschrijving, disc.ins_discipline_omschrijving, sg.ins_srtgroep_omschrijving, sd.ins_srtdeel_key, sd.ins_srtdeel_omschrijving, sd.ins_srtdeel_code, d.ins_deel_key, d.ins_deel_omschrijving, d.ins_deel_upper, (SELECT km.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel km, ins_kenmerk k WHERE km.ins_deel_key = d.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 62 AND km.ins_kenmerkdeel_verwijder IS NULL) merk, (SELECT km.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel km, ins_kenmerk k WHERE km.ins_deel_key = d.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 61 AND km.ins_kenmerkdeel_verwijder IS NULL) serienummer, (SELECT d.fac_usrdata_omschr FROM ins_kenmerkdeel km, ins_kenmerk k, fac_usrtab t, fac_usrdata d WHERE km.ins_deel_key = d.ins_deel_key AND km.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 63 AND km.ins_kenmerkdeel_verwijder IS NULL AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_key = 161 AND fac.safe_to_number(km.ins_kenmerkdeel_waarde) = d.fac_usrdata_key) type_opvang, b.fac_bookmark_id, b.fac_bookmark_path, b.fac_bookmark_query, 'INS_KEY' FROM (SELECT fac_bookmark_id, fac_bookmark_path, fac_bookmark_query FROM fac_bookmark WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP' AND fac_bookmark_naam = 'QRC_MELDING_STORING' ) b, (SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, si.ins_srtinstallatie_key ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'S' UNION ALL SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, sd.ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si, ins_srtdeel sd WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'G' AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, sd.ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si, ins_srtgroep sg, ins_srtdeel sd WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'D' AND si.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_discipline disc, ins_v_alg_overzicht o, alg_locatie l, alg_ruimte r, alg_srtruimte sr WHERE msd.ins_srtdeel_key = d.ins_srtdeel_key AND d.ins_alg_ruimte_type IN ('T', 'R', 'W') AND d.ins_deel_parent_key IS NULL AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant? AND o.alg_locatie_key = l.alg_locatie_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+) ; -- Keuzelijst Kostenplaats bij locaties CREATE OR REPLACE VIEW SKAF_V_KOSTENPLAATS ( PRS_KOSTENPLAATS_KEY, OMSCHRIJVING, PRS_KOSTENPLAATS_VERWIJDER ) AS SELECT prs_kostenplaats_key, prs_kostenplaats_upper || ' ' || prs_kostenplaats_omschrijving, prs_kostenplaats_verwijder FROM prs_kostenplaats WHERE prs_kostenplaats_verwijder IS NULL ORDER BY prs_kostenplaats_upper DESC; -- view tbv widget met bol bestellingen die handmatig als verzonden gemarkeerd moeten CREATE OR REPLACE VIEW skaf_v_bolbes ( aantal ) AS SELECT COUNT (*) FROM bes_bestelopdr WHERE prs_bedrijf_key = 12921 -- bol.com AND bes_bestelopdr_status = 3 -- in behandeling; -- SKAF#86147: Nieuwe, uitgegeven en afgemelde meldingen per week (incl. op -- tijd volgens afspraak/SLA). CREATE OR REPLACE VIEW SKAF_V_UDR_MLD_SLA AS SELECT weeknr, mldnew, ordnew, mldafm, afs_optijd, TO_CHAR (ROUND (DECODE (mldafm, 0, TO_NUMBER (NULL), afs_optijd / mldafm) * 100, 0)) || '%' afs_optijd_pct, sla_optijd, TO_CHAR (ROUND (DECODE (mldafm, 0, TO_NUMBER (NULL), sla_optijd / mldafm) * 100, 0)) || '%' sla_optijd_pct FROM ( SELECT weeknr, SUM (mldnew) mldnew, SUM (ordnew) ordnew, SUM (mldafm) mldafm, SUM (afs_optijd) afs_optijd, SUM (sla_optijd) sla_optijd FROM (SELECT melding_key, TO_CHAR (melding_datum, 'iyyy-iw') weeknr, 1 mldnew, 0 ordnew, 0 mldafm, 0 afs_optijd, 0 sla_optijd FROM mld_v_udr_melding WHERE melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'iyyy') UNION ALL SELECT melding_key, TO_CHAR (opdracht_datum, 'iyyy-iw') weeknr, 0 mldnew, 1 ordnew, 0 mldafm, 0 afs_optijd, 0 sla_optijd FROM mld_v_udr_opdracht WHERE opdracht_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'iyyy') UNION ALL SELECT melding_key, TO_CHAR (melding_afgemeld, 'iyyy-iw') weeknr, 0 mldnew, 0 ordnew, 1 mldafm, DECODE (UPPER (afspraak_sla_optijd), 'JA', 1, 0) afs_optijd, DECODE (UPPER (uitvoering_sla_optijd), 'JA', 1, 0) sla_optijd FROM mld_v_udr_melding WHERE melding_afgemeld > TRUNC (ADD_MONTHS (SYSDATE, -12), 'iyyy')) GROUP BY weeknr); -- SKAF#86147: Staafdiagram met lopende meldingen per gekozen groepering met -- kleuren (volgens SLA): [a] groen=op tijd en [b] rood=te laat. CREATE OR REPLACE VIEW SKAF_V_UDR_MLD_OPEN ( mld_melding_key, meldingid, vakgroeptype, --vakgroep_key, fclt_3d_discipline_key, vakgroep, standaardmelding, --locatie_key, fclt_3d_locatie_key, locatiecode, locatie, behandelteam_key, behandelteam, prio, status, mldnew, melding_datum, geplande_einddatum, uitvoertijd, optijd_telaat ) AS SELECT x.mld_melding_key, x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingid, x.ins_srtdiscipline_omschrijving vakgroeptype, x.ins_discipline_key vakgroep_key, x.ins_discipline_omschrijving vakgroep, x.mld_stdmelding_omschrijving standaardmelding, x.alg_locatie_key, x.alg_locatie_code, x.alg_locatie_omschrijving, x.behandelteam_key, COALESCE (x.behandelteam, ''), x.mld_melding_spoed, x.mld_statuses_omschrijving, x.mldnew, x.mld_melding_datum, x.mld_melding_einddatum, TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd, --DECODE (SIGN (x.gepland_over_2wd - SYSDATE), -- -1, -- DECODE (SIGN (x.mld_melding_einddatum - SYSDATE), -- -1, 'Te laat', -- Rood -- 'Over 2 dagen te laat'), -- Oranje -- DECODE (BITAND (x.mld_melding_actiecode, 1), -- 1, 'Actie bij behandelaar', -- Groen en "alle tijd" -- 'Actie bij aanvrager')) -- Blauw en "alle tijd" DECODE (SIGN (mld_melding_einddatum_std - SYSDATE), -1, 'Te laat', -- Rood 'Op tijd') -- Groen optijd_telaat FROM (SELECT m.mld_melding_key, sd.ins_srtdiscipline_prefix, sd.ins_srtdiscipline_omschrijving, md.ins_discipline_key, md.ins_discipline_omschrijving, sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, l.alg_locatie_key, l.alg_locatie_code, l.alg_locatie_omschrijving, bt.ins_discipline_key behandelteam_key, bt.ins_discipline_omschrijving behandelteam, m.mld_melding_spoed, ms.mld_statuses_omschrijving, fac.gettrackingdate ('MLDNEW', m.mld_melding_key) mldnew, m.mld_melding_datum, m.mld_melding_einddatum, m.mld_melding_t_uitvoertijd, m.mld_melding_einddatum_std, --fac.datumtijdplusuitvoertijd ( -- m.mld_melding_einddatum - 14, -- mld.getactualuitvoer (m.mld_melding_einddatum - 14, m.mld_melding_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 2, -- 'D') -- gepland_over_2wd, -- Twee werkdagen voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf) m.mld_melding_actiecode -- 1=bij behandelaar/2=bij aanvrager/129=reactie aanvrager/257=info aanvrager/258=actie aanvrager FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, alg_locatie l, mld_statuses ms, mld_discipline bt WHERE 1 = 1 --AND m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') --AND fac.gettrackingdate ('MLDNEW', m.mld_melding_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') AND m.fac_activiteit_key IS NULL AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen AND m.mld_stdmelding_key = sm.mld_stdmelding_key --AND sm.mld_stdmelding_key NOT IN (-1) -- Uitsluiten? AND sm.mld_ins_discipline_key = md.ins_discipline_key --AND md.ins_discipline_key NOT IN (-1) -- Uitsluiten? AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key --AND sd.ins_srtdiscipline_key NOT IN (-1) -- Uitsluiten? AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_ins_discipline_key = bt.ins_discipline_key(+)) x; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / /* BEGIN fac.registercustversion ('SKAF', 11); END; / */ COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile