diff --git a/RTGS/RTGS.sql b/RTGS/RTGS.sql new file mode 100644 index 000000000..f3645464e --- /dev/null +++ b/RTGS/RTGS.sql @@ -0,0 +1,268 @@ +-- +-- $Id$ +-- +-- Script containing customer specific sql statements for the rtgs database + + +DEFINE thisfile = 'RTGS.SQL' +DEFINE dbuser = 'RTGS' + +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 rtgs_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); + v_newline FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE; +BEGIN + + BEGIN + SELECT fac_imp_file_line + INTO v_newline + FROM fac_imp_file + WHERE fac_import_key = p_import_key + AND fac_imp_file_index = 1; + + IF v_newline LIKE + CHR (TO_NUMBER ('EF', 'xx')) + || CHR (TO_NUMBER ('BB', 'xx')) + || CHR (TO_NUMBER ('BF', 'xx')) + || '%' + THEN + -- EF BB BF aangetroffen + fac.imp_writelog (p_import_key, + 'W', + 'Byte Order Mark aangetroffen', + 'Bestand heeft onbehandeld UTF-8 formaat.' + ); + v_newline := SUBSTR (v_newline, 4); + END IF; + + -- Verwijder de dubbele quotes + v_newline := REPLACE (v_newline, '"'); + + UPDATE fac_imp_file + SET fac_imp_file_line = v_newline + WHERE fac_import_key = p_import_key + AND fac_imp_file_index = 1; + + + EXCEPTION WHEN OTHERS + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Fout bij controle op Byte Order Mark', + '' + ); + END; + + + v_errorhint := 'Generieke update'; + -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc + prs.import_perslid (p_import_key, + '1;2;3;4;5;6;7;8;9;11;' || + '10;0;0;0;0;13;14;15;0;17;' || + '16;0;0;12;0;0;0;0;0;0;'|| + '0;0;0;0;0;0;0;0;0;0;'|| + '0;0;0;0;0;0', + 'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Werkplekvolgnummer;Omschrijving;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam%' + ); + +COMMIT; + +UPDATE fac_imp_perslid + SET prs_perslid_titel = + CASE + WHEN prs_perslid_titel LIKE '%heer%' THEN 'De heer' + WHEN prs_perslid_titel LIKE '%vrouw%' THEN 'Mevrouw' + ELSE NULL + END; +COMMIT; + +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 rtgs_import_perslid; +/ + +CREATE OR REPLACE PROCEDURE rtgs_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_email + FROM prs_perslid p + WHERE p.prs_perslid_email IS NOT NULL + AND p.prs_perslid_verwijder IS NULL + AND p.prs_perslid_oslogin IS NULL + AND UPPER (p.prs_perslid_email) NOT IN (SELECT UPPER (prs_perslid_email) FROM fac_imp_perslid); + + v_count NUMBER; + +BEGIN + -- generic update + + SELECT count(*) + INTO v_count + FROM fac_imp_perslid; + + IF v_count < 100 + 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; + + -- 'EMAIL' betekent dat op basis van email wordt gematched. + -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen + prs.update_perslid (p_import_key, 'EMAIL', 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 rtgs_update_perslid; +/ + +CREATE OR REPLACE VIEW rtgs_v_rap_kostenoverzicht +AS +SELECT DISTINCT + m.mld_melding_key, + ct.cnt_contract_key, + i.ins_deel_key, + isrt.ins_srtdiscipline_omschrijving + vakgroeptype, + md.ins_discipline_omschrijving + vakgroep, + std.mld_stdmelding_omschrijving + melding, + m.mld_melding_datum + melding_datum, + m.mld_melding_einddatum + datum_afgemeld, + m.mld_melding_onderwerp + melding_onderwerp, + m.mld_melding_omschrijving + melding_omschrijving, + ms.MLD_STATUSES_OMSCHRIJVING + melding_status, + (SELECT pf.prs_perslid_naam_full + FROM prs_v_perslid_fullnames pf + WHERE pf.prs_perslid_key = m.prs_perslid_key) + melder, + (SELECT pf.prs_perslid_naam_full + FROM prs_v_perslid_fullnames pf + WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key) + behandelaar, + (SELECT mk.mld_kenmerkmelding_waarde + FROM mld_kenmerkmelding mk + WHERE mk.MLD_MELDING_KEY = m.mld_melding_key + AND mk.mld_kenmerk_key = 922) + gemaakte_kosten, + dis.ins_discipline_omschrijving + obj_discipline, + srtg.ins_srtgroep_omschrijving + obj_groep, + srtd.ins_srtdeel_omschrijving + obj_soort, + i.ins_deel_omschrijving + obj, + ct.cnt_contract_nummer, + ct.cnt_contract_nummer_intern, + ct.cnt_contract_omschrijving, + ct.cnt_contract_opmerking, + ct.cnt_contract_looptijd_van, + ct.cnt_contract_looptijd_tot, + ct.cnt_contract_kosten, + (SELECT b.prs_bedrijf_naam + FROM prs_bedrijf b + WHERE b.prs_bedrijf_key = ct.cnt_prs_bedrijf_key) + cnt_bedrijf, + (SELECT pk.prs_kostenplaats_omschrijving + FROM prs_kostenplaats pk + WHERE pk.prs_kostenplaats_key = ct.prs_kostenplaats_key) + kostenplaats, + (SELECT 'Boekmaand: ' || cf.cnt_factuurschema_boekmaand || ' Bedrag: ' || cf.cnt_factuurschema_bedrag + FROM cnt_factuurschema cf + WHERE ct.cnt_contract_key = cf.cnt_contract_key + AND UPPER (cf.cnt_factuurschema_opmerking) LIKE '%BETAALD%' + ORDER BY cf.cnt_factuurschema_aanmaak DESC + FETCH FIRST 1 ROW ONLY) laatste_betaling + FROM cnt_contract ct, + mld_melding m, + ins_deel i, + prs_bedrijf b, + ins_srtdeel srt, + mld_stdmelding std, + mld_discipline md, + ins_srtdiscipline isrt, + cnt_contract_object cco, + mld_melding_object mmo, + mld_statuses ms, + ins_srtdeel srtd, + ins_srtgroep srtg, + ins_discipline dis, + cnt_contract_plaats cntp, + alg_gebouw ag, + cnt_factuurschema cf + WHERE ct.cnt_contract_key = cco.cnt_contract_key + AND i.ins_srtdeel_key = cco.cnt_ins_srtdeel_key + AND i.ins_deel_key = mmo.ins_deel_key + AND i.ins_srtdeel_key = srt.ins_srtdeel_key + AND m.mld_melding_key = mmo.mld_melding_key + AND m.mld_melding_status = ms.mld_statuses_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = md.ins_discipline_key + AND md.ins_srtdiscipline_key = isrt.ins_srtdiscipline_key + AND i.ins_srtdeel_key = srtd.ins_srtdeel_key + AND srtd.ins_srtgroep_key = srtg.ins_srtgroep_key + AND srtg.ins_discipline_key = dis.ins_discipline_key + AND ct.cnt_contract_key = cntp.cnt_contract_key + AND cntp.cnt_alg_plaats_key = ag.alg_gebouw_key + AND ag.alg_locatie_key = m.mld_alg_locatie_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