-- -- $Id$ -- -- Script containing customer specific db-configuration for Medux (MDUX) DEFINE thisfile = 'MDUX.SQL' DEFINE dbuser = 'MDUX' 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 ------ -- -- Personen import -- CREATE OR REPLACE PROCEDURE mdux_post_import_perslid (p_import_key IN NUMBER) AS BEGIN UPDATE fac_imp_perslid SET prs_afdeling_naam = prs_afdeling_naam || prs_kenmerk1 WHERE fac_import_key = p_import_key AND LENGTH(prs_afdeling_naam || prs_kenmerk1) <= 10; -- lengte-conditie omdat afdelingsnaam max. 10 lang mag zijn. Ongeldige perslid-records worden zo op voorhand uitgesloten, en niet geupdate. END; / CREATE OR REPLACE PROCEDURE mdux_import_perslid (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); BEGIN v_errorhint := 'Generieke update'; -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc -- Let op: afdelingcode (kolomnaam Afdnr.) is nog NIET het afdelingscode, maar het 1e gedeelte ervan. -- De kolom erna (Kostendrager) moet erachter worden geplakt, in AFAS zijn dat bij MDUX 2 velden, die tezamen het afdelingscode vormen. -- Dat gebeurt in de post_import functie, die de afdelingscode (afdnr + kostendrager) alsnog korrekt vult. -- Daarom gaat kostendrager (kolom 7) in kenmerkenveld 1 (positie 27). -- Dus hier wordt afdelingscode (plaats nummer 7 in de string '0;0;0;0;0;0;6;4;3;1;' voor een deel gevuld (het moet gevuld zijn, records zonde afd.nr komen anders niet in de import tabel terecht. prs.import_perslid (p_import_key, '0;0;0;0;0;0;6;4;3;1;' || '2;0;0;0;0;11;10;9;0;5;' || '8;12;0;0;0;0;7;0;0;0;'|| '0;0;0;0;0;0;0;0;0;0;'|| '0;0;0;0;0;0', 'Roepnaam;Voorletters;Voorvoegsel;Achternaam;Persnr.;Afdnr.;Kostendrager;Functie;Email;Mobile;Telefoon;Loginnaam%' ); COMMIT; -- Korrektie van de afdelingscode gebeurt nu... mdux_post_import_perslid(p_import_key); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END mdux_import_perslid; / CREATE OR REPLACE PROCEDURE mdux_update_perslid ( p_import_key IN NUMBER ) IS -- Alle personen verwijderen die niet meer in import bestand voorkomen. CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_nr IS NOT NULL AND i.prs_perslid_nr IS NULL AND p.prs_perslid_verwijder IS NULL ORDER BY 2; v_count NUMBER; BEGIN -- generic update SELECT count(*) INTO v_count FROM fac_imp_perslid; IF v_count < 300 THEN fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', 'Zie Specificatie' ); RETURN; END IF; -- 'NR' betekent dat op basis van personeelsNummeR wordt gematched. -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen prs.update_perslid (p_import_key, 'NR', NULL); -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; END mdux_update_perslid; / ------ ------ BUDGET UPDATE / IMPORT prs_kostenplaasten. ------ CREATE OR REPLACE PROCEDURE mdux_import_budget (p_import_key IN NUMBER) AS 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; c_fielddelimitor VARCHAR2 (1) := ';'; -- De importvelden: v_prs_kostenplaats_nr VARCHAR2 (256); v_prs_kostenplaats_limiet VARCHAR2 (256); v_prs_kostenplaats_bh VARCHAR2 (256); v_prs_kostenplaatsgrp_oms VARCHAR2 (256); CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM mdux_imp_kostenplaatsen; COMMIT; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := ''; v_errorhint := 'Fout bij opvragen te importeren rij'; v_ongeldig := 0; -- Lees alle veldwaarden -- 01, 02, 03, 04 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_nr); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_limiet); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_bh); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaatsgrp_oms); v_aanduiding := '[' || v_prs_kostenplaats_nr || '|' || v_prs_kostenplaats_limiet || '|' || v_prs_kostenplaats_bh || '|' || v_prs_kostenplaatsgrp_oms || '] '; -- 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_kostenplaats_nr) = 'KOSTENPLAATS' AND UPPER (v_prs_kostenplaats_limiet) = 'BUDGET' AND UPPER (v_prs_kostenplaats_bh) = 'BUDGETHOUDER' AND UPPER (v_prs_kostenplaatsgrp_oms) = 'KOSTENPLAATSGROEP' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden -- v_errorhint := 'Ongeldige kostenplaats'; v_prs_kostenplaats_nr := TRIM (v_prs_kostenplaats_nr); IF LENGTH (v_prs_kostenplaats_nr) > 30 THEN v_prs_kostenplaats_nr := SUBSTR (v_prs_kostenplaats_nr, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Kostenplaats te lang', 'Kostenplaats wordt afgebroken tot [' || v_prs_kostenplaats_nr || ']' ); ELSE IF (v_prs_kostenplaats_nr IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Kostenplaats onbekend', 'Kostenplaats is verplicht; regel wordt overgeslagen!' ); END IF; END IF; IF LENGTH (v_prs_kostenplaats_limiet) > 8 THEN v_prs_kostenplaats_limiet := SUBSTR (v_prs_kostenplaats_limiet, 1, 8); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Budget te lang', 'Budget wordt afgebroken tot [' || v_prs_kostenplaats_limiet || ']' ); ELSE IF (v_prs_kostenplaats_limiet IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Budget onbekend', 'Budget is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige loginnaam budgethouder'; v_prs_kostenplaats_bh := TRIM (v_prs_kostenplaats_bh); IF LENGTH (v_prs_kostenplaats_bh) > 30 THEN v_prs_kostenplaats_bh := SUBSTR (v_prs_kostenplaats_bh, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Loginnaam van budgethouder te lang', 'Loginnaam wordt afgebroken tot [' || v_prs_kostenplaats_bh || ']' ); END IF; -- v_errorhint := 'Ongeldige kostenplaatsgroep'; v_prs_kostenplaatsgrp_oms := TRIM (v_prs_kostenplaatsgrp_oms); IF LENGTH (v_prs_kostenplaatsgrp_oms) > 60 THEN v_prs_kostenplaatsgrp_oms := SUBSTR (v_prs_kostenplaatsgrp_oms, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Kostenplaatsgroep te lang', 'Kostenplaatsgroep wordt afgebroken tot [' || v_prs_kostenplaatsgrp_oms || ']' ); END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errorhint := 'Fout bij toevoegen regel aan importtabel mdux_imp_kostenplaatsen'; INSERT INTO mdux_imp_kostenplaatsen (prs_kostenplaats_nr, prs_kostenplaats_limiet, prs_kostenplaats_bh, prs_kostenplaatsgrp_oms) VALUES (v_prs_kostenplaats_nr, v_prs_kostenplaats_limiet, v_prs_kostenplaats_bh,v_prs_kostenplaatsgrp_oms); 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', 'Budgetten: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog (p_import_key, 'S', 'Budgetten: 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 mdux_import_budget; / CREATE OR REPLACE PROCEDURE mdux_update_budget ( p_import_key IN NUMBER ) IS v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); v_prs_kostenplaats_key NUMBER (10); v_prs_perslid_key NUMBER(10); v_prs_kostenplaatsgrp_key NUMBER(10); -- Alle budgetten: dit zijn de regels waarvan de objectnaam voldoet aan de volgende codering: XX-XXTTXX, met op de X precies 1 karakter. CURSOR c_kpn IS SELECT * FROM mdux_imp_kostenplaatsen; BEGIN v_count_tot := 0; v_count_error := 0; v_aanduiding := ''; -- Alle bugetten verwerken... FOR rc IN c_kpn LOOP BEGIN v_count_tot := v_count_tot + 1; v_errorhint := 'Fout bij bepalen kostenplaats [' || rc.prs_kostenplaats_nr || ']'; SELECT prs_kostenplaats_key INTO v_prs_kostenplaats_key FROM prs_kostenplaats WHERE prs_kostenplaats_upper = UPPER(rc.prs_kostenplaats_nr) AND prs_kostenplaats_verwijder IS NULL; v_errorhint := 'Fout bij bepalen budgethouder [' || rc.prs_kostenplaats_bh || ']'; v_prs_perslid_key := NULL; IF rc.prs_kostenplaats_bh IS NOT NULL THEN SELECT prs_perslid_key INTO v_prs_perslid_key FROM prs_perslid WHERE prs_perslid_oslogin = UPPER(rc.prs_kostenplaats_bh) AND prs_perslid_verwijder IS NULL; END IF; v_errorhint := 'Fout bij bepalen kostenplaatsgroep [' || rc.prs_kostenplaatsgrp_oms || ']'; v_prs_kostenplaatsgrp_key := NULL; IF rc.prs_kostenplaatsgrp_oms IS NOT NULL THEN SELECT prs_kostenplaatsgrp_key INTO v_prs_kostenplaatsgrp_key FROM prs_kostenplaatsgrp WHERE UPPER(prs_kostenplaatsgrp_oms) = UPPER(rc.prs_kostenplaatsgrp_oms); END IF; v_errorhint := 'Fout bij update budget bij kostenplaats [' || rc.prs_kostenplaats_nr || ']'; UPDATE prs_kostenplaats SET prs_kostenplaats_limiet = rc.prs_kostenplaats_limiet, prs_perslid_key = v_prs_perslid_key, prs_kostenplaatsgrp_key = v_prs_kostenplaatsgrp_key WHERE prs_kostenplaats_key = v_prs_kostenplaats_key; COMMIT; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Budget: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '' ); fac.imp_writelog (p_import_key, 'S', 'Budget: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), '' ); COMMIT; END mdux_update_budget; / ------ ------ FACTUURIMPORT / KOPPELING NAVISION (roundtrip, dit is deel I: de import van facturen uit Navision) ------ CREATE OR REPLACE PROCEDURE mdux_post_fin_factuur_navision (p_import_key IN NUMBER) AS BEGIN UPDATE fac_imp_factuur SET ordernr = SUBSTR(ordernr,4) WHERE UPPER(ordernr) LIKE 'FCC%' AND fac_import_key = p_import_key; END; / CREATE OR REPLACE PROCEDURE mdux_import_fin_factuur_nav (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR(50); BEGIN --In de XSL: leveranciernr(1);factuurnr(2);factuurdatum(3);opdrachtnr(4);omschrijving(5);bedrag(6);btwperc(7);document(8);navision_nr(9) -- Leveranciernummer doen we nog ff niet. --hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2' v_seq_of_columns := '1;2;3;4;0;0;5;0;6;0;7;8;0;0;0;9;0;0;0;0;0;0'; -- Variabelelijst -- v_leveranciernr: 1 -- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet") -- v_factuurdatum: 3 -- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet") -- v_locatie: 5 -- v_afleverdatum: 6 -- v_omschrijving: 7 -- v_aantal: 8 -- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet") -- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet") -- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet") -- v_docid: 12 -- v_debiteur_nr: 13 -- v_opmerking: 14 -- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/ waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet") -- v_kenmerk1: 16 (AX opdrachtnummer: IONRxxxx) -- v_kenmerk2: 17 (GLN Leverancier(snummer) -- v_kenmerk3: 18 (IBAN) -- v_kenmerk4: 19 (G-IBAN - geblokkeerde rekening) -- v_kenmerk5: 20 (G-Amount - bedrag geblokeerde rekening) -- v_boekmaand: 21 -- v_kenmerk6: 22 (Factuuronderwerp) -- v_kenmerk7: 23 -- v_kenmerk8: 24 -- v_kenmerk9: 25 -- v_kenmerk10: 26 -- v_kenmerk11: 27 -- v_kenmerk12: 28 fac_import_factuur_body(p_import_key, v_seq_of_columns); mdux_post_fin_factuur_navision (p_import_key); END; / CREATE OR REPLACE PROCEDURE mdux_post_update_factuur_nav (p_import_key IN NUMBER) AS CURSOR cfactuur_kenmerk_navision_nr IS SELECT DISTINCT fin_factuur_key, kenmerk1, factuurnr, fac_imp_file_index FROM fac_imp_factuur WHERE fin_factuur_key IS NOT NULL AND fac_import_key = p_import_key AND kenmerk1 IS NOT NULL; -- Key van het kenmerk 'navision nummer ' bij de factuur c_kenmerk_key_navision_nr NUMBER(10) := 2; BEGIN -- Het externe opdrachtnr (AX) wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken FOR rc IN cfactuur_kenmerk_navision_nr LOOP BEGIN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rc.fin_factuur_key, c_kenmerk_key_navision_nr, rc.kenmerk1); EXCEPTION WHEN OTHERS THEN fac.imp_writelog (p_import_key, 'W', 'Van factuur met key ' || rc.fin_factuur_key || ' is de externe factuurnr (Navision)niet bewaard (regel ' || rc.fac_imp_file_index || ')', 'Factuurnr:' || rc.factuurnr || ' / Navision: ' || rc.kenmerk1 ); END; END LOOP; END; / CREATE OR REPLACE PROCEDURE mdux_update_fin_factuur_nav (p_import_key IN NUMBER) AS BEGIN -- Standaard FCLT verwerk import facturen fac_update_factuur (p_import_key); mdux_post_update_factuur_nav(p_import_key); END; / ------ ------ FACTUUREXPORT / KOPPELING NAVISION ------ -------------------------------------------------- -- NAVISION: Factuurexport -- View waarin bij de factuur met fin_factuur_key het bijbehorende externe factuurnr uit Navision. CREATE OR REPLACE VIEW mdux_v_factuur_navision_nr (fin_factuur_key, fin_factuur_navision_nr) 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; -- View waarin bij de factuur met fin_factuur_key het bijbehorende kenmerk 'afgewezen' wordt bepaald. CREATE OR REPLACE VIEW mdux_v_factuur_afgewezen (fin_factuur_key, fin_factuur_afgewezen) 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 = 3; -- View waarin bij de factuur met fin_factuur_key het bijbehorende kenmerk 'incompleet wordt bepaald. CREATE OR REPLACE VIEW mdux_v_factuur_incompleet (fin_factuur_key, fin_factuur_incompleet) 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 = 100; -- view tbv export naar financieel systeem Navision CREATE OR REPLACE VIEW mdux_v_factuur_mldcnt_gegevens ( fin_factuur_key, opdracht_id, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_nr, fin_factuur_navision_nr, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_totaal_inclbtw, prs_bedrijf_key, prs_leverancier_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_totaal_incbtw, fin_factuurregel_btw_perc, fin_btwtabelwaarde_btwcode, fin_factuurregel_nr, fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, 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, nav.fin_factuur_navision_nr, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, CASE WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_inclbtw, COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key, COALESCE (b_c.prs_leverancier_nr, b_o.prs_leverancier_nr) prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, CASE WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') END fin_factuurregel_totaal_incbtw, btw.fin_btwtabelwaarde_perc, btw.fin_btwtabelwaarde_code, fr.fin_factuurregel_nr, fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, 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, mdux_v_factuur_navision_nr nav, fin_factuurregel fr, 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 f.fin_factuur_verwijder is null AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_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(+) AND f.fin_factuur_key = nav.fin_factuur_key(+); CREATE OR REPLACE VIEW MDUX_V_FACTUUR_BES_GEGEVENS ( fin_factuur_key, opdracht_id, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_nr, fin_factuur_navision_nr, fin_factuur_totaal, fin_factuur_totaal_btw, fin_factuur_totaal_inclbtw, prs_bedrijf_key, prs_leverancier_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_totaal_incbtw, fin_factuurregel_btw_perc, fin_btwtabelwaarde_btwcode, fin_factuurregel_nr, fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, 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, nav.fin_factuur_navision_nr, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, CASE WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_inclbtw, b.prs_bedrijf_key, b.prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, CASE WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') END fin_factuurregel_totaal_incbtw, btw.fin_btwtabelwaarde_perc, btw.fin_btwtabelwaarde_code, fr.fin_factuurregel_nr, fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, 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, mdux_v_factuur_navision_nr nav, fin_factuurregel fr, 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_verwijder is null AND f.fin_factuur_key = fr.fin_factuur_key AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key AND f.fin_factuur_key = nav.fin_factuur_key(+); CREATE OR REPLACE VIEW mdux_v_factuur_geg AS SELECT * from mdux_v_factuur_mldcnt_gegevens UNION SELECT * from mdux_v_factuur_bes_gegevens; -- Alle facturen die of akkoord of afgewezen zijn, gaan terug naar Navision. -- MDUX#55136: ook facturen met de status incompleet gaan terug naar Navision CREATE OR REPLACE VIEW mdux_v_factuur_geg_2_navision AS SELECT * from mdux_v_factuur_mldcnt_gegevens WHERE fin_factuur_statuses_key IN (1,6,3) UNION SELECT * from mdux_v_factuur_bes_gegevens WHERE fin_factuur_statuses_key IN (1,6,3); CREATE OR REPLACE VIEW mdux_v_exp_navision_body (result, result_order) AS SELECT '' || fin_factuur_navision_nr || '' || DECODE(fin_factuur_statuses_key, 1, '0','1') || '' , fin_factuur_key FROM mdux_v_factuur_geg_2_navision; CREATE OR REPLACE VIEW mdux_v_export_navision ( result, result_order ) AS SELECT '',0 FROM DUAL UNION SELECT result, result_order FROM mdux_v_exp_navision_body UNION SELECT '',99999999999999999999 FROM DUAL; CREATE OR REPLACE PROCEDURE mdux_export_navision (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, fin_factuur_statuses_key FROM mdux_v_factuur_geg_2_navision GROUP BY fin_factuur_key, fin_factuur_statuses_key; c_kenmerk_key_afgewezen NUMBER (10) := 3; c_kenmerk_key_incompleet NUMBER (10) := 100; v_count NUMBER (10); 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 IF cfact.fin_factuur_statuses_key = 6 THEN -- Status akkoord kan op reguliere wijze naar verwerkt... fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); ELSE IF cfact.fin_factuur_statuses_key = 1 THEN -- Status afgewezen kan NIET op reguliere wijze naar verwerkt... (zie call MDUX#31142) SELECT COUNT ( * ) INTO v_count FROM mdux_v_factuur_afgewezen WHERE fin_factuur_key = cfact.fin_factuur_key; IF v_count = 1 THEN UPDATE fin_kenmerkfactuur SET fin_kenmerkfactuur_waarde = '1' WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_afgewezen; ELSE INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (cfact.fin_factuur_key, c_kenmerk_key_afgewezen, '1'); END IF; fac.trackaction ('FINVER', cfact.fin_factuur_key, NULL, NULL, 'Factuur van afgewezen naar verwerkt'); UPDATE fin_factuur SET fin_factuur_statuses_key = 7 WHERE fin_factuur_key = cfact.fin_factuur_key; ELSE IF cfact.fin_factuur_statuses_key = 3 THEN -- Status incompleet kan NIET op reguliere wijze naar verwerkt... (zie call MDUX#55136) SELECT COUNT ( * ) INTO v_count FROM mdux_v_factuur_incompleet WHERE fin_factuur_key = cfact.fin_factuur_key; IF v_count = 1 THEN UPDATE fin_kenmerkfactuur SET fin_kenmerkfactuur_waarde = '1' WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_incompleet; ELSE INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (cfact.fin_factuur_key, c_kenmerk_key_incompleet, '1'); END IF; fac.trackaction ('FINVER', cfact.fin_factuur_key, NULL, NULL, 'Factuur van incompleet naar verwerkt'); UPDATE fin_factuur SET fin_factuur_statuses_key = 7 WHERE fin_factuur_key = cfact.fin_factuur_key; END IF; END IF; END IF; END LOOP; END; / CREATE OR REPLACE VIEW mdux_v_export_undo_navision ( 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 mdux_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 mdux_select_undo_navision ( 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 akkoord terug te zetten. CREATE OR REPLACE PROCEDURE mdux_export_undo_navision ( 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, t.fac_tracking_datum 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_fac_tracking_datum_akkoord DATE; v_fac_tracking_datum_afgewezen DATE; v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); c_kenmerk_key_afgewezen NUMBER(10) := 3; BEGIN v_errormsg := 'Geen akties'; FOR cfact IN cfactuur LOOP SELECT MAX(t.fac_tracking_datum) INTO v_fac_tracking_datum_akkoord FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn WHERE f.fin_factuur_key = t.fac_tracking_refkey AND f.fin_factuur_key = cfact.fin_factuur_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINFOK'; SELECT MAX(t.fac_tracking_datum) INTO v_fac_tracking_datum_afgewezen FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn WHERE f.fin_factuur_key = t.fac_tracking_refkey AND f.fin_factuur_key = cfact.fin_factuur_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINFNO'; IF v_fac_tracking_datum_afgewezen IS NULL THEN IF v_fac_tracking_datum_akkoord IS NOT NULL THEN -- Factuur was oorspronkelijk akkoord, DUS weer terug op akkoord zetten. -- 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 IF; -- Als beiden null zijn, dan GEEN actie (deze situatie zou niet voor mogen komen) ELSE IF v_fac_tracking_datum_akkoord IS NOT NULL THEN -- Factuur had kennelijk beide statussen, dus akkoord en afgewezen. -- Het gaat er nu om wat de laatste status van die 2 was, dus ff vergelijken... IF v_fac_tracking_datum_akkoord > v_fac_tracking_datum_afgewezen THEN -- Factuur was oorspronkelijk akkoord, DUS weer terug op akkoord zetten. 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; ELSE -- Factuur was oorspronkelijk afgewezen, DUS weer terug op afgewezen zetten. fac.trackaction ('FINFNO', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet'); UPDATE fin_factuur SET fin_factuur_statuses_key = 1 WHERE fin_factuur_key = cfact.fin_factuur_key; DELETE FROM fin_kenmerkfactuur WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_afgewezen; END IF; ELSE -- Factuur was oorspronkelijk afgewezen, DUS weer terug op afgewezen zetten. fac.trackaction ('FINFNO', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet'); UPDATE fin_factuur SET fin_factuur_statuses_key = 1 WHERE fin_factuur_key = cfact.fin_factuur_key; DELETE FROM fin_kenmerkfactuur WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_afgewezen; END IF; END IF; END LOOP; END; / -- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, -- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden.... -- Daarom in deze post-import alle bedrijven in de import met p_import_key een L markeren die een technisch adres hebben... CREATE OR REPLACE PROCEDURE mdux_post_import_bedrijf (p_import_key IN NUMBER) AS BEGIN UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_leverancier = 1 WHERE prs_bedrijf_order_adres IS NOT NULL AND prs_leverancier_nr NOT IN (10846,58977) --MDUX#52455: Uitzondering voor Staples en Zalsman BV ; -- MDUX#32101: Alle leveranciers als "uitvoerende" markeren, deze gelijkgetrokken aan "Leverancier" (had ook in 1 query gekund). UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_uitvoerende = 1 WHERE prs_bedrijf_order_adres IS NOT NULL; -- MDUX#37363: Alle leveranciers als potentieel "contractant" markeren UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_contract = 1; END; / CREATE OR REPLACE PROCEDURE mdux_import_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); BEGIN -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;18;9;0;1;2;3;4;5;6;27;8;9;0;1;2;3;4 v_seq_of_columns := '2;1;3;4;5;6;0;0;0;0;7;8;11;0;0;0;0;9;0;0;0;0;0;0;0;0;10;0;0;0;0;0;0;0'; fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 1); -- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, -- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden.... mdux_post_import_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!'); END mdux_import_bedrijf; / -- Werkt de technische adres(sen) van bedrijf 'p_bedrijf_key' bij. -- Parameters: -- p_bedrijf_key (id van prs_bedrijf) -- p_bedrijfadres_url (technisch adres, b.v. mailadres. URL, FTP, ..) -- p_bedrijf_broc (1 of NULL, indien 1 dan is bedrijf als zodanig geregistreerd als p_kanaal (volgende param). -- -- Dus b.v. 1 en p_kanaal = 'B', dan is bedrijf een leverancier in Facilitor -- -- En b.v. NULL en p_kanaal = 'O', dan is bedrijf geen uitvoerende in Facilitor. -- p_kanaal is "B" (bestelopdracht), "O" (meldingpdracht) of "C" (contract) CREATE OR REPLACE PROCEDURE mdux_delupsert_bedrijfadres (p_bedrijf_key IN NUMBER, p_bedrijfadres_url IN VARCHAR2, p_bedrijfadres_xsl IN VARCHAR2, p_bedrijf_broc IN NUMBER, p_kanaal IN VARCHAR) AS v_count NUMBER (10); v_bedrijfadres_url prs_bedrijfadres.prs_bedrijfadres_url%TYPE; BEGIN -- In beide gevallen (insert of update) moet het Technisch adres worden bijgewerkt. -- Als kolom p_bedrijfadres_url gevuld is (met een technisch adres), dan zal deze ook geinsert of bijgewerkt moeten worden als kanaal "p_kanaal", -- en wordt deze relatie een "L" (Leverancier). -- Indien de kolom p_bedrijfadres_url niet (meer) gevuld is, en het technisich adres met "broc"-kanaal bestaat, dan wordt deze verwijderd. -- en wordt deze relatie niet langer een "L" (Leverancier). SELECT COUNT (*) INTO v_count FROM prs_bedrijfadres WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; v_bedrijfadres_url := TRIM(p_bedrijfadres_url); IF v_bedrijfadres_url IS NOT NULL THEN -- We doen een soort can correctieslagje, door ff de prefix mailto: ervoor zetten als die dat nog niet heeft er er een @ in dit veld aanwezig is -- NB: @ betekent hier maar eens dat het een mailadres betreft en geen URL. O ja? Ja, laten we daar maar 'ns van uitgaan.... IF SUBSTR(v_bedrijfadres_url, 1, 7) <> 'mailto:' AND INSTR(v_bedrijfadres_url,'@') > 0 THEN v_bedrijfadres_url := 'mailto:' || v_bedrijfadres_url; END IF; -- Dit externe bedrijf heeft een technisch adres in het BRONsysteem! IF v_count = 0 THEN -- Bedrijf heeft nog geen technisch adres in Facilitor, alleen aanmaken indien 'p_bedrijf_broc' = 1 (zodat bij juiste kanaal wordt aangemaakt). IF p_bedrijf_broc = 1 THEN INSERT INTO prs_bedrijfadres( prs_bedrijf_key, prs_bedrijfadres_type, prs_bedrijfadres_url , prs_bedrijfadres_xsl) VALUES (p_bedrijf_key, p_kanaal, v_bedrijfadres_url, p_bedrijfadres_xsl); END IF; ELSE -- Bedrijf heeft al een technisch adres voor dit kanaal p_kanaal, dus updaten als 'p_bedrijf_broc' = 1 (zodat bij juiste kanaal wordt ge-update), en anders verwijderen. IF p_bedrijf_broc = 1 THEN -- Bijwerken van technische adres van dit bedrijf, NIET! de stylesheet, die wordt namelijk in Facilitor beheerd!!! UPDATE prs_bedrijfadres SET prs_bedrijfadres_url = v_bedrijfadres_url WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; ELSE -- Verwijderen van technische adres van dit bedrijf bij het kanaal p_kanaal, omdat het geen leverancier/uitvoerende/contractant meer is! DELETE prs_bedrijfadres WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; END IF; END IF; ELSE -- Dit externe bedrijf heeft geen technisch adres (bij kanaal bestelopdrachten) in RBT geregistreerd -- Als die in Facilitor er 1 heeft, dan wordt deze geleegd (ongeacht p_kanaal), dus gewoon altijd verwijderen (want die heeft dus GEEN technisch adres). IF v_count > 0 THEN DELETE prs_bedrijfadres WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; END IF; END IF; -- v_bedrijfadres_url IS NOT NULL COMMIT; END; / CREATE OR REPLACE PROCEDURE mdux_update_bedrijf_body (p_import_key IN NUMBER, p_sync IN NUMBER) AS v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER (10); v_count_tot NUMBER (10); v_count_new NUMBER (10); v_count_upd NUMBER (10); v_count_del NUMBER (10); v_aanduiding VARCHAR2 (200) := '-'; -- SUBPROC PROCEDURE add_bedrijf (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT * FROM fac_imp_ext_bedrijf ib; v_bedrijf_key NUMBER (10); BEGIN v_count_tot := 0; v_count_new := 0; v_count_upd := 0; FOR rec IN c1 LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || rec.prs_bedrijf_naam || '|' || rec.prs_leverancier_nr || '] '; v_errorhint := 'Fout bepalen bedrijf'; IF rec.prs_leverancier_nr IS NULL AND p_sync = 1 THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Leveranciernummer ongedefinieerd!', v_errorhint); COMMIT; ELSE SELECT COUNT ( * ) INTO v_count FROM prs_v_aanwezigbedrijf WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr); IF v_count = 0 OR p_sync = 0 THEN v_errorhint := 'Fout toevoegen bedrijf'; INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_leverancier_nr, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats, prs_bedrijf_post_land, prs_bedrijf_telefoon, prs_bedrijf_fax, prs_bedrijf_email, prs_bedrijf_contact_persoon, prs_bedrijf_contact_telefoon, prs_bedrijf_contact_fax, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract, prs_bedrijf_huurder, prs_bedrijf_ingids, prs_bedrijf_uurloon, prs_overeenkomst_nr, prs_overeenkomst_datum, prs_bedrijf_opmerking) VALUES (rec.prs_bedrijf_naam, rec.prs_leverancier_nr, rec.prs_bedrijf_bezoek_adres, rec.prs_bedrijf_bezoek_postcode, rec.prs_bedrijf_bezoek_plaats, rec.prs_bedrijf_bezoek_land, rec.prs_bedrijf_post_adres, rec.prs_bedrijf_post_postcode, rec.prs_bedrijf_post_plaats, rec.prs_bedrijf_post_land, rec.prs_bedrijf_telefoon, rec.prs_bedrijf_fax, rec.prs_bedrijf_email, rec.prs_bedrijf_contact_persoon, rec.prs_bedrijf_contact_telefoon, rec.prs_bedrijf_contact_fax, DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL), DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL), DECODE (rec.prs_bedrijf_contract, 1, 1, NULL), DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL), DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL), rec.prs_bedrijf_uurloon, rec.prs_overeenkomst_nr, rec.prs_overeenkomst_datum, rec.prs_bedrijf_opmerking) RETURNING prs_bedrijf_key INTO v_bedrijf_key; v_count_new := v_count_new + 1; ELSE -- v_count > 0 SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr); v_errorhint := 'Fout bijwerken bedrijf'; UPDATE prs_bedrijf SET prs_bedrijf_naam = COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam), prs_bedrijf_bezoek_adres = COALESCE (rec.prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_adres), prs_bedrijf_bezoek_postcode = COALESCE (rec.prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_postcode), prs_bedrijf_bezoek_plaats = COALESCE (rec.prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_plaats), prs_bedrijf_bezoek_land = COALESCE (rec.prs_bedrijf_bezoek_land, prs_bedrijf_bezoek_land), prs_bedrijf_post_adres = COALESCE (rec.prs_bedrijf_post_adres, prs_bedrijf_post_adres), prs_bedrijf_post_postcode = COALESCE (rec.prs_bedrijf_post_postcode, prs_bedrijf_post_postcode), prs_bedrijf_post_plaats = COALESCE (rec.prs_bedrijf_post_plaats, prs_bedrijf_post_plaats), prs_bedrijf_post_land = COALESCE (rec.prs_bedrijf_post_land, prs_bedrijf_post_land), prs_bedrijf_telefoon = COALESCE (rec.prs_bedrijf_telefoon, prs_bedrijf_telefoon), prs_bedrijf_fax = COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax), prs_bedrijf_email = COALESCE (rec.prs_bedrijf_email, prs_bedrijf_email), prs_bedrijf_contact_persoon = COALESCE (rec.prs_bedrijf_contact_persoon, prs_bedrijf_contact_persoon), prs_bedrijf_contact_telefoon = COALESCE (rec.prs_bedrijf_contact_telefoon, prs_bedrijf_contact_telefoon), prs_bedrijf_contact_fax = COALESCE (rec.prs_bedrijf_contact_fax, prs_bedrijf_contact_fax), prs_bedrijf_leverancier = DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL), prs_bedrijf_uitvoerende = DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL), prs_bedrijf_contract = DECODE (rec.prs_bedrijf_contract, 1, 1, NULL), prs_bedrijf_huurder = DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL), prs_bedrijf_ingids = DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL), prs_bedrijf_uurloon = COALESCE (rec.prs_bedrijf_uurloon, prs_bedrijf_uurloon), prs_overeenkomst_nr = COALESCE (rec.prs_overeenkomst_nr, prs_overeenkomst_nr), prs_overeenkomst_datum = COALESCE (rec.prs_overeenkomst_datum, prs_overeenkomst_datum), prs_bedrijf_opmerking = COALESCE (rec.prs_bedrijf_opmerking, prs_bedrijf_opmerking) WHERE prs_bedrijf_key = v_bedrijf_key; v_count_upd := v_count_upd + 1; END IF; -- v_count = 0 END IF; -- rec.prs_leverancier_nr IS NULL 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_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new), ''); fac.imp_writelog (p_import_key, 'S', 'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd), ''); COMMIT; END; -- SUBPROC PROCEDURE del_bedrijf (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT * FROM prs_v_aanwezigbedrijf b WHERE b.prs_bedrijf_intern IS NULL AND b.prs_leverancier_nr IS NOT NULL AND prs_leverancier_nr NOT IN (10846,58977) --MDUX#52455: Uitzondering voor Staples en Zalsman BV AND NOT EXISTS (SELECT 1 FROM fac_imp_ext_bedrijf WHERE prs_leverancier_nr = b.prs_leverancier_nr); v_bedrijf_key NUMBER (10); BEGIN v_count_del := 0; FOR rec IN c1 LOOP BEGIN v_aanduiding := '[' || rec.prs_bedrijf_naam || '] '; v_errorhint := 'Fout verwijderen bedrijf'; UPDATE prs_bedrijf SET prs_bedrijf_verwijder = SYSDATE WHERE prs_bedrijf_key = rec.prs_bedrijf_key; v_count_del := v_count_del + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del), ''); COMMIT; END; PROCEDURE diensten_bedrijf (p_import_key IN NUMBER) AS CURSOR c_dienst IS SELECT DISTINCT prs_dienst_omschrijving FROM fac_imp_ext_bedrijf WHERE prs_dienst_omschrijving IS NOT NULL; CURSOR c_dienstlocgebouw IS SELECT prs_dienst_omschrijving, alg_locatie_code, alg_gebouw_code, prs_bedrijf_naam FROM fac_imp_ext_bedrijf WHERE prs_dienst_omschrijving IS NOT NULL; v_alg_locatie_key NUMBER (10); v_alg_gebouw_key NUMBER (10); v_prs_dienst_key NUMBER (10); v_prs_bedrijf_key NUMBER (10); BEGIN v_count_tot := 0; v_count_upd := 0; FOR rec2 IN c_dienst LOOP BEGIN v_count_tot := v_count_tot + 1; v_errormsg := 'Kan dienst niet bepalen [' || rec2.prs_dienst_omschrijving || '] '; BEGIN SELECT prs_dienst_key INTO v_prs_dienst_key FROM prs_dienst WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec2.prs_dienst_omschrijving); EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Kan dienst niet wegschrijven [' || rec2.prs_dienst_omschrijving || '] '; INSERT INTO prs_dienst (prs_dienst_omschrijving) VALUES (rec2.prs_dienst_omschrijving); END; v_count_upd := v_count_upd + 1; COMMIT; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint ); COMMIT; -- tbv logging END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Diensten: aantal ingelezen: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog (p_import_key, 'S', 'Diensten: aantal toegevoegd: ' || TO_CHAR (v_count_upd), '' ); v_count_tot := 0; v_count_upd := 0; FOR rec3 IN c_dienstlocgebouw LOOP BEGIN v_count_tot := v_count_tot + 1; v_errormsg := 'Kan dienst niet bepalen [' || rec3.prs_dienst_omschrijving || '] '; SELECT prs_dienst_key INTO v_prs_dienst_key FROM prs_dienst WHERE prs_dienst_omschrijving = rec3.prs_dienst_omschrijving; v_errormsg := 'Kan locatie niet bepalen [' || rec3.alg_locatie_code || '] '; IF rec3.alg_locatie_code IS NOT NULL THEN SELECT alg_locatie_key INTO v_alg_locatie_key FROM alg_v_aanweziglocatie WHERE alg_locatie_code = rec3.alg_locatie_code; ELSE v_alg_locatie_key := NULL; END IF; v_errormsg := 'Kan gebouw niet bepalen [' || rec3.alg_gebouw_code || '] '; IF rec3.alg_gebouw_code IS NOT NULL THEN SELECT alg_gebouw_key INTO v_alg_gebouw_key FROM alg_v_aanweziggebouw WHERE alg_gebouw_code = rec3.alg_gebouw_code AND alg_locatie_key = v_alg_locatie_key; ELSE v_alg_gebouw_key := NULL; END IF; v_errormsg := 'Kan bedrijf niet bepalen [' || rec3.prs_bedrijf_naam || '] '; SELECT prs_bedrijf_key INTO v_prs_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_naam = rec3.prs_bedrijf_naam; v_errormsg := 'Kan bedrijf/dienst/loc/gebouw niet wegschrijven [' || rec3.prs_bedrijf_naam || '/' || rec3.prs_dienst_omschrijving || '/' || rec3.alg_locatie_code || '/' || rec3.alg_gebouw_code || '] '; INSERT INTO prs_bedrijfdienstlocatie ( prs_dienst_key, prs_bedrijf_key, alg_locatie_key, alg_gebouw_key ) VALUES (v_prs_dienst_key, v_prs_bedrijf_key, decode (v_alg_gebouw_key, null, v_alg_locatie_key, null), v_alg_gebouw_key); v_count_upd := v_count_upd + 1; COMMIT; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint ); COMMIT; -- tbv logging END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Bedrijf/dienst/locatie: aantal ingelezen: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog (p_import_key, 'S', 'Bedrijf/dienst/locatie: aantal toegevoegd: ' || TO_CHAR (v_count_upd), '' ); END; -- MAIN BEGIN IF p_sync = 1 THEN -- Bij aanvullen nooit verwijderen, alleen bij sync-en del_bedrijf (p_import_key); END IF; add_bedrijf (p_import_key); IF p_sync = 0 THEN -- Bij aanvullen bedrijven de diensten-locatie-gebouw uitvoeren, bij sync-en (nog) niet diensten_bedrijf(p_import_key); END IF; 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_aanduiding || v_errormsg, 'Importproces relaties afgebroken!'); END; / CREATE OR REPLACE PROCEDURE mdux_post_update_bedrijf (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT * FROM fac_imp_ext_bedrijf ib; v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200) := '-'; v_bedrijf_key NUMBER (10); v_aantal_bedrijfadres_url NUMBER (10); BEGIN SELECT count(*) INTO v_aantal_bedrijfadres_url FROM fac_imp_ext_bedrijf WHERE prs_bedrijf_order_adres IS NOT NULL; -- Worden de technische adressen elders beheerd, dan bijwerken, en anders met rust laten (dan beheer in Facilitor, zal de defeault zijn) -- Wij gaan conclusie beheer in Facilitor of bron hier als volgt bepalen: -- indien er GEEN bedrijfsadres_url's in de bron staan, dan beheer in Facilitor. -- indien er minimaal 1 bedrijfsadres_url's in de bron staat, dan beheer in bronsysteem IF v_aantal_bedrijfadres_url > 0 THEN -- Beheer van technische adressen in bronsysteem, dus we gaan hier de technische adressen bijweken op basis van leveranciernummer (add/upd/del). FOR rec IN c1 LOOP BEGIN v_aanduiding := '[' || rec.prs_bedrijf_naam || '|' || rec.prs_leverancier_nr || '] '; v_errorhint := 'Fout bepalen bedrijf'; IF rec.prs_leverancier_nr IS NOT NULL THEN SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr); mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_leverancier, 'B'); -- MDUX#32101: Voor mldopdrachten (en contracten ook maar) geen technisch adres instellen, MDUX wil dat vooralsnog handmatig versturen. -- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_uitvoerende, 'O'); -- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_contract, 'C'); END IF; -- rec.prs_leverancier_nr IS NULL 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_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; END IF; COMMIT; END; / CREATE OR REPLACE PROCEDURE mdux_update_bedrijf (p_import_key IN NUMBER) AS BEGIN mdux_update_bedrijf_body(p_import_key, 1); mdux_post_update_bedrijf (p_import_key); END ; / CREATE OR REPLACE VIEW MDUX_V_PERSLID_WARM (PRS_PERSLID_KEY, PRS_PERSLID_INFO, PRS_PERSLID_VERWIJDER) AS SELECT prs_perslid_key, prs_perslid_naam || DECODE (p.prs_perslid_voorletters, NULL, '', ', ' || p.prs_perslid_voorletters) || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (p.prs_perslid_voornaam, NULL, '', ' (' || p.prs_perslid_voornaam || ')') || '(pers.nr: ' || prs_perslid_nr || ')', prs_perslid_verwijder FROM prs_perslid p WHERE prs_perslid_nr IS NOT NULL; CREATE OR REPLACE VIEW mdux_v_budget_basic AS SELECT prs_kostenplaats_key, kostenplaats, prs_kostensoort_oms, prs_kostensoort_opmerking, SUM (bedrag) bedrag, SUM (geraamd) geraamd, prs_kostenplaats_limiet, prs_kostenplaatsgrp_key, kpgroep, kp_prs_perslid_key, kpg_prs_perslid_key, limietperiode, to_char(besteldatum,'YYYY') jaar, to_char(besteldatum,'MM') maand FROM (SELECT k.prs_kostenplaats_key, NVL2 ( k.prs_kostenplaats_nr, prs_kostenplaats_nr || ' ' || lcl.x ('prs_kostenplaats_omschrijving', k.prs_kostenplaats_key, k.prs_kostenplaats_omschrijving), '') kostenplaats, ks.prs_kostensoort_oms, ks.prs_kostensoort_opmerking, CASE WHEN (module = 'BES' AND (status = 6 OR status = 7)) OR (module = 'MLD' AND (status = 7 OR status = 9)) OR (module = 'RES' AND (status = 5 OR status = 6)) THEN COALESCE (bedrag, 0) ELSE 0 END bedrag, CASE WHEN (module = 'BES' AND (status = 6 OR status = 7)) OR (module = 'MLD' AND (status = 7 OR status = 9)) OR (module = 'RES' AND (status = 5 OR status = 6)) THEN 0 ELSE COALESCE (bedrag, 0) END geraamd, k.prs_kostenplaats_limiet, k.prs_kostenplaatsgrp_key, kpg.prs_kostenplaatsgrp_oms kpgroep, k.prs_perslid_key kp_prs_perslid_key, kpg.prs_perslid_key kpg_prs_perslid_key, status, module, COALESCE (kpg.prs_kostenplaatsgrp_limperiode, k.prs_kostenplaats_limietperiode) limietperiode, besteldatum FROM (SELECT o.prs_kostenplaats_key, o.mld_opdr_datumbegin datum, m.prs_perslid_key prs_perslid_key, mdis.ins_discipline_omschrijving categorie, sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr categorienummer, COALESCE (o.mld_opdr_kosten, 0) bedrag, o.mld_statusopdr_key status, 'MLD' module, COALESCE (s.prs_kostensoort_key, mdis.prs_kostensoort_key) prs_kostensoort_key, o.mld_opdr_ordernr ordernr, o.mld_opdr_key kostenplaats_item_key, -1 kostenplaats_item_child_key, m.mld_alg_locatie_key locatie_key, o.mld_opdr_datumbegin besteldatum FROM mld_opdr o, mld_typeopdr ot, mld_melding m, mld_stdmelding s, mld_discipline mdis, ins_srtdiscipline sd WHERE o.mld_opdr_kosten <> 0 AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = s.mld_stdmelding_key AND mdis.ins_discipline_key = s.mld_ins_discipline_key AND mdis.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND o.mld_statusopdr_key NOT IN (1, 2, 3, 4, 10) -- AND o.mld_opdr_datumbegin BETWEEN TO_DATE ( -- '20-12-2014 00:00', -- 'DD-MM-YYYY HH24:MI') -- AND TO_DATE ( -- '20-12-2014 23:59', -- 'DD-MM-YYYY HH24:MI') UNION ALL SELECT b.prs_kostenplaats_key, bo.bes_bestelopdr_datum datum, b.prs_perslid_key prs_perslid_key, 'Bestelling' categorie, TO_CHAR (b.bes_bestelling_key) categorienummer, (boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs) bedrag, COALESCE (bo.bes_bestelopdr_status, 0) status, 'BES' module, bdis.prs_kostensoort_key, b.bes_bestelling_ordernr ordernr, b.bes_bestelling_key kostenplaats_item_key, -1 kostenplaats_item_child_key, (SELECT alg_locatie_key FROM mld_adres ma WHERE ma.mld_adres_key = b.mld_adres_key_lev) locatie_key, bo.bes_bestelopdr_datum besteldatum FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdr_item boi, bes_srtdeel isd, bes_srtgroep isg, bes_discipline bdis WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = isd.bes_srtdeel_key AND isd.bes_srtgroep_key = isg.bes_srtgroep_key AND isg.ins_discipline_key = bdis.ins_discipline_key AND bo.bes_bestelopdr_status IN (4, 6, 7) -- AND bo.bes_bestelopdr_datum BETWEEN TO_DATE ( -- '20-12-2014 00:00', -- 'DD-MM-YYYY HH24:MI') -- AND TO_DATE ( -- '20-12-2014 23:59', -- 'DD-MM-YYYY HH24:MI') ) tab, prs_kostenplaats k, prs_kostenplaatsgrp kpg, prs_kostensoort ks, prs_kostensoortgrp ksg, prs_perslid p, prs_v_afdeling d, alg_locatie l WHERE tab.prs_kostenplaats_key(+) = k.prs_kostenplaats_key AND tab.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+) AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+) AND tab.prs_perslid_key = p.prs_perslid_key(+) AND p.prs_afdeling_key = d.prs_afdeling_key(+) AND tab.locatie_key = l.alg_locatie_key(+) -- AND k.prs_kostenplaats_key IN (2, 3, 67, 110, 111, 135) -- AND (k.prs_perslid_key = 329 OR kpg.prs_perslid_key = 329) ) GROUP BY prs_kostenplaats_key, kostenplaats, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostenplaats_limiet, prs_kostenplaatsgrp_key, kpgroep, kp_prs_perslid_key, kpg_prs_perslid_key, limietperiode, to_char(besteldatum,'YYYY'), to_char(besteldatum,'MM'); -- MDUX#35025 herinnering tbv binnenboeken(leveren) van bestellingen CREATE OR REPLACE VIEW MDUX_V_RAP_BES_OPEN_LEV ( BES_BESTELOPDR_KEY, EXTRA_KEY, ORDERNUMMER, BESTELLER, BESTELDATUM, LEVERDATUM, LEVERANCIER, TOTAAL ) AS SELECT bo.bes_bestelopdr_key, p1.prs_perslid_key, 'FCC' || bo.bes_bestelopdr_id Ordernummer, p3.prs_perslid_naam_friendly Besteller, TO_CHAR (bes.bes_bestelling_datum, 'DD-MM-YYYY') Besteldatum, TO_CHAR (bes_bestelling_leverdatum, 'DD-MM-YYYY') Leverdatum, bdr.prs_bedrijf_naam Leverancier, SUM (boi.totaal) Totaal FROM bes_bestelopdr bo, bes_bestelling bes, (SELECT bes_bestelopdr_key, bes_bestelopdr_item_key, bes_bestelopdr_item_aantal, bes_bestelopdr_item_prijs, bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs totaal FROM bes_bestelopdr_item) boi, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, prs_perslid p1, prs_perslid p2, prs_v_perslid_fullnames p3, mld_adres ma, fac_gebruikersgroep fg, prs_bedrijf bdr, (SELECT p.prs_perslid_key, g.alg_locatie_key FROM prs_perslidwerkplek ppw, prs_werkplek w, prs_perslid p, alg_ruimte r, alg_verdieping v, alg_gebouw g WHERE w.prs_werkplek_key = ppw.prs_werkplek_key AND p.prs_perslid_key = ppw.prs_perslid_key AND p.prs_perslid_verwijder IS NULL AND w.prs_alg_ruimte_key = r.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key) pw WHERE bes_bestelopdr_status IN (4, 5) 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 p1.prs_perslid_key = pw.prs_perslid_key AND pw.alg_locatie_key = ma.alg_locatie_key AND bes.mld_adres_key_lev = ma.mld_adres_key AND fg.prs_perslid_key = p1.prs_perslid_key AND fg.fac_groep_key = 22 AND p1.prs_perslid_verwijder IS NULL AND SUBSTR (p1.prs_perslid_oslogin, 0, 1) != '_' AND ( (bes_bestelling_leverdatum < SYSDATE - 5 AND bes_bestelling_leverdatum > bes_bestelopdr_datum) OR (bes_bestelopdr_datum < SYSDATE - 5 AND bes_bestelling_leverdatum <= bes_bestelopdr_datum)) AND bes.prs_perslid_key_voor = p2.prs_perslid_key AND p2.prs_afdeling_key = p1.prs_afdeling_key AND p3.prs_perslid_key = bes.prs_perslid_key_voor AND bo.prs_bedrijf_key = bdr.prs_bedrijf_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key NOT IN (221) -- Huurauto's uitgesloten (MDUX#65545) GROUP BY bo.bes_bestelopdr_key, bo.bes_bestelopdr_id, p3.prs_perslid_naam_friendly, bes.bes_bestelling_datum, bes_bestelling_leverdatum, bdr.prs_bedrijf_naam, p1.prs_perslid_key, sg.ins_discipline_key ORDER BY 2; CREATE OR REPLACE VIEW MDUX_V_NOTI_BES_LEV_REMINDER ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY ) AS SELECT 'CUST01', NULL, extra_key, 'Herinnering: er zijn ' || COUNT (bes_bestelopdr_key) || ' openstaande bestelopdrachten die op uw levering wachten', (SELECT fac_usrrap_key FROM fac_usrrap WHERE upper(fac_usrrap_view_name) = 'MDUX_V_RAP_BES_OPEN_LEV'), extra_key FROM MDUX_V_RAP_BES_OPEN_LEV GROUP BY extra_key; -- MDUX#35089 rapport tbv bestellers inzage in bestelde artikelen CREATE OR REPLACE VIEW MDUX_V_RAP_BES_ARTIKEL_VOOR ( Aanvraagnr, Bestel_datum, Status, Besteller, Besteld_voor, Catalogus, Groep, Artikel_nummer, Artikel, Aantal, Artikel_prijs, Totaalbedrag, besteller_key, FCLT_3D_AFDELING_KEY, FCLT_3D_LOCATIE_KEY ) AS SELECT b.bes_bestelling_key, b.bes_bestelling_datum, stat.bes_bestellingstatuses_omschr, pf.prs_perslid_naam_full, kd.prs_perslid_info, dis.ins_discipline_omschrijving ins_discipline_omschrijving, grp.bes_srtgroep_omschrijving bes_srtgroep_omschrijving, srt.bes_srtdeel_nr bes_srtdeel_nr, srt.bes_srtdeel_omschrijving bes_srtdeel_omschrijving, bi.bes_bestelling_item_aantal aantalart, COALESCE (bi.bes_bestelling_item_prijs, 0) artikelprijs, bi.bes_bestelling_item_aantal * COALESCE (bi.bes_bestelling_item_prijs, 0) totaalbedrag, p.prs_perslid_key, boom.prs_afdeling_key1, l.alg_locatie_key FROM bes_bestelling_item bi, bes_srtdeel srt, bes_bestelling b, bes_bestellingstatuses stat, prs_perslid p, prs_v_perslid_fullnames_all pf, prs_v_afdeling d, prs_v_afdeling_boom boom, bes_srtgroep grp, ins_tab_discipline dis, mld_adres adr, alg_locatie l, alg_district di, (SELECT bes_bestelling_key, prs_perslid_info FROM bes_kenmerkbestell bkb, bes_kenmerk bk, MDUX_V_PERSLID_WARM p WHERE bes_kenmerkbestell_verwijder IS NULL AND bk.bes_kenmerk_key = bkb.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 21 AND TO_CHAR (p.prs_perslid_key(+)) = bes_kenmerkbestell_waarde) kd WHERE bi.bes_srtdeel_key = srt.bes_srtdeel_key AND srt.bes_srtgroep_key = grp.bes_srtgroep_key AND grp.ins_discipline_key = dis.ins_discipline_key AND bi.bes_bestelling_key = b.bes_bestelling_key AND b.bes_bestelling_status = stat.bes_bestellingstatuses_key AND p.prs_perslid_key = b.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = d.prs_afdeling_key AND d.prs_afdeling_key = boom.prs_afdeling_key AND b.mld_adres_key_lev = adr.mld_adres_key AND adr.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = dI.alg_district_key(+) AND kd.bes_bestelling_key = b.bes_bestelling_key AND NOT EXISTS (SELECT b1.bes_bestelling_key FROM bes_bestelling b1 WHERE bes_bestelling_parentkey = b.bes_bestelling_key) AND b.bes_bestelling_status NOT IN (8) ORDER BY bes_bestelling_key; -- MDUX#37895: Factuurmatching in financieel pakket laten plaatsvinden -> hiervoor stellen we via API onderstaande view beschikbaar... CREATE OR REPLACE VIEW mdux_bes_4_ax AS SELECT 'FCC' || TO_CHAR (bo.bes_bestelopdr_id) opdracht_id, b.prs_bedrijf_key, b.prs_leverancier_nr, kp.prs_kostenplaats_nr, bo.bes_bestelopdr_key bes_opdr_key, NULL mld_opdr_key, NULL cnt_contract_key, BO.BES_BESTELOPDR_LEVKOSTEN, BO.BES_BESTELOPDR_KORTING, BO.BES_BESTELOPDR_STATUS, fac.gettrackingdate('BESOTV', bo.BES_BESTELOPDR_KEY) bes_besotv_datum, BOI.BES_BESTELOPDR_ITEM_POSNR, BOI.BES_BESTELOPDR_ITEM_OMSCHRIJV, BOI.BES_BESTELOPDR_ITEM_AANTAL, BOI.BES_BESTELOPDR_ITEM_AANTALONTV, BOI.BES_BESTELOPDR_ITEM_PRIJS, BOI.BES_BESTELOPDR_ITEM_BRUTOPRIJS, BOI.BES_BESTELOPDR_ITEM_STATUS FROM bes_bestelopdr bo, prs_bedrijf b, bes_bestelling bes, bes_bestelopdr_item boi, bes_bestelling_item bi, 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; -- De noti-job gaat niet op prs_perslid, maar op een vast mailadres van MDUX. -- Hiervoor 'xemail' kolom gebruiken, die gaat voor (=ipv) de receiver indien we als flags in de noti-job de waarde 1 meegeven. Zie mdux08.sql CREATE OR REPLACE VIEW mdux_v_noti_cntreminder (code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile) AS SELECT '', '', c.prs_perslid_key_beh, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || 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, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL, 'facilitair@medux.nl', NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_verwijder IS NULL AND ins_discipline_key <> 301 --MDUX#73225 Rappels sturen naar vastgoed@medux.nl voor contracten mbt huur panden AND cnt_contract_status = 0 /* actief */ AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)) UNION ALL SELECT '', '', NULL, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || 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, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL, 'vastgoed@medux.nl', NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_verwijder IS NULL AND ins_discipline_key = 301 --MDUX#73225 Rappels sturen naar vastgoed@medux.nl voor contracten mbt huur panden AND cnt_contract_status = 0 /* actief */ AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)); CREATE OR REPLACE VIEW mdux_huurcontracten_tmp (cnt_contract_key, prs_bedrijf_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, cnt_contract_plaats_gewicht) AS SELECT c1.cnt_contract_key, b.prs_bedrijf_key, c1.prs_perslid_key_eig, c1.cnt_contract_nummer_intern, c1.cnt_contract_versie, c1.cnt_contract_omschrijving, c1.cnt_contract_looptijd_van, c1.cnt_contract_looptijd_tot, 12 * ( TO_CHAR (c1.cnt_contract_looptijd_tot, 'YYYY') - TO_CHAR (c1.cnt_contract_looptijd_van, 'YYYY') - 1) + (12 - TO_CHAR (c1.cnt_contract_looptijd_van, 'MM')) + (TO_CHAR (c1.cnt_contract_looptijd_tot, 'MM')) cnt_looptijd_mnd, ROUND(100 * LEAST ( 1, (SYSDATE - LEAST (c1.cnt_contract_looptijd_van, SYSDATE)) / (GREATEST ( c1.cnt_contract_looptijd_tot - c1.cnt_contract_looptijd_van, 1 )) )) perc_looptijd, ROUND( (c1.cnt_contract_looptijd_tot - GREATEST (c1.cnt_contract_looptijd_van, LEAST (SYSDATE, c1.cnt_contract_looptijd_tot))) / 7) aantal_weken_tegaan, cnt.cnt_getrappeldatum (c1.cnt_contract_key) cnt_contract_rappeldatum, cnt.cnt_getopzegdatum (c1.cnt_contract_key) cnt_contract_opzegdatum, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c1.cnt_contract_opzegtermijn) cnt_contract_opzegtermijn, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c1.cnt_contract_rappeltermijn) cnt_contract_rappeltermijn, c1.cnt_contract_status, DECODE ( cnt.cnt_contract_status ( c1.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c1.cnt_contract_key), cnt.cnt_getopzegdatum (c1.cnt_contract_key), c1.cnt_contract_looptijd_tot ), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past')) contract_fase_actief, DECODE ( c1.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval') ) cnt_contract_status_txt, c1.cnt_contract_kosten, c1.cnt_contract_termijnkosten, c1.cnt_contract_termijnkosten * DECODE(ct.cnt_termijn_type, 'M', 1 / ct.cnt_termijn_aantal, 'Y', 1 / (ct.cnt_termijn_aantal * 12), 'D', 365 / (ct.cnt_termijn_aantal * 12), 1) cnt_contract_termijnkosten_mnd, ct.cnt_termijn_type, ct.cnt_termijn_aantal, ct.cnt_termijn_omschrijving, COALESCE (c1.ins_discipline_key, -1) contract_disc_key, c1.prs_afdeling_key_eig, (SELECT prs_afdeling_naam FROM prs_v_afdeling WHERE prs_afdeling_key = c1.prs_afdeling_key_eig) cnt_eigenaar_afdeling_naam, b.prs_bedrijf_naam, p1.prs_perslid_naam_full, p1.prs_perslid_naam_friendly, cp1.cnt_alg_plaats_key, cp1.cnt_alg_plaats_code, cp1.cnt_contract_plaats_gewicht FROM cnt_v_aanwezigcontract c1, cnt_termijn ct, prs_v_perslid_fullnames_all p1, prs_bedrijf b, cnt_contract_plaats cp1 WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key AND c1.ins_discipline_key = 301 AND c1.cnt_contract_termijntermijn = ct.cnt_termijn_key(+) AND c1.cnt_contract_key = cp1.cnt_contract_key (+) AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+) AND COALESCE (c1.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_v_aanwezigcontract c2 WHERE c2.cnt_contract_nummer_intern = c1.cnt_contract_nummer_intern); CREATE OR REPLACE VIEW mdux_huurcontracten_gebouw (cnt_contract_key, prs_bedrijf_key, alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving) AS SELECT cnt_contract_key, prs_bedrijf_key, alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving FROM mdux_huurcontracten_tmp, alg_gebouw g WHERE g.alg_gebouw_key(+) = cnt_alg_plaats_key AND COALESCE(cnt_alg_plaats_code,'G') = 'G'; CREATE OR REPLACE VIEW mdux_huurcontracten_locatie (cnt_contract_key, prs_bedrijf_key, alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving) AS SELECT cnt_contract_key, prs_bedrijf_key, alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving FROM mdux_huurcontracten_tmp, alg_gebouw g, alg_locatie l WHERE l.alg_locatie_key (+) = cnt_alg_plaats_key AND COALESCE(cnt_alg_plaats_code,'L') = 'L' AND g.alg_gebouw_key(+) = l.alg_locatie_key; --MDUX#52712 Rapportage huurcontracten, uitbreiding ruimten CREATE OR REPLACE FORCE VIEW MDUX_HUURCONTRACTEN_RUIMTEN ( CNT_CONTRACT_KEY, PRS_BEDRIJF_KEY, ALG_GEBOUW_KEY, PRS_PERSLID_KEY_EIG, CNT_CONTRACT_NUMMER_INTERN, CNT_CONTRACT_VERSIE, CNT_CONTRACT_OMSCHRIJVING, CNT_CONTRACT_LOOPTIJD_VAN, CNT_CONTRACT_LOOPTIJD_TOT, CNT_LOOPTIJD_MND, PERC_LOOPTIJD, AANTAL_WEKEN_TEGAAN, CNT_CONTRACT_RAPPELDATUM, CNT_CONTRACT_OPZEGDATUM, CNT_CONTRACT_OPZEGTERMIJN, CNT_CONTRACT_RAPPELTERMIJN, CNT_CONTRACT_STATUS, CONTRACT_FASE_ACTIEF, CNT_CONTRACT_STATUS_TXT, CNT_CONTRACT_KOSTEN, CNT_CONTRACT_TERMIJNKOSTEN, CNT_CONTRACT_TERMIJNKOSTEN_MND, CNT_CONTRACT_TERMIJN_TYPE, CNT_CONTRACT_TERMIJN_AANTAL, CNT_CONTRACT_TERMIJN_OMSCHR, CONTRACT_DISC_KEY, PRS_AFDELING_KEY_EIG, CNT_EIGENAAR_AFDELING_NAAM, PRS_BEDRIJF_NAAM, PRS_PERSLID_NAAM_FULL, PRS_PERSLID_NAAM_FRIENDLY, CNT_ALG_PLAATS_KEY, CNT_ALG_PLAATS_CODE, ALG_GEBOUW_CODE, ALG_GEBOUW_NAAM, ALG_GEBOUW_OMSCHRIJVING ) AS SELECT cnt_contract_key, prs_bedrijf_key, g.alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving FROM mdux_huurcontracten_tmp, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE r.alg_ruimte_key(+) = cnt_alg_plaats_key AND v.alg_gebouw_key = g.alg_gebouw_key AND r.alg_verdieping_key = v.alg_verdieping_key AND COALESCE (cnt_alg_plaats_code, 'R') = 'R'; CREATE OR REPLACE VIEW mdux_huurcontracten_gebouwen AS SELECT * FROM mdux_huurcontracten_gebouw UNION SELECT * FROM mdux_huurcontracten_locatie UNION SELECT * FROM mdux_huurcontracten_ruimten; CREATE OR REPLACE VIEW mdux_rap_huurcontracten ( cnt_contract_key, prs_bedrijf_key, alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving, alg_verdieping_key, alg_verdieping_omschrijving, alg_verdieping_volgnr, alg_verdieping_code, alg_ruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving, alg_ruimte_bruto_vloeropp, alg_ruimte_opp_alt1, alg_ruimte_opp_alt2, alg_ruimte_omtrek, alg_ruimte_inhoud, alg_ruimte_opmerking, prs_ruimteafdeling_bezetting, prs_afdeling_key, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_key, prs_kostenplaats_nr, prs_kostenplaats_omschrijving, mdux_kostenplaats, mdux_kostendrager, cnt_interne_doorbelasting, cnt_interne_doorbelasting_mnd, cnt_contractsoort, indexatie_volgens, waarborgsom, verlengen, bankgarantie, servicekosten_permaand, energiekosten_permaand, status_huurcontract, huurkosten_permaand, maand_van_index, crediteur, crediteurnummer, doorgev_indexatie ) AS SELECT cnt_contract_key, hc.prs_bedrijf_key, hc.alg_gebouw_key, prs_perslid_key_eig, cnt_contract_nummer_intern, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_looptijd_mnd, perc_looptijd, aantal_weken_tegaan, cnt_contract_rappeldatum, cnt_contract_opzegdatum, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn, cnt_contract_status, contract_fase_actief, cnt_contract_status_txt, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_contract_termijnkosten_mnd, cnt_contract_termijn_type, cnt_contract_termijn_aantal, cnt_contract_termijn_omschr, contract_disc_key, prs_afdeling_key_eig, cnt_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_perslid_naam_full, prs_perslid_naam_friendly, cnt_alg_plaats_key, cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_omschrijving, v.alg_verdieping_key, v.alg_verdieping_omschrijving, v.alg_verdieping_volgnr, v.alg_verdieping_code, r.alg_ruimte_key, r.alg_ruimte_nr, r.alg_ruimte_omschrijving, r.alg_ruimte_bruto_vloeropp, r.alg_ruimte_opp_alt1, r.alg_ruimte_opp_alt2, r.alg_ruimte_omtrek, r.alg_ruimte_inhoud, r.alg_ruimte_opmerking, ra.prs_ruimteafdeling_bezetting, a.prs_afdeling_key, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, k.prs_kostenplaats_key, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, SUBSTR (k.prs_kostenplaats_nr, 1, INSTR (k.prs_kostenplaats_nr, '.') - 1) mdux_kostenplaats, SUBSTR (k.prs_kostenplaats_nr, 1 + INSTR (k.prs_kostenplaats_nr, '.')) mdux_kostendrager, ROUND ( cnt_contract_termijnkosten * ( (SELECT SUM (prs_ruimteafdeling_bezetting) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_afdeling_key = a.prs_afdeling_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) / (SELECT COALESCE (SUM (prs_ruimteafdeling_bezetting), 100) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_ruimteafdeling_verwijder IS NULL)), 2) mdux_interne_doorbelasting, ROUND ( cnt_contract_termijnkosten_mnd * ( (SELECT SUM (prs_ruimteafdeling_bezetting) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_afdeling_key = a.prs_afdeling_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) / (SELECT COALESCE (SUM (prs_ruimteafdeling_bezetting), 100) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_ruimteafdeling_verwijder IS NULL)), 2) mdux_interne_doorbelasting_mnd, (SELECT ins_discipline_omschrijving FROM cnt_discipline cd, cnt_contract c WHERE c.ins_discipline_key = cd.ins_discipline_key AND c.cnt_contract_key = hc.cnt_contract_key) contractsoort, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 8 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) indexatie_volgens, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 13 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) waarborgsom, (SELECT ud.fac_usrdata_omschr FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck, fac_usrdata ud WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 12 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key AND FAC.safe_to_number(cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) verlengen, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 1 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) bankgarantie, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 11 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) servicekosten_permaand, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 281 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) energiekosten_permaand, (SELECT fac_usrdata_omschr FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck, fac_usrdata fu WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 61 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key AND fu.fac_usrtab_key = 181 AND TO_CHAR (fac_usrdata_key) = cnt_kenmerkcontract_waarde) status_huurcontract, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 6 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) huurkosten_permaand, (SELECT fac_usrdata_omschr FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck, fac_usrdata fu WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 9 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key AND fu.fac_usrtab_key = 43 AND TO_CHAR (fac_usrdata_key) = cnt_kenmerkcontract_waarde) maand_van_index, (SELECT prs_bedrijf_naam FROM prs_bedrijf b, cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE TO_CHAR (prs_bedrijf_key) = cnt_kenmerkcontract_waarde AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_kenmerk_verwijder IS NULL AND ck.cnt_srtkenmerk_key = 5 AND ckc.cnt_contract_key = hc.cnt_contract_key) crediteur, (SELECT prs_leverancier_nr FROM prs_bedrijf b, cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE TO_CHAR (prs_bedrijf_key) = cnt_kenmerkcontract_waarde AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_kenmerk_verwijder IS NULL AND ck.cnt_srtkenmerk_key = 5 AND ckc.cnt_contract_key = hc.cnt_contract_key) crediteurnummer, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 161 AND ck.cnt_kenmerk_verwijder IS NULL AND ckc.cnt_contract_key = hc.cnt_contract_key) doorgev_indexatie FROM mdux_huurcontracten_gebouwen hc, alg_verdieping v, alg_ruimte r, prs_ruimteafdeling ra, prs_afdeling a, prs_kostenplaats k WHERE hc.alg_gebouw_key = v.alg_gebouw_key(+) AND v.alg_verdieping_verwijder IS NULL AND v.alg_verdieping_key = r.alg_verdieping_key(+) AND r.alg_ruimte_verwijder IS NULL AND r.alg_ruimte_key = ra.alg_ruimte_key(+) AND ra.prs_ruimteafdeling_verwijder IS NULL AND ra.prs_afdeling_key = a.prs_afdeling_key(+) AND a.prs_afdeling_verwijder IS NULL AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+); CREATE OR REPLACE VIEW mdux_v_ins_qrc ( fclt_3d_discipline_key, fclt_3d_locatie_key, fclt_f_locatie, fclt_f_gebouw, plaats, soortruimte, afdeling_key, afdeling, afdeling_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_key, ins_srtdeel_key, fclt_f_objectsoort, ins_alg_ruimte_type, alg_district_key, ins_deel_upper, alg_ruimte_key, fclt_f_fac_bookmark_naam, hide_f_bookmark_id ) AS SELECT i.ins_discipline_key, l.alg_locatie_key, l.alg_locatie_omschrijving, o.alg_gebouw_omschrijving, o.alg_plaatsaanduiding plaats, (SELECT r.alg_ruimte_omschrijving FROM alg_ruimte r WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte, NULL, NULL, NULL, s.ins_srtdeel_code, s.ins_srtdeel_omschrijving, i.ins_deel_omschrijving, i.ins_deel_key, s.ins_srtdeel_key, s.ins_srtdeel_upper, i.ins_alg_ruimte_type, l.alg_district_key, ins_deel_upper, i.ins_alg_ruimte_key, b.fac_bookmark_naam, b.fac_bookmark_id FROM ins_deel i, ins_v_alg_overzicht o, ins_srtdeel s, alg_locatie l, alg_district di, fac_bookmark b WHERE b.fac_bookmark_naam LIKE '%QRC%' AND ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL 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 l.alg_district_key = di.alg_district_key AND s.ins_srtdeel_key = i.ins_srtdeel_key AND i.ins_deel_actief = 1 UNION ALL SELECT i.ins_discipline_key, NULL, NULL, NULL, NULL, NULL, a.prs_afdeling_key, a.prs_afdeling_upper, a.prs_afdeling_omschrijving, s.ins_srtdeel_code, s.ins_srtdeel_omschrijving, i.ins_deel_omschrijving, i.ins_deel_key, s.ins_srtdeel_key, s.ins_srtdeel_upper, i.ins_alg_ruimte_type, NULL, ins_deel_upper, i.ins_alg_ruimte_key, b.fac_bookmark_naam, b.fac_bookmark_id FROM ins_deel i, prs_afdeling a, ins_srtdeel s, fac_bookmark b WHERE b.fac_bookmark_naam LIKE '%QRC%' AND ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND i.ins_alg_ruimte_key = a.prs_afdeling_key AND s.ins_srtdeel_key = i.ins_srtdeel_key AND ins_alg_ruimte_type = 'A' AND i.ins_deel_actief = 1 ORDER BY ins_deel_omschrijving; CREATE OR REPLACE VIEW mdux_v_rap_keyvsfe ( soort_gebruiker, Naam, Loginnaam, laatste_login ) AS SELECT DECODE (key_user, 1, 'KEY', 'FE'), pf.prs_perslid_naam_full, oslogin, prs_perslid_login FROM (SELECT * FROM (SELECT p.prs_perslid_key prs_key, COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2) oslogin, 1 login, -- 1=user heeft login + groep + rechten DECODE ( SIGN(TRUNC(COALESCE ( p.prs_perslid_login + 92, SYSDATE - 1 )) - TRUNC (SYSDATE)), -1, 0, 1 ) -- 1=user heeft laatste 92 dagen ingelogd recent_login FROM prs_v_aanwezigperslid p WHERE EXISTS -- op basis van login + groep + rechten (SELECT 1 FROM fac_v_rap_groeprechten WHERE fclt_f_login = COALESCE ( p.prs_perslid_oslogin, p.prs_perslid_oslogin2 )) UNION ALL -- FSN#24029: Soms ook personen zonder login meetellen! SELECT p.prs_perslid_key, NULL oslogin, 1 login, -- 1=user telt mee, want allow_for_others! 0 recent_login -- geen login, dus nooit recent ingelogd FROM prs_v_aanwezigperslid p WHERE COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2) IS NULL AND (fac.getSetting ( 'mld_allow_for_others' ) = 1 OR EXISTS (SELECT 1 FROM bes_disc_params dp WHERE dp.bes_disc_params_for_others = 1)) UNION ALL -- FSN#27315: En ook eventuele "sensorusers" meetellen! SELECT NULL prs_perslid_key, NULL oslogin, COUNT ( * ) login, -- elke sensoruser telt mee als FE! 1 recent_login -- recent actief dus tellen als recent FROM ins_v_aanwezigdeel d WHERE ins_deel_statedate > TRUNC (SYSDATE - 30)) x LEFT JOIN -- 1=user heeft rechten op key-codes=notFE-codes (SELECT DISTINCT fclt_f_login, 1 key_user FROM fac_v_rap_groeprechten gr, fac_functie f WHERE gr.fclt_f_funcode = f.fac_functie_code AND f.fac_functie_groep IN (1, 2)) a ON x.oslogin = a.fclt_f_login LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user (SELECT p.prs_perslid_key, 1 xd_user FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab WHERE p.prs_afdeling_key = ab.prs_afdeling_key AND p.prs_perslid_apikey IS NOT NULL AND ab.prs_bedrijf_key = fac.safe_to_number(fac.getSetting('xd_primary_bedrijfkey'))) b ON x.prs_key = b.prs_perslid_key) st, prs_perslid p, prs_v_perslid_fullnames pf WHERE login = 1 AND UPPER (oslogin) != '_FACILITOR' AND p.prs_perslid_key = st.prs_key AND pf.prs_perslid_key = p.prs_perslid_key; --MDUX#52557 - Rapportage Mutaties objectenbeheer (22-03-2018) CREATE OR REPLACE FORCE VIEW MDUX_V_INS_MUTATIES ( DISCIPLINE, GROEP, DEEL_KEY, DEEL_OMSCHRIJVING, DEEL_OPMERKING, SRTDEEL, SRTDEEL_OMSCHRIJVING, TRACKING_KEY, TRACKING_DATUM, TRACKING_MAAND, TRACKING_OMSCHRIJVING, NIEUW, WIJZIGING, INACTIEF, VERVALLEN, VERVALDATUM ) AS SELECT disc.ins_discipline_omschrijving AS Discipline, sg.ins_srtgroep_omschrijving AS Groep, d.ins_deel_key AS Deel_key, d.ins_deel_omschrijving AS Deel_omschrijving, d.ins_deel_opmerking AS Deel_opmerking, sd.ins_srtdeel_code AS Srtdeel, sd.ins_srtdeel_omschrijving Srtdeel_omschrijving, t.fac_tracking_key AS Tracking_key, t.fac_tracking_datum AS Tracking_datum, TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') AS Tracking_maand, CASE WHEN t.fac_tracking_oms IS NULL THEN CASE WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW' THEN 'Object geregistreerd' ELSE 'Object gewijzigd' END ELSE t.fac_tracking_oms END AS Tracking_omschrijving, CASE WHEN CASE WHEN t.fac_tracking_oms IS NULL THEN CASE WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW' THEN 'Object geregistreerd' ELSE 'Object gewijzigd' END ELSE t.fac_tracking_oms END = 'Object geregistreerd' THEN 1 ELSE 0 END AS Nieuw, CASE --Hiermee wordt geteld het aantal wijzigingen WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW' OR t.fac_tracking_oms LIKE '%%Actief: 1 --> 0%' OR t.fac_tracking_oms LIKE '%Vervaldatum: (leeg) -->%' THEN 0 ELSE CASE WHEN t.fac_tracking_oms LIKE '%Object gewijzigd%' AND (T.FAC_TRACKING_OMS LIKE '%Status: %' OR T.FAC_TRACKING_OMS LIKE '%Notitieveld: %' OR T.FAC_TRACKING_OMS LIKE '%Nadere gegevens van plaats/eigenaar: %') THEN 1 ELSE 0 END END AS Wijziging, CASE WHEN t.fac_tracking_oms LIKE '%Actief: 1 --> 0%' --Hiermee wordt geteld het aantal wijzigingen dat objecten inactief zijn gemaakt THEN 1 ELSE 0 END AS Inactief, CASE WHEN t.fac_tracking_oms LIKE '%Vervaldatum: (leeg) -->%' --Hiermee wordt geteld het aantal wijzigingen dat objecten vervallen zijn gemaakt THEN 1 ELSE 0 END AS Vervallen, d.ins_deel_vervaldatum AS Vervaldatum FROM ins_tab_discipline disc, ins_deel d, ins_srtdeel sd, ins_srtgroep sg, fac_tracking t, fac_srtnotificatie n WHERE t.fac_tracking_refkey = d.ins_deel_key AND n.fac_srtnotificatie_xmlnode = 'deel' --AND t.fac_tracking_oms IS NOT NULL AND t.fac_srtnotificatie_key = n.fac_srtnotificatie_key AND disc.ins_discipline_key = d.ins_discipline_key AND sd.ins_srtdeel_key = d.ins_srtdeel_key AND disc.ins_discipline_key = sg.ins_discipline_key AND sd.ins_srtdeel_verwijder IS NULL -- MDUX#53847 Objectsoorten die verwijderd zijn, niet meer tonen in de rapportage ORDER BY t.fac_tracking_datum DESC; --MDUX#52700 - Rapportage Aantallen meldingen Metrics, aangepast (22-03-2018) CREATE OR REPLACE FORCE VIEW MDUX_V_MELDINGEN ( MELDING_KEY, MELDINGNUMMER, MELDING_REGIO, MELDING_DISTRICT, MELDING_LOCATIECODE, MELDING_LOCATIE, MELDING_LOCATIEPLAATS, FCLT_3D_LOCATIE_KEY, MELDING_GEBOUWCODE, MELDING_GEBOUW, MELDING_VERDIEPING, MELDING_RUIMTENR, MELDING_RUIMTE, MELDING_ORDERNR, KOSTENSOORTGROEP, KOSTENSOORT, KOSTENPLAATS, KOSTENPLAATS_OMS, MELDER, MELDER_KEY, AFDELING, AFDELING_OMSCHRIJVING, FCLT_3D_AFDELING_KEY, BEDRIJF_KEY, INVOERDER, MELDBRON, SOORTMELDING, FCLT_3D_DISCIPLINE_KEY, PRODUCTGROEP, SUBPRODUCTGROEP, BEHANDELGROEP, BEHANDELAAR, BEHANDELAAR_KEY, SUBPRODUCTGROEPGROEP, MELDING_STATUS, SLA_NVT, SLA_WERKDGN, SLA_WERKUREN, SLA_RESPIJTDGN, SLA_RESPIJTUREN, SLA_ACCPTDGN, SLA_ACCPTUREN, PLAN_UITVOERTIJD_SLA, MELDING_DATUM, MELDING_EINDDATUM, MELDING_ACCEPTDATUM, MELDING_AFGEMELD, MELDING_ACCEPTED, DOORLOOPTIJD_WERKDGN, DOORLOOPTIJD_WERKUREN, ONDERWERP, VOMSCHRIJVING, MELDING_OPMERKING, PRIORITEIT, PRIORITEITTXT, RATING, RATING_OPMERKING, BOLLETJE, ACCEPT_SLA_DAGEN, ACCEPT_SLA_UREN, UITVOERING_SLA_DAGEN, UITVOERING_SLA_UREN, AFSPRAAK_SLA_DAGEN, AFSPRAAK_SLA_UREN, ACCEPT_SLA_OPTIJD, UITVOERING_SLA_OPTIJD, AFSPRAAK_SLA_OPTIJD, SELFSERVICE ) AS SELECT mld_melding_key, meldingnummer, alg_regio_omschrijving, alg_district_omschrijving, locatie, locatie_omschrijving, locatie_plaats, alg_locatie_key, gebouw, gebouw_naam, verdieping, ruimte, ruimte_omschrijving, melding_ordernr, kostensoortgroep, kostensoort, kostenplaats, kostenplaats_oms, melder, prs_perslid_key, afdeling, afdeling_omschrijving, afdeling_key, prs_bedrijf_key, invoerder, meldbron, soortmelding, ins_discipline_key, productgroep, subproductgroep, behandelgroep, behandelaar, behandelaar_key, subproductgroepgroep, status, sla_nvt, sla_werkdgn, sla_werkuren, sla_respijtdgn, sla_respijturen, sla_accptdgn, sla_accpturen, plan_uitvoertijd_sla, datum, einddatum, acceptdatum, afgemeld, accepted, DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL) doorlooptijd_werkdgn, DECODE (x.t_doorlooptijd.eenheid, 'U', x.t_doorlooptijd.tijdsduur, NULL) doorlooptijd_werkuren, onderwerp, omschrijving, opmerking, mld_melding_spoed prioriteit, DECODE (mld_melding_spoed, 3, lcl.l ('lcl_mld_urg_normaal'), 1, lcl.l ('lcl_mld_urg_kritiek'), 2, lcl.l ('lcl_mld_urg_hoog'), 4, lcl.l ('lcl_mld_urg_laag')), mld_melding_satisfaction, mld_melding_satisfaction_op, mld_melding_flag, DECODE (x.t_doorlooptijd.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), NULL) accept_sla_dagen, DECODE (x.t_doorlooptijd.eenheid, 'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24, NULL) accept_sla_uren, DECODE ( x.t_doorlooptijd.eenheid, 'D', mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), NULL) uitvoering_sla_dagen, DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijturen, 0), NULL) uitvoering_sla_uren, DECODE ( x.t_doorlooptijd.eenheid, 'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), NULL) afspraak_sla_dagen, DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0), NULL) afspraak_sla_uren, CASE WHEN acceptdatum IS NULL OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd. DECODE (x.t_doorlooptijd.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24, 0) >= 0 THEN lcl.l ('lcl_yes') ELSE lcl.l ('lcl_no') END accept_sla_optijd, CASE WHEN DECODE ( x.t_doorlooptijd.eenheid, 'D', mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijturen, 0), 0) >= 0 THEN lcl.l ('lcl_yes') ELSE lcl.l ('lcl_no') END uitvoering_sla_optijd, CASE WHEN DECODE ( x.t_doorlooptijd.eenheid, 'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0), 0) >= 0 THEN lcl.l ('lcl_yes') ELSE lcl.l ('lcl_no') END afspraak_sla_optijd, DECODE (invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice FROM (SELECT m.mld_melding_key, m.prs_perslid_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer, alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_code locatie, alg_locatie_omschrijving locatie_omschrijving, alg_locatie_plaats locatie_plaats, l.alg_locatie_key, og.alg_gebouw_code gebouw, og.alg_gebouw_naam gebouw_naam, og.alg_verdieping_code verdieping, og.alg_ruimte_nr ruimte, og.alg_ruimte_omschrijving ruimte_omschrijving, m.mld_melding_ordernr melding_ordernr, (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key) FROM mld_stdmelding sm, mld_discipline disc WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_key = s.mld_stdmelding_key)) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key) FROM mld_stdmelding sm, mld_discipline disc WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_key = s.mld_stdmelding_key)) kostensoort, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats, (SELECT k.prs_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats_oms, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.prs_perslid_key) melder, (SELECT prs_afdeling_naam FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling, (SELECT prs_afdeling_omschrijving FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling_omschrijving, (SELECT prs_afdeling_key FROM prs_perslid pp WHERE pp.prs_perslid_key = m.prs_perslid_key) afdeling_key, (SELECT prs_bedrijf_key FROM prs_v_afdeling pva, prs_perslid pp WHERE pva.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) prs_bedrijf_key, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key)) invoerder, (SELECT mb.mld_meldbron_omschrijving FROM mld_meldbron mb WHERE mb.mld_meldbron_key = m.mld_meldbron_key) meldbron, m.mld_meldbron_key, sd.ins_srtdiscipline_key ins_srtdiscipline_key, sd.ins_srtdiscipline_omschrijving soortmelding, md.ins_discipline_key ins_discipline_key, CASE md.ins_discipline_key --MDUX#52700: Vakgroep "Aanvraag" en "Aanvraag Retail" samengevoegd, zelfde voor "Storing" en "Storing Retail" WHEN 424 THEN 'Aanvraag' WHEN 422 THEN 'Storing' ELSE md.ins_discipline_omschrijving END productgroep, s.mld_stdmelding_omschrijving subproductgroep, smg.mld_stdmeldinggroep_naam subproductgroepgroep, mbg.mld_behandelgroep_naam behandelgroep, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key) behandelaar, m.mld_melding_behandelaar_key behandelaar_key, (SELECT mld_statuses_omschrijving FROM mld_statuses sta WHERE sta.mld_statuses_key = m.mld_melding_status) status, CASE WHEN m.mld_melding_einddatum > COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE) THEN 1 ELSE 0 END plan_uitvoertijd_sla, CASE WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1 ELSE 0 END sla_nvt, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'D', m.mld_melding_t_uitvoertijd.tijdsduur, NULL) sla_werkdgn, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'U', m.mld_melding_t_uitvoertijd.tijdsduur, NULL) sla_werkuren, DECODE (m.mld_melding_t_respijt.eenheid, 'D', m.mld_melding_t_respijt.tijdsduur, NULL) sla_respijtdgn, DECODE (m.mld_melding_t_respijt.eenheid, 'U', m.mld_melding_t_respijt.tijdsduur, NULL) sla_respijturen, DECODE (m.mld_melding_t_accepttijd.eenheid, 'D', m.mld_melding_t_accepttijd.tijdsduur, NULL) sla_accptdgn, DECODE (m.mld_melding_t_accepttijd.eenheid, 'U', m.mld_melding_t_accepttijd.tijdsduur, NULL) sla_accpturen, m.mld_melding_datum datum, CASE WHEN s.mld_stdmelding_planbaar = 2 THEN TO_DATE (NULL) ELSE m.mld_melding_einddatum END einddatum, mld.getacceptdatum (m.mld_melding_datum, m.mld_stdmelding_key, og.alg_onroerendgoed_keys) acceptdatum, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)) afgemeld, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4), mld.getmeldingstatusdate (m.mld_melding_key, 1)) accepted, mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd, m.mld_melding_onderwerp onderwerp, m.mld_melding_omschrijving omschrijving, m.mld_melding_opmerking opmerking, m.mld_melding_spoed, m.mld_melding_satisfaction, m.mld_melding_satisfaction_op, m.mld_melding_flag FROM mld_melding m, mld_stdmelding s, alg_locatie l, alg_district d, alg_regio r, alg_v_allonrgoed_gegevens og, mld_discipline md, mld_disc_params mdp, mld_behandelgroep mbg, ins_srtdiscipline sd, mld_stdmeldinggroep smg WHERE s.mld_stdmelding_key = m.mld_stdmelding_key AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND md.ins_discipline_key = mdp.mld_ins_discipline_key AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+) AND mdp.mld_behandelgroep_key = mbg.mld_behandelgroep_key(+) AND l.alg_district_key = d.alg_district_key(+) AND d.alg_regio_key = r.alg_regio_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND m.fac_activiteit_key IS NULL AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x; --MDUX#52640 - Notificatie Keuring elektrisch handgereedschap, leverancier CREATE OR REPLACE FORCE VIEW MDUX_V_NOTI_KEURING_EXTERN ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT n.fac_srtnotificatie_code, NULL, b.prs_perslid_key, ('(Her)keuring' || ' - ' || a.prs_afdeling_omschrijving), d.ins_deel_key, NULL, l.prs_bedrijf_email, NULL FROM ins_deel d, ins_srtcontrole sc, prs_afdeling a, prs_perslid b, prs_bedrijf l, ins_kenmerkdeel kmd, ins_kenmerk km, ins_deelsrtcontrole dsc, fac_srtnotificatie n WHERE sc.ins_srtcontrole_key = 270 --Jaarlijkse keuring Objectsoort Elektrisch handgereedschap AND d.ins_srtdeel_key = 401 AND d.ins_deel_key = kmd.ins_deel_key AND n.fac_srtnotificatie_code = 'CUST02' AND a.prs_afdeling_key = d.ins_alg_ruimte_key AND l.prs_bedrijf_key = fac.safe_to_number(kmd.ins_kenmerkdeel_waarde) AND km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 202 --Kenmerk Leverancier AND d.ins_deel_key = dsc.ins_deel_key(+) AND d.prs_perslid_key_beh = b.prs_perslid_key(+) AND d.ins_deel_verwijder IS NULL AND COALESCE ( TRUNC (dsc.ins_deelsrtcontrole_plandatum), TRUNC(COALESCE ( (SELECT MAX(dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND sc.ins_srtcontrole_key = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key, 1))))) = TRUNC (SYSDATE + 14); --MDUX#52640 - Notificatie Keuring elektrisch handgereedschap, interne organisatie CREATE OR REPLACE FORCE VIEW MDUX_V_NOTI_KEURING_INTERN ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY ) AS SELECT n.fac_srtnotificatie_code, NULL, b.prs_perslid_key, ('(Her)keuring' || ' - ' || a.prs_afdeling_omschrijving), d.ins_deel_key, NULL FROM ins_deel d, ins_srtcontrole sc, prs_afdeling a, prs_perslid b, ins_deelsrtcontrole dsc, fac_srtnotificatie n WHERE sc.ins_srtcontrole_key = 270 --Jaarlijkse keuring Objectsoort Elektrisch handgereedschap AND d.ins_srtdeel_key = 401 AND n.fac_srtnotificatie_code = 'CUST03' AND a.prs_afdeling_key = d.ins_alg_ruimte_key AND d.prs_perslid_key_beh = b.prs_perslid_key AND d.ins_deel_key = dsc.ins_deel_key(+) AND d.ins_deel_verwijder IS NULL AND COALESCE ( TRUNC (dsc.ins_deelsrtcontrole_plandatum), TRUNC(COALESCE ( (SELECT MAX(dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND sc.ins_srtcontrole_key = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key, 1))))) = TRUNC (SYSDATE + 14); CREATE OR REPLACE VIEW mdux_v_rap_taken ( objbehkey, objbehoms, lockey, locoms, levkey, levoms, sdkey, sdoms, sckey, scoms, dkey, doms, cpland, extra_key, xemail ) AS SELECT (SELECT (kmd.ins_kenmerkdeel_waarde) FROM ins_kenmerk km, ins_kenmerkdeel kmd WHERE km.ins_srtkenmerk_key = 305 -- Kenmerksoort "Vestigingsmanager" AND km.ins_kenmerk_key = kmd.ins_kenmerk_key AND d.ins_deel_key = kmd.ins_deel_key) AS objbehkey, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = (SELECT MAX(fac.safe_to_number ( kmd.ins_kenmerkdeel_waarde)) FROM ins_kenmerk km, ins_kenmerkdeel kmd WHERE km.ins_srtkenmerk_key = 305 -- Kenmerksoort "Vestigingsmanager" AND km.ins_kenmerk_key = kmd.ins_kenmerk_key AND d.ins_deel_key = kmd.ins_deel_key)) AS objbehoms, (CASE WHEN d.ins_alg_ruimte_type = 'R' THEN l.alg_locatie_key WHEN d.ins_alg_ruimte_type = 'A' THEN a.prs_afdeling_key ELSE NULL END) locatie, (CASE WHEN d.ins_alg_ruimte_type = 'R' THEN l.alg_locatie_omschrijving WHEN d.ins_alg_ruimte_type = 'A' THEN a.prs_afdeling_omschrijving ELSE NULL END) locatie_omschrijving, (SELECT prs_bedrijf_key FROM prs_bedrijf lev WHERE lev.prs_bedrijf_key = (SELECT MAX(fac.safe_to_number ( levk.ins_kenmerk_default)) FROM ins_kenmerk levk WHERE levk.ins_kenmerk_verwijder IS NULL AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object" AND levk.ins_srtinstallatie_key = sc.ins_srtcontrole_key)) AS levkey, (SELECT prs_bedrijf_naam FROM prs_bedrijf lev WHERE lev.prs_bedrijf_key = (SELECT MAX(fac.safe_to_number ( levk.ins_kenmerk_default)) FROM ins_kenmerk levk WHERE levk.ins_kenmerk_verwijder IS NULL AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object" AND levk.ins_srtinstallatie_key = sc.ins_srtcontrole_key)) AS levoms, sd.ins_srtdeel_key, sd.ins_srtdeel_omschrijving, sc.ins_srtcontrole_key, sc.ins_srtcontrole_omschrijving, d.ins_deel_key, d.ins_deel_omschrijving, COALESCE ( TRUNC (dsc.ins_deelsrtcontrole_plandatum), TRUNC(COALESCE ( (SELECT MAX (dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND sc.ins_srtcontrole_key = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key, 1))))) AS cpland, (CASE WHEN d.ins_alg_ruimte_type = 'R' THEN l.alg_locatie_key WHEN d.ins_alg_ruimte_type = 'A' THEN a.prs_afdeling_key ELSE NULL END) AS extra_key, (SELECT prs_bedrijf_email || ';' || (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = 114914) -- Persoon '_Controle notificaties taken', hier gaan de notificatie emails (extern) dan ook naar toe. FROM (SELECT prs_bedrijf_email FROM prs_bedrijf lev WHERE lev.prs_bedrijf_key = (SELECT MAX(fac.safe_to_number ( levk.ins_kenmerk_default)) FROM ins_kenmerk levk WHERE levk.ins_kenmerk_verwijder IS NULL AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object" AND levk.ins_srtinstallatie_key = sc.ins_srtcontrole_key)) WHERE (SELECT prs_bedrijf_email FROM prs_bedrijf lev WHERE lev.prs_bedrijf_key = (SELECT MAX(fac.safe_to_number ( levk.ins_kenmerk_default)) FROM ins_kenmerk levk WHERE levk.ins_kenmerk_verwijder IS NULL AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object" AND levk.ins_srtinstallatie_key = sc.ins_srtcontrole_key)) IS NOT NULL) AS xemail FROM ins_deel d, ins_srtdeel sd, ins_srtcontrole sc, alg_locatie l, ins_deelsrtcontrole dsc, ins_kenmerk km, ins_kenmerkdeel kmd, ins_srtkenmerk sk, prs_afdeling a WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND d.ins_deel_key = dsc.ins_deel_key(+) AND d.ins_deel_verwijder IS NULL AND dsc.ins_deel_key = d.ins_deel_key AND l.alg_locatie_key(+) = d.ins_alg_locatie_key AND a.prs_afdeling_key(+) = d.ins_alg_ruimte_key AND dsc.ins_deelsrtcontrole_datum IS NULL AND kmd.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND kmd.ins_kenmerkdeel_waarde = '67' -- Waarde "ja" bij kenmerk 'Automatische notificatie' AND sk.ins_srtkenmerk_key = 281 -- Automatische notificatie AND km.ins_kenmerk_verwijder IS NULL AND km.ins_srtinstallatie_key = sd.ins_srtdeel_key; CREATE OR REPLACE VIEW mdux_v_noti_taken_intern ( code, sender, receiver, text, key, xkey ) AS SELECT 'CUST04', NULL, rap.objbehkey, ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE fac_usrrap_view_name = 'MDUX_V_RAP_TAKEN') rapportnr, rap.extra_key FROM mdux_v_rap_taken rap WHERE COALESCE ( TRUNC (rap.cpland), TRUNC(COALESCE ( (SELECT MAX (dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = rap.dkey AND rap.sckey = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC (fac.nextcyclusdatedeel (rap.dkey, rap.sckey, 1))))) = TRUNC (SYSDATE + 28) AND rap.objbehkey IS NOT NULL GROUP BY ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), rap.objbehkey, rap.extra_key UNION ALL -- Om ook de persoon '_Controle notificaties taken' een notificatie email te sturen SELECT 'CUST04', NULL, (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = 114914), -- Persoon '_Controle notificaties taken', hier gaan de notificatie emails (intern) dan ook naar toe. ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE fac_usrrap_view_name = 'MDUX_V_RAP_TAKEN') rapportnr, rap.extra_key FROM mdux_v_rap_taken rap WHERE COALESCE ( TRUNC (rap.cpland), TRUNC(COALESCE ( (SELECT MAX (dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = rap.dkey AND rap.sckey = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC (fac.nextcyclusdatedeel (rap.dkey, rap.sckey, 1))))) = TRUNC (SYSDATE + 28) AND rap.objbehkey IS NOT NULL GROUP BY ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), rap.objbehkey, rap.extra_key; CREATE OR REPLACE VIEW mdux_v_noti_taken_extern ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT 'CUST05', NULL, rap.objbehkey, ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE fac_usrrap_view_name = 'MDUX_V_RAP_TAKEN') rapportnr, rap.extra_key, rap.xemail, NULL FROM mdux_v_rap_taken rap WHERE COALESCE ( TRUNC (rap.cpland), TRUNC(COALESCE ( (SELECT MAX (dsc.ins_deelsrtcontrole_plandatum) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = rap.dkey AND rap.sckey = dsc.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status IN (5, 6)), TRUNC (fac.nextcyclusdatedeel (rap.dkey, rap.sckey, 1))))) = TRUNC (SYSDATE + 28) AND rap.objbehkey IS NOT NULL GROUP BY ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms), rap.objbehkey, rap.extra_key, rap.xemail; --MDUX#56138 - Rapportage van simkaarten en elektronica met kenmerken CREATE OR REPLACE VIEW mdux_v_rap_objecten ( deel_key, identificatie, beschrijving, organisatie, persoon, objectgroep, objectsoort, merk, type, serienummer, datum_in_gebruik, status, mobiel_nummer, abonnementstype, accountcode, eigen_risico, eigen_bijdrage, activatiedatum, geactiveerd, ten_behoeve_van, notities ) AS SELECT ins.ins_deel_key, ins.ins_deel_omschrijving AS identificatie, ins.ins_deel_opmerking AS beschrijving, ins.prs_afdeling_omschrijving, ins.prs_perslid_volnaam, ins.ins_srtgroep_omschrijving AS objectgroep, ins.ins_srtdeel_omschrijving AS objectsoort, (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 23), --Merk (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 28), --Type (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 26), --Serienummer (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 22), --Datum in gebruik (SELECT DISTINCT kmd.fac_usrdata_omschr FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk, fac_v_aanwezigusrdata kmd WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND kd.ins_kenmerkdeel_waarde = kmd.fac_usrdata_key AND sk.ins_srtkenmerk_key = 27), --Status (lijstje) (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 54), --Mobiel nummer (SELECT DISTINCT kmd.fac_usrdata_omschr FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk, fac_v_aanwezigusrdata kmd WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND kd.ins_kenmerkdeel_waarde = kmd.fac_usrdata_key AND sk.ins_srtkenmerk_key = 82), --Abonnementstype (lijstje) (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 21), --Accountcode (SELECT DISTINCT kmd.fac_usrdata_omschr FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk, fac_v_aanwezigusrdata kmd WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND kd.ins_kenmerkdeel_waarde = kmd.fac_usrdata_key AND sk.ins_srtkenmerk_key = 241), --Eigen risico (lijstje) (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 261), --Eigen bijdrage (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 52), --Activatiedatum (SELECT DISTINCT kmd.fac_usrdata_omschr FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk, fac_v_aanwezigusrdata kmd WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND kd.ins_kenmerkdeel_waarde = kmd.fac_usrdata_key AND sk.ins_srtkenmerk_key = 53), --Geactiveerd (lijstje) (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 55), --Ten behoeve van (SELECT DISTINCT kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_v_srtdeel_kenmerk sk WHERE kd.ins_deel_key = ins.ins_deel_key AND sk.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = 24) --Notities FROM ins_v_deel_gegevens ins WHERE ins_srtgroep_key IN (1, 2); CREATE OR REPLACE FORCE VIEW mdux_v_rap_noti_opdr ( opdracht_nummer, opdracht_type, opdracht_district, opdracht_locatie, vakgroeptype, vakgroep, melding, omschrijving, opdracht_datum, melding_status, opdracht_status, opdracht_opmerking, extra_key, aanvrager, opdracht_behandelaar, type_uitvoerende, opdracht_uitvoerende_key, opdracht_uitvoerende, uitvoerende_email, notificeren, status ) AS SELECT o.opdracht_nummer, o.opdracht_type, o.opdracht_district, o.opdracht_locatie, soortmelding AS vakgroeptype, productgroep AS vakgroep, subproductgroep AS melding, vomschrijving AS omschrijving, TRUNC (opdracht_datum) AS opdracht_datum, o.melding_status, o.opdracht_status, o.opdracht_opmerking, (SELECT mo.mld_uitvoerende_keys FROM mld_opdr mo, mld_v_uitvoerende u WHERE o.opdracht_key = mo.mld_opdr_key AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key) AS extra_key, o.melder AS aanvrager, o.opdracht_behandelaar, (SELECT u.TYPE FROM mld_opdr mo, mld_v_uitvoerende u WHERE o.opdracht_key = mo.mld_opdr_key AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key) AS type_uitvoerende, (SELECT u.mld_uitvoerende_key FROM mld_opdr mo, mld_v_uitvoerende u WHERE o.opdracht_key = mo.mld_opdr_key AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key), o.opdracht_uitvoerende, CASE -- Emailadres opzoeken, bij leveranciers eerst uit relatie-tabel, vervolgens uit de technische adressen (eerst opdracht, dan bestelling, dan contract) WHEN (SELECT u.TYPE FROM mld_opdr mo, mld_v_uitvoerende u WHERE o.opdracht_key = mo.mld_opdr_key AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key) = 'B' THEN COALESCE ( (SELECT b.prs_bedrijf_email FROM mld_opdr mo, mld_v_uitvoerende u, prs_bedrijf b WHERE o.opdracht_key = mo.mld_opdr_key AND b.prs_bedrijf_key = mo.mld_uitvoerende_keys AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key), (SELECT ba.prs_bedrijfadres_url FROM mld_opdr mo, mld_v_uitvoerende u, prs_bedrijf b, prs_bedrijfadres ba WHERE o.opdracht_key = mo.mld_opdr_key AND b.prs_bedrijf_key = mo.mld_uitvoerende_keys AND ba.prs_bedrijf_key = b.prs_bedrijf_key AND (ba.mld_typeopdr_key = mo.mld_typeopdr_key or ba.mld_typeopdr_key is NULL) --Mogelijk meerdere Opdrachttypen bij bedrijfadres AND ba.prs_bedrijfadres_type = 'O' AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key), (SELECT ba.prs_bedrijfadres_url FROM mld_opdr mo, mld_v_uitvoerende u, prs_bedrijf b, prs_bedrijfadres ba WHERE o.opdracht_key = mo.mld_opdr_key AND b.prs_bedrijf_key = mo.mld_uitvoerende_keys AND ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'B' AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key), (SELECT ba.prs_bedrijfadres_url FROM mld_opdr mo, mld_v_uitvoerende u, prs_bedrijf b, prs_bedrijfadres ba WHERE o.opdracht_key = mo.mld_opdr_key AND b.prs_bedrijf_key = mo.mld_uitvoerende_keys AND ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'C' AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key)) ELSE (SELECT p.prs_perslid_email FROM mld_opdr mo, mld_v_uitvoerende u, prs_perslid p WHERE o.opdracht_key = mo.mld_opdr_key AND p.prs_perslid_key = mo.mld_uitvoerende_keys AND mo.mld_uitvoerende_keys = u.mld_uitvoerende_key) END AS email, CASE WHEN (SELECT fac.safe_to_number (pkm.prs_kenmerklink_waarde) FROM prs_kenmerklink pkm, prs_bedrijf lev, mld_opdr opdr WHERE pkm.prs_kenmerk_key = 1120 -- Kenmerk 'Notificeren' bij bedrijven (in Accept is dit nu 1121) AND lev.prs_bedrijf_key = pkm.prs_link_key AND opdr.mld_opdr_key = o.opdracht_key AND opdr.mld_uitvoerende_keys = pkm.prs_link_key) = 67 THEN 'Ja' END AS notificeren, (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_opdr_key = o.opdracht_key AND mld_kenmerk_key = 541) AS status -- kenmerk status bij de opdrachten FROM mld_v_udr_meldingopdracht o WHERE o.opdracht_afgemeld IS NULL AND o.melding_afgemeld IS NULL AND o.opdracht_nummer IS NOT NULL; CREATE OR REPLACE VIEW mdux_v_noti_opdr ( code, sender, receiver, text, key, xkey, xemail, xmobile, xsender ) AS SELECT 'CUST06', NULL, NULL, 'Verzoek statusinformatie opdrachten', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'MDUX_V_RAP_NOTI_OPDR') rapportnr, rap.extra_key, rap.uitvoerende_email, NULL, 'facilitair@medux.nl' FROM mdux_v_rap_noti_opdr rap WHERE rap.notificeren = 'Ja' GROUP BY rap.extra_key, rap.uitvoerende_email; CREATE OR REPLACE VIEW mdux_v_rap_beh_leeg ( melding_key, melding_datum, aanvrager, locatie, vakgroep, melding, onderwerp, omschrijving ) AS SELECT m.mld_melding_key, m.mld_melding_datum, p.prs_perslid_naam_full, l.alg_locatie_omschrijving, d.ins_discipline_omschrijving, sm.mld_stdmelding_omschrijving, m.mld_melding_onderwerp, m.mld_melding_omschrijving FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d, prs_v_perslid_fullnames p, alg_locatie l WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND p.prs_perslid_key = m.prs_perslid_key AND l.alg_locatie_key = m.mld_alg_locatie_key AND mld_melding_status IN (0, 2, 3, 4, 7, 99) AND mld_melding_behandelaar_key IS NULL; CREATE OR REPLACE VIEW mdux_v_rap_accbgt ( f_hide_sort, catalogus, deel, kostenplaats, prs_perslid_key ) AS SELECT 999, 'Vrij beschikbaar budget', 100 - SUM (bes_perc), prs_kostenplaats_omschrijving, prs_perslid_key_voor FROM ( SELECT d.ins_discipline_omschrijving, SUM( bi.bes_bestelling_item_brutoprijs / kp.prs_kostenplaats_limiet * 100) AS bes_perc, kp.prs_kostenplaats_omschrijving, b.prs_perslid_key_voor FROM bes_bestelling b, bes_bestelling_item bi, prs_v_aanwezigkostenplaats kp, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE bi.bes_bestelling_key = b.bes_bestelling_key AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND kp.prs_kostenplaats_limiet <> 0 AND TO_CHAR (b.bes_bestelling_datum, 'yyyymm') = TO_CHAR (SYSDATE, 'yyyymm') GROUP BY d.ins_discipline_omschrijving, kp.prs_kostenplaats_omschrijving, b.prs_perslid_key_voor) GROUP BY prs_kostenplaats_omschrijving, prs_perslid_key_voor UNION ALL SELECT d.ins_discipline_key, d.ins_discipline_omschrijving, SUM( bi.bes_bestelling_item_brutoprijs / kp.prs_kostenplaats_limiet * 100) AS bes_perc, kp.prs_kostenplaats_omschrijving, b.prs_perslid_key_voor FROM bes_bestelling b, bes_bestelling_item bi, prs_v_aanwezigkostenplaats kp, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE bi.bes_bestelling_key = b.bes_bestelling_key AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND kp.prs_kostenplaats_limiet <> 0 AND TO_CHAR (b.bes_bestelling_datum, 'yyyymm') = TO_CHAR (SYSDATE, 'yyyymm') GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving, kp.prs_kostenplaats_omschrijving, b.prs_perslid_key_voor; CREATE OR REPLACE VIEW mdux_v_rap_accbgt_all ( f_hide_sort, catalogus, deel ) AS SELECT ins_discipline_key, ins_discipline_omschrijving, (x.brutoprijs / x.limiet * 100) AS bes_perc FROM ( SELECT ins_discipline_key, ins_discipline_omschrijving, SUM (brutoprijs) AS brutoprijs, (SELECT SUM (prs_kostenplaats_limiet) FROM prs_kostenplaats WHERE prs_kostenplaats_verwijder IS NULL) AS limiet FROM ( SELECT d.ins_discipline_key, d.ins_discipline_omschrijving, SUM(bi.bes_bestelling_item_brutoprijs) AS brutoprijs, kp.prs_kostenplaats_omschrijving FROM bes_bestelling b, bes_bestelling_item bi, prs_v_aanwezigkostenplaats kp, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE bi.bes_bestelling_key = b.bes_bestelling_key AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND kp.prs_kostenplaats_limiet <> 0 AND TO_CHAR (b.bes_bestelling_datum, 'yyyymm') = TO_CHAR (SYSDATE, 'yyyymm') GROUP BY d.ins_discipline_omschrijving, d.ins_discipline_key, kp.prs_kostenplaats_limiet, kp.prs_kostenplaats_omschrijving) GROUP BY ins_discipline_omschrijving, ins_discipline_key) x UNION ALL SELECT 999, 'Vrij beschikbaar budget', 100 - SUM (bes_perc) FROM (SELECT ins_discipline_key, ins_discipline_omschrijving, (x.brutoprijs / x.limiet * 100) AS bes_perc FROM (SELECT ins_discipline_key, ins_discipline_omschrijving, SUM (brutoprijs) AS brutoprijs, (SELECT SUM (prs_kostenplaats_limiet) FROM prs_kostenplaats WHERE prs_kostenplaats_verwijder IS NULL) AS limiet FROM ( SELECT d.ins_discipline_key, d.ins_discipline_omschrijving, SUM(bi.bes_bestelling_item_brutoprijs) AS brutoprijs, kp.prs_kostenplaats_omschrijving FROM bes_bestelling b, bes_bestelling_item bi, prs_v_aanwezigkostenplaats kp, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE bi.bes_bestelling_key = b.bes_bestelling_key AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND kp.prs_kostenplaats_limiet <> 0 AND TO_CHAR (b.bes_bestelling_datum, 'yyyymm') = TO_CHAR (SYSDATE, 'yyyymm') GROUP BY d.ins_discipline_omschrijving, d.ins_discipline_key, kp.prs_kostenplaats_limiet, kp.prs_kostenplaats_omschrijving) GROUP BY ins_discipline_omschrijving, ins_discipline_key) x); CREATE OR REPLACE VIEW mdux_v_rap_bedrijfshulp ( deel_key, srtdeel, identificatie, status, perslid_key, perslid, afdeling_key, afdeling, datum_uit_dienst, extra_key, vm_email, merk, TYPE, serienummer, mobielnummer ) AS SELECT ins_deel_key, ins_srtdeel_omschrijving, object, status_object, NULL AS prs_perslid_key, NULL AS prs_perslid_naam_full, ins_alg_ruimte_key AS prs_afdeling_key, (SELECT prs_afdeling_omschrijving FROM prs_afdeling WHERE prs_afdeling_key = ins_alg_ruimte_key) AS prs_afdeling_naam, (SELECT prs_perslid_einddatum FROM prs_perslid WHERE prs_perslid_key = ins_alg_ruimte_key) AS prs_perslid_einddatum, DECODE ( (SELECT DISTINCT MAX (prs_perslid_email) FROM prs_perslid vm WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL), NULL, 9541, -- prs_perslid_key van persoon SSC Facilitaire Zaken, met emailadres facilitair@medux.nl. (SELECT DISTINCT MAX (prs_perslid_key) FROM prs_perslid vm WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL)) AS vm, DECODE ( (SELECT DISTINCT MAX (prs_perslid_email) FROM prs_perslid vm WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL), NULL, 'facilitair@medux.nl', -- prs_perslid_key van persoon SSC Facilitaire Zaken, met emailadres facilitair@medux.nl. (SELECT DISTINCT MAX (prs_perslid_email) FROM prs_perslid vm WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL)) AS vm_email, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 23) AS merk, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 28) AS TYPE, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 26) AS serienummer, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 54) AS mobielnummer FROM (SELECT d.ins_deel_key, sd.ins_srtdeel_omschrijving, d.ins_deel_omschrijving AS object, ud.fac_usrdata_omschr AS status_object, d.ins_alg_ruimte_type, d.ins_alg_ruimte_key FROM ins_deel d, ins_srtdeel sd, ins_v_srtdeel_kenmerk_keys dkm, ins_kenmerk km, ins_v_aanwezigkenmerkdeel akmd, fac_usrdata ud WHERE dkm.ins_srtdeel_key = d.ins_srtdeel_key AND sd.ins_srtdeel_key = d.ins_srtdeel_key AND dkm.ins_kenmerk_key = km.ins_kenmerk_key AND akmd.ins_deel_key = d.ins_deel_key AND akmd.ins_kenmerk_key = km.ins_kenmerk_key AND ud.fac_usrdata_key = fac.safe_to_number (akmd.ins_kenmerkdeel_waarde) AND km.ins_srtkenmerk_key = 27 -- Kenmerksoort 'Status' AND fac.safe_to_number (akmd.ins_kenmerkdeel_waarde) IN (721, 722, 723) -- Statussen 'Komt retour', 'Vraag staat uit bij vestiging' en 'Vacature' Kenmerksoort 'Status' AND d.ins_alg_ruimte_type = 'A' AND d.ins_deel_verwijder IS NULL) x UNION ALL SELECT ins_deel_key, ins_srtdeel_omschrijving, object, status_object, ins_alg_ruimte_key AS prs_perslid_key, (SELECT prs_perslid_naam || DECODE (prs_perslid_voorletters, NULL, '', ', ' || prs_perslid_voorletters) || DECODE (prs_perslid_tussenvoegsel, NULL, '', ' ' || prs_perslid_tussenvoegsel) || DECODE (prs_perslid_voornaam, NULL, '', ' (' || prs_perslid_voornaam || ')') FROM prs_perslid WHERE prs_perslid_key = ins_alg_ruimte_key) AS prs_perslid_naam_full, NULL AS prs_afdeling_key, NULL AS prs_afdeling_naam, (SELECT prs_perslid_einddatum FROM prs_perslid WHERE prs_perslid_key = ins_alg_ruimte_key) AS prs_perslid_einddatum, DECODE ( (SELECT DISTINCT MAX (vm.prs_perslid_email) FROM prs_perslid vm, prs_perslid prs_obj WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = prs_obj.prs_afdeling_key AND prs_obj.prs_perslid_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL), NULL, 9541, -- prs_perslid_key van persoon SSC Facilitaire Zaken, met emailadres facilitair@medux.nl. (SELECT DISTINCT MAX (vm.prs_perslid_key) FROM prs_perslid vm, prs_perslid prs_obj WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = prs_obj.prs_afdeling_key AND prs_obj.prs_perslid_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL)) AS vm, DECODE ( (SELECT DISTINCT MAX (vm.prs_perslid_email) FROM prs_perslid vm, prs_perslid prs_obj WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = prs_obj.prs_afdeling_key AND prs_obj.prs_perslid_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL), NULL, 'facilitair@medux.nl', -- prs_perslid_key van persoon SSC Facilitaire Zaken, met emailadres facilitair@medux.nl. (SELECT DISTINCT MAX (vm.prs_perslid_key) FROM prs_perslid vm, prs_perslid prs_obj WHERE vm.prs_srtperslid_key IN (10205, 24866) --Srtperslid_key van 'Vestigingsmanager' en 'Sr vestigingsmanager' AND vm.prs_afdeling_key = prs_obj.prs_afdeling_key AND prs_obj.prs_perslid_key = x.ins_alg_ruimte_key AND vm.prs_perslid_verwijder IS NULL)) AS vm_email, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 23) AS merk, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 28) AS TYPE, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 26) AS serienummer, (SELECT ins_kenmerkdeel_waarde FROM ins_v_srtdeel_kenmerkdeel kmd, ins_kenmerk km2 WHERE km2.ins_kenmerk_key = kmd.ins_kenmerk_key AND kmd.ins_deel_key = x.ins_deel_key AND km2.ins_srtkenmerk_key = 54) AS mobielnummer FROM (SELECT d.ins_deel_key, sd.ins_srtdeel_omschrijving, d.ins_deel_omschrijving AS object, ud.fac_usrdata_omschr AS status_object, d.ins_alg_ruimte_type, d.ins_alg_ruimte_key FROM ins_deel d, ins_srtdeel sd, ins_v_srtdeel_kenmerk_keys dkm, ins_kenmerk km, ins_v_aanwezigkenmerkdeel akmd, fac_usrdata ud WHERE dkm.ins_srtdeel_key = d.ins_srtdeel_key AND sd.ins_srtdeel_key = d.ins_srtdeel_key AND dkm.ins_kenmerk_key = km.ins_kenmerk_key AND akmd.ins_deel_key = d.ins_deel_key AND akmd.ins_kenmerk_key = km.ins_kenmerk_key AND ud.fac_usrdata_key = fac.safe_to_number (akmd.ins_kenmerkdeel_waarde) AND km.ins_srtkenmerk_key = 27 -- Kenmerksoort 'Status' AND (fac.safe_to_number (akmd.ins_kenmerkdeel_waarde) IN (721, 722, 723) -- Statussen 'Komt retour', 'Vraag staat uit bij vestiging' en 'Vacature' Kenmerksoort 'Status' OR (fac.safe_to_number (akmd.ins_kenmerkdeel_waarde) IN --Door deze OR worden ook de objeten getoond die status Gekoppeld hebben, terwijl de persoon inmiddels niet meer in dienst is (prs_perslid_verwijder not null) (221) -- Status 'Gekoppeld' AND (SELECT prs_perslid_verwijder FROM prs_perslid WHERE prs_perslid_key = d.ins_alg_ruimte_key) IS NOT NULL)) AND d.ins_alg_ruimte_type = 'P' AND d.ins_deel_verwijder IS NULL) x; CREATE OR REPLACE VIEW mdux_v_noti_bedrijfshulp ( code, sender, receiver, text, key, xkey, xemail, xmobile, xsender ) AS SELECT 'CUST07', NULL, extra_key, 'Verzoek informatie bedrijfshulpmiddelen', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'MDUX_V_RAP_BEDRIJFSHULP') rapportnr, extra_key, vm_email, NULL, 'facilitair@medux.nl' FROM ( SELECT rap.extra_key, rap.vm_email FROM mdux_v_rap_bedrijfshulp rap GROUP BY rap.extra_key, rap.vm_email); CREATE OR REPLACE VIEW mdux_v_rap_finver ( factuur_key, extern_factuurnr, invoicedate, creditor_id, creditor_name, referencetype, accountholder_id, accountholder_name, name, order_id, order_name, contract_id, contract_name, purchaseorder_id, purchaseorder_name, total, vat, finstatus_id, finstatus_name, fintrackingstatus_datum, fintrackingstatus_code, accountingperiod, debiteur_nr, costtype_id, costtype_name, contact, validater, remark ) AS SELECT f.fin_factuur_key, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur WHERE fin_factuur_key = f.fin_factuur_key AND fin_kenmerk_key = 2) AS extern_factuurnr, f.fin_factuur_datum, (SELECT b.prs_bedrijf_key FROM prs_bedrijf b WHERE prs_bedrijf_key = COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key)) AS creditor_id, (SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE prs_bedrijf_key = COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key)) AS creditor_name, (CASE WHEN f.mld_opdr_key IS NOT NULL THEN 'O' WHEN f.cnt_contract_key IS NOT NULL THEN 'C' WHEN f.bes_bestelopdr_key IS NOT NULL THEN 'B' END) AS referencetype, (SELECT p.prs_perslid_key FROM prs_v_perslid_fullnames_all p WHERE prs_perslid_key = fin.getfiatteur (f.fin_factuur_key)) AS accountholder_id, (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE prs_perslid_key = fin.getfiatteur (f.fin_factuur_key)) AS accountholder_name, f.fin_factuur_nr AS name, f.mld_opdr_key AS order_id, (CASE WHEN f.mld_opdr_key IS NOT NULL THEN (SELECT opdracht_nummer FROM mld_v_udr_opdracht WHERE opdracht_key = f.mld_opdr_key) END) AS order_name, f.cnt_contract_key AS contract_id, (CASE WHEN f.cnt_contract_key IS NOT NULL THEN (SELECT cnt_contract_nummer FROM cnt_contract WHERE cnt_contract_key = f.cnt_contract_key) END) AS contract_name, f.bes_bestelopdr_key AS purchaseorder_id, (CASE WHEN f.bes_bestelopdr_key IS NOT NULL THEN (SELECT 'FCC' || bes_bestelopdr_id FROM bes_bestelopdr WHERE bes_bestelopdr_key = f.bes_bestelopdr_key) END) AS purchaseorder_name, f.fin_factuur_totaal AS total, f.fin_factuur_totaal_btw AS vat, f.fin_factuur_statuses_key AS finstatus_id, (SELECT fin_factuur_statuses_omschr FROM fin_factuur_statuses WHERE f.fin_factuur_statuses_key = fin_factuur_statuses_key) AS finstatus_name, ft.fac_tracking_datum AS fintrackingstatus_datum, sn.fac_srtnotificatie_code AS fintrackingstatus_code, f.fin_factuur_boekmaand AS accountingperiod, f.fin_factuur_debiteur_nr AS debiteur_nr, f.prs_kostensoort_key AS costtype_id, (SELECT prs_kostensoort_oms FROM prs_kostensoort WHERE prs_kostensoort_key = f.prs_kostensoort_key) AS costtype_name, NULL AS contact, NULL AS validater, f.fin_factuur_opmerking AS remark FROM fin_factuur f, fin_factuurregel fr, fac_tracking ft, fac_srtnotificatie sn, mld_opdr o, cnt_contract c, bes_bestelopdr bo WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_key = ft.fac_tracking_refkey AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'factuur' AND f.mld_opdr_key = o.mld_opdr_key(+) AND f.cnt_contract_key = c.cnt_contract_key(+) AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+); CREATE OR REPLACE VIEW mdux_v_rap_kpl_conv ( soort, key, nr, naam, aanmaak, verwijder, datum_wijziging, wijziging ) AS SELECT 'Kostenplaats', k.prs_kostenplaats_key, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, k.prs_kostenplaats_aanmaak, k.prs_kostenplaats_verwijder, t.fac_tracking_datum, t.fac_tracking_oms FROM fac_tracking t, prs_kostenplaats k WHERE t.fac_srtnotificatie_key = 161 --PRSKPU wijziging kostenplaats AND t.fac_tracking_refkey = k.prs_kostenplaats_key AND t.fac_tracking_oms LIKE '%prs_kostenplaats_nr%' UNION ALL SELECT 'Afdeling', a.prs_afdeling_key, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, a.prs_afdeling_aanmaak, a.prs_afdeling_verwijder, t.fac_tracking_datum, t.fac_tracking_oms FROM fac_tracking t, prs_afdeling a WHERE t.fac_srtnotificatie_key = 161 --PRSKPU wijziging kostenplaats AND t.fac_tracking_refkey = a.prs_afdeling_key AND t.fac_tracking_oms LIKE '%prs_afdeling_naam%'; CREATE OR REPLACE PROCEDURE mdux_huurautos_afmelden AS -- In cursor chuurautos staan alle bestellingen en bestelopdracht-items die op status geleverd kunnen worden gezet. CURSOR chuurautos IS SELECT bes.bes_bestelling_key, bi.bes_bestelling_item_key, bo.bes_bestelopdr_key, boi.bes_bestelopdr_item_key, bes_bestelling_status FROM bes_bestelopdr bo, bes_bestelling bes, bes_bestelopdr_item boi, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, mld_adres ma WHERE bo.bes_bestelopdr_status IN (4, 5) 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 bes.mld_adres_key_lev = ma.mld_adres_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = 221; -- Huurauto's v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_error NUMBER (1); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN v_errormsg := 'Geen huurautos gevonden om af te melden'; --De bestelopdracht-items geleverd melden FOR rec IN chuurautos LOOP BEGIN UPDATE bes_bestelopdr_item SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal, bes_bestelopdr_item_ontvangen = SYSDATE, bes_bestelopdr_item_status = 6 WHERE (bes_bestelopdr_item_status IN (4, 5) OR bes_bestelopdr_item_status IS NULL) AND bes_bestelopdr_item_key = rec.bes_bestelopdr_item_key; --De bestelaanvraag-items geleverd melden UPDATE bes_bestelling_item SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal, bes_bestelling_item_status = 6 WHERE bes_bestelling_item_key = rec.bes_bestelling_item_key; --De bestelopdracht geleverd melden UPDATE bes_bestelopdr SET bes_bestelopdr_status = 6 WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key; fac.trackaction ('BES2AF', rec.bes_bestelopdr_key, NULL, NULL, 'Bestelopdracht automatisch geleverd gemeld'); --De bestelaanvraag geleverd melden UPDATE bes_bestelling SET bes_bestelling_status = 6 WHERE bes_bestelling_status IN (4, 5) AND bes_bestelling_key = rec.bes_bestelling_key; fac.trackaction ('BESOTV', rec.bes_bestelling_key, NULL, NULL, 'Bestelaanvraag automatisch geleverd gemeld'); END; END LOOP; 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 || ')'; END; / CREATE OR REPLACE PACKAGE MDUX AS PROCEDURE inactiveren_personen; END; / CREATE OR REPLACE PACKAGE BODY MDUX AS -- Dagelijks inactiveren personen (deze worden vanuit MISA via REST API aangemaakt/bijgehouden, einddatum is waar we naar kijken) -- Een einddatum bepaalt vanuit MISA (AFAS) dat de persoon verwijderd mag worden. PROCEDURE inactiveren_personen AS c_applname VARCHAR2 (50) := 'INACTIVEREN_PERSONEN'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10) := 0; -- Alle personen inactiveren die een einddatum < sysdate -14 CURSOR c_inactief IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_email, p.prs_perslid_einddatum FROM prs_perslid p, prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_nr IS NOT NULL AND p.prs_perslid_einddatum IS NOT NULL AND TRUNC (p.prs_perslid_einddatum) <= TRUNC (SYSDATE) - 14 AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_inactief IS NULL AND p.prs_perslid_apikey IS NULL ORDER BY 2; BEGIN -- LET OP: DAILY-taak draait dagelijks na middernacht (begin van dag) FOR rec IN c_inactief LOOP v_aanduiding := '[' || TO_CHAR (rec.prs_perslid_key) || '|' || rec.prs_perslid_email || '] '; v_count_tot := v_count_tot + 1; UPDATE prs_perslid SET prs_perslid_inactief = SYSDATE WHERE prs_perslid_key = rec.prs_perslid_key; fac.writelog ( c_applname, 'S', '#Accounts geinactiveerd: ' || TO_CHAR (v_count_tot), ''); END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Daily achtergrond taak afgebroken!'); END; END; / CREATE OR REPLACE PROCEDURE MDUX_DAILY AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN -- Dagelijks inactiveren personen (deze worden vanuit MISA via REST API aangemaakt/bijgehouden obv einddatum) -- Een enddate bepaalt vanuit MISA (AFAS) dat de persoon verwijderd mag worden. mdux.inactiveren_personen (); END; / CREATE OR REPLACE VIEW mdux_v_rap_contr_list ( cnt_contract_key, contractnummer, versie, beheerder, omschrijving, bedrijf, opzegdatum, mailadres, discipline_key, contractsoort, extra_key ) AS SELECT cnt_contract_key, contractnummer, versie, beheerder, omschrijving, bedrijf, opzegdatum, mailadres, discipline_key, contractsoort, extra_key FROM (SELECT c.cnt_contract_key, c.cnt_contract_nummer_intern AS contractnummer, cnt_contract_versie AS versie, c.prs_perslid_key_beh AS beheerder, c.cnt_contract_omschrijving AS omschrijving, b.prs_bedrijf_naam AS bedrijf, cnt.cnt_getopzegdatum (c.cnt_contract_key) opzegdatum, 'facilitair@medux.nl' AS mailadres, c.ins_discipline_key AS discipline_key, d.ins_discipline_omschrijving AS contractsoort, 1 AS extra_key FROM cnt_v_aanwezigcontract c, prs_bedrijf b, ins_tab_discipline d WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND c.ins_discipline_key <> 301 --MDUX#73225 Rappels sturen naar vastgoed@medux.nl voor contracten mbt huur panden AND cnt_contract_verwijder IS NULL AND cnt_contract_status = 0 --actieve contracten AND (TRUNC (cnt.cnt_getopzegdatum (c.cnt_contract_key)) BETWEEN TRUNC ( ADD_MONTHS ( SYSDATE, +1), 'MM') AND TRUNC ( ADD_MONTHS ( SYSDATE, +4), 'MM')) UNION ALL SELECT c.cnt_contract_key, c.cnt_contract_nummer_intern AS contractnummer, cnt_contract_versie AS versie, c.prs_perslid_key_beh AS beheerder, c.cnt_contract_omschrijving AS omschrijving, b.prs_bedrijf_naam AS bedrijf, cnt.cnt_getopzegdatum (c.cnt_contract_key) opzegdatum, 'vastgoed@medux.nl' AS mailadres, c.ins_discipline_key AS discipline_key, d.ins_discipline_omschrijving AS contractsoort, 2 AS extra_key FROM cnt_v_aanwezigcontract c, prs_bedrijf b, ins_tab_discipline d WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND c.ins_discipline_key = 301 --MDUX#73225 Rappels sturen naar vastgoed@medux.nl voor contracten mbt huur panden AND cnt_contract_verwijder IS NULL AND cnt_contract_status = 0 --actieve contracten AND (TRUNC (cnt.cnt_getopzegdatum (c.cnt_contract_key)) BETWEEN TRUNC ( ADD_MONTHS ( SYSDATE, +1), 'MM') AND TRUNC ( ADD_MONTHS ( SYSDATE, +4), 'MM'))) ORDER BY mailadres, opzegdatum; CREATE OR REPLACE VIEW mdux_v_noti_contr_list ( code, sender, receiver, text, key, xkey, xemail, xmobile, xsender ) AS SELECT 'CUST08', NULL, NULL, 'Aflopende overeenkomsten', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'MDUX_V_RAP_CONTR_LIST') rapportnr, rap.extra_key, 'facilitair@medux.nl', NULL, NULL FROM mdux_v_rap_contr_list rap WHERE rap.extra_key = 1 AND (TO_CHAR (SYSDATE, 'DD') = '01' OR TO_CHAR (SYSDATE, 'DD') = '15') --Enkel op 1e en 15e dag van de maand GROUP BY rap.extra_key UNION ALL SELECT 'CUST08', NULL, NULL, 'Aflopende huurovereenkomsten', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'MDUX_V_RAP_CONTR_LIST') rapportnr, rap.extra_key, 'vastgoed@medux.nl', NULL, NULL FROM mdux_v_rap_contr_list rap WHERE rap.extra_key = 2 AND (TO_CHAR (SYSDATE, 'DD') = '01' OR TO_CHAR (SYSDATE, 'DD') = '15') --Enkel op 1e en 15e dag van de maand GROUP BY rap.extra_key; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile