diff --git a/SUTF/sutf - bu tbv rob.sql b/SUTF/sutf - bu tbv rob.sql new file mode 100644 index 000000000..d0d86c84f --- /dev/null +++ b/SUTF/sutf - bu tbv rob.sql @@ -0,0 +1,1776 @@ +-- Script containing customer specific configuration sql statements for Sutfene +-- $Revision$ +-- $Id$ + + +DEFINE thisfile = 'SUTF.SQL' +DEFINE dbuser = '^SUTF' +DEFINE custid = 'SUTF' + + +SET ECHO ON +SET DEFINE ON +COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; +COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; +WHENEVER SQLERROR CONTINUE; +SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; +SPOOL &fcltlogfile +WHENEVER SQLERROR EXIT; +SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; +WHENEVER SQLERROR CONTINUE; +--------------------------------------- +PROMPT &fcltcusttxt +--------------------------------------- +SET DEFINE OFF + +------ payload begin ------ + +CREATE OR REPLACE VIEW sutf_v_import_log +AS + SELECT imp_log_status fclt_f_status, + imp_log_omschrijving omschrijving, + imp_log_hint opmerking + FROM imp_log + WHERE imp_log_applicatie = 'PRS'; + + +CREATE OR REPLACE PROCEDURE sutf_import_prs (p_import_key IN NUMBER) +AS + v_seq_of_columns VARCHAR(255); +BEGIN + + prs.import_perslid ( + p_import_key, + '1;2;0;0;0;0;3;4;5;7;' + || '6;0;0;0;0;8;0;9;0;11;' + || '10;12;0;0;0;0;13;0;0;0;' + || '0;0;0;0;0;0;0;0;0;0;' + || '0;0;0;0;0;0', + 'Locatiecode;Gebouwcode;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Telefoonnummer;Email;Functie;Personeelsnummer;Loginnaam;Password'); +END sutf_import_prs; +/ + +CREATE OR REPLACE PROCEDURE sutf_update_prs (p_import_key IN NUMBER) +IS + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_errormsg VARCHAR2 (400); + v_errorhint VARCHAR2 (400); + + c_max_delta_percentage NUMBER (10) := 20; + v_count_prs_actual NUMBER (10); + v_count_prs_import NUMBER (10); -- Matching actual persons! +BEGIN + SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) + INTO v_count_prs_actual + FROM prs_perslid + WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL; + + SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) + INTO v_count_prs_import + FROM prs_perslid p, fac_imp_perslid ip + WHERE p.prs_perslid_nr IS NOT NULL + AND p.prs_perslid_verwijder IS NULL + AND p.prs_perslid_nr = ip.prs_perslid_nr; + + IF ((TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >= + (100 - c_max_delta_percentage))) + THEN + -- Geldig importbestand wat betreft aantal personen + v_errorhint := 'Toevoegen personen'; + prs.update_perslid (p_import_key, 'NR', NULL); + ELSE + fac.imp_writelog ( + p_import_key, + 'E', + 'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!', + '- max. verschilpercentage = [' + || TO_CHAR (c_max_delta_percentage) + || '%]
' + || '- #personen importbestand = [' + || TO_CHAR (v_count_prs_import) + || ']
' + || '- #personen Facilitor = [' + || TO_CHAR (v_count_prs_actual) + || ']'); + COMMIT; + END IF; +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 sutf_update_prs; +/ + +CREATE OR REPLACE VIEW SUTF_V_PERSAFD_FULLNAMES +( + PRS_PERSLID_KEY, + PRS_PERSLID_NAAM_FULL +) +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 || ')') + || ' [' + || a.prs_afdeling_omschrijving + || ']' + prs_perslid_naam_full + FROM prs_v_aanwezigperslid p, prs_afdeling a + WHERE a.prs_afdeling_key = p.prs_afdeling_key; + +-- SUTF#22335 view tbv selector bij personen. Bevat de afdelingstelefoon uit objecten. +CREATE OR REPLACE VIEW sutf_v_afdelingtelefoon +( +ins_deel_key, +afdelingtelefoon +) +AS +SELECT obj.ins_deel_key, ins_kenmerkdeel_waarde + FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k + WHERE ins_deel_verwijder IS NULL + AND obj.ins_srtdeel_key = srt.ins_srtdeel_key + AND srt.ins_srtgroep_key = 21 + AND ins_alg_ruimte_type = 'A' + and k.ins_deel_key = obj.ins_deel_key + and ins_kenmerk_key = 81; + + + +-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten. +CREATE OR REPLACE PROCEDURE sutf_export_afdelingstelefoon ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2 +) +AS + v_prs_kenmerklink_key NUMBER (10); + + -- In cursor c_afdtel_bij_persoon alle telefoon-objecten (telefoonnummers) van de afdelingen + -- aan de medewerkers van de afdeling gekoppeld... + -- Dus kenmerk van object van afdeling aan persoon van afdeling koppelen + CURSOR c_afdtel_bij_persoon + IS + SELECT prs_perslid_key, ins_deel_key + FROM prs_perslid p, + prs_kenmerklink kl, + (SELECT obj.ins_deel_key, ins_alg_ruimte_key + FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k + WHERE ins_deel_verwijder IS NULL + AND obj.ins_srtdeel_key = srt.ins_srtdeel_key + AND k.ins_deel_key = obj.ins_deel_key + AND srt.ins_srtgroep_key = 21 + AND ins_alg_ruimte_type = 'A' + AND ins_kenmerk_key = 81) kenmerk + WHERE prs_perslid_verwijder IS NULL + AND kenmerk.ins_alg_ruimte_key = p.prs_afdeling_key + AND prs_link_key(+) = prs_perslid_key + ORDER BY prs_perslid_key,ins_deel_key; + + +BEGIN + + FOR rec IN c_afdtel_bij_persoon + LOOP + BEGIN + + -- prs_kenmerk-key = 1000: afdelingstelefoonnummer bij persoon (refkenmerk naar view sutf_v_afdelingtelefoon) + SELECT prs_kenmerklink_key + INTO v_prs_kenmerklink_key + FROM prs_kenmerklink kl + WHERE kl.prs_link_key = rec.prs_perslid_key + AND kl.prs_kenmerklink_niveau = 'P' + AND kl.prs_kenmerk_key = 1000 + AND kl.prs_kenmerklink_verwijder IS NULL; + + -- Bij de persoon is al een afdelingstelefoonnummer geregisteerd, nu nog updaten (doen we onvoorwaardelijk), want persoon kan: + -- van afdeling zijn verhuisd, of afdeling kan ander telefoonobject hebben gekregen, ... + UPDATE prs_kenmerklink + SET prs_kenmerklink_waarde = rec.ins_deel_key + WHERE prs_kenmerklink_key = v_prs_kenmerklink_key; + + COMMIT; + + EXCEPTION + WHEN OTHERS + THEN + -- Record afdelingstelefoon-kenmerk bij persoon bestaat nog niet, dus toevoegen (insert) + -- prs_kenmerk-key = 1000: afdelingstelefoonnummer bij persoon + INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerk_key, prs_kenmerklink_waarde, prs_kenmerklink_niveau) + VALUES(rec.prs_perslid_key, 1000, rec.ins_deel_key, 'P'); + COMMIT; + END; + END LOOP; + + -- Hieronder alle personen die een telefoon-objecten (telefoonnummers) van de afdelingen + -- heeft gekoppeld, maar waarvan de afdeling geen telefoonobject (meer) heeft + -- Dus de andere kant op, want die moeten verwijderd worden. + DELETE FROM prs_kenmerklink + WHERE prs_kenmerklink_key IN + (SELECT KL.PRS_KENMERKLINK_KEY + FROM prs_kenmerklink kl, prs_perslid p + WHERE kl.prs_kenmerklink_niveau = 'P' + AND kl.prs_kenmerk_key = 1000 + AND kl.prs_kenmerklink_verwijder IS NULL + AND KL.PRS_LINK_KEY = p.prs_perslid_key + AND NOT EXISTS (SELECT obj.ins_deel_key, ins_alg_ruimte_key + FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k + WHERE ins_deel_verwijder IS NULL + AND obj.ins_srtdeel_key = srt.ins_srtdeel_key + AND k.ins_deel_key = obj.ins_deel_key + AND srt.ins_srtgroep_key = 21 + AND ins_alg_ruimte_type = 'A' + AND ins_kenmerk_key = 81 + AND ins_alg_ruimte_key = p.prs_afdeling_key )) ; + +END; +/ + + +------ +------ FACTUURIMPORT / KOPPELING XTRACTOR +------ + +CREATE OR REPLACE PROCEDURE sutf_import_factuur (p_import_key IN NUMBER) +AS + v_seq_of_columns VARCHAR(50); +BEGIN + +--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) +--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' + v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;9;10;11;12;0;0;0;0'; + fac_import_factuur_body(p_import_key, v_seq_of_columns); +END; +/ + +CREATE OR REPLACE PROCEDURE sutf_post_processing_factuur (p_import_key IN NUMBER) +AS + -- Key van het kenmerk 'betaalreferentie' bij de factuur + c_kenmerk_key NUMBER(10) := 21; + + CURSOR cfactuur_kenmerk + IS + SELECT DISTINCT fin_factuur_key, kenmerk1, factuurnr, fac_imp_file_index + FROM fac_imp_factuur + WHERE fin_factuur_key IS NOT NULL + AND kenmerk1 IS NOT NULL; +BEGIN + + -- De betaalreferentie wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken + + FOR rc IN cfactuur_kenmerk + LOOP + BEGIN + INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) + VALUES (rc.fin_factuur_key, c_kenmerk_key, rc.kenmerk1); + EXCEPTION + WHEN OTHERS + THEN + fac.imp_writelog (p_import_key, + 'W', + 'Van factuur met key ' || rc.fin_factuur_key || ' is de betaalreferentie niet bewaard (regel ' || rc.fac_imp_file_index || ')', + 'Factuurnr:' || rc.factuurnr || ' / Betalingskenmerk: ' || rc.kenmerk1 + ); + END; + END LOOP; +END; +/ + +CREATE OR REPLACE PROCEDURE sutf_update_factuur (p_import_key IN NUMBER) +AS +BEGIN + -- Standaard FCLT verwerk import facturen + fac_update_factuur (p_import_key); + -- CUST: post processing voor verwerking van kenmerk 'Betalingskenmerk' + sutf_post_processing_factuur (p_import_key); +END; +/ + + + + +------ +------ FACTUURIMPORT / E-INVOICING (Pilot met OD: SUTF#26879) +------ + +CREATE OR REPLACE PROCEDURE sutf_import_e_invoice (p_import_key IN NUMBER) +AS + v_seq_of_columns VARCHAR(50); +BEGIN + +--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) +--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' + v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;9;10;11;12;0;0;0;0'; + fac_import_factuur_body(p_import_key, v_seq_of_columns); +END; +/ + + +CREATE OR REPLACE PROCEDURE sutf_update_e_invoice (p_import_key IN NUMBER) +AS +BEGIN + -- Standaard FCLT verwerk import facturen + fac_update_factuur (p_import_key); + -- CUST: post processing voor verwerking van kenmerk 'Betalingskenmerk' + sutf_post_processing_factuur (p_import_key); +END; +/ + + +------ +------ FACTUUREXPORT / KOPPELING EXACT +------ + +-- View waarin bij de factuur met fin_factuur_key het bijbehorende factuurbestand (PDF) geldt. +CREATE OR REPLACE VIEW sutf_v_factuur_bestand (fin_factuur_key, fin_factuur_bestand) +AS +SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde +FROM fin_kenmerkfactuur kf +WHERE kf.fin_kenmerkfactuur_verwijder IS NULL +AND fin_kenmerk_key = 1; + +-- View waarin bij de factuur met fin_factuur_key het bijbehorende betaalreferentie of betaalkenmerk geldt. +CREATE OR REPLACE VIEW sutf_v_factuur_betaalref (fin_factuur_key, fin_factuur_betaalref) +AS +SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde +FROM fin_kenmerkfactuur kf +WHERE kf.fin_kenmerkfactuur_verwijder IS NULL +AND fin_kenmerk_key = 21; + + + +-- view tbv export naar exact +CREATE OR REPLACE VIEW sutf_v_factuur_mldcnt_gegevens ( + fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuurregel_totaal, + fin_factuurregel_btw, + fin_factuurregel_btw_perc, + fin_btwtabelwaarde_btwcode, + fin_factuurregel_nr, + fin_factuurregel_omschrijving, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + project_nummer, + prs_kostensoort_refcode, + prs_kostenplaats_nr, + bes_opdr_key, + mld_opdr_key, + cnt_contract_key, + fin_factuur_statuses_key + ) +AS + SELECT DISTINCT f.fin_factuur_key, + COALESCE (TO_CHAR (cnt_contract_nummer), + (SELECT sd.ins_srtdiscipline_prefix + || m.mld_melding_key + || '/' + || o.mld_opdr_bedrijfopdr_volgnr + FROM mld_melding m, + mld_stdmelding std, + ins_tab_discipline d, + ins_srtdiscipline sd + WHERE m.mld_melding_key = o.mld_melding_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = d.ins_discipline_key + AND d.ins_srtdiscipline_key = + sd.ins_srtdiscipline_key) + ) + opdracht_id, + f.fin_factuur_datum, + f.fin_factuur_boekmaand, + f.fin_factuur_nr, + fb.fin_factuur_bestand, + COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key, + fr.fin_factuurregel_totaal, + fr.fin_factuurregel_btw, + btw.fin_btwtabelwaarde_perc, + btw.fin_btwtabelwaarde_code, + fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, + f.fin_factuur_debiteur_nr, + fbr.fin_factuur_betaalref, + NULL projectnummer, + COALESCE(ks_regel.prs_kostensoort_refcode,ks.prs_kostensoort_refcode), + COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr, + NULL bes_opdr_key, + o.mld_opdr_key, + c.cnt_contract_key, + f.fin_factuur_statuses_key + FROM fin_factuur f, + sutf_v_factuur_bestand fb, + sutf_v_factuur_betaalref fbr, + 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 fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key + AND f.fin_factuur_key = fb.fin_factuur_key(+) + AND f.fin_factuur_key = fbr.fin_factuur_key(+) + AND f.bes_bestelopdr_key is null + AND f.mld_opdr_key = o.mld_opdr_key(+) + AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+) + AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+) + AND f.cnt_contract_key = c.cnt_contract_key(+) + AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+) + AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+) + AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+) + AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+) + AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+); + + +CREATE OR REPLACE VIEW sutf_v_factuur_bes_gegevens ( + fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuurregel_totaal, + fin_factuurregel_btw, + fin_factuurregel_btw_perc, + fin_btwtabelwaarde_btwcode, + fin_factuurregel_nr, + fin_factuurregel_omschrijving, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + project_nummer, + prs_kostensoort_refcode, + prs_kostenplaats_nr, + bes_opdr_key, + mld_opdr_key, + cnt_contract_key, + fin_factuur_statuses_key + ) +AS + SELECT DISTINCT f.fin_factuur_key, + TO_CHAR (bo.bes_bestelopdr_id) opdracht_id, + f.fin_factuur_datum, + f.fin_factuur_boekmaand, + f.fin_factuur_nr, + fb.fin_factuur_bestand, + b.prs_bedrijf_key, + fr.fin_factuurregel_totaal, + fr.fin_factuurregel_btw, + btw.fin_btwtabelwaarde_perc, + btw.fin_btwtabelwaarde_code, + fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, + f.fin_factuur_debiteur_nr, + fbr.fin_factuur_betaalref, + NULL projectnummer, + COALESCE(ks_regel.prs_kostensoort_refcode,ks.prs_kostensoort_refcode), + kp.prs_kostenplaats_nr, + bo.bes_bestelopdr_key bes_opdr_key, + NULL mld_opdr_key, + NULL cnt_contract_key, + f.fin_factuur_statuses_key + FROM bes_bestelopdr bo, + prs_bedrijf b, + bes_bestelling bes, + bes_bestelopdr_item boi, + bes_bestelling_item bi, + fin_factuur f, + sutf_v_factuur_bestand fb, + sutf_v_factuur_betaalref fbr, + 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_key = fr.fin_factuur_key + AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key + AND f.fin_factuur_key = fb.fin_factuur_key(+) + AND f.fin_factuur_key = fbr.fin_factuur_key(+); + + +CREATE OR REPLACE VIEW sutf_v_factuur_geg +AS +SELECT * from sutf_v_factuur_mldcnt_gegevens +UNION +SELECT * from sutf_v_factuur_bes_gegevens; + + +CREATE OR REPLACE VIEW sutf_v_factuur_geg_akkoord +AS +SELECT * from sutf_v_factuur_mldcnt_gegevens +WHERE fin_factuur_statuses_key = 6 +UNION +SELECT * from sutf_v_factuur_bes_gegevens +WHERE fin_factuur_statuses_key = 6; + + + +-- De OUDE ascii-rapportage van het exportbestand die voor Exact zou worden gegenereerd. +CREATE OR REPLACE VIEW sutf_v_rap_exact +(regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr, + crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd, + empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30, + empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, field40) +AS + SELECT regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr, + crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd, + empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30, + empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, '!' + FROM (SELECT 0 regelnummer, + 'I' dagb_type, + '42' dagbknr, + '' periode, + '' bkjcode, + TO_CHAR (fin_factuur_key) bkstnr, + opdracht_id oms25, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + '' empty9, + '' debnr, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crdnr, + '' empty12, + REPLACE (TO_CHAR (bedrag), ',', '.') bedrag, + '' drbk_in_val, + '' valcode, + '' koers, + '' kredbep, + '' bdrkredbep, + '' vervdatfak, + '' vervdatkrd, + '' empty21, + '' empty22, + '' weeknummer, + COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalref, + '' betwijze, + '' grek_bdr, + '' empty27, + '' empty28, + '' empty29, + '' empty30, + '' empty31, + '' transsubtype, + '' empty33, + '' empty34, + '' empty35, + '' empty36, + '' empty37, + '' empty38, + '' projectnr, + '!' empty40 + FROM (SELECT fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref, + SUM (fin_factuurregel_totaal + fin_factuurregel_btw) + bedrag + FROM sutf_v_factuur_geg_akkoord + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref) fg + UNION ALL + SELECT fin_factuurregel_nr regelnummer, + 'I' dagb_type, + '42' dagbknr, + '' periode, + '' bkjcode, + TO_CHAR (fin_factuur_key) boekstuknummer, + COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) oms25, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + prs_kostensoort_refcode reknr, + '' debnr, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) + crdnr, + '' empty12, + REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag, + '' drbk_in_val, + '' val_code, + '' koers, + '' kredbep, + '' bdrkredbep, + '' vervdatfak, + '' vervdatkrd, + fin_btwtabelwaarde_btwcode btw_code, + REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr, + '' weeknummer, + '' empty24, + '' empty25, + '' empty26, + prs_kostenplaats_nr kstplcode, + '' kstdrcode, + '' empty29, + '' empty30, + '' empty31, + '' transsubtype, + '' empty33, + '' empty34, + '' emtpy35, + '' empty36, + '' empty37, + '' empty38, + project_nummer projectnr, + '!' empty40 + FROM sutf_v_factuur_geg_akkoord fg); + + + + + + +-- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' waarvan de waarde_code met een +-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht. +CREATE OR REPLACE VIEW sutf_v_fclt_factuur_header ( + result, + result_order + ) +AS +SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '', 1 +FROM fac_usrdata +WHERE fac_usrtab_key = 101 +AND fac_usrdata_verwijder is null; + +CREATE OR REPLACE VIEW sutf_v_fclt_factuur_body ( + result, + result_order + ) +AS + SELECT DECODE(regelnummer,0,'','') + || '' || fin_factuur_key || '' + || '' || xml.char_to_html(fin_factuur_nr) || '' + || '' || xml.char_to_html(fin_factuur_bestand) || '' + || '' || xml.char_to_html(fin_factuur_debiteur_nr) || '' + || '' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '' + || '' || datum || '' + || '' || fin_factuur_boekmaand || '' + || '' || xml.char_to_html(grootboekrekening) || '' + || '' || xml.char_to_html(betaalreferentie) || '' + || '' || xml.char_to_html(crediteur_nr) || '' + || '' || xml.char_to_html(crediteur_naam) || '' + || '' || fin_factuur_totaal_exbtw || '' + || '' || fin_factuur_totaal_incbtw || '' + || '' || xml.char_to_html(fin_factuurregel_omschrijving) || '' + || '' || fin_factuurregel_totaal || '' + || '' || btw_percentage || '' + || '' || xml.char_to_html(btw_code) || '' + || '' || btw_bedrag || '' + || '' || xml.char_to_html(prs_kostenplaats_nr) || '' + || DECODE(regelnummer, 0, '', DECODE(aant_factuur_regels - regelnummer,0,'','')) + , + (10000000 + fin_factuur_key) * 100 + regelnummer + FROM (SELECT 0 regelnummer, + aant_factuur_regels, + fin_factuur_key, + fin_factuur_nr, + fin_factuur_bestand, + fin_factuur_debiteur_nr, + opdracht_id bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + fin_factuur_boekmaand, + '' grootboekrekening, + betaalreferentie, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr, + (SELECT prs_bedrijf_naam + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam, + REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw, + REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw, + '' fin_factuurregel_omschrijving, + '' fin_factuurregel_totaal, + '' btw_percentage, + '' btw_code, + '' btw_bedrag, + '' prs_kostenplaats_nr + FROM (SELECT fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie, + COUNT(fin_factuur_key) AS aant_factuur_regels, + SUM (fin_factuurregel_totaal) bedrag_exbtw, + SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw + FROM sutf_v_factuur_geg_akkoord + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_boekmaand, + fin_factuur_nr, + fin_factuur_bestand, + prs_bedrijf_key, + fin_factuur_debiteur_nr, + fin_factuur_betaalref) fg + UNION ALL + SELECT fin_factuurregel_nr regelnummer, + (SELECT COUNT(fin_factuur_key) + FROM sutf_v_factuur_geg_akkoord fc + WHERE fc.fin_factuur_key = fg.fin_factuur_key + GROUP BY fin_factuur_key, + opdracht_id, + fin_factuur_datum, + fin_factuur_nr, + prs_bedrijf_key, + fin_factuur_debiteur_nr) AS aant_factuur_regels, + fin_factuur_key, + fin_factuur_nr, + '' fin_factuur_bestand, + fin_factuur_debiteur_nr, + '' bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + fin_factuur_boekmaand, + prs_kostensoort_refcode grootboekrekening, + COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie, + (SELECT prs_leverancier_nr + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr, + (SELECT prs_bedrijf_naam + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam, + '' fin_factuur_totaal_exbtw, + '' fin_factuur_totaal_incbtw, + fin_factuurregel_omschrijving, + REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal, + TO_CHAR(fin_factuurregel_btw_perc) btw_percentage, + fin_btwtabelwaarde_btwcode btw_code, + REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag, + prs_kostenplaats_nr + FROM sutf_v_factuur_geg_akkoord fg + ORDER BY fin_factuur_key, regelnummer); + +--Vieuws voor looplijst reserveringen Mobiel +CREATE OR REPLACE VIEW sutf_v_rap_res_looplijst +AS + SELECT DISTINCT + TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd') + || rg.alg_gebouw_upper + || TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') + hide_f_srt, + rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr, + rg.alg_gebouw_omschrijving fclt_f_gebouw, + rr.res_rsv_ruimte_van datum, + TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd, + TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd, + r.res_ruimte_nr fclt_f_ruimte, + o.res_opstelling_omschrijving opstelling, + rr.res_rsv_ruimte_bezoekers aantal, + rr.res_rsv_ruimte_omschrijving omschrijving, + mld.aant Meldingen, + voorzieningen, + CASE + WHEN LENGTH (catering) > 75 + THEN + SUBSTR (catering, 1, 75) || ' ...' + ELSE + catering + END + catering, + rr.res_rsv_ruimte_key + FROM res_rsv_ruimte rr, + res_ruimte_opstelling ro, + res_opstelling o, + res_ruimte r, + res_alg_ruimte ar, + alg_v_ruimte_gegevens rg, + ( SELECT res_rsv_ruimte_key, + 'Ja (' || COUNT (res_rsv_ruimte_key) || ')' aant + FROM mld_melding + WHERE res_rsv_ruimte_key IS NOT NULL + GROUP BY res_rsv_ruimte_key) mld, + ( SELECT res_rsv_ruimte_key, + LISTAGG (voorziening, CHR (13) || CHR (10)) + WITHIN GROUP (ORDER BY voorziening) + AS Voorzieningen + FROM (SELECT res_rsv_ruimte_key, + res_deel_omschrijving voorziening + FROM res_deel rd, res_rsv_deel rrd + WHERE RES_RSV_DEEL_verwijder IS NULL + AND rd.res_deel_key = rrd.res_deel_key + AND res_rsv_ruimte_key IS NOT NULL) + GROUP BY res_rsv_ruimte_key) voorz, + ( SELECT res_rsv_ruimte_key, + LISTAGG (artikel, ', ') WITHIN GROUP (ORDER BY artikel) + AS catering + FROM (SELECT res_rsv_ruimte_key, + res_rsv_artikel_aantal + || '*' + || res_artikel_omschrijving + artikel + FROM res_artikel ra, res_rsv_artikel rra + WHERE RES_RSV_artikel_verwijder IS NULL + AND ra.res_artikel_key = rra.res_artikel_key + AND res_rsv_ruimte_key IS NOT NULL) + GROUP BY res_rsv_ruimte_key) cat + WHERE rr.res_rsv_ruimte_verwijder IS NULL + AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key + AND o.res_opstelling_key = ro.res_opstelling_key + AND r.res_ruimte_key = ro.res_ruimte_key + AND ar.res_ruimte_key = r.res_ruimte_key + AND ar.res_alg_ruimte_verwijder IS NULL + AND rg.alg_ruimte_key = ar.alg_ruimte_key + AND mld.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key + AND voorz.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key + AND cat.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key; + + +CREATE OR REPLACE VIEW sutf_v_rap_mob_looplijst +AS + SELECT * + FROM sutf_v_rap_res_looplijst + WHERE TRUNC (datum) = TRUNC (SYSDATE); + + + +CREATE OR REPLACE VIEW sutf_v_export_fclt_factuur ( + result, + result_order + ) +AS +SELECT '',0 FROM DUAL +UNION +SELECT result, result_order FROM sutf_v_fclt_factuur_header +UNION +SELECT result, result_order FROM sutf_v_fclt_factuur_body +UNION +SELECT '',99999999999999999999 FROM DUAL; + + + +CREATE OR REPLACE PROCEDURE sutf_export_fclt_factuur ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2 +) +AS + + -- In cursor cfactuur alle facturen die worden geexporteerd... + CURSOR cfactuur + IS + SELECT fin_factuur_key + FROM sutf_v_factuur_geg_akkoord + GROUP BY fin_factuur_key; + +BEGIN + -- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT... + FOR cfact IN cfactuur + LOOP + -- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten + fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); + END LOOP; +END; +/ + + + +CREATE OR REPLACE VIEW sutf_v_export_undo_exact ( + result, + result_order + ) +AS +SELECT REPLACE(REPLACE(f.fin_factuur_key + || ';' + || opdracht_id + || ';' + || fin_factuur_datum + || ';' + || fin_factuur_nr + || ';' + || prs_bedrijf_key + || ';' + || fin_factuurregel_totaal + || ';' + || fin_factuurregel_btw + || ';' + || fin_factuurregel_nr + || ';' + || fin_factuur_debiteur_nr + || ';' + || project_nummer + || ';' + || prs_kostensoort_refcode + || ';' + || bes_opdr_key + || ';' + || mld_opdr_key + || ';' + || cnt_contract_key + ,CHR (13), ''), CHR (10), ''), f.fin_factuur_key + FROM sutf_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 sutf_select_undo_exact ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2 +) +AS + v_errormsg VARCHAR (200); +BEGIN + v_errormsg := 'Geen akties'; + +END; +/ + +-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten. +CREATE OR REPLACE PROCEDURE sutf_export_undo_exact ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2 +) +AS + CURSOR cfactuur + IS + SELECT DISTINCT f.fin_factuur_key + FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f + WHERE sn.fac_srtnotificatie_code ='FINVER' + AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key + AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60)) + FROM fac_tracking t1 + WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key) + AND f.fin_factuur_key = t.fac_tracking_refkey + AND fin_factuur_statuses_key = 7; + + v_errormsg VARCHAR (200); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); +BEGIN + v_errormsg := 'Geen akties'; + + FOR cfact IN cfactuur + LOOP + -- Eerst de factuur in tracking zetten... + -- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via + -- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL); + + -- Dan maar zelf en custom-made: + fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet'); + UPDATE fin_factuur + SET fin_factuur_statuses_key = 6 + WHERE fin_factuur_key = cfact.fin_factuur_key; + + END LOOP; +END; +/ + +CREATE OR REPLACE PROCEDURE sutf_monthly +AS + -- ins_srtdiscipline_key = 1 -> Automatisering + CURSOR c_mld_2_arch + IS + SELECT mld_melding_key + FROM mld_melding + WHERE mld_melding_status = 5 + AND sysdate-30 >= + (SELECT fac_tracking_datum from fac_tracking + WHERE fac_tracking_refkey = mld_melding_key + AND fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'MLDAFM') + ) + AND mld_stdmelding_key IN + (SELECT mld_stdmelding_key FROM mld_stdmelding WHERE mld_ins_discipline_key IN + (SELECT ins_discipline_key FROM mld_discipline WHERE ins_srtdiscipline_key = 1) + ); + + + 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_tracking VARCHAR2 (1000); + + +BEGIN + FOR cmld IN c_mld_2_arch + LOOP + BEGIN + + -- Eerst proberen om melding op archief te zetten, indien gelukt DAN PAS in tracking + -- Het zou kunnen dat constraint de update tegenhoudt (openstaande opdrachten), in dat geval komt die in exception-tak (en wordt terecht niet getrackt). + -- Wel gaan we daartoe eerst de opdrachten op archief (7=verwerkt) zetten, die de status afgemeld hebben (= 6). + + UPDATE mld_opdr + SET mld_statusopdr_key = 7 + WHERE mld_statusopdr_key=6 + AND mld_melding_key = cmld.mld_melding_key; + + UPDATE mld_melding + SET mld_melding_status = 6 + WHERE mld_melding_key = cmld.mld_melding_key; + + -- Nu de melding in tracking zetten...dat ie gearchiveerd is + + fac.trackaction ('MLDVER', cmld.mld_melding_key, NULL, NULL, 'Melding in archief gezet (door systeem)'); + + 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 + || ')'; + END; + COMMIT; + END LOOP; + +END sutf_monthly; +/ + +-- SUTF#29030 +-- Notificatiejob om te laat ingeleverde uitgeleende objecten naar de backoffice (=key 8621) te sturen +-- Terugbreng datum (=key 601) wordt bij het uitgeleende obejct geregistreerd +CREATE OR REPLACE VIEW SUTF_V_NOTI_INS_LATE +( + CODE, + SENDER, + RECEIVER, + TEXT, + KEY, + XKEY +) +AS + SELECT 'INSMAI', + NULL, + 8621, + 'Uitleentijd verstreken van: ' || ins_deel_omschrijving, + d.ins_deel_key, + NULL + FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_deel d + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 601 + AND kd.ins_deel_key = d.ins_deel_key + AND ins_kenmerkdeel_verwijder IS NULL + AND d.ins_deel_verwijder IS NULL + AND ins_kenmerkdeel_waarde = TO_CHAR (SYSDATE - 1, 'DD-MM-YYYY') + AND ins_alg_ruimte_key_org IS NOT NULL; + +CREATE OR REPLACE PACKAGE SUTF +AS + PROCEDURE mail_supportdesk (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER); + + PROCEDURE mail_idu (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER); +END; +/ + +CREATE OR REPLACE PACKAGE BODY SUTF +AS + PROCEDURE mail_supportdesk (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER) + AS + v_sender prs_perslid.prs_perslid_key%TYPE; + v_from VARCHAR2 (4000); + v_body VARCHAR2 (4000); + v_count NUMBER; + + v_onderwerp mld_melding.mld_melding_onderwerp%TYPE; + v_omschrijving mld_melding.mld_melding_omschrijving%TYPE; + v_melding_key mld_melding.mld_melding_key%TYPE; + v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE; + v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE; + v_melding_status mld_melding.mld_melding_status%TYPE; + v_volgnr NUMBER; + v_locatie_key alg_locatie.alg_locatie_key%TYPE; + v_kkey mld_kenmerk.mld_kenmerk_key%TYPE; + v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE; + + v_errorhint VARCHAR2 (1000); + v_errormsg fac_result.fac_result_waarde%TYPE; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + BEGIN + -- Verwijder de Bounce Address Tag Validation + IF pfrom LIKE 'prvs=%' + THEN + v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1); + ELSE + v_from := pfrom; + END IF; + + v_stdmelding_key := + fac.safe_to_number (fac.getsetting ('defaultstdmelding')); + --PROD + v_locatie_key := 261; --Locatie nvt + v_sender := 4; --4 = Facilitor + v_kkey := 1121; --Kenmerk_key bijlagen email + v_mailorigin := 1101; --Kenmerk_key originele mail-bijlage + + --ACCEPT: + -- v_locatie_key := 241; --Locatie nvt + -- v_sender := 4; --4 = Facilitor + -- v_kkey := 1145; --Kenmerk_key bijlagen email + -- v_mailorigin := 1146; --Kenmerk_key originele mail-bijlage + + -- filter nu de essentiele velden uit de mailbody + -- vervang cr door lf + v_body := pbody; + v_body := REPLACE (v_body, CHR (13), CHR (10)); + -- verwijder dubbele lf's + v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10)); + v_omschrijving := substr(v_body, 1, 4000); + v_onderwerp := substr(psubject, 1, 80); + -- + v_errorhint := 'Bepaal volgnummer'; + + SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + INTO v_volgnr + FROM fac_rapport + WHERE fac_rapport_node = 'SUPPORTDESK'; + + v_errorhint := 'Bewaar mail ' || v_volgnr; + v_errormsg := '(0x110)'; + + INSERT INTO fac_rapport (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel) + VALUES ( + 'SUPPORTDESK', + v_volgnr + 1, + pfrom + || CHR (10) + || psubject + || CHR (10) + || SUBSTR(v_omschrijving,1,1500)); + + -- nu gaan we de uitvoertijd bepalen + v_errorhint := 'Bepaal uitvoertijd ' || v_volgnr; + v_errormsg := '(0x120)'; + + SELECT mld_stdmelding_t_uitvoertijd + INTO v_uitvoertijd + FROM mld_stdmelding + WHERE mld_stdmelding_key = v_stdmelding_key; + + -- nu gaan we de melding aanmaken + v_errorhint := 'Melding aanmaken ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x150)'; + + INSERT INTO mld_melding (mld_melding_module, + mld_meldbron_key, + mld_melding_datum, + mld_melding_onderwerp, + mld_melding_omschrijving, + mld_melding_status, + mld_melding_t_uitvoertijd, + mld_stdmelding_key, + prs_perslid_key, + prs_perslid_key_voor, + prs_kostenplaats_key, + mld_melding_spoed, + mld_alg_locatie_key, + mld_alg_onroerendgoed_keys) + VALUES ('MLD', + 6, -- system + SYSDATE, + v_onderwerp, + v_omschrijving, + NULL, + v_uitvoertijd, + v_stdmelding_key, + v_sender, + v_sender, + NULL, + 3, + v_locatie_key, + NULL) + RETURNING mld_melding_key + INTO v_melding_key; + + v_errormsg := '(0x180)'; + mld.setmeldingstatus (v_melding_key, 2, v_sender); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES (psessionid, + 'maillog', + 'Geregistreerd onder melding ' || v_melding_key); + + + + IF v_melding_key = NULL + THEN + -- foutafhandeling + v_errorhint := 'Geen melding key ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x910)'; + fac.writelog ('MAIL_SUPPORTDESK', + 'E', + v_errormsg, + SUBSTR (pbody, 1, 1000)); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'errormsg', + 'Fout bij verwerken mail Supportdesk ' + || psubject); + ELSE + -- nu gaan we de bijlagen toevoegen + v_errorhint := 'Bijlagen toevoegen ' || v_volgnr; + v_errormsg := 'Bijlagen toevoegen lukt niet (0x210)'; + + IF v_kkey IS NOT NULL + THEN + v_errormsg := '(0x230)'; + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_kkey + || '\'); + END IF; + + -- originele email wordt opgeslagen bij de melding + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkorgmailpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_mailorigin + || '\'); + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.writelog ('MAIL_SUPPORTDESK', + 'E', + v_errormsg, + v_errorhint); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'errormsg', + 'Fout bij verwerken mail Supportdesk: ' + || psubject); + END; + + PROCEDURE mail_idu (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER) + AS + v_sender prs_perslid.prs_perslid_key%TYPE; + v_from VARCHAR2 (4000); + v_body VARCHAR2 (4000); + v_count NUMBER; + + v_onderwerp mld_melding.mld_melding_onderwerp%TYPE; + v_omschrijving mld_melding.mld_melding_omschrijving%TYPE; + v_melding_key mld_melding.mld_melding_key%TYPE; + v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE; + v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE; + v_melding_status mld_melding.mld_melding_status%TYPE; + v_volgnr NUMBER; + v_locatie_key alg_locatie.alg_locatie_key%TYPE; + v_kkey mld_kenmerk.mld_kenmerk_key%TYPE; + v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE; + v_perslid_key prs_perslid.prs_perslid_key%TYPE; + v_mutatie VARCHAR2 (1000); + + v_errorhint VARCHAR2 (1000); + v_errormsg fac_result.fac_result_waarde%TYPE; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + BEGIN + -- Verwijder de Bounce Address Tag Validation + IF pfrom LIKE 'prvs=%' + THEN + v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1); + ELSE + v_from := pfrom; + END IF; + + + -- PROD + v_stdmelding_key := 1723; -- Startmelding IDU + v_locatie_key := 261; --Locatie nvt + v_sender := 4; --4 = Facilitor + v_kkey := 1121; --Kenmerk_key bijlagen email + v_mailorigin := 1101; --Kenmerk_key originele mail-bijlage + + -- ACCEPT: + -- v_stdmelding_key := 1658; -- Startmelding IDU + -- v_locatie_key := 241; --Locatie nvt + -- v_sender := 4; --4 = Facilitor + -- v_kkey := 1145; --Kenmerk_key bijlagen email + -- v_mailorigin := 1146; --Kenmerk_key originele mail-bijlage + + -- filter nu de essentiele velden uit de mailbody + -- vervang cr door lf + v_body := pbody; + v_body := REPLACE (v_body, CHR (13), CHR (10)); + -- verwijder dubbele lf's + v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10)); + v_omschrijving := substr(v_body, 1, 4000); + v_onderwerp := substr(psubject, 1, 80); + -- + v_errorhint := 'Bepaal volgnummer'; + + SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + INTO v_volgnr + FROM fac_rapport + WHERE fac_rapport_node = 'IDU'; + + v_errorhint := 'Bewaar mail ' || v_volgnr; + v_errormsg := '(0x110)'; + + INSERT INTO fac_rapport (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel) + VALUES ( + 'IDU', + v_volgnr + 1, + pfrom + || CHR (10) + || psubject + || CHR (10) + || SUBSTR(v_omschrijving,1,1500)); + + -- nu gaan we de uitvoertijd bepalen + v_errorhint := 'Bepaal uitvoertijd ' || v_volgnr; + v_errormsg := '(0x120)'; + + SELECT mld_stdmelding_t_uitvoertijd + INTO v_uitvoertijd + FROM mld_stdmelding + WHERE mld_stdmelding_key = v_stdmelding_key; + + -- nu gaan we de melding aanmaken + v_errorhint := 'Melding aanmaken ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x150)'; + + INSERT INTO mld_melding (mld_melding_module, + mld_meldbron_key, + mld_melding_datum, + mld_melding_onderwerp, + mld_melding_omschrijving, + mld_melding_status, + mld_melding_t_uitvoertijd, + mld_stdmelding_key, + prs_perslid_key, + prs_perslid_key_voor, + prs_kostenplaats_key, + mld_melding_spoed, + mld_alg_locatie_key, + mld_alg_onroerendgoed_keys) + VALUES ('MLD', + 6, -- system + SYSDATE, + v_onderwerp, + v_omschrijving, + NULL, + v_uitvoertijd, + v_stdmelding_key, + v_sender, + v_sender, + NULL, + 3, + v_locatie_key, + NULL) + RETURNING mld_melding_key + INTO v_melding_key; + + v_errormsg := '(0x180)'; + mld.setmeldingstatus (v_melding_key, 2, v_sender); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES (psessionid, + 'maillog', + 'Geregistreerd onder melding ' || v_melding_key); + + v_errormsg := '(0x190)'; + -- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden. + mld.mld_nextworkflowstep (v_melding_key, -1); + + -- nu gaan we mutatietype bepalen aanzetten + v_errorhint := 'Mutatietype bepalen ' || v_volgnr; + v_errormsg := 'Mutatietype kan niet bepaald worden (0x220)'; + + CASE +-- WHEN UPPER (psubject) LIKE '%MELDING NIEUW%' +-- THEN +-- v_mutatie := NULL; + WHEN UPPER (psubject) LIKE '%MELDING UIT%' + THEN + v_mutatie := '3269'; + WHEN UPPER (psubject) LIKE '%MELDING HER%' + THEN + v_mutatie := '3268'; + ELSE + v_mutatie := '3281'; -- Dit is de verzamelbak 'Overig / nader te bepalen'. + END CASE; + + INSERT INTO mld_kenmerkmelding (mld_melding_key, + mld_kenmerk_key, + mld_kenmerkmelding_waarde) + VALUES (v_melding_key, 1143, v_mutatie); --ACCEPT = 1161 + + IF v_melding_key = NULL + THEN + -- foutafhandeling + v_errorhint := 'Geen melding key ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x910)'; + fac.writelog ('MAIL_IDU', + 'E', + v_errormsg, + SUBSTR (pbody, 1, 1000)); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES (psessionid, + 'errormsg', + 'Fout bij verwerken mail IDU ' || psubject); + ELSE + -- nu gaan we de bijlagen toevoegen + v_errorhint := 'Bijlagen toevoegen ' || v_volgnr; + v_errormsg := 'Bijlagen toevoegen lukt niet (0x210)'; + + IF v_kkey IS NOT NULL + THEN + v_errormsg := '(0x230)'; + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_kkey + || '\'); + END IF; + + -- originele email wordt opgeslagen bij de melding + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkorgmailpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_mailorigin + || '\'); + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.writelog ('MAIL_SUPPORTDESK', + 'E', + v_errormsg, + v_errorhint); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES (psessionid, + 'errormsg', + 'Fout bij verwerken mail IDU: ' || psubject); + END; +END; +/ + +CREATE OR REPLACE VIEW sutf_rap_cal_mldbehandelaar +AS + SELECT m.mld_melding_behandelaar2_key + user_key, + m.mld_melding_key + || ' ' + || COALESCE (m.mld_melding_onderwerp, + disc.ins_discipline_omschrijving || ' - ' || sm.mld_stdmelding_omschrijving) + title, + TRUNC (COALESCE (mld_melding_actiedatum, mld_melding_datum)) + van, + TRUNC (mld_melding_einddatum) + tot, + m.mld_melding_key + item_key, + '#008000' + color, + '#FFFFFF' + textcolor, + '?u=melding' + || CHR (38) + || 'internal=1' + || CHR (38) + || 'k=' + || m.mld_melding_key + url + FROM mld_melding m, prs_v_perslid_fullnames_all p, mld_stdmelding sm, ins_tab_discipline disc + WHERE m.mld_melding_behandelaar2_key = p.prs_perslid_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + and sm.mld_ins_discipline_key = disc.ins_discipline_key + AND m.mld_melding_status IN (2, + 3, + 4, + 7); + +CREATE OR REPLACE VIEW sutf_v_gekoppelde_objecten +AS + SELECT c.deel_key, + c.discipline, + c.soort, + c.groep, + c.soortcode, + c.omschrijving, + c.plaatseigenaar, + c.plaatseigenaartype, + c.plaatsaanduiding, + c.eigenaar, + c.eigenaar_key, + c.opmerking, + c.regio, + c.district, + c.locatie_code, + c.locatie_omschrijving, + c.locatie_plaats, + c.gebouwcode, + c.gebouw, + c.gebouwomschrijving, + c.terreinsectorcode, + c.terreinsector, + c.verdiepingcode, + c.ruimtenr, + c.werkplekvolgnr, + c.werkplek, + c.uitleenbaar, + c.uitgeleend, + c.res_opmerking, + c.beheerder, + c.vervaldatum, + c.actief, + c.aantal, + c.state, + c.statedate, + c.fclt_3d_discipline_key, + c.fclt_3d_afdeling_key, + c.fclt_3d_locatie_key, + p.discipline AS gekoppeld_aan_discipline, + p.soort AS gekoppeld_aan_soort, + p.groep AS gekoppeld_aan_groep, + p.soortcode AS gekoppeld_aan_soortcode, + p.omschrijving AS gekoppeld_aan_omschrijving, + p.eigenaar AS gekoppeld_aan_eigenaar, + p.opmerking AS gekoppeld_aan_opmerking + FROM ins_v_udr_deel c, ins_deelkoppeling k, ins_v_udr_deel p + WHERE c.deel_key = k.ins_deelkoppeling_van_key (+) + AND k.ins_deelkoppeling_naar_key = p.deel_key (+); + +CREATE OR REPLACE VIEW sutf_v_rap_rt_mi +AS + ( SELECT locatie, + taaksoort, + discipline, + groep, + CASE + WHEN MIN (volgendedatum) > SYSDATE + 30 THEN 'Groen' + WHEN MIN (volgendedatum) > SYSDATE THEN 'Geel' + ELSE 'Rood' + END kleur + FROM ctr_v_monthly_recurring_tasks xx + WHERE succesvol <> 1 + GROUP BY locatie, + taaksoort, + discipline, + groep); + +CREATE OR REPLACE VIEW SUTF.SUTF_V_INS_QRC +( + HIDE_F_SORT, + FCLT_F_BOOKMARK, + FCLT_3D_DISCIPLINE_KEY, + FCLT_3D_LOCATIE_KEY, + FCLT_F_LOCATIE, + FCLT_F_GEBOUW, + PLAATS, + FCLT_F_OBJECTSOORT, + FCLT_F_IDENTIFICATIE, + INS_DEEL_KEY, + SOORTRUIMTE, + INS_SRTDEEL_CODE, + INS_SRTDEEL_KEY, + INS_ALG_RUIMTE_TYPE, + ALG_GEBOUW_CODE, + ALG_VERDIEPING_CODE, + ALG_DISTRICT_KEY, + INS_ALG_RUIMTE_KEY, + HIDE_F_BOOKMARK_ID +) + +AS + SELECT i.ins_deel_omschrijving hide_f_sort, + b.fac_bookmark_naam fclt_f_bookmark, + i.ins_discipline_key fclt_3d_discipline_key, + l.alg_locatie_key fclt_3d_locatie_key, + l.alg_locatie_omschrijving fclt_f_locatie, + o.alg_gebouw_omschrijving fclt_f_gebouw, + o.alg_plaatsaanduiding plaats, + s.ins_srtdeel_omschrijving fclt_f_objectsoort, + i.ins_deel_omschrijving fclt_f_identificatie, + i.ins_deel_key, + (SELECT r.alg_ruimte_omschrijving + FROM alg_ruimte r + WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte, + s.ins_srtdeel_code, + s.ins_srtdeel_key, + i.ins_alg_ruimte_type, + o.alg_gebouw_code, + o.alg_verdieping_code, + l.alg_district_key, + i.ins_alg_ruimte_key, + b.fac_bookmark_id hide_f_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_path IN + ('appl/pda/ins_deel.asp', 'appl/ins/ins_deel.asp') + AND ins_deel_verwijder IS NULL + AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE + 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; +------ 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 \ No newline at end of file diff --git a/SUTF/sutf.sql b/SUTF/sutf.sql index 6723c8558..146b9ffaa 100644 --- a/SUTF/sutf.sql +++ b/SUTF/sutf.sql @@ -1701,6 +1701,71 @@ AS groep, soort); +CREATE OR REPLACE VIEW SUTF_V_INS_QRC +( + HIDE_F_SORT, + FCLT_F_BOOKMARK, + FCLT_3D_DISCIPLINE_KEY, + FCLT_3D_LOCATIE_KEY, + FCLT_F_LOCATIE, + FCLT_F_GEBOUW, + PLAATS, + FCLT_F_OBJECTSOORT, + FCLT_F_IDENTIFICATIE, + INS_DEEL_KEY, + SOORTRUIMTE, + INS_SRTDEEL_CODE, + INS_SRTDEEL_KEY, + INS_ALG_RUIMTE_TYPE, + ALG_GEBOUW_CODE, + ALG_VERDIEPING_CODE, + ALG_DISTRICT_KEY, + INS_ALG_RUIMTE_KEY, + HIDE_F_BOOKMARK_ID +) + +AS + SELECT i.ins_deel_omschrijving hide_f_sort, + b.fac_bookmark_naam fclt_f_bookmark, + i.ins_discipline_key fclt_3d_discipline_key, + l.alg_locatie_key fclt_3d_locatie_key, + l.alg_locatie_omschrijving fclt_f_locatie, + o.alg_gebouw_omschrijving fclt_f_gebouw, + o.alg_plaatsaanduiding plaats, + s.ins_srtdeel_omschrijving fclt_f_objectsoort, + i.ins_deel_omschrijving fclt_f_identificatie, + i.ins_deel_key, + (SELECT r.alg_ruimte_omschrijving + FROM alg_ruimte r + WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte, + s.ins_srtdeel_code, + s.ins_srtdeel_key, + i.ins_alg_ruimte_type, + o.alg_gebouw_code, + o.alg_verdieping_code, + l.alg_district_key, + i.ins_alg_ruimte_key, + b.fac_bookmark_id hide_f_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_path IN + ('appl/pda/ins_deel.asp', 'appl/ins/ins_deel.asp') + AND ins_deel_verwijder IS NULL + AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE + 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; + ------ payload end ------ SET DEFINE OFF