diff --git a/AA/AADS/aads.sql b/AA/AADS/aads.sql index 08f704c25..54c46bb6f 100644 --- a/AA/AADS/aads.sql +++ b/AA/AADS/aads.sql @@ -1286,6 +1286,47 @@ AS FROM aads_hv_freeze; +-- Freeze rapportage over voorgaande freezes naar DWH +CREATE OR REPLACE VIEW aads_v_dwh_hv_freeze ( + kwartaal, + eigenaar, + loc_code, + geb_code, + ver_code, + ruimte_nr, + ruimtesoort, + code, + opp, + teken_opp, + huurder_nummer, + huurder_naam, + fdc, + bezetting, + tarief_huur, + tarief_service + ) +AS + SELECT kwartaal, + eigenaar, + loc_code, + geb_code, + ver_code, + ruimte_nr, + ruimtesoort, + code, + opp, + teken_opp, + huurder_nummer, + huurder_naam, + fdc, + bezetting, + tarief_huur, + tarief_service + FROM aads_hv_freeze; + +-- en maak deze view beschikbaar voor het DWH +GRANT SELECT ON aads_v_dwh_hv_freeze TO aafm; + -- -- GRAFISCH -- diff --git a/AA/aaxx.sql b/AA/aaxx.sql index e9ecdaed9..e1cf3dd91 100644 --- a/AA/aaxx.sql +++ b/AA/aaxx.sql @@ -5951,8 +5951,8 @@ AS AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND dc.ins_controlemode_key = cm.ins_controlemode_key AND dc.prs_perslid_key = pf.prs_perslid_key(+); - - + + ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_UREN ------------------------------------------------------------------------------- diff --git a/AKZA/AKZA.SQL b/AKZA/AKZA.SQL index ee2cd103e..a5c5e38a0 100644 --- a/AKZA/AKZA.SQL +++ b/AKZA/AKZA.SQL @@ -2335,16 +2335,16 @@ AS prs_perslid p, prs_afdeling a, akza_v_kostenplaats akza_k, + -- FSN#26359: res_deel_omschrijving is per DB19 een kolom in res_deel, dus we hoeven + -- ins_deel_omschrijving er niet meer bij te halen (SELECT rsv_d.res_rsv_deel_key, - d.res_deel_omschrijving, + rd.res_deel_omschrijving, rsv_d.res_rsv_ruimte_key, ins_discipline_key, ins_discipline_omschrijving, rsv_d.res_rsv_deel_aantal aantal - FROM res_rsv_deel rsv_d, (SELECT rd.*, d.ins_deel_omschrijving res_deel_omschrijving - FROM res_deel rd, ins_deel d - WHERE rd.res_ins_deel_key = d.ins_deel_key) d, res_discipline dis - WHERE 1 = 1 AND rsv_d.res_deel_key = d.res_deel_key AND d.res_discipline_key = dis.ins_discipline_key) + FROM res_rsv_deel rsv_d, res_deel rd, res_discipline dis + WHERE rsv_d.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = dis.ins_discipline_key) akza_ea, (SELECT l.alg_locatie_key, rg.res_reservering_key, @@ -5109,11 +5109,14 @@ AS END IF; -- ReferentieKostenplaats wordt dan de persoonskostenplaats - SELECT k.prs_kostenplaats_nr + -- AKZA#28092: Als geen persoonskostenplaats, dan de referentiekostenplaats + -- (opdrachtkostenplaats) behouden -- zodat de export er niet uitklapt + -- met een "no data found". + SELECT COALESCE(k.prs_kostenplaats_nr, referentiekostenplaats) INTO referentiekostenplaats FROM prs_perslid p, prs_afdeling d, akza_v_kostenplaats k WHERE p.prs_afdeling_key = d.prs_afdeling_key - AND d.prs_kostenplaats_key = k.prs_kostenplaats_key + AND d.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND p.prs_perslid_key = meldingenrec.prs_perslid_key; END IF; @@ -8734,7 +8737,7 @@ AS BEGIN adm.systrackscript('$Workfile: AKZA.SQL $', '$Revision$', 0); END; / -BEGIN fac.registercustversion('AKZA', 28); END; +BEGIN fac.registercustversion('AKZA', 29); END; / COMMIT; SPOOL OFF; diff --git a/CSUN/CSUN.sql b/CSUN/CSUN.sql index 5075d4cfe..3d10549ab 100644 --- a/CSUN/CSUN.sql +++ b/CSUN/CSUN.sql @@ -401,7 +401,21 @@ BEGIN AND mm.prs_perslid_key_voor = sender; -- DBMS_OUTPUT.PUT_LINE('mld_stdmelding_key: ' || TO_CHAR(stdmelding)); - IF (stdmelding IS NOT NULL) THEN -- Bestaande melding + BEGIN + SELECT mld_melding_behandelaar_key + INTO behandelaar_key + FROM mld_melding m, prs_perslid p + WHERE mld_melding_key = mldkey + AND mld_melding_behandelaar_key = p.prs_perslid_key + AND p.prs_perslid_email IS NOT NULL + AND p.prs_perslid_verwijder IS NULL; + + EXCEPTION WHEN OTHERS + THEN + behandelaar_key := NULL; + END; + + IF (stdmelding IS NOT NULL) AND behandelaar_key IS NOT NULL THEN -- Bestaande melding en behandelaar is bekend. INSERT INTO mld_melding_note (mld_melding_key, mld_melding_note_omschrijving, prs_perslid_key, @@ -422,18 +436,7 @@ BEGIN -- DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.'); -- Notificatie naar behandelaar - BEGIN - SELECT mld_melding_behandelaar_key - INTO behandelaar_key - FROM mld_melding m - WHERE mld_melding_key = mldkey; - - fac.putnotificationsrtprio(null, behandelaar_key, 'MLDMAI', mldkey, 'Melding ' || mldkey || ' is door de klant aangepast.', 2, null, null, null, 2, null); - - EXCEPTION WHEN OTHERS - THEN - DBMS_OUTPUT.PUT_LINE('Geen behandelaar gevonden.'); - END; + fac.putnotificationsrtprio(null, behandelaar_key, 'MLDMAI', mldkey, 'Melding ' || mldkey || ' is door de klant aangepast.', 2, null, null, null, 2, null); -- Vlaggetjes zetten zoals mld_edit_note.asp dat doet BEGIN @@ -586,8 +589,8 @@ EXCEPTION fac.writelog ('PROCESSEMAIL', 'E', - 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')', - errormsg || ' afzender:' || pfrom); + 'Mail kon niet ingelezen worden afzender:' || pfrom || '[' || errormsg || ']', + 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; / @@ -1280,7 +1283,7 @@ IS RETURN v_waarde; - EXCEPTION WHEN OTHERS + EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; @@ -1312,77 +1315,109 @@ BEGIN LOOP BEGIN v_error_hint := 'Ophalen data voor dm: ' || rec_d.dm || ' Naam:' || rec_d.achternaam; - SELECT alg_onrgoed_key - INTO v_district_key - FROM prs_perslid p, - alg_onrgoedkenmerk aog, - alg_district d - WHERE p.prs_perslid_naam = rec_d.achternaam - AND p.prs_perslid_voorletters = rec_d.voorletters - AND COALESCE(p.prs_perslid_tussenvoegsel, '.') = COALESCE(rec_d.tussenvoegsels, '.') - AND alg_kenmerk_key = 1021 -- key van districtmanager - AND prs_perslid_key = fac.safe_to_number(alg_onrgoedkenmerk_waarde) - AND aog.alg_onrgoed_key = d.alg_district_key - AND d.alg_district_verwijder IS NULL - AND aog.alg_onrgoedkenmerk_verwijder IS NULL; + + BEGIN + SELECT alg_onrgoed_key + INTO v_district_key + FROM prs_perslid p, + alg_onrgoedkenmerk aog, + alg_district d + WHERE p.prs_perslid_naam = rec_d.achternaam + AND p.prs_perslid_voorletters = rec_d.voorletters + AND COALESCE(p.prs_perslid_tussenvoegsel, '.') = COALESCE(rec_d.tussenvoegsels, '.') + AND alg_kenmerk_key = 1021 -- key van districtmanager + AND prs_perslid_key = fac.safe_to_number(alg_onrgoedkenmerk_waarde) + AND aog.alg_onrgoed_key = d.alg_district_key + AND d.alg_district_verwijder IS NULL + AND aog.alg_onrgoedkenmerk_verwijder IS NULL; - FOR rec IN c(rec_a.accountcode, rec_d.dm) - LOOP - BEGIN - v_locatie_key := NULL; - -- Get BUD reference - v_error_hint := 'Bepalen bb referentie: ' || rec.dm; - v_bud_key := get_alg_kenmerk (1060, v_district_key); + EXCEPTION WHEN NO_DATA_FOUND THEN + fac.imp_writelog ( + p_import_key, + 'E', + 'Import locaties afgebroken, distrinctmanager niet gevonden ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ')', + v_error_hint); + END; - -- Get BB reference - v_error_hint := 'Bepalen bb referentie: ' || rec.dm; - v_bb_key := get_alg_kenmerk (1020, v_district_key); - + IF v_district_key IS NOT NULL THEN + FOR rec IN c(rec_a.accountcode, rec_d.dm) + LOOP BEGIN - v_error_hint := 'Kijk of de locatie al bestaat: ' || rec.project; - SELECT alg_onrgoed_key - INTO v_locatie_key - FROM alg_onrgoedkenmerk - WHERE alg_kenmerk_key = 1040 -- projectnummer - AND alg_onrgoedkenmerk_waarde = rec.project; - - EXCEPTION WHEN NO_DATA_FOUND - THEN - IF rec.code IS NULL THEN - v_locatie_code := rec.project; - ELSE - v_locatie_code := rec.code; - END IF; - INSERT INTO alg_locatie (alg_district_key, alg_locatie_code, alg_locatie_omschrijving) - VALUES (v_district_key, 'P' || v_locatie_code, SUBSTR(rec.omschrijving,1,50)) - RETURNING alg_locatie_key - INTO v_locatie_key; - END; - - UPDATE alg_locatie - SET alg_locatie_omschrijving = SUBSTR(rec.omschrijving,1,50), - alg_district_key = v_district_key, - alg_locatie_adres = rec.adres, - alg_locatie_postcode = rec.postcode, - alg_locatie_plaats = rec.woonplaats - WHERE alg_locatie_key = v_locatie_key; - - csun_set_kenmerk ('ALG', 1006, v_locatie_key, v_bud_key, 0); - csun_set_kenmerk ('ALG', 1007, v_locatie_key, v_bb_key, 0); - csun_set_kenmerk ('ALG', 1000, v_locatie_key, v_account_key, 0); - csun_set_kenmerk ('ALG', 1040, v_locatie_key, rec.project, 0); + v_locatie_key := NULL; + -- Get BUD reference + v_error_hint := 'Bepalen bb referentie: ' || rec.dm; + v_bud_key := get_alg_kenmerk (1060, v_district_key); + + -- Get BB reference + v_error_hint := 'Bepalen bb referentie: ' || rec.dm; + v_bb_key := get_alg_kenmerk (1020, v_district_key); - EXCEPTION WHEN OTHERS THEN - oracle_err_mes := SUBSTR (SQLERRM, 1, 150); - v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; - fac.imp_writelog ( - p_import_key, - 'E', - 'Import locaties afgebroken (' || rec.dm || '-' || rec.accountcode || '-' || rec.project || '):' || v_errormsg, - v_error_hint); - - END; - END LOOP; + BEGIN + v_error_hint := 'Kijk of de locatie al bestaat: ' || rec.project; + SELECT alg_onrgoed_key + INTO v_locatie_key + FROM alg_onrgoedkenmerk, alg_locatie + WHERE alg_kenmerk_key = 1040 -- projectnummer + AND alg_onrgoedkenmerk_waarde = rec.project + AND alg_onrgoed_key = alg_locatie_key + AND alg_locatie_verwijder IS NULL; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + -- Kijk of de locatieomschrijving al voorkomt. Als dat het geval is mogen we de + -- nieuwe locatie niet aanmaken. + SELECT count(*) + INTO v_count + FROM alg_locatie + WHERE alg_locatie_upper = UPPER(SUBSTR(rec.omschrijving,1,50)) + AND alg_locatie_verwijder IS NULL; + + IF v_count = 0 THEN + IF rec.code IS NULL THEN + v_locatie_code := rec.project; + ELSE + v_locatie_code := rec.code; + END IF; + INSERT INTO alg_locatie (alg_district_key, alg_locatie_code, alg_locatie_omschrijving) + VALUES (v_district_key, 'P' || v_locatie_code, SUBSTR(rec.omschrijving,1,50)) + RETURNING alg_locatie_key + INTO v_locatie_key; + ELSE + fac.imp_writelog ( + p_import_key, + 'E', + 'Import locaties afgebroken, locatie omschrijving bestaat al ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ' Projectnr: ' || rec.project || ')', + v_error_hint); + END IF; + END; + + IF v_locatie_key IS NOT NULL THEN + UPDATE alg_locatie + SET alg_locatie_omschrijving = SUBSTR(rec.omschrijving,1,50), + alg_district_key = v_district_key, + alg_locatie_adres = rec.adres, + alg_locatie_postcode = rec.postcode, + alg_locatie_plaats = rec.woonplaats + WHERE alg_locatie_key = v_locatie_key; + + csun_set_kenmerk ('ALG', 1006, v_locatie_key, v_bud_key, 0); + csun_set_kenmerk ('ALG', 1007, v_locatie_key, v_bb_key, 0); + csun_set_kenmerk ('ALG', 1000, v_locatie_key, v_account_key, 0); + csun_set_kenmerk ('ALG', 1040, v_locatie_key, rec.project, 0); + END IF; + + EXCEPTION WHEN OTHERS THEN + oracle_err_mes := SUBSTR (SQLERRM, 1, 150); + v_errormsg := '(ORACLE error ' || oracle_err_mes || ')'; + fac.imp_writelog ( + p_import_key, + 'E', + 'Import locaties afgebroken ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ' Projectnr: ' || rec.project || '):' || v_errormsg, + v_error_hint); + + END; + END LOOP; + END IF; EXCEPTION WHEN OTHERS THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 150); @@ -1390,7 +1425,7 @@ BEGIN fac.imp_writelog ( p_import_key, 'E', - 'Import locaties afgebroken (' || rec_d.dm || '-' || rec_a.accountcode || '):' || v_errormsg, + 'Import locaties afgebroken ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || '):' || v_errormsg, v_error_hint); END; END LOOP; @@ -1573,7 +1608,7 @@ BEGIN || v_correction); RETURN 9 * ( (5 * v_week) + v_mod - v_holidays) + v_correction; EXCEPTION - WHEN OTHERS + WHEN NO_DATA_FOUND THEN RETURN NULL; END; diff --git a/NMMS/nmms.sql b/NMMS/nmms.sql new file mode 100644 index 000000000..67daf5e25 --- /dev/null +++ b/NMMS/nmms.sql @@ -0,0 +1,332 @@ +-- Script containing customer specific configuration sql statements for NMMS: Nationaal Militair Museum +-- (c) 2011 SG|facilitor +-- $Revision$ +-- $Id$ +-- +-- Support: +31 53 4800710 +SPOOL xNMMS.LST +SET ECHO ON +-------------- + +CREATE OR REPLACE PACKAGE nmms +AS + FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER) + RETURN NUMBER; +END; + + +CREATE OR REPLACE PACKAGE BODY nmms +AS + FUNCTION get_first_melding (p_melding_key IN NUMBER, + p_index IN NUMBER) + RETURN NUMBER + AS + CURSOR c + IS + SELECT m2.mld_melding_datum van, + fac.gettrackingdate ('MLDAFM', m2.mld_melding_key) tot, + m2.mld_melding_key + FROM mld_melding m1, + mld_melding m2, + mld_stdmelding std1, + mld_stdmelding std2 + WHERE m1.mld_melding_key = p_melding_key + AND m1.mld_stdmelding_key = std1.mld_stdmelding_key + AND m2.mld_stdmelding_key = std2.mld_stdmelding_key + AND std1.prs_dienst_key = std2.prs_dienst_key + AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys + AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum + AND fac.gettrackingdate ( + 'MLDAFM', + m2.mld_melding_key); + + v_melding_key NUMBER; + l_melding_key NUMBER; + v_datum_begin DATE; + l_datum_begin DATE; + BEGIN + v_melding_key := p_melding_key; + + SELECT mld_melding_datum + INTO v_datum_begin + FROM mld_melding + WHERE mld_melding_key = p_melding_key; + + FOR rec IN c + LOOP + IF p_index < 10 + THEN + BEGIN + l_melding_key := + nmms_get_first_melding (rec.mld_melding_key, p_index + 1); + END; + + SELECT mld_melding_datum + INTO l_datum_begin + FROM mld_melding + WHERE mld_melding_key = l_melding_key; + + IF l_datum_begin < v_datum_begin + THEN + v_datum_begin := l_datum_begin; + v_melding_key := l_melding_key; + END IF; + END IF; + END LOOP; + + RETURN v_melding_key; + END; +END; +/ + +CREATE OR REPLACE VIEW nmms_v_rap_monitoring +( + html_melding, + fclt_f_afw, + q_vervolg, + indult, + respijt, + ruimte, + omschrijving, + begin, + gereed, + thtijdstip, + tht, + wht, + regime, + groep, + typekorting, + basiskorting, + variabelekorting, + uren, + kb, + prestatiekorting, + factor, + kp, + wegingsfactor +) +AS + SELECT '' + || mld_melding_key + || '' + melding, + DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast + || DECODE (mld_melding_respijt, 0, '', 'R') -- er is een respijt ingevuld + || DECODE (aantal, 1, '', 'S') -- betreft een samengestelde/overlappende melding + || DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee + || DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte + q_vervolg, + DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'), + DECODE ( + mld_melding_respijt, + 0, + NULL, + DECODE (uitvoertijdtype, + 'UREN', ROUND (mld_melding_respijt * 24, 2) || ' Uren', + TO_CHAR (mld_melding_respijt) || ' Dagen')) + respijt, + ruimte, + mld_stdmelding_omschrijving omschrijving, + TO_CHAR (t_van, 'dd-mm-yyyy hh24:mi:ss') begin, + TO_CHAR (einddatum, 'dd-mm-yyyy hh24:mi:ss') eind, + TO_CHAR (thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip, + DECODE ( + kortingtype, + 'Q', + NULL, + DECODE (uitvoertijdtype, + 'UREN', ROUND (tht * 24, 2) || ' Uren', + TO_CHAR (tht) || ' Dagen')) + tht_txt, + DECODE (kortingtype, + 'Q', TO_NUMBER (NULL), + DECODE (uitvoertijdtype, 'UREN', 24, 1) * actual) + wht, + DECODE (kortingtype, 'Q', TO_NUMBER (NULL), regime) regime, + mld_stdmeldinggroep_naam groep, + 'K' || LOWER (kortingtype) || DECODE (q_vervolg, 1, '/q') + typekorting, + DECODE (kortingtype, + 'B', mld_stdmelding_malus, + 'S', mld_stdmelding_malus, + 'Q', mld_stdmelding_malus) + basiskorting, + DECODE (kortingtype, 'B', 50, 'S', 1000) variabelekorting, + DECODE ( + telaat, + 1, + DECODE (kortingtype, + 'B', (actual - tht) * 24, + 'S', (actual - tht) * 24)) + uren, + DECODE ( + telaat, + 1, + DECODE ( + kortingtype, + 'Q', + mld_stdmelding_malus, + 'B', + mld_stdmelding_malus + + ( (TRUNC ( (actual - tht) * 24) + 1) * 50), + 'S', + mld_stdmelding_malus + + ( (TRUNC ( (actual - tht) / thtsla) + 1) * 1000), + NULL)) + kb, + DECODE (kortingtype, 'P', mld_stdmelding_malus) prestatiekorting, + DECODE (telaat, + 1, + DECODE (kortingtype, 'P', ( (actual - tht) / thtsla) + 1)) + factor, + DECODE ( + telaat, + 1, + DECODE ( + kortingtype, + 'P', + TRUNC ( + DECODE (telaat, 1, ( (actual - tht) / thtsla) + 1, NULL)) + * mld_stdmelding_malus)) + kp, + DECODE (kortingtype, + 'B', + nmms_get_ins_weegfactor (mld_melding_key, wegingsfactor)) + wegingsfactor + FROM (SELECT m.aantal, + m.mld_melding_key, + m.mld_melding_indult, + q.vervolg q_vervolg, + COALESCE (m.mld_melding_respijt, 0) mld_melding_respijt, + mld_stdmelding_omschrijving, + t_van, + DECODE (SIGN (mld_melding_uitvoertijd - 1), + -1, 'UREN', + 'DAGEN') + uitvoertijdtype, + t_tot einddatum, + mld_melding_einddatum_std thtijdstip, + decode(q.vervolg, null, mld_melding_uitvoertijd, 0) + mld_melding_respijt tht, + mld_melding_uitvoertijd thtsla, + mld_stdmeldinggroep_naam, + nmms_get_regime (std.mld_stdmelding_key, + m.mld_alg_onroerendgoed_keys, + NULL) + regime, + UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)) kortingtype, -- de meldingsgroep bevat het type storing + mld_stdmelding_malus, + alg_ruimte_nr || '-' || alg_ruimte_omschrijving ruimte, + mld.getactualuitvoer ( -- bepaal de actuele doorlooptijd a.d.h.v. de samengestelde melding + t_van, + COALESCE(t_tot, SYSDATE), + m.mld_stdmelding_key, + m.mld_melding_spoed, + m.mld_alg_onroerendgoed_keys, + -- selecteer het object van de melding met de kortste doorlooptijd + (select max(d1.ins_deel_key) from ins_deel d1, mld_melding_object mo1, ins_deel d2, mld_melding_object mo2 + where m.mld_melding_key = mo1.mld_melding_key + and mo1.ins_deel_key = d1.ins_deel_key + and m.mld_melding_key = mo2.mld_melding_key + and mo2.ins_deel_key = d2.ins_deel_key + and d1.ins_deel_uitvoertijd <= d2.ins_deel_uitvoertijd )) actual, + ( SELECT count(mb.mld_melding_key) aantal -- kijk of er op het moment van de melding er een beschikbaarheidsstoring was. + FROM mld_melding mb, + mld_stdmelding std_b + WHERE (mb.mld_melding_datum BETWEEN m.t_van + AND coalesce(m.t_tot, sysdate) + OR fac.gettrackingdate ('MLDAFM', mb.mld_melding_key) BETWEEN m.t_van + AND coalesce(m.t_tot, sysdate)) + AND mb.mld_alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys + AND mb.mld_stdmelding_key = std_b.mld_stdmelding_key + AND std_b.mld_stdmeldinggroep_key = 63 -- beschikbaarheid + AND std.mld_stdmeldinggroep_key <> 63) aantal_beschikb, -- beschikbaarheid + -- vervolgmelding op een inspectie zijn per definitie te laat + -- inspecties zelf zijn te laat als de geplande einddatum verstreken is. + -- anders geldt de normale formule + CASE COALESCE(q.vervolg, 0) + WHEN 1 THEN 1 + ELSE + DECODE ( + UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)), + 'Q', + SIGN(t_tot + - mld_melding_einddatum), + SIGN(mld.getactualuitvoer (m.mld_melding_key) + - (mld_melding_uitvoertijd + mld_melding_respijt))) + END telaat, + alg_srtruimte_prijs4 wegingsfactor, + -- is de tijd van de melding aangepast? + (SELECT COUNT ( * ) + FROM fac_tracking t, fac_srtnotificatie sn + WHERE fac_tracking_refkey = m.mld_melding_key + AND t.fac_srtnotificatie_key = + sn.fac_srtnotificatie_key + AND sn.fac_srtnotificatie_code = 'MLDUPD' + AND (fac_tracking_oms LIKE '%Start :%' + OR fac_tracking_oms LIKE '%Afgemeld:%')) + antedateren + FROM ( -- selecteer de begin en eindtijd van overlappende meldingen van dezelfde dienst op dezelfde ruimte + -- + SELECT m_start, + count(mld_melding_key) aantal, + MIN (mld_melding_datum) t_van, + MAX (t_tot) t_tot, + MIN (mld_melding_key) mld_melding_key, + MIN (mld_stdmelding_key) mld_stdmelding_key, + mld_alg_onroerendgoed_keys mld_alg_onroerendgoed_keys, + SUM (mld_melding_respijt) mld_melding_respijt, + MAX (mld_melding_indult) mld_melding_indult, + MIN (mld_melding_uitvoertijd) mld_melding_uitvoertijd, + MIN (mld_melding_einddatum_std) mld_melding_einddatum_std, + MAX (mld_melding_einddatum) mld_melding_einddatum, + MIN (mld_melding_spoed) mld_melding_spoed + FROM (SELECT nmms.get_first_melding (mld_melding_key, 1) m_start, + fac.gettrackingdate ('MLDAFM', m.mld_melding_key) t_tot, + m.* + FROM mld_melding m + WHERE m.mld_melding_parentkey IS NULL) -- we nemen geen dubbele meldingen mee + GROUP BY m_start, mld_alg_onroerendgoed_keys) m, + mld_stdmeldinggroep stdg, + alg_v_ruimte_gegevens rg, + alg_srtruimte sr, + mld_stdmelding std, + (SELECT m1.mld_melding_key, + DECODE (m2.mld_melding_key, NULL, 0, 1) vervolg + FROM mld_melding m1, + mld_stdmelding std1, + mld_stdmeldinggroep stdg1, + mld_melding m2, + mld_stdmelding std2, + mld_stdmeldinggroep stdg2 + WHERE m1.mld_melding_start_key = m2.mld_melding_key + AND m2.mld_stdmelding_key = std2.mld_stdmelding_key + AND std2.mld_stdmeldinggroep_key = + stdg2.mld_stdmeldinggroep_key + AND m1.mld_stdmelding_key = std1.mld_stdmelding_key + AND std1.mld_stdmeldinggroep_key = + stdg1.mld_stdmeldinggroep_key + AND UPPER ( + SUBSTR (stdg2.mld_stdmeldinggroep_naam, 1, 1)) = + 'Q' + AND UPPER ( + SUBSTR (stdg1.mld_stdmeldinggroep_naam, 1, 1)) <> + 'Q') q + WHERE mld_stdmelding_malus IS NOT NULL + AND m.mld_melding_key > 100007 -- tijdelijk om oude meldingen niet te tonen + AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+) + AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+) + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND m.mld_melding_key = q.mld_melding_key(+) + AND std.mld_stdmeldinggroep_key = + stdg.mld_stdmeldinggroep_key(+)) g; + + +BEGIN adm.systrackscript('$Workfile: nmms.sql $', '$Revision$', 0); END; +/ +BEGIN fac.registercustversion('NMMS', 1); END; +/ +COMMIT; +spool off diff --git a/NYBU/nybu.sql b/NYBU/nybu.sql index 71d9e430f..dde4df37d 100644 --- a/NYBU/nybu.sql +++ b/NYBU/nybu.sql @@ -12,32 +12,47 @@ SPOOL xnybu.lst CREATE OR REPLACE PACKAGE nybu AS - FUNCTION getPeriodeNaam(p_periode IN VARCHAR2) + FUNCTION getPeriodeNaam(p_periode IN VARCHAR2, + p_lang IN VARCHAR2) RETURN VARCHAR2; END nybu; / CREATE OR REPLACE PACKAGE BODY nybu AS - FUNCTION getPeriodeNaam(p_periode IN VARCHAR2) + FUNCTION getPeriodeNaam(p_periode IN VARCHAR2, + p_lang IN VARCHAR2) RETURN VARCHAR2 IS v_naam VARCHAR2(20); BEGIN - SELECT DECODE( - SUBSTR(p_periode, 5, 2), - '01', 'January', - '02', 'February', - '03', 'March', - '04', 'April', - '05', 'May', - '06', 'June', - '07', 'July', - '08', 'August', - '09', 'September', - '10', 'October', - '11', 'November', - '12', 'December' + SELECT DECODE(p_lang, + 'NL', DECODE( SUBSTR(p_periode, 5, 2), + '01', 'januari', + '02', 'februari', + '03', 'maart', + '04', 'april', + '05', 'mei', + '06', 'juni', + '07', 'juli', + '08', 'augustus', + '09', 'september', + '10', 'oktober', + '11', 'november', + '12', 'december'), + DECODE( SUBSTR(p_periode, 5, 2), + '01', 'January', + '02', 'February', + '03', 'March', + '04', 'April', + '05', 'May', + '06', 'June', + '07', 'July', + '08', 'August', + '09', 'September', + '10', 'October', + '11', 'November', + '12', 'December') ) || ' ' || SUBSTR(p_periode, 1, 4) INTO v_naam FROM DUAL; @@ -2052,6 +2067,8 @@ AS c.cnt_contract_looptijd_tot, -- eind, c.cnt_prs_bedrijf_key, c.cnt_contract_versie, + kp.prs_kostenplaats_nr kpn, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kpngrp, r.alg_ruimte_key, g.alg_gebouw_naam||' '||r.alg_ruimte_nr kamer, p.prs_perslid_key, @@ -2085,7 +2102,10 @@ AS '1', 0, fac.safe_to_number(borgbedr.cnt_kenmerkcontract_waarde)) borg_tebetalen, - fac.safe_to_number(borgbedr.cnt_kenmerkcontract_waarde) borg_betaald, + DECODE(borgbet.cnt_kenmerkcontract_waarde, + '1', fac.safe_to_number(borgbedr.cnt_kenmerkcontract_waarde), + 0) + borg_betaald, fac.safe_to_number(schade.cnt_kenmerkcontract_waarde) schadebedrag, DECODE(fac.safe_to_number(vooruit.cnt_kenmerkcontract_waarde), NULL, 1, @@ -2148,7 +2168,9 @@ AS alg_verdieping v, alg_gebouw g, alg_srtruimte sr, - prs_afdeling a + prs_afdeling a, + prs_kostenplaats kp, + prs_kostenplaatsgrp kg WHERE c.ins_discipline_key = 55 AND c.cnt_contract_verwijder IS NULL AND huurder.cnt_contract_key = c.cnt_contract_key @@ -2174,6 +2196,8 @@ AS AND refund.cnt_contract_key(+) = c.cnt_contract_key AND sr.alg_srtruimte_key = r.alg_srtruimte_key AND a.prs_afdeling_key = p.prs_afdeling_key + AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key + AND kg.prs_kostenplaatsgrp_key(+) = kp.prs_kostenplaatsgrp_key AND c.cnt_contract_looptijd_tot >= SYSDATE ) a LEFT OUTER JOIN (SELECT kamer.cnt_contract_key, @@ -2251,6 +2275,8 @@ AS c_srtcnt_office, 'Office') betreft, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, + kp.prs_kostenplaats_nr kpn, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kpngrp, p.prs_perslid_key, p.prs_perslid_naam, pf.prs_perslid_naam_full, @@ -2277,10 +2303,14 @@ AS WHERE prs_kenmerk_key = c_km_coda_nr AND prs_kenmerklink_verwijder IS NULL) codanr, prs_kostenplaats k, + prs_kostenplaats kp, + prs_kostenplaatsgrp kg, alg_v_ruimte_gegevens rg WHERE huurder.cnt_contract_key(+) = c.cnt_contract_key AND pnummer.cnt_contract_key(+) = c.cnt_contract_key AND ruimte.cnt_contract_key(+) = c.cnt_contract_key + AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key + AND kg.prs_kostenplaatsgrp_key(+) = kp.prs_kostenplaatsgrp_key AND p.prs_perslid_key(+) = fac.safe_to_number(huurder.cnt_kenmerkcontract_waarde) AND pf.prs_perslid_key(+) = p.prs_perslid_key AND codanr.prs_link_key(+) = p.prs_perslid_key @@ -2320,7 +2350,7 @@ BEGIN FOR cntr IN 1..rec.aantal_periodes LOOP v_curPeriode := TO_CHAR(ADD_MONTHS(TO_DATE(p_periode, 'YYYYMM'), cntr-1), 'YYYYMM'); - v_periodeNaam := nybu.getPeriodeNaam(v_curPeriode); + v_periodeNaam := nybu.getPeriodeNaam(v_curPeriode, 'EN'); --- HUURPRIJS --- v_errormsg := 'Archiefregel huurprijs aanmaken'; @@ -2343,8 +2373,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr||' '||v_periodeNaam, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2376,8 +2406,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr||' '||v_periodeNaam, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2411,8 +2441,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr||' '||v_periodeNaam, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2447,8 +2477,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr||' '||v_periodeNaam, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2519,8 +2549,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19140', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2579,8 +2609,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19140', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2615,8 +2645,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2652,8 +2682,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.kamer, rec.alg_ruimte_key, oms.fac_usrdata_omschr, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', btw.fac_usrdata_omschr, fac.safe_to_number(btw.fac_usrdata_code), @@ -2716,8 +2746,8 @@ BEGIN rec.cnt_contract_nummer_intern, rec.cnt_contract_key, rec.alg_ruimte_aanduiding, rec.alg_ruimte_key, sk.cnt_srtkenmerk_omschrijving||' '||v_periodeNaam, - 'K91210', - 'P991210', + rec.kpngrp, + rec.kpn, '19010', sk.cnt_srtkenmerk_dimensie, fac.safe_to_number(ud.fac_usrdata_code), @@ -2810,7 +2840,7 @@ AS CURSOR c_kpn IS SELECT deb_nr, achternaam, - SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 6) kpn_grp, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kpn_grp, kpn_code_afd, kpn_code_proj, SUM(bedrag/(1+btw_perc/100)) bedrag @@ -2840,7 +2870,7 @@ BEGIN -- Deze export gaat over de huur voor volgende maand (periode = huidige maand + 1) v_run := TO_DATE(p_applrun, 'DD-MM-YYYY HH24:MI:SS'); v_periode := TO_CHAR(ADD_MONTHS(v_run, 1), 'YYYYMM'); - v_periodeNaam := nybu.getPeriodeNaam(v_periode); + v_periodeNaam := nybu.getPeriodeNaam(v_periode, 'EN'); -- Is deze periode al geëxporteerd? -- TODO: Niks doen, of wissen en nog een keer draaien? @@ -3097,7 +3127,7 @@ AS CURSOR c_kpn IS SELECT deb_nr, achternaam, - SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 6) kpn_grp, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kpn_grp, kpn_code_afd, kpn_code_proj, SUM(bedrag/(1+btw_perc/100)) bedrag @@ -3127,7 +3157,7 @@ BEGIN -- Deze export gaat over de huur voor volgende maand (periode = huidige maand + 1) v_run := TO_DATE(p_applrun, 'DD-MM-YYYY HH24:MI:SS'); v_periode := TO_CHAR(ADD_MONTHS(v_run, 1), 'YYYYMM'); - v_periodeNaam := nybu.getPeriodeNaam(v_periode); + v_periodeNaam := nybu.getPeriodeNaam(v_periode, 'EN'); -- Is deze periode al geëxporteerd? -- TODO: Niks doen, of wissen en nog een keer draaien? @@ -3474,7 +3504,7 @@ BEGIN SELECT MAX(periode) INTO v_periode FROM nybu_huur_archief; - v_periodeNaam := nybu.getPeriodeNaam(v_periode); + v_periodeNaam := nybu.getPeriodeNaam(v_periode, 'EN'); -- Mutaties over periode n komen op factuur voor periode n+1 v_next_period := TO_CHAR(ADD_MONTHS(TO_DATE(v_periode, 'YYYYMM'), 1), 'YYYYMM'); @@ -4154,9 +4184,538 @@ AS ); +------- KOPPELING CODA (Reserveringen) ----------------------------------------- + +-- Externe reserveringen die moeten worden doorbelast +-- discipline 581 Verbruiksartikel Inhuur Voorzieningen +-- discipline 462 Verbruiksartikel Hotelkamers +-- res_kenmerk 201 Company +-- fac_usrtab 42 CODA BTW-tarieven +CREATE OR REPLACE VIEW nybu_v_res_factuur_extern +AS + SELECT COALESCE(b.prs_bedrijf_naam, k.prs_kostenplaats_omschrijving) klant, + xyz.res_rsv_ruimte_van, + xyz.prs_kostensoort_oms grootboek, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kostenplaats, + b.prs_leverancier_nr deb_nr, + k.prs_kostenplaats_nr proj, + NULL adm, + xyz.btw, + btwc.fac_usrdata_omschr btw_code, + xyz.res_reservering_key res_key, + xyz.res_rsv_ruimte_volgnr res_volgnr, + kref.res_kenmerkreservering_waarde referentie, + xyz.reservering, + xyz.res_rsv_ruimte_key, + DECODE(kref.res_kenmerkreservering_waarde, + NULL,'', + kref.res_kenmerkreservering_waarde||' ') + || xyz.res_rsv_ruimte_omschrijving descr, + xyz.aantal, + xyz.omschrijving, + xyz.soort, + xyz.prijs prijs_ex, + ROUND(xyz.prijs * (1 + xyz.btw/100), 2) prijs_inc + FROM ( SELECT 'ruimte' soort, + rr.*, + ks.prs_kostensoort_oms, + 21 btw, + rr.res_reservering_key||'/' + || rr.res_rsv_ruimte_volgnr reservering, + 1 aantal, + r.res_ruimte_nr omschrijving, + res.getruimteprijs(rr.res_rsv_ruimte_key) prijs + FROM res_rsv_ruimte rr, + res_ruimte_opstelling ro, + res_ruimte r, + res_discipline di, + prs_kostensoort ks + WHERE res.getruimteprijs(rr.res_rsv_ruimte_key) <> 0 + AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key + AND r.res_ruimte_key = ro.res_ruimte_key + AND di.ins_discipline_key = r.res_discipline_key + AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key + UNION ALL + SELECT 'artikel' soort, + rr.*, + ks.prs_kostensoort_oms, + COALESCE(a.res_artikel_btw, 0) btw, + rr.res_reservering_key||'/' + || rr.res_rsv_ruimte_volgnr reservering, + ra.res_rsv_artikel_aantal aantal, + a.res_artikel_omschrijving omschrijving, + res.getartikelprijs(ra.res_rsv_artikel_key) prijs + FROM res_rsv_ruimte rr, + res_rsv_artikel ra, + res_artikel a, + res_discipline di, + prs_kostensoort ks + WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND res.getartikelprijs(ra.res_rsv_artikel_key) <> 0 + AND a.res_artikel_key = ra.res_artikel_key + AND di.ins_discipline_key = a.res_discipline_key + AND di.ins_discipline_key IN (581, 462) + AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key + UNION ALL + SELECT 'deel' soort, + rr.*, + ks.prs_kostensoort_oms, + 21 btw, + rr.res_reservering_key||'/' + || rr.res_rsv_ruimte_volgnr reservering, + rd.res_rsv_deel_aantal aantal, + d.res_deel_omschrijving, + res.getdeelprijs(rd.res_rsv_deel_key) prijs + FROM res_rsv_ruimte rr, + res_rsv_deel rd, + res_deel d, + res_discipline di, + prs_kostensoort ks + WHERE rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND d.res_deel_key = rd.res_deel_key + AND res.getdeelprijs(rd.res_rsv_deel_key) <> 0 + AND di.ins_discipline_key = d.res_discipline_key + AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key) xyz, + prs_kostenplaats k, + prs_kostenplaatsgrp kg, + (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k + WHERE k.res_srtkenmerk_key = 121 AND kw.res_kenmerk_key = k.res_kenmerk_key + AND kw.res_kenmerkwaarde_verwijder IS NULL + AND k.res_kenmerk_verwijder IS NULL) kref, + (SELECT * FROM res_kenmerkwaarde WHERE res_kenmerk_key = 201 + AND res_kenmerkwaarde_verwijder IS NULL) comp, + prs_bedrijf b, + (SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 42) btwc + WHERE k.prs_kostenplaats_extern = 1 + AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key + AND xyz.prs_kostenplaats_key = k.prs_kostenplaats_key + AND xyz.res_rsv_ruimte_dirtlevel = 0 + AND kref.res_rsv_ruimte_key(+) = xyz.res_rsv_ruimte_key + AND comp.res_rsv_ruimte_key(+) = xyz.res_rsv_ruimte_key + AND b.prs_bedrijf_key(+) = fac.safe_to_number(comp.res_kenmerkreservering_waarde) + AND fac.safe_to_number(btwc.fac_usrdata_code) = xyz.btw + AND ( ( xyz.res_rsv_ruimte_verwijder IS NULL + AND xyz.res_status_bo_key = 5) + OR ( xyz.res_rsv_ruimte_verwijder IS NOT NULL + AND xyz.res_status_fo_key = 4) ); + +-- Genereert exportbestand voor CODA over externe en interne reserveringen +-- Voor externe reserveringen worden factuurregels gegenereerd, voor interne doorbelastingsregels. +-- Beide soorten komen in één bestand, met een scheidingsregel ertussen. +CREATE OR REPLACE PROCEDURE nybu_select_res_coda ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) +AS + v_aanduiding VARCHAR2 (200); + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + -- Individuele facturen voor debiteuren; ook voor sommatieregel met totaalbedrag + -- Bedragen zijn incl BTW + CURSOR c_deb + IS + SELECT COALESCE(deb_nr, klant) deb_nr, + TO_CHAR(res_rsv_ruimte_van, 'YYYYMM') periode, + kostenplaats, proj, + SUM(prijs_inc) bedrag + FROM nybu_v_res_factuur_extern + GROUP BY deb_nr, klant, TO_CHAR(res_rsv_ruimte_van, 'YYYYMM'), kostenplaats, proj + ORDER BY deb_nr, klant; + + -- Factuurregels voor deze factuur + CURSOR regels (in_deb_nr VARCHAR2, in_periode VARCHAR2) + IS + SELECT * + FROM nybu_v_res_factuur_extern + WHERE COALESCE(deb_nr, klant) = in_deb_nr + AND TO_CHAR(res_rsv_ruimte_van, 'YYYYMM') = in_periode; + + -- Individuele facturen voor interne kostenplaatsen; ook voor sommatieregel met totaalbedrag + -- Bedragen zijn excl BTW + CURSOR c_intern + IS + WITH xyz + AS + (SELECT rr.res_rsv_ruimte_key, + rr.res_reservering_key, + rr.res_rsv_ruimte_volgnr, + rr.res_rsv_ruimte_omschrijving, + rr.res_rsv_ruimte_noshow, + rr.res_rsv_ruimte_van, + rr.res_rsv_ruimte_tot, + k.prs_kostenplaats_key, + k.prs_kostenplaats_nr, + k.prs_kostenplaats_omschrijving, + kg.prs_kostenplaatsgrp_key, + kg.prs_kostenplaatsgrp_oms, + di.ins_discipline_omschrijving oms, + res.getruimteprijs(rr.res_rsv_ruimte_key) prijs + FROM res_rsv_ruimte rr, + prs_kostenplaats k, + prs_kostenplaatsgrp kg, + res_ruimte_opstelling ro, + res_ruimte r, + res_discipline di + WHERE COALESCE(k.prs_kostenplaats_extern, 0) = 0 + AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key + AND ( ( rr.res_rsv_ruimte_verwijder IS NULL + AND rr.res_status_bo_key = 5) + OR ( res_rsv_ruimte_verwijder IS NOT NULL + AND res_status_fo_key = 4) ) + AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key + AND res.getruimteprijs(rr.res_rsv_ruimte_key) > 0 + AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key + AND r.res_ruimte_key = ro.res_ruimte_key + AND di.ins_discipline_key = r.res_discipline_key + ) + SELECT '1' nummer, + '' adm, + ks.prs_kostensoort_oms grootboek, + SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) kostenplaats, + k.prs_kostenplaats_nr project, + NULL medewerker, + b.totaalprijs bedrag, + CASE + WHEN b.totaalprijs < 0 THEN 'D' + WHEN b.totaalprijs >= 0 THEN 'C' + END dc, + 'Zaalhuur '||nybu.getPeriodeNaam(TO_CHAR(SYSDATE, 'YYYYMM'), 'NL' ) regelomschrijving + FROM prs_kostensoort ks, + prs_kostenplaats k, + prs_kostenplaatsgrp kg, + (SELECT SUM(prijs) totaalprijs FROM xyz) b + WHERE ks.prs_kostensoort_oms = '76015' + AND k.prs_kostenplaats_key = ks.prs_kostenplaats_key + AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key + UNION ALL + SELECT '1' nummer, + '' adm, + '56015' grootboek, + SUBSTR(prs_kostenplaatsgrp_oms, 1, 7) kostenplaats, + prs_kostenplaats_nr project, + NULL medewerker, + SUM(prijs) bedrag, + CASE + WHEN SUM(prijs) < 0 THEN 'C' + WHEN SUM(prijs) >= 0 THEN 'D' + END dc, + 'Zaalhuur '||nybu.getPeriodeNaam(TO_CHAR(res_rsv_ruimte_van, 'YYYYMM'), 'NL' ) + FROM xyz + GROUP BY prs_kostenplaatsgrp_oms, prs_kostenplaats_nr, TO_CHAR(res_rsv_ruimte_van, 'YYYYMM') + ORDER BY grootboek DESC; + + v_teller NUMBER; + v_rap_count NUMBER; + v_periode VARCHAR(6); + v_periodeNaam VARCHAR2(20); +BEGIN + v_teller := 0; + v_rap_count := 0; + + v_aanduiding := 'Init'; + v_errormsg := 'Periode bepalen'; + + -- Deze export gaat over de maand-van-de-meest-recente-reserveringsdatum. + SELECT TO_CHAR( MAX(res_rsv_ruimte_van), 'YYYYMM') + INTO v_periode + FROM nybu_v_res_factuur_extern; + v_periodeNaam := nybu.getPeriodeNaam(v_periode, 'NL' ); + + DELETE imp_log + WHERE imp_log_applicatie = p_applname; + DELETE fac_rapport + WHERE fac_rapport_node = p_applname; + + -- Genereer headerregel + INSERT INTO fac_rapport + (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel, + fac_rapport_soort) + VALUES + (p_applname, + v_rap_count, + '"NUMMER";"ADM";"GROOTBK";"DEB / KPL";"PROJ";"BEDRAG (INCL BTW)";"D/C";"BTW";"DATUM (DD-MM) + OMSCHRIJVING";"(EXT REF 2)";"(EXT REF 3)";"KLANTREFERENTIE (EXT REF 1)";"COMMENTAAR (EXT REF 4)";"EXTRA VELD (EXT REF 5)";"REGELTYPE";"DOCNR"', + 0); + + -- Genereer sommatie- en specificatieregels voor debiteuren + FOR rec IN c_deb + LOOP + v_aanduiding := v_teller||': '||rec.deb_nr||' ('||rec.periode||')'; + v_errormsg := 'Sommatieregel aanmaken'; + v_teller := v_teller + 1; + v_rap_count := v_rap_count + 1; + + -- Sommatieregel + INSERT INTO fac_rapport + (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel, + fac_rapport_soort) + VALUES + (p_applname, + v_rap_count, + v_teller ||';'|| -- nummer + '10;' || -- adm + '13000;' || -- grootbk + rec.deb_nr ||';'|| -- deb/kpl + ';' || -- proj + TRIM( TO_CHAR( ABS(rec.bedrag), + '99999999D99', + 'NLS_NUMERIC_CHARACTERS=,.') ) ||';'|| -- bedrag + CASE + WHEN rec.bedrag < 0 THEN 'C;' + WHEN rec.bedrag >= 0 THEN 'D;' + END || -- d/c + ';' || -- btw + SUBSTR('Zaalhuur '||nybu.getPeriodeNaam(rec.periode, 'NL' ), + 1, 36) ||';'|| -- datum + omschrijving + rec.proj ||';'|| -- ext ref 2 + ';' || -- ext ref 3 + rec.kostenplaats ||';'|| -- klantreferentie (ext ref 1) + ';' || -- commentaar (ext ref 4) + ';' || -- extra veld (ext ref 5) + 'Summary;' || -- regeltype + '', -- docnr + 0); + + -- Specificatieregels + FOR reg IN regels ( rec.deb_nr, rec.periode ) + LOOP + v_errormsg := 'Specificatieregel aanmaken'; + v_rap_count := v_rap_count + 1; + INSERT INTO fac_rapport + (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel, + fac_rapport_soort) + VALUES + (p_applname, + v_rap_count, + v_teller ||';'|| -- nummer + '12;' || -- adm + reg.grootboek ||';'|| -- grootbk + reg.kostenplaats ||';'|| -- deb/kpl + reg.proj ||';'|| -- proj + TRIM( TO_CHAR( ABS(reg.prijs_inc), + '99999999D99', + 'NLS_NUMERIC_CHARACTERS=,.') ) ||';'|| -- bedrag + CASE + WHEN reg.prijs_inc < 0 THEN 'D;' + WHEN reg.prijs_inc >= 0 THEN 'C;' + END || -- d/c + reg.btw_code ||';'|| -- btw + '"' || SUBSTR( TO_CHAR(reg.res_rsv_ruimte_van, 'DD-MM ') || + DECODE(reg.soort, + 'ruimte', reg.omschrijving, + reg.aantal||'x '||reg.omschrijving), + 1, 36) ||'";'|| -- datum + omschrijving + ';' || -- ext ref 2 + ';' || -- ext ref 3 + DECODE(reg.referentie, + NULL, ';', + '"'||reg.referentie||'";') || -- klantreferente (ext ref 1) + '"Info: Sales &'||' Events 0346-291544";'|| -- commentaar (ext ref 4) + '"Periode: '|| + nybu.getPeriodeNaam(TO_CHAR(reg.res_rsv_ruimte_van, 'YYYYMM'), + 'NL' ) ||'";'|| -- extra veld (ext ref 5) + 'Analysis;' || -- regeltype + '', -- docnr + 0); + END LOOP; + + END LOOP; + + -- Scheidingsregel + v_errormsg := 'Scheidingsregel aanmaken'; + v_rap_count := v_rap_count + 1; + INSERT INTO fac_rapport + (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel, + fac_rapport_soort) + VALUES + (p_applname, + v_rap_count, + '"Nummer";"Adm.";"Grootboek";"Kostenplaats";"Project";"Medewerker";"Bedrag";"D/C";"Regelomschrijving"', + 0); + + v_teller := 0; + + -- Genereer regels voor interne kostenplaatsen + -- Cursor bevat één tegenboekingsregel en per kostenplaats+periode één sommatieregel + FOR rec IN c_intern + LOOP + v_aanduiding := v_teller||': '||rec.project||'/'||rec.regelomschrijving; + v_errormsg := 'Interne boekingsregel aanmaken'; + v_rap_count := v_rap_count + 1; + + INSERT INTO fac_rapport + (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel, + fac_rapport_soort) + VALUES + (p_applname, + v_rap_count, + rec.nummer ||';'|| + rec.adm ||';'|| + rec.grootboek ||';'|| + rec.kostenplaats ||';'|| + rec.project ||';'|| + rec.medewerker ||';'|| + TRIM( TO_CHAR( ABS(rec.bedrag), + '99999999D99', + 'NLS_NUMERIC_CHARACTERS=,.') ) ||';'|| + rec.dc ||';'|| + '"' || SUBSTR(rec.regelomschrijving, 1, 36) || '"', + 0); + + END LOOP; + + fac.writelog ( + p_applname, + 'S', + 'Factuurregels gegenereerd', + 'Periode '||v_periodeNaam); + + COMMIT; + +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.writelog ( + p_applname, + 'E', + v_aanduiding || v_errormsg, + 'Onbekende fout!'); + COMMIT; +END nybu_select_res_coda; +/ + +CREATE OR REPLACE VIEW nybu_v_export_res_coda +AS + SELECT fac_rapport_regel result, + fac_rapport_volgnr result_order + FROM fac_rapport + WHERE fac_rapport_node = 'RES_CODA' + ORDER BY fac_rapport_volgnr; + +-- Zet status van de met RES_CODA geëxporteerde reserveringen op Verwerkt. +CREATE OR REPLACE PROCEDURE nybu_export_res_verwerk ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) +AS + v_aanduiding VARCHAR2 (200); + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + -- Alle doorbelaste rsv_ruimtes + CURSOR c_rsv + IS + SELECT DISTINCT res_rsv_ruimte_key, reservering + FROM nybu_v_res_factuur_extern + UNION ALL + SELECT DISTINCT rr.res_rsv_ruimte_key, + rr.res_reservering_key||'/'||rr.res_rsv_ruimte_volgnr volgnr + FROM res_rsv_ruimte rr, + prs_kostenplaats k + WHERE COALESCE(k.prs_kostenplaats_extern, 0) = 0 + AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key + AND ( ( rr.res_rsv_ruimte_verwijder IS NULL + AND rr.res_status_bo_key = 5) + OR ( res_rsv_ruimte_verwijder IS NOT NULL + AND res_status_fo_key = 4) ); + + v_periode VARCHAR(6); + v_periodeNaam VARCHAR2(20); +BEGIN + v_aanduiding := 'Init'; + v_errormsg := 'Periode bepalen'; + + -- Deze export gaat over de maand-van-de-meest-recente-reserveringsdatum. + SELECT TO_CHAR( MAX(res_rsv_ruimte_van), 'YYYYMM') + INTO v_periode + FROM nybu_v_res_factuur_extern; + v_periodeNaam := nybu.getPeriodeNaam(v_periode, 'NL' ); + + DELETE imp_log + WHERE imp_log_applicatie = p_applname; + + FOR rec IN c_rsv + LOOP + v_aanduiding := 'Reservering '||rec.reservering||' ('||rec.res_rsv_ruimte_key||')'; + + v_errormsg := 'Verbruiksartikelen verwerken'; + UPDATE res_rsv_artikel + SET res_status_bo_key = 6 + WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; + + v_errormsg := 'Voorzieningen verwerken'; + UPDATE res_rsv_deel + SET res_status_bo_key = 6 + WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; + + v_errormsg := 'Ruimte verwerken'; + UPDATE res_rsv_ruimte + SET res_status_bo_key = 6 + WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; + + fac.writelog (p_applname, 'I', + 'Reservering verwerkt', + rec.reservering); + + fac.trackaction ('RESVER', + rec.res_rsv_ruimte_key, + NULL, + NULL, + 'Reservering doorbelast'); + END LOOP; + fac.writelog (p_applname, 'S', + 'Reserveringen verwerkt', + 'Periode '||v_periodeNaam); + COMMIT; + +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.writelog ( + p_applname, + 'E', + v_aanduiding || v_errormsg, + 'Onbekende fout!'); + COMMIT; + +END nybu_export_res_verwerk; +/ + + ------- Rapportages Reserveringen ---------------------------------------------- -- Backoffice-looplijst voor General Services / schoonmaak +-- NYBU#27920: Catalogus "Catering room" (key 242) wegfilteren CREATE OR REPLACE VIEW nybu_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, @@ -4180,7 +4739,9 @@ AS 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 r.res_discipline_key != 242 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; -- Overzicht van reserveringen voor de komende 7 dagen die vandaag toegevoegd/gewijzigd zijn (tbv backoffice). @@ -4213,6 +4774,309 @@ AS AND TRUNC(rr.res_rsv_ruimte_van) BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE)+7; +CREATE OR REPLACE VIEW nybu_v_rap_res_mut_events +AS + -- Verwijderde reserveringen + SELECT ROUND(fac.safe_to_number(SYSDATE-t.fac_tracking_datum),5) || rr.res_reservering_key||'/'||res_rsv_ruimte_volgnr hide_f_srt, + TO_CHAR(t.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_datum, + DECODE( fac.safe_to_number(TRUNC(SYSDATE)-TRUNC(t.fac_tracking_datum) ), + 0, TO_CHAR(t.fac_tracking_datum, 'HH24:MI'), + TO_CHAR(t.fac_tracking_datum, 'DD-MM-YYYY HH24:MI') ) + tijd, + pf.prs_perslid_naam_full door, + 'Verwijderd' fclt_f_actie, + '' + || rr.res_reservering_key||'/'||res_rsv_ruimte_volgnr || '' + html_reservering, + sf.res_status_fo_omschrijving fclt_f_status, + rr.res_rsv_ruimte_omschrijving omschrijving, + COALESCE(t.fac_tracking_oms, lx.oms) logtekst, + NULL fclt_f_voorziening + FROM fac_tracking t, + fac_srtnotificatie sn, + res_rsv_ruimte rr, + prs_v_perslid_fullnames pf, + res_status_fo sf, + (SELECT fac_locale_xsl_label, COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) oms + FROM fac_locale_xsl + WHERE fac_locale_xsl_label LIKE 'lcl_res_is_%' + AND fac_locale_xsl_lang = lcl.getuserlanguage() ) lx + WHERE sn.fac_srtnotificatie_code = 'RESDEL' + AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND lx.fac_locale_xsl_label(+) = 'lcl_res_is_'||LOWER(sn.fac_srtnotificatie_code) + AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey + AND pf.prs_perslid_key = t.prs_perslid_key + AND sf.res_status_fo_key = rr.res_status_fo_key + AND TRUNC(fac_tracking_datum) >= TRUNC(SYSDATE-61) + UNION ALL + -- Mutaties/verwijdering hotelkamers + inhuur voorzieningen + SELECT ROUND(fac.safe_to_number(SYSDATE-t.fac_tracking_datum),5) || rr.res_reservering_key||'/'||res_rsv_ruimte_volgnr hide_f_srt, + TO_CHAR(t.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_datum, + DECODE( fac.safe_to_number(TRUNC(SYSDATE)-TRUNC(t.fac_tracking_datum) ), + 0, TO_CHAR(t.fac_tracking_datum, 'HH24:MI'), + TO_CHAR(t.fac_tracking_datum, 'DD-MM-YYYY HH24:MI') ) + tijd, + pf.prs_perslid_naam_full door, + DECODE (sn.fac_srtnotificatie_code, + 'RESUPD', 'Wijziging/Nieuw', + 'RESNEW', 'Nieuw', + 'RESDEL', 'Verwijderd') + actie, + '' + || rr.res_reservering_key||'/'||res_rsv_ruimte_volgnr || '' + html_reservering, + sf.res_status_fo_omschrijving fclt_f_status, + rr.res_rsv_ruimte_omschrijving, + COALESCE(t.fac_tracking_oms, lx.oms), + ra.ins_discipline_omschrijving || ' / ' || ra.res_artikel_omschrijving + FROM fac_tracking t, + fac_srtnotificatie sn, + res_rsv_ruimte rr, + prs_v_perslid_fullnames pf, + res_status_fo sf, + (SELECT fac_locale_xsl_label, COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) oms + FROM fac_locale_xsl + WHERE fac_locale_xsl_label LIKE 'lcl_res_is_%' + AND fac_locale_xsl_lang = lcl.getuserlanguage() ) lx, + (SELECT ins_discipline_omschrijving, res_artikel_omschrijving + FROM res_artikel a, + res_discipline d + WHERE a.res_discipline_key IN (462, 581) + AND d.ins_discipline_key = a.res_discipline_key ) ra + WHERE sn.fac_srtnotificatie_code LIKE 'RES%' + AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND lx.fac_locale_xsl_label(+) = 'lcl_res_is_'||LOWER(sn.fac_srtnotificatie_code) + AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey + AND pf.prs_perslid_key = t.prs_perslid_key + AND sf.res_status_fo_key = rr.res_status_fo_key + AND TRUNC(fac_tracking_datum) >= TRUNC(SYSDATE-61) + AND fac_tracking_oms LIKE '%Arti___ %'||ra.res_artikel_omschrijving||'%'; + +-- Lijst externe reserveringen, met link om offerte uit te draaien +-- srtactiviteit 10 = Extern +CREATE OR REPLACE VIEW nybu_v_rap_res_offertes +AS + SELECT rr.res_reservering_key hide_f_srt, + TO_CHAR(rr.res_reservering_key) fclt_f_reservering, + TO_CHAR(rr.res_rsv_ruimte_van, 'YYYY-MM-DD') datum, + rr.res_rsv_ruimte_omschrijving omschrijving, + k.prs_kostenplaats_nr fclt_f_budgetnr, + 'Print offerte' + html_offerte + FROM res_rsv_ruimte rr, + prs_kostenplaats k, + ( SELECT res_reservering_key, MIN(res_rsv_ruimte_volgnr) volgnr + FROM res_rsv_ruimte + WHERE res_activiteit_key IN ( + SELECT res_activiteit_key FROM res_activiteit + WHERE res_srtactiviteit_key = 10) + AND res_rsv_ruimte_van >= SYSDATE + AND res_status_bo_key IN (2) + AND res_status_fo_key IN (1,2,3) + AND res_rsv_ruimte_verwijder IS NULL + GROUP BY res_reservering_key) eerste + WHERE rr.res_reservering_key = eerste.res_reservering_key + AND rr.res_rsv_ruimte_volgnr = eerste.volgnr + AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key; + +-- Alle gegevens van een externe reservering die nodig zijn om een offerte-bon te kunnen maken. +-- kenmerk 201 = Bedrijf klant +-- kenmerk 141 = Contactpersoon bedrijf klant +-- kenmerk 55 = Alternative description +-- kenmerk 281 = referentie/kenmerk klant (bedrijf) +CREATE OR REPLACE VIEW nybu_v_rap_res_offerte +AS + SELECT * FROM ( + SELECT * FROM ( + -- reservering + SELECT rr.res_reservering_key fclt_key, + TO_CHAR(rr.res_reservering_key) fclt_f_reservering, + COALESCE(altdesc.res_kenmerkreservering_waarde, + rr.res_rsv_ruimte_omschrijving) omschrijving, + TO_CHAR(rr.res_rsv_ruimte_van, 'DD') dag, + TO_CHAR(rr.res_rsv_ruimte_van, 'MM') maand, + TO_CHAR(rr.res_rsv_ruimte_van, 'YYYY') jaar, + rr.res_rsv_ruimte_bezoekers totaal_aantal, + rr.res_rsv_ruimte_opmerking opmerking, + cp.prs_contactpersoon_naam_full bedrijf_contactpersoon, + b.prs_bedrijf_naam bedrijf_naam, + b.prs_bedrijf_post_adres bedrijf_adres, + b.prs_bedrijf_post_postcode bedrijf_pc, + b.prs_bedrijf_post_plaats bedrijf_plaats, + b.prs_bedrijf_post_land bedrijf_land, + km.res_kenmerkreservering_waarde bedrijf_kenmerk, + p.prs_perslid_voornaam user_voornaam, + p.prs_perslid_tussenvoegsel user_tv, + p.prs_perslid_naam user_naam + FROM res_rsv_ruimte rr, + prs_bedrijf b, + nybu_v_contactpersoon cp, + (SELECT * FROM res_kenmerkwaarde + WHERE res_kenmerkwaarde_verwijder IS NULL + AND res_kenmerk_key = 201) bedr, + (SELECT * FROM res_kenmerkwaarde + WHERE res_kenmerkwaarde_verwijder IS NULL + AND res_kenmerk_key = 141) cont, + (SELECT * FROM res_kenmerkwaarde + WHERE res_kenmerkwaarde_verwijder IS NULL + AND res_kenmerk_key = 55) altdesc, + (SELECT * FROM res_kenmerkwaarde + WHERE res_kenmerkwaarde_verwijder IS NULL + AND res_kenmerk_key = 281) km, + prs_perslid p + WHERE rr.res_rsv_ruimte_verwijder IS NULL + AND bedr.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND b.prs_bedrijf_key = fac.safe_to_number(bedr.res_kenmerkreservering_waarde) + AND cont.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key + AND cp.prs_contactpersoon_key(+) = fac.safe_to_number(cont.res_kenmerkreservering_waarde) + AND altdesc.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key + AND km.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key + AND rr.res_rsv_ruimte_key = (SELECT MIN(res_rsv_ruimte_key) FROM res_rsv_ruimte WHERE res_reservering_key = rr.res_reservering_key) + AND p.prs_perslid_key = rr.res_rsv_ruimte_contact_key + ) r1 + LEFT OUTER JOIN ( + -- ruimtes + SELECT 'ruimte' soort, + reservering, + ruimte, + max_bez, + aantal, + datum, + van, + tot, + disc, + opstel, + ROUND(DECODE(btw_incl, + 0, prijs, + 1, prijs / (1+(btw_perc/100) ) + ) + , 2) prijs_ex, + ROUND(DECODE(btw_incl, + 0, prijs * (1+(btw_perc/100) ), + 1, prijs + ) + , 2) prijs_in + FROM ( + SELECT rr.res_reservering_key reservering, + rog.res_ruimte_nr ruimte, + rog.res_ruimte_opstel_bezoekers max_bez, + rr.res_rsv_ruimte_bezoekers aantal, + TO_CHAR(rr.res_rsv_ruimte_van, 'DD-MM-YYYY') datum, + TO_CHAR(rr.res_rsv_ruimte_van, 'HH24:MI') van, + TO_CHAR(rr.res_rsv_ruimte_tot, 'HH24:MI') tot, + d.ins_discipline_key disc, + rog.res_opstelling_omschrijving opstel, + res.getruimteprijs(rr.res_rsv_ruimte_key) prijs, + 21 btw_perc, + COALESCE(ks.prs_kostensoort_btw, 1) btw_incl + FROM res_rsv_ruimte rr, + res_v_ruimte_opstel_gegevens rog, + res_ruimte r, + res_discipline d, + prs_kostensoort ks + WHERE rr.res_rsv_ruimte_verwijder IS NULL + AND rog.res_ruimte_opstel_key = rr.res_ruimte_opstel_key + AND r.res_ruimte_key = rog.res_ruimte_key + AND d.ins_discipline_key = r.res_discipline_key + AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key + ) + UNION ALL + -- objecten + SELECT 'deel' soort, + reservering, + deel, + NULL bez_max, + aantal, + datum, + van, + tot, + disc, + NULL opstel, + ROUND(DECODE(btw_incl, + 0, prijs, + 1, prijs / (1+(btw_perc/100) ) + ) + , 2) prijs_ex, + ROUND(DECODE(btw_incl, + 0, prijs * (1+(btw_perc/100) ), + 1, prijs + ) + , 2) prijs_in + FROM ( + SELECT rr.res_reservering_key reservering, + d.res_deel_omschrijving deel, + rd.res_rsv_deel_aantal aantal, + TO_CHAR(rr.res_rsv_ruimte_van, 'DD-MM-YYYY') datum, + TO_CHAR(rd.res_rsv_deel_van, 'HH24:MI') van, + TO_CHAR(rd.res_rsv_deel_tot, 'HH24:MI') tot, + d.ins_discipline_key disc, + res.getdeelprijs(rd.res_rsv_deel_key) prijs, + 21 btw_perc, + COALESCE(ks.prs_kostensoort_btw, 1) btw_incl + FROM res_rsv_ruimte rr, + res_rsv_deel rd, + res_deel d, + res_discipline d, + prs_kostensoort ks + WHERE rr.res_rsv_ruimte_verwijder IS NULL + AND rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND rd.res_rsv_deel_verwijder IS NULL + AND d.res_deel_key = rd.res_deel_key + AND d.ins_discipline_key = d.res_discipline_key + AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key + ) + UNION ALL + -- artikelen + SELECT 'artikel' soort, + reservering, + artikel, + volgnr bez_max, + aantal, + datum, + van, + NULL tot, + disc, + NULL opstel, + ROUND(DECODE(btw_incl, + 0, prijs, + 1, prijs / (1+(btw_perc/100) ) + ) + , 2) prijs_ex, + ROUND(DECODE(btw_incl, + 0, prijs * (1+(btw_perc/100) ), + 1, prijs + ) + , 2) prijs_in + FROM ( + SELECT rr.res_reservering_key reservering, + a.res_artikel_omschrijving artikel, + ra.res_rsv_artikel_aantal aantal, + TO_CHAR(ra.res_rsv_artikel_levering, 'DD-MM-YYYY') datum, + TO_CHAR(ra.res_rsv_artikel_levering, 'HH24:MI') van, + d.ins_discipline_key disc, + a.res_artikel_volgnummer volgnr, + res.getartikelprijs(ra.res_rsv_artikel_key) prijs, + COALESCE(a.res_artikel_btw, 0) btw_perc, + COALESCE(ks.prs_kostensoort_btw, 1) btw_incl + FROM res_rsv_ruimte rr, + res_rsv_artikel ra, + res_artikel a, + res_discipline d, + prs_kostensoort ks + WHERE rr.res_rsv_ruimte_verwijder IS NULL + AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND ra.res_rsv_artikel_verwijder IS NULL + AND a.res_artikel_key = ra.res_artikel_key + AND d.ins_discipline_key = a.res_discipline_key + AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key + ) + ) r2 + ON r1.fclt_key = r2.reservering + ); + ------- Overig Reserveringen --------------------------------------------------- -- Voor kenmerkdomein contactpersoon (RES) @@ -4357,7 +5221,7 @@ AS BEGIN adm.systrackscript('$Workfile: nybu.sql $', '$Revision$', 0); END; / -BEGIN fac.registercustversion ('nybu', 3); END; +BEGIN fac.registercustversion ('nybu', 4); END; / COMMIT; diff --git a/PNBR/Once/PNBR#28215.sql b/PNBR/Once/PNBR#28215.sql new file mode 100644 index 000000000..6275f84fa --- /dev/null +++ b/PNBR/Once/PNBR#28215.sql @@ -0,0 +1,40 @@ +-- Customer specific once-script +-- POST 532 settings +-- Support: +31 53 4800700 + +SET ECHO ON +SPOOL xPNBR#28215.lst +SET DEFINE OFF + +-- Geen SLA bij meldingen +UPDATE mld_stdmelding + SET mld_stdmelding_slabewaken = 0; + +-- Like mogelijkheid uit +-- key 4 = Facilitor +UPDATE fac_setting + SET fac_setting_pvalue = 0, + fac_setting_datum = SYSDATE, + prs_perslid_key = 4 + WHERE fac_setting_name = 'facilities_flike_past'; + +-- Menu item mijn meldingen tovoegen aan Service menu (key=1) +-- Voor personen met WE_MLDBOF rechten (key=24) +INSERT INTO fac_menu ( + fac_menu_altlabel, + fac_menu_altgroep, + fac_menu_volgnr, + fac_menu_alturl, + fac_functie_key + ) + VALUES ( + 'In behandeling door mij...', + 1, + 4025, + 'appl/mld/mld_search.asp?urole=bo&behandel_key=SELF&autosearch=1', + 24 + ); + +COMMIT; + +SPOOL OFF \ No newline at end of file diff --git a/PNBR/pnbr.sql b/PNBR/pnbr.sql index ce38fef91..7fc396e6b 100644 --- a/PNBR/pnbr.sql +++ b/PNBR/pnbr.sql @@ -1459,6 +1459,19 @@ AS alg_ruimte_nr) FROM alg_v_aanwezigruimte r, alg_verdieping v WHERE r.alg_verdieping_key = v.alg_verdieping_key; +-- tijdelijk vervangen door: +CREATE OR REPLACE VIEW pnbr_v_sync_alg_ruimte +( + alg_ruimte_key, + alg_verdieping_key, + cadlabel +) +AS + SELECT r.alg_ruimte_key, + r.alg_verdieping_key, + DECODE (fac.safe_to_number(alg_ruimte_nr), null, alg_ruimte_nr, to_char(to_number(alg_ruimte_nr))) + FROM alg_v_aanwezigruimte r, alg_verdieping v + WHERE r.alg_verdieping_key = v.alg_verdieping_key; CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat @@ -1859,7 +1872,9 @@ AS 'Herinnering - ' || REPLACE (text, ' ', ' '), key, xkey - FROM fac_v_noti_resreminder; + FROM fac_v_noti_resreminder n, prs_perslid p + WHERE n.receiver = p.prs_perslid_key + AND prs_perslid_naam NOT LIKE 'INACTIEF:%'; -- notificatie naar klant die niet binnen 7 dagen op een vraag heeft geantwoord. CREATE OR REPLACE VIEW pnbr_v_noti_mld_fenote_rem @@ -2013,6 +2028,224 @@ AS WHERE ins_srtdeel_key = 41 AND ins_deel_verwijder IS NULL order by 3, 1; +-- PNBR#28111 Rapportage met kunstobjecten (srtdeel_key=41) inclusief foto +-- Overige keys zijn kenmerken voor deze objecten die dezelfde naam hebben als het veld. +CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST +( + FCLT_F_Object, + FCLT_F_Kunstenaar, + FCLT_F_Titel, + Materiaal, + Gesigneerd, + Hoogte, + Breedte, + HTML_Foto, + Verkrijgingsinformatie, + Taxatiewaarde +) +AS + SELECT ins_deel_omschrijving id, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 102 + AND d.ins_deel_key = ikd.ins_deel_key) + Naam_kunstenaar, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 104 + AND d.ins_deel_key = ikd.ins_deel_key) + Titel, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 110 + AND d.ins_deel_key = ikd.ins_deel_key) + Materiaal, + (SELECT fac_usrdata_omschr + FROM ins_kenmerkdeel ikd, + ins_kenmerk ik, + ins_srtkenmerk isk, + fac_kenmerkdomein kd, + fac_usrdata ud + WHERE ikd.ins_kenmerk_key = 112 + AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key + AND ud.fac_usrtab_key = kd.fac_usrtab_key + AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key + AND d.ins_deel_key = ikd.ins_deel_key) + Gesigneerd, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 119 + AND d.ins_deel_key = ikd.ins_deel_key) + Hoogte, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 120 + AND d.ins_deel_key = ikd.ins_deel_key) + Breedte, + decode((SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 109 + AND d.ins_deel_key = ikd.ins_deel_key), null, 'Geen foto', + '') + Foto, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 125 + AND d.ins_deel_key = ikd.ins_deel_key) + Verkrijgingsinformatie, + (SELECT ins_kenmerkdeel_waarde + FROM ins_kenmerkdeel ikd + WHERE ins_kenmerk_key = 132 + AND d.ins_deel_key = ikd.ins_deel_key) + Taxatiewaarde + FROM ins_deel d + WHERE ins_srtdeel_key = 41 AND ins_deel_verwijder IS NULL +order by 3, 1; + + +CREATE OR REPLACE VIEW pnbr_v_rap_melding_top25 +( + ins_discipline_omschrijving, + mld_stdmelding_omschrijving, + aantal +) +AS + SELECT ins_discipline_omschrijving, + mld_stdmelding_omschrijving, + COUNT (mld_melding_key) + FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d + WHERE m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = d.ins_discipline_key + AND m.mld_melding_datum BETWEEN TO_DATE ( + TO_CHAR (ADD_MONTHS (SYSDATE, -1), + 'yyyymm') + || '01', + 'yyyymmdd') + AND TO_DATE ( + TO_CHAR (SYSDATE, 'yyyymm') || '01', + 'yyyymmdd') + GROUP BY mld_stdmelding_omschrijving, d.ins_discipline_omschrijving; + +CREATE OR REPLACE VIEW pnbr_v_rap_melding_oro +( + mld_melding_key, + mld_discipline_stdmelding, + mld_melding_datum, + prs_perslid_naam, + mld_melding_omschrijving +) +AS + SELECT mld_melding_key, + d.ins_discipline_omschrijving + || '-' + || std.mld_stdmelding_omschrijving, + mld_melding_datum, + pf.prs_perslid_naam_full, + mld_melding_omschrijving + FROM mld_melding m, + prs_perslid p, + prs_v_perslid_fullnames pf, + mld_stdmelding std, + ins_tab_discipline d + WHERE m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = d.ins_discipline_key + AND m.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_key = pf.prs_perslid_key + AND p.prs_afdeling_key = 381 + AND m.mld_melding_datum BETWEEN TO_DATE ( + TO_CHAR (ADD_MONTHS (SYSDATE, -1), + 'yyyymm') + || '01', + 'yyyymmdd') + AND TO_DATE ( + TO_CHAR (SYSDATE, 'yyyymm') || '01', + 'yyyymmdd'); + +CREATE OR REPLACE VIEW pnbr_v_rap_mnd_bestelling +( + catalogus, + groep, + aantal, + prijs +) +AS + SELECT d.ins_discipline_omschrijving, + sg.bes_srtgroep_omschrijving, + COUNT (DISTINCT b.bes_bestelling_key), + SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs) + prijs + FROM bes_bestelling b, + bes_bestelling_item bi, + bes_bestelopdr_item boi, + bes_srtdeel bd, + bes_srtgroep sg, + bes_discipline d + WHERE b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key + AND bi.bes_srtdeel_key = bd.bes_srtdeel_key + AND bd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key = d.ins_discipline_key + AND d.ins_discipline_omschrijving NOT LIKE '%-ink' + AND b.bes_bestelling_datum BETWEEN TO_DATE ( + TO_CHAR ( + ADD_MONTHS (SYSDATE, -1), + 'yyyymm') + || '01', + 'yyyymmdd') + AND TO_DATE ( + TO_CHAR (SYSDATE, 'yyyymm') + || '01', + 'yyyymmdd') + GROUP BY d.ins_discipline_omschrijving, sg.bes_srtgroep_omschrijving; + +CREATE OR REPLACE VIEW pnbr_v_rap_mnd_kosten_afd +( + afdeling, + prijs +) +AS + SELECT prs_afdeling_naam, + SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs) + prijs + FROM bes_bestelling b, + bes_bestelling_item bi, + bes_bestelopdr_item boi, + bes_srtdeel bd, + bes_srtgroep sg, + bes_discipline d, + prs_afdeling a, + prs_perslid p + WHERE b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key + AND bi.bes_srtdeel_key = bd.bes_srtdeel_key + AND bd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key = d.ins_discipline_key + AND d.ins_discipline_omschrijving NOT LIKE '%-ink' + AND b.prs_perslid_key = p.prs_perslid_key + AND p.prs_afdeling_key = a.prs_afdeling_key + AND b.bes_bestelling_datum BETWEEN TO_DATE ( + TO_CHAR ( + ADD_MONTHS (SYSDATE, -1), + 'yyyymm') + || '01', + 'yyyymmdd') + AND TO_DATE ( + TO_CHAR (SYSDATE, 'yyyymm') + || '01', + 'yyyymmdd') + GROUP BY a.prs_afdeling_naam; + BEGIN adm.systrackscript('$Workfile: pnbr.sql $', '$Revision$', 0); END; / diff --git a/PZHO/Once/PZHO44.sql b/PZHO/Once/PZHO44.sql index a6f1488ab..3ebf055f4 100644 --- a/PZHO/Once/PZHO44.sql +++ b/PZHO/Once/PZHO44.sql @@ -9,11 +9,77 @@ SET ECHO ON SPOOL xpzho44.lst SET DEFINE OFF --- Opschonen (zoals geconstateerd door JGL)! +-- PZHO#27516 Opschonen (zoals geconstateerd door JGL)! DROP VIEW PZHO_V_EXPORT_RUIMTE_GEG; DROP VIEW PZHO_V_EXPORT_TELEFOON; COMMIT; + +-- PZHO#27709 Invise-import tbv. Traka-koppeling! +CREATE TABLE pzho_imp_invise (badgenr VARCHAR2 (20), serialnr VARCHAR2 (6)); + +INSERT INTO fac_import_app (fac_import_app_code, + fac_import_app_oms, + fac_functie_key, + fac_import_app_folder, + fac_import_app_files, + fac_import_app_prefix) + SELECT 'INVISE', + 'PZH: Aanmaken/bijwerken badgenummers', + fac_functie_key, + 'D:\APPS\Webapplicaties\Facilitor\Facilitor_produktie\cust\PZHO\import', + 'invise*.csv', + 'PZHO' + FROM fac_functie + WHERE fac_functie_code = 'WEB_PRSSYS'; + +COMMIT; + +-- PZHO#27709 Webservice-user tbv. Traka-koppeling; dezelfde module, afdeling +-- en functie als _FACILITOR (= 14424)! +INSERT INTO prs_perslid (prs_perslid_module, + prs_srtperslid_key, + prs_afdeling_key, + prs_perslid_naam, + prs_perslid_oslogin, + prs_perslid_flags, + prs_perslid_apikey) + SELECT p.prs_perslid_module, + p.prs_srtperslid_key, + p.prs_afdeling_key, + 'Pseudo-user tbv. TRAKA-API', + '_TRAKA', + 0, + 'OFFlefZFRKpIRVnHmYOOEwgDdOGJoAVL' + FROM prs_perslid p + WHERE p.prs_perslid_key = 14424; + +COMMIT; + +-- 51=vrije key en 1=Reserveerbaar object(-ins_discipline_min_level) +INSERT INTO ins_tab_discipline (ins_discipline_key, + ins_discipline_module, + ins_discipline_omschrijving, + ins_discipline_min_level) + VALUES (51, + 'RES', + 'Leenfietsen', + 1); +INSERT INTO res_disc_params (res_ins_discipline_key) + VALUES (51); +-- 11=vrije key en 2=Voorzieningen(-res_srtactiviteit_key) +INSERT INTO res_activiteit ( + res_activiteit_key, + res_activiteit_omschrijving, + res_srtactiviteit_key + ) + VALUES (11, 'Leenfiets', 2); +-- Activiteit x categorie = 51x11 +INSERT INTO res_activiteitdiscipline (res_discipline_key, res_activiteit_key) + VALUES (51, 11); + +COMMIT; + BEGIN adm.systrackscript('$Workfile: pzho44.sql $', '$Revision$', 1); END; / SPOOL OFF diff --git a/PZHO/pzho.sql b/PZHO/pzho.sql index fe8942ef5..2845aa103 100644 --- a/PZHO/pzho.sql +++ b/PZHO/pzho.sql @@ -6051,6 +6051,348 @@ SELECT extern.dkey, AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr; +/* Formatted on 1-11-2013 16:24:42 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE pzho_import_invise (p_import_key IN NUMBER) +IS + c_delim VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (1000); -- Input line + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_aanduiding VARCHAR2 (1000) := ''; + header_is_valid NUMBER := 0; + v_count_tot NUMBER (10) := 0; + v_count_import NUMBER (10) := 0; + v_ongeldig NUMBER (1) := 0; + -- De importvelden: + v_dummy VARCHAR2 (255); + v_badgenr VARCHAR2 (255); -- C10 + v_serialnr VARCHAR2 (255); -- C10 + v_name VARCHAR2 (255); -- C? + v_firstname VARCHAR2 (255); -- C? + + CURSOR c1 + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; +BEGIN + DELETE FROM pzho_imp_invise; + + COMMIT; + + FOR rec1 IN c1 + LOOP + v_newline := rec1.fac_imp_file_line; + v_errormsg := 'Fout bij opvragen importregel'; + v_aanduiding := ''; + v_ongeldig := 0; + -- Lees een aantal veldwaarden + --badgenr;begintst;endtst;badgeprofilenr;servicenr;subsystemid;antipassback;antireturn;securityid;language;pincode;serialnr;contactid;name;firstname;address;postcode;city;phonenr;gender;birthdate;optionalfields01;optionalfields02;optionalfields03;optionalfields04;optionalfields05;optionalfields06;optionalfields07;optionalfields08;optionalfields09;optionalfields10;optionalfields11;optionalfields12;optionalfields13;optionalfields14;optionalfields15;optionalfields16;optionalfields17;optionalfields18;optionalfields19;optionalfields20;optionalfields21;optionalfields22;optionalfields23;optionalfields24;optionalfields25;optionalfields26;optionalfields27;optionalfields28;optionalfields29;optionalfields30;optionalfields31;optionalfields32;optionalfields33;optionalfields34;optionalfields35;optionalfields36;optionalfields37;optionalfields38;optionalfields39;optionalfields40;comment;createtst;createuserid;modtst;moduserid + fac.imp_getfield (v_newline, c_delim, v_badgenr); --badgenr (toegangspasnummer) + fac.imp_getfield (v_newline, c_delim, v_dummy); -- begintst + fac.imp_getfield (v_newline, c_delim, v_dummy); -- endtst + fac.imp_getfield (v_newline, c_delim, v_dummy); -- badgeprofilenr + fac.imp_getfield (v_newline, c_delim, v_dummy); -- servicenr + fac.imp_getfield (v_newline, c_delim, v_dummy); -- subsystemid + fac.imp_getfield (v_newline, c_delim, v_dummy); -- antipassback + fac.imp_getfield (v_newline, c_delim, v_dummy); -- antireturn + fac.imp_getfield (v_newline, c_delim, v_dummy); -- securityid + fac.imp_getfield (v_newline, c_delim, v_dummy); -- language + fac.imp_getfield (v_newline, c_delim, v_dummy); -- pincode + fac.imp_getfield (v_newline, c_delim, v_serialnr); --serialnr (personeelsnummer) + fac.imp_getfield (v_newline, c_delim, v_dummy); -- contactid + fac.imp_getfield (v_newline, c_delim, v_name); -- name + fac.imp_getfield (v_newline, c_delim, v_firstname); -- firstname + + v_aanduiding := + '[' + || v_badgenr + || '|' + || v_serialnr + || '|' + || v_name + || '|' + || v_firstname + || '] '; + + -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen + -- de juiste kolomkop. Ik controleer daarbij alleen de 2 relevante kolommen! + -- Ik negeer alles totdat ik een geldige header ben gepasseerd. + IF (header_is_valid = 0) + THEN + IF UPPER (v_badgenr) = 'BADGENR' AND UPPER (v_serialnr) = 'SERIALNR' + THEN + header_is_valid := 1; + END IF; + ELSE + v_count_tot := v_count_tot + 1; + -- Controleer alle veldwaarden + v_errormsg := 'Badgenr ongeldig; ongedefinieerd of te lang'; + v_badgenr := TRIM (v_badgenr); + + IF v_badgenr IS NULL OR LENGTH (v_badgenr) > 15 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Personeelsnr ongeldig; ongedefinieerd of te lang'; + v_serialnr := TRIM (v_serialnr); + + IF v_serialnr IS NULL OR LENGTH (v_serialnr) > 6 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- Insert geformatteerde import record + IF v_ongeldig = 0 + THEN + BEGIN + v_errormsg := 'Fout bij wegschrijven importregel'; + + INSERT INTO pzho_imp_invise (badgenr, serialnr) + VALUES (v_badgenr, v_serialnr); + + COMMIT; + v_count_import := v_count_import + 1; + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + + COMMIT; + END; + END IF; + END IF; + 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', + 'Passen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'Passen/#ongeldige niet ingelezen 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, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces passen afgebroken!'); +END pzho_import_invise; +/ + +/* Formatted on 12-11-2013 11:16:32 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE pzho_update_invise (p_import_key IN NUMBER) +AS + c_badgenr_kkey NUMBER := 13; + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_aanduiding VARCHAR2 (1000) := ''; + v_count_tot NUMBER (10) := 0; + v_count_new NUMBER (10) := 0; + v_count_upd NUMBER (10) := 0; + + CURSOR c1 + IS + SELECT p.prs_perslid_key, + kl.prs_kenmerklink_key, + COUNT ( * ) pas_cnt, -- #pas bij gelijk persnr! + MAX (i.badgenr) badgenr, + MAX (i.serialnr) serialnr + FROM pzho_imp_invise i, + ( SELECT SUBSTR (prs_perslid_nr, + 1, + INSTR (prs_perslid_nr, '/') - 1) + prs_perslid_nr, + COUNT ( * ) prs_cnt, -- #prs met gelijk persnr! + MAX (prs_perslid_key) prs_perslid_key + FROM prs_v_aanwezigperslid + WHERE prs_perslid_oslogin IS NOT NULL -- Met loginnaam! + GROUP BY SUBSTR (prs_perslid_nr, + 1, + INSTR (prs_perslid_nr, '/') - 1)) p, + (SELECT * + FROM prs_v_aanwezigkenmerklink + WHERE prs_kenmerk_key = c_badgenr_kkey) kl + WHERE i.serialnr = p.prs_perslid_nr + AND p.prs_perslid_key = kl.prs_link_key(+) + GROUP BY p.prs_perslid_key, kl.prs_kenmerklink_key; +BEGIN + SELECT COUNT ( * ) INTO v_count_tot FROM pzho_imp_invise; + + FOR rec IN c1 + LOOP + v_aanduiding := '[' || rec.badgenr || '|' || rec.serialnr || '] '; + + IF (rec.prs_kenmerklink_key IS NULL) + THEN + v_errormsg := 'Fout bij toevoegen pasnummer'; + + INSERT INTO prs_kenmerklink (prs_link_key, + prs_kenmerklink_niveau, + prs_kenmerk_key, + prs_kenmerklink_waarde) + VALUES (rec.prs_perslid_key, + 'P', + c_badgenr_kkey, + rec.badgenr); + + v_count_new := v_count_new + 1; + ELSE + v_errormsg := 'Fout bij bijwerken pasnummer'; + + UPDATE prs_kenmerklink + SET prs_kenmerklink_waarde = rec.badgenr + WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key; + + v_count_upd := v_count_upd + 1; + END IF; + + COMMIT; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Passen/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Passen/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Passen/#bijgewerkt: ' || TO_CHAR (v_count_upd), + ''); +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.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Importproces passen afgebroken!'); +END pzho_update_invise; +/ + +/* Formatted on 13-11-2013 17:35:25 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW pzho_v_api_dienstfietsen +( + res_key, + res_id, + fiets_oms, + sleutel_id, + van, + tot, + user_key, + vnaam, + anaam, + pasnr, + fo_status_key, -- 1=OPT/2=BEV/3=DEL/4=BLK + last_change -- Laatste NEW/UPD/DEL/BLK +) +AS + SELECT rr.res_rsv_ruimte_key, + TO_CHAR (rr.res_reservering_key) + || '/' + || TO_CHAR (rr.res_rsv_ruimte_volgnr), + TRIM (rd.res_deel_omschrijving), + fac.safe_to_number(SUBSTR ( + rd.res_deel_omschrijving, + INSTR (rd.res_deel_omschrijving, ' ', -1) + + 1 + )), + rr.res_rsv_ruimte_van, + rr.res_rsv_ruimte_tot, + p.prs_perslid_key, + p.prs_perslid_voornaam vnaam, + DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''), + '', '', + p.prs_perslid_tussenvoegsel || ' ') + || p.prs_perslid_naam + anaam, + kl.prs_kenmerklink_waarde pasnr, + rr.res_status_fo_key, + t.last_change + FROM res_rsv_ruimte rr, -- Ook verwijderde res_rsv_ruimte! + res_rsv_deel rrd, -- Ook verwijderde res_rsv_deel! + res_deel rd, + prs_perslid p, + prs_v_aanwezigkenmerklink kl, + ( SELECT fac_tracking_refkey, + MAX (fac_tracking_datum) last_change + FROM fac_tracking -- 30=NEW/31=UPD/34=DEL/242=BLK + WHERE fac_srtnotificatie_key IN (30, 31, 34, 242) + GROUP BY fac_tracking_refkey) t + WHERE rr.res_rsv_ruimte_van < TRUNC (SYSDATE + 1) -- Vandaag.. + AND rr.res_rsv_ruimte_tot > TRUNC (SYSDATE) -- lopende.. + AND rr.res_ruimte_opstel_key IS NULL -- losse boekingen + AND rr.res_activiteit_key = 11 -- Activiteit tbv. Traka-koppeling + AND rr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key + AND rrd.res_deel_key = rd.res_deel_key + AND rr.res_rsv_ruimte_dirtlevel = 0 + AND rr.res_rsv_ruimte_contact_key = p.prs_perslid_key + AND rr.res_rsv_ruimte_contact_key = kl.prs_link_key + AND kl.prs_kenmerk_key = 13 -- Alleen aanvragers met een pasnr + AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey(+); + BEGIN adm.systrackscript('$Workfile: pzho.sql $', '$Revision$', 0); END; / BEGIN fac.registercustversion('PZHO', 44); END; diff --git a/RENK/Once/renk8.sql b/RENK/Once/renk8.sql new file mode 100644 index 000000000..566c2028e --- /dev/null +++ b/RENK/Once/renk8.sql @@ -0,0 +1,42 @@ +-- Customer specific once-script RENK8. +-- +-- (c) 2013 SG|facilitor bv +-- $Revision$ +-- $Id$ +-- +-- Support: +31 53 4800700 +SET ECHO ON +SPOOL xrenk8.lst +SET DEFINE OFF + +-- 73 = WEB_USER01 +CREATE OR REPLACE VIEW RENK_V_RAP_RES_FROZEN AS SELECT NULL x FROM DUAL; +INSERT INTO FAC_USRRAP (fac_usrrap_omschrijving, + fac_usrrap_view_name, + fac_usrrap_in_huidige_locatie, + fac_usrrap_template, + fac_usrrap_macro, + fac_usrrap_vraagbegindatum, + fac_usrrap_vraageinddatum, + fac_usrrap_functie, + fac_usrrap_info, + fac_functie_key, + fac_usrrap_autorefresh) + VALUES ('Definitieve facturen', + 'RENK_V_RAP_RES_FROZEN', + NULL, + NULL, + NULL, + 0, + 0, + 1, + 'Overzicht definitieve facturen per huurder.', + 73, + 0); + +COMMIT; + +BEGIN adm.systrackscript('$Workfile: renk8.sql $', '$Revision$', 1); END; +/ +SPOOL OFF +@renk.sql diff --git a/RENK/renk.sql b/RENK/renk.sql index 1ff06211c..78a608a04 100644 --- a/RENK/renk.sql +++ b/RENK/renk.sql @@ -721,7 +721,7 @@ CREATE OR REPLACE PROCEDURE renk_update_prs (p_import_key IN NUMBER) IS c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: '; -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail - c_max_delta_percentage NUMBER (10) := 20; + c_max_delta_percentage NUMBER (10) := 40; -- Per RENK#27766 op 40%! -- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw) c_ruimte_nr VARCHAR2 (10) := '0.00'; -- Groep waar personen in geplaatst worden (indien nog geen groep) @@ -2317,19 +2317,20 @@ AS '1', DECODE ( rvc.res_discipline_key, - 41, + 41, -- Sporthal DECODE ( TO_CHAR (x.tot, 'd'), + '1', -- Zondag + 1, '4', -- Woensdag - DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), -1, 1, 0.5), - DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), -1, 1, 0.5) - ), - 42, - DECODE ( - TO_CHAR (x.tot, 'd'), - '4', -- Woensdag - DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), -1, 1, 0.5), - DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), -1, 1, 0.5) + DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), + -1, 0.5, + 1), + '7', -- Zaterdag + 1, + DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), + -1, 0.5, + 1) ), 1 ), @@ -2358,6 +2359,7 @@ AS FROM (SELECT rr.res_rsv_ruimte_key, rr.res_reservering_key res_key, rr.res_rsv_ruimte_volgnr res_vnr, + rr.res_rsv_ruimte_ordernr, rr.res_rsv_ruimte_van van, rr.res_rsv_ruimte_tot tot, rr.res_rsv_ruimte_omschrijving, @@ -2423,14 +2425,12 @@ AS ), '1', '2' - ) sys_helft, - rr.res_rsv_ruimte_ordernr + ) sys_helft FROM res_v_aanwezigrsv_ruimte rr, prs_perslid p WHERE rr.res_activiteit_key IN (30, 230) -- Verhuur/Schoollokaal AND rr.res_status_fo_key IN (1, 2) AND rr.res_rsv_ruimte_dirtlevel = 0 - --rr.res_rsv_ruimte_ordernr IS NULL --AND COALESCE ( -- rr.res_status_bo_key, 2 -- ) != 6 -- Nog niet AV @@ -2543,27 +2543,19 @@ AS '1R' res_type, rr.res_ruimte_nr, TO_NUMBER (NULL) vnr, - -- rdi.ins_discipline_omschrijving - --|| ' ' - --|| l.alg_locatie_omschrijving - --|| ' ' - --|| l.alg_locatie_plaats - 'Huur' - || ' ' - || rdi.ins_discipline_omschrijving - || ' ' + 'Huur ' || DECODE ( rrr.res_activiteit_key, 30, - TRIM(SUBSTR ( - rr.res_ruimte_nr, - 1, - INSTR (rr.res_ruimte_nr || '(', '(') - - 1 - )), - l.alg_locatie_omschrijving - || ' ' - || l.alg_locatie_plaats + rdi.ins_discipline_omschrijving || ' ' + || TRIM(SUBSTR ( + rr.res_ruimte_nr, + 1, + INSTR (rr.res_ruimte_nr || '(', + '(') + - 1 + )), + 'locatie ' || l.alg_locatie_omschrijving ) onderwerp, rr.res_ruimte_nr res_voorziening, @@ -2670,7 +2662,7 @@ AS OR (x.res_rsv_ruimte_ordernr IS NOT NULL -- .. of correctie AND x.res_helft = x.sys_helft)) -- ..nog toegestaan! AND tarief.res_kenmerkreservering_waarde != '261' -- Niet nul - AND 1 = 1; +/ /* Formatted on 31-7-2013 11:42:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW renk_v_lokaalverhuur_vast @@ -2693,12 +2685,15 @@ AS DECODE (x.k3 + x.k4, 2, DECODE (x.k1 + x.k2, 2, 'J', 'H'), 'K') -- Deze helft geen boekingen in beide kwartalen! - ) khj + ) + khj FROM ( SELECT TO_CHAR (x.alg_locatie_key) || '-' - || COALESCE (bedr_key.res_kenmerkreservering_waarde, - --inaam.res_kenmerkreservering_waarde, - UPPER (TRIM (x.res_rsv_ruimte_omschrijving)), - '[naam]') + || COALESCE ( + bedr_key.res_kenmerkreservering_waarde, + --inaam.res_kenmerkreservering_waarde, + UPPER (TRIM (x.res_rsv_ruimte_omschrijving)), + '[naam]' + ) groepering, x.sys_helft, x.res_ruimte_key, @@ -2706,90 +2701,89 @@ AS DECODE (SIGN (SUM (x.k2) - 8), -1, 0, 1) k2, DECODE (SIGN (SUM (x.k3) - 8), -1, 0, 1) k3, DECODE (SIGN (SUM (x.k4) - 8), -1, 0, 1) k4 - FROM (SELECT rrr.res_rsv_ruimte_key, - rrr.res_rsv_ruimte_omschrijving, - DECODE ( - TRUNC (ADD_MONTHS (SYSDATE, 7), - 'yyyy'), - TRUNC (ADD_MONTHS (SYSDATE, 1), - 'yyyy'), - '1', - '2' - ) sys_helft, - rr.res_ruimte_key, - rga.alg_locatie_key, - DECODE ( - TO_CHAR (rrr.res_rsv_ruimte_tot, - 'Q'), - 1, 1, - 0 - ) k1, - DECODE ( - TO_CHAR (rrr.res_rsv_ruimte_tot, - 'Q'), - 2, 1, - 0 - ) k2, - DECODE ( - TO_CHAR (rrr.res_rsv_ruimte_tot, - 'Q'), - 3, 1, - 0 - ) k3, - DECODE ( - TO_CHAR (rrr.res_rsv_ruimte_tot, - 'Q'), - 4, 1, - 0 - ) k4 - FROM res_v_aanwezigrsv_ruimte rrr, - res_ruimte_opstelling rro, - res_ruimte rr, - res_v_res_ruimte_gegevens_all rga - WHERE rrr.res_activiteit_key = 230 -- Schoollokaal - AND rrr.res_status_fo_key IN (1, 2) - AND rrr.res_rsv_ruimte_dirtlevel = 0 - AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key - AND rro.res_ruimte_key = rr.res_ruimte_key - AND rr.res_discipline_key = 43 - AND rr.res_ruimte_key = rga.res_ruimte_key - AND rrr.res_rsv_ruimte_tot BETWEEN ADD_MONTHS ( - TRUNC ( - ADD_MONTHS ( - SYSDATE, -5 - ), - 'yyyy' + FROM (SELECT rrr.res_rsv_ruimte_key, + rrr.res_rsv_ruimte_omschrijving, + DECODE ( + TRUNC (ADD_MONTHS (SYSDATE, 7), + 'yyyy'), + TRUNC (ADD_MONTHS (SYSDATE, 1), + 'yyyy'), + '1', + '2' + ) + sys_helft, + rr.res_ruimte_key, + rga.alg_locatie_key, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 1, 1, + 0 + ) + k1, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 2, 1, + 0 + ) + k2, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 3, 1, + 0 + ) + k3, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 4, 1, + 0 + ) + k4 + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_ruimte rr, + res_v_res_ruimte_gegevens_all rga + WHERE rrr.res_activiteit_key = 230 -- Schoollokaal + AND rrr.res_status_fo_key IN (1, 2) + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_discipline_key = 43 + AND rr.res_ruimte_key = rga.res_ruimte_key + AND rrr.res_rsv_ruimte_tot BETWEEN ADD_MONTHS ( + TRUNC ( + ADD_MONTHS ( + SYSDATE, -5 ), - 6 - ) - AND ADD_MONTHS ( - TRUNC ( - ADD_MONTHS ( - SYSDATE, -5 - ), - 'yyyy' + 'yyyy' + ), + 6 + ) + AND ADD_MONTHS ( + TRUNC ( + ADD_MONTHS ( + SYSDATE, -5 ), - 18 - )) - x - LEFT JOIN -- 303 = Verhuur tarief - res_v_aanwezigkenmerkwaarde tarief - ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key - AND tarief.res_kenmerk_key = 303 - LEFT JOIN -- 9 = Regelmatige relatiegegevens - res_v_aanwezigkenmerkwaarde bedr_key - ON x.res_rsv_ruimte_key = bedr_key.res_rsv_ruimte_key - AND bedr_key.res_kenmerk_key = 9 - --LEFT JOIN -- 2 = Incidentele relatie/Naam - -- res_v_aanwezigkenmerkwaarde inaam - --ON x.res_rsv_ruimte_key = inaam.res_rsv_ruimte_key - -- AND inaam.res_kenmerk_key = 2 + 'yyyy' + ), + 18 + )) + x + LEFT JOIN -- 303 = Verhuur tarief + res_v_aanwezigkenmerkwaarde tarief + ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key + AND tarief.res_kenmerk_key = 303 + LEFT JOIN -- 9 = Regelmatige relatiegegevens + res_v_aanwezigkenmerkwaarde bedr_key + ON x.res_rsv_ruimte_key = bedr_key.res_rsv_ruimte_key + AND bedr_key.res_kenmerk_key = 9 WHERE tarief.res_kenmerkreservering_waarde = '84' GROUP BY TO_CHAR (x.alg_locatie_key) || '-' - || COALESCE (bedr_key.res_kenmerkreservering_waarde, - --inaam.res_kenmerkreservering_waarde, - UPPER (TRIM (x.res_rsv_ruimte_omschrijving)), - '[naam]'), + || COALESCE ( + bedr_key.res_kenmerkreservering_waarde, + --inaam.res_kenmerkreservering_waarde, + UPPER (TRIM (x.res_rsv_ruimte_omschrijving)), + '[naam]' + ), x.sys_helft, x.res_ruimte_key) x; @@ -2974,6 +2968,768 @@ AS x.res_ruimte_key, x.khj_tarief; +/* Formatted on 25-11-2013 11:10:05 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW renk_v_verhuurregels_frozen +( + groepering, + sortering1, + sortering2, + fclt_f_naam, + naam, + afd, + tav, + aanhef, + adres, + postcode, + plaats, + factuurdatum, + res_rsv_ruimte_key, + resid, + ordernr, + sys_helft, + dagnaam, + dagnr, + van, + tot, + omschrijving, + opmerking, + datumverzoek, + soortverzoek, + tarief_code, + termijnen, + korting, + behandelaar_naam, + behandelaar_tel, + behandelaar_mail, + res_discipline_key, + res_ruimte_key, + alg_locatie_key, + res_type, + res_ruimte_nr, + vnr, + onderwerp, + res_voorziening, + res_rsv_prijs, + aantal, + ps, + po, + pm, + pa, + pd, + btw +) +AS + SELECT x.res_rsv_ruimte_ordernr groepering, + TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi') + || rvc.res_ruimte_nr + || x.res_key + sortering1, -- Factuurregels op datum-tijd en dan ruimtenr + rvc.res_type || SUBSTR ('000000' || TO_CHAR (rvc.vnr), -6) + sortering2, -- ..daarbinnen op type (1R2V3C) en dan volgnr + DECODE ( + r.bedr_key, + NULL, + COALESCE (UPPER (TRIM (x.res_rsv_ruimte_omschrijving)), + '[naam]'), + TRIM (r.prs_bedrijf_naam) + ) + fclt_f_naam, + DECODE (r.bedr_key, + NULL, + COALESCE (inaam.res_kenmerkreservering_waarde, '[naam]'), + COALESCE (rnaam.prs_kenmerklink_waarde, '[naam]')) + naam, + DECODE (r.bedr_key, + NULL, iafd.res_kenmerkreservering_waarde, + rafd.prs_kenmerklink_waarde) + afd, + DECODE (r.bedr_key, + NULL, itav.res_kenmerkreservering_waarde, + rtav.prs_kenmerklink_waarde) + tav, + DECODE ( + r.bedr_key, + NULL, + COALESCE (iaanhef.res_kenmerkreservering_waarde, '[aanhef]'), + COALESCE (raanhef.prs_kenmerklink_waarde, '[aanhef]') + ) + aanhef, + DECODE ( + r.bedr_key, + NULL, + COALESCE (iadres.res_kenmerkreservering_waarde, '[adres]'), + COALESCE (r.adres, '[adres]') + ) + adres, + DECODE ( + r.bedr_key, + NULL, + COALESCE (ipostcode.res_kenmerkreservering_waarde, '[pc]'), + COALESCE (r.postcode, '[pc]') + ) + postcode, + DECODE ( + r.bedr_key, + NULL, + COALESCE (iplaats.res_kenmerkreservering_waarde, '[plaats]'), + COALESCE (r.plaats, '[plaats]') + ) + plaats, + TO_CHAR (SYSDATE, 'dd') + || DECODE (TO_CHAR (SYSDATE, 'mm'), + '01', ' januari ', + '02', ' februari ', + '03', ' maart ', + '04', ' april ', + '05', ' mei ', + '06', ' juni ', + '07', ' juli ', + '08', ' augustus ', + '09', ' september ', + '10', ' okotober ', + '11', ' november ', + ' december ') + || TO_CHAR (SYSDATE, 'yyyy') + factuurdatum, + x.res_rsv_ruimte_key, + x.res_key || '/' || x.res_vnr resid, + x.res_rsv_ruimte_ordernr ordernr, + x.res_helft, -- 1e of 2e jaarhelft in formaat yyyyh(elft)! + DECODE (TO_CHAR (x.van, 'd'), + '2', 'maandag', + '3', 'dinsdag', + '4', 'woensdag', + '5', 'donderdag', + '6', 'vrijdag', + '7', 'zaterdag', + 'zondag') + dagnaam, + DECODE (TO_CHAR (x.van, 'd'), + '1', 7, + TO_NUMBER (TO_CHAR (x.van, 'd')) - 1) + dagnr, + x.van, --TO_CHAR (x.van, 'hh24:mi') van, + x.tot, --TO_CHAR (x.tot, 'hh24:mi') tot, + x.res_rsv_ruimte_omschrijving oms, + x.res_rsv_ruimte_opmerking opm, + COALESCE (datumverzoek.res_kenmerkreservering_waarde, + 'dd-mm-jjjj') + datumverzoek, + DECODE (soortverzoek.res_kenmerkreservering_waarde, + '81', 'telefonische', + '82', 'schriftelijke', + '[soortverzoek]') + soortverzoek, + DECODE (tarief.res_kenmerkreservering_waarde, + '84', 'V', -- Vast! + '85', 'C', -- Commercieel! + 'I') -- Incidenteel! + tarief_code, + rtermijnen.prs_kenmerklink_waarde termijnen, + DECODE ( + rkorting.prs_kenmerklink_waarde, + '1', + DECODE ( + rvc.res_discipline_key, + 41, -- Sporthal + DECODE ( + TO_CHAR (x.tot, 'd'), + '1', -- Zondag + 1, + '4', -- Woensdag + DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), + -1, 0.5, + 1), + '7', -- Zaterdag + 1, + DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), + -1, 0.5, + 1) + ), + 1 + ), + 1 + ) + korting, -- Eventueel te hanteren korting (factor)! + x.behandelaar_naam, + x.behandelaar_tel, + x.behandelaar_mail, + rvc.res_discipline_key, + rvc.res_ruimte_key, + rvc.alg_locatie_key, + rvc.res_type, + rvc.res_ruimte_nr, + rvc.vnr, + rvc.onderwerp, + rvc.res_voorziening, + rvc.res_rsv_prijs, + rvc.aantal, + rvc.ps, -- Uur-tarief + rvc.po, -- Incidenteel tarief + rvc.pm, -- Vast tarief/K + rvc.pa, -- Commercieel tarief/H + rvc.pd, -- Jaartarief/J + rvc.btw + FROM (SELECT rr.res_rsv_ruimte_key, + rr.res_reservering_key res_key, + rr.res_rsv_ruimte_volgnr res_vnr, + rr.res_rsv_ruimte_ordernr, + rr.res_rsv_ruimte_van van, + rr.res_rsv_ruimte_tot tot, + rr.res_rsv_ruimte_omschrijving, + rr.res_rsv_ruimte_opmerking, + p.prs_perslid_key, + DECODE ( + p.prs_perslid_voornaam, + '', '', + p.prs_perslid_voornaam + || ' ' + ) + || DECODE ( + p.prs_perslid_tussenvoegsel, + '', '', + p.prs_perslid_tussenvoegsel + || ' ' + ) + || p.prs_perslid_naam + behandelaar_naam, + COALESCE ( + p.prs_perslid_telefoonnr, + p.prs_perslid_mobiel + ) + behandelaar_tel, + p.prs_perslid_email + behandelaar_mail, + TO_CHAR ( + rr.res_rsv_ruimte_tot, + 'yyyy' + ) + || DECODE ( + TRUNC ( + ADD_MONTHS ( + rr.res_rsv_ruimte_tot, 6 + ), + 'yyyy' + ), + TRUNC ( + rr.res_rsv_ruimte_tot, + 'yyyy' + ), + '1', + '2' + ) + res_helft + FROM res_v_aanwezigrsv_ruimte rr, + prs_perslid p + WHERE rr.res_rsv_ruimte_ordernr IS NOT NULL + AND rr.res_activiteit_key IN (30, 230) -- Verhuur/Schoollokaal + AND rr.res_status_fo_key IN (1, 2) + AND rr.res_rsv_ruimte_dirtlevel = 0 + --AND COALESCE ( + -- rr.res_status_bo_key, 2 + -- ) != 6 -- Nog niet AV + AND rr.res_rsv_ruimte_tot > + TO_DATE ( + '01072013', 'ddmmyyyy' + ) + AND rr.res_rsv_ruimte_tot > + TRUNC ( + ADD_MONTHS ( + SYSDATE, -12 + ), + 'yyyy' + ) + AND rr.res_rsv_ruimte_contact_key = + p.prs_perslid_key) + x + LEFT JOIN -- 301/422 = Datum verzoek + res_v_aanwezigkenmerkwaarde datumverzoek + ON x.res_rsv_ruimte_key = datumverzoek.res_rsv_ruimte_key + AND datumverzoek.res_kenmerk_key IN (301, 422) + LEFT JOIN -- 302/423 = Soort verzoek + res_v_aanwezigkenmerkwaarde soortverzoek + ON x.res_rsv_ruimte_key = soortverzoek.res_rsv_ruimte_key + AND soortverzoek.res_kenmerk_key IN (302, 423) + LEFT JOIN -- 303/424 = Verhuur tarief + res_v_aanwezigkenmerkwaarde tarief + ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key + AND tarief.res_kenmerk_key IN (303, 424) + LEFT JOIN -- Regelmatige relatiegegevens + (SELECT kw.res_rsv_ruimte_key, + b.prs_bedrijf_key bedr_key, + b.prs_bedrijf_naam, + COALESCE ( + b.prs_bedrijf_post_adres, + b.prs_bedrijf_bezoek_adres + ) adres, + COALESCE ( + b.prs_bedrijf_post_postcode, + b.prs_bedrijf_bezoek_postcode + ) postcode, + COALESCE ( + b.prs_bedrijf_post_plaats, + b.prs_bedrijf_bezoek_plaats + ) plaats + FROM res_v_aanwezigkenmerkwaarde kw, + prs_bedrijf b + WHERE kw.res_kenmerk_key IN (9, 426) -- Relatie + AND fac.safe_to_number(kw.res_kenmerkreservering_waarde) = + b.prs_bedrijf_key) + r + ON x.res_rsv_ruimte_key = r.res_rsv_ruimte_key + LEFT JOIN -- 2/428 = Incidentele relatie/Naam + res_v_aanwezigkenmerkwaarde inaam + ON x.res_rsv_ruimte_key = inaam.res_rsv_ruimte_key + AND inaam.res_kenmerk_key IN (2, 428) + LEFT JOIN -- 341/429 = Incidentele relatie/Afd + res_v_aanwezigkenmerkwaarde iafd + ON x.res_rsv_ruimte_key = iafd.res_rsv_ruimte_key + AND iafd.res_kenmerk_key IN (341, 429) + LEFT JOIN -- 342/430 = Incidentele relatie/Tav + res_v_aanwezigkenmerkwaarde itav + ON x.res_rsv_ruimte_key = itav.res_rsv_ruimte_key + AND itav.res_kenmerk_key IN (342, 430) + LEFT JOIN -- 304/436 = Incidentele relatie/Aanhef + res_v_aanwezigkenmerkwaarde iaanhef + ON x.res_rsv_ruimte_key = iaanhef.res_rsv_ruimte_key + AND iaanhef.res_kenmerk_key IN (304, 436) + LEFT JOIN -- 3/431 = Incidentele relatie/Adres + res_v_aanwezigkenmerkwaarde iadres + ON x.res_rsv_ruimte_key = iadres.res_rsv_ruimte_key + AND iadres.res_kenmerk_key IN (3, 431) + LEFT JOIN -- 4/432 = Incidentele relatie/Postcode + res_v_aanwezigkenmerkwaarde ipostcode + ON x.res_rsv_ruimte_key = ipostcode.res_rsv_ruimte_key + AND ipostcode.res_kenmerk_key IN (4, 432) + LEFT JOIN -- 5/433 = Incidentele relatie/Plaats + res_v_aanwezigkenmerkwaarde iplaats + ON x.res_rsv_ruimte_key = iplaats.res_rsv_ruimte_key + AND iplaats.res_kenmerk_key IN (5, 433) + LEFT JOIN -- 1021 = Regelmatige relatie/Naam + prs_v_aanwezigkenmerklink rnaam + ON r.bedr_key = rnaam.prs_link_key + AND rnaam.prs_kenmerk_key = 1021 + LEFT JOIN -- 1040 = Regelmatige relatie/Afd + prs_v_aanwezigkenmerklink rafd + ON r.bedr_key = rafd.prs_link_key + AND rafd.prs_kenmerk_key = 1040 + LEFT JOIN -- 1041 = Regelmatige relatie/Tav + prs_v_aanwezigkenmerklink rtav + ON r.bedr_key = rtav.prs_link_key + AND rtav.prs_kenmerk_key = 1041 + LEFT JOIN -- 1022 = Regelmatige relatie/Aanhef + prs_v_aanwezigkenmerklink raanhef + ON r.bedr_key = raanhef.prs_link_key + AND raanhef.prs_kenmerk_key = 1022 + LEFT JOIN -- 1023 = Regelmatige relatie/Termijnen + prs_v_aanwezigkenmerklink rtermijnen + ON r.bedr_key = rtermijnen.prs_link_key + AND rtermijnen.prs_kenmerk_key = 1023 + LEFT JOIN -- 1060 = Regelmatige relatie/Korting + prs_v_aanwezigkenmerklink rkorting + ON r.bedr_key = rkorting.prs_link_key + AND rkorting.prs_kenmerk_key = 1060 + LEFT JOIN + (SELECT rrr.res_rsv_ruimte_key, + rr.res_discipline_key, + rr.res_ruimte_key, + l.alg_locatie_key, + '1R' res_type, + rr.res_ruimte_nr, + TO_NUMBER (NULL) vnr, + 'Huur ' + || DECODE ( + rrr.res_activiteit_key, + 30, + rdi.ins_discipline_omschrijving || ' ' + || TRIM(SUBSTR ( + rr.res_ruimte_nr, + 1, + INSTR (rr.res_ruimte_nr || '(', + '(') + - 1 + )), + 'locatie ' || l.alg_locatie_omschrijving + ) + onderwerp, + rr.res_ruimte_nr res_voorziening, + rrr.res_rsv_ruimte_prijs res_rsv_prijs, + (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) + * 24 + aantal, -- Duur in uren + rr.res_ruimte_prijs ps, -- Uur-tarief + rr.res_ruimte_prijs_ochtend po, -- Incidenteel tarief + rr.res_ruimte_prijs_middag pm, -- Vast tarief/K + rr.res_ruimte_prijs_avond pa, -- Commercieel tarief/H + rr.res_ruimte_prijs_dag pd, -- Jaartarief/J + 6 btw + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_ruimte rr, + res_discipline rdi, + res_v_res_ruimte_gegevens_all rga, + alg_locatie l + WHERE rrr.res_ruimte_opstel_key = + rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_discipline_key = rdi.ins_discipline_key + AND rr.res_ruimte_key = rga.res_ruimte_key + AND rga.alg_locatie_key = l.alg_locatie_key + UNION ALL + SELECT rrd.res_rsv_ruimte_key, + rr.res_discipline_key, + rr.res_ruimte_key, + l.alg_locatie_key, + '2V' res_type, + rr.res_ruimte_nr, + rd.res_ins_deel_key vnr, + NULL onderwerp, + LTRIM (ID.ins_deel_omschrijving) + || DECODE (rd.res_deel_eenheid, + NULL, '', + ' (' || rd.res_deel_eenheid || ')') + res_voorziening, + rrd.res_rsv_deel_prijs res_rsv_prijs, + (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 + aantal, -- Duur in uren + rd.res_deel_prijs ps, -- Uur-tarief + TO_NUMBER (NULL) po, -- Incidenteel tarief + TO_NUMBER (NULL) pm, -- Vast tarief/K + TO_NUMBER (NULL) pa, -- Commercieel tarief/H + TO_NUMBER (NULL) pd, -- Jaartarief/J + 6 btw + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_ruimte rr, + res_v_res_ruimte_gegevens_all rga, + alg_locatie l, + res_v_aanwezigrsv_deel rrd, + res_deel rd, + ins_deel ID + WHERE rrr.res_ruimte_opstel_key = + rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_ruimte_key = rga.res_ruimte_key + AND rga.alg_locatie_key = l.alg_locatie_key + AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key + AND rrd.res_deel_key = rd.res_deel_key + AND rd.res_ins_deel_key = ID.ins_deel_key + UNION ALL + SELECT rra.res_rsv_ruimte_key, + rr.res_discipline_key, + rr.res_ruimte_key, + l.alg_locatie_key, + '3C' res_type, + rr.res_ruimte_nr, + ra.res_artikel_volgnummer vnr, + NULL onderwerp, + LTRIM (ra.res_artikel_omschrijving) + || DECODE (ra.res_artikel_eenheid, + NULL, '', + ' (' || ra.res_artikel_eenheid || ')') + res_voorziening, + rra.res_rsv_artikel_prijs res_rsv_prijs, + rra.res_rsv_artikel_aantal aantal, + ra.res_artikel_prijs ps, -- Stuksprijs + TO_NUMBER (NULL) po, -- Incidenteel tarief + TO_NUMBER (NULL) pm, -- Vast tarief/K + TO_NUMBER (NULL) pa, -- Commercieel tarief/H + TO_NUMBER (NULL) pd, -- Jaartarief/J + COALESCE (rra.res_rsv_artikel_btw, + ra.res_artikel_btw, + 21) + btw + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_ruimte rr, + res_v_res_ruimte_gegevens_all rga, + alg_locatie l, + res_v_aanwezigrsv_artikel rra, + res_artikel ra + WHERE rrr.res_ruimte_opstel_key = + rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_ruimte_key = rga.res_ruimte_key + AND rga.alg_locatie_key = l.alg_locatie_key + AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key + AND rra.res_artikel_key = ra.res_artikel_key) rvc + ON x.res_rsv_ruimte_key = rvc.res_rsv_ruimte_key + WHERE tarief.res_kenmerkreservering_waarde != '261' -- Niet nul +/ + +/* Formatted on 25-11-2013 11:10:05 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW renk_v_lokaalverhuur_frozen +( + groepering, -- Huurder/locatie -> factuur + sys_helft, + res_ruimte_key, -- Ruimte + khj_tarief -- K(wartaal), H(alfjaar) of J(aar) +) +AS + SELECT x.res_rsv_ruimte_ordernr, + x.res_helft, + x.res_ruimte_key, + DECODE ( + x.res_helft, + '1', + DECODE (x.k1 + x.k2, + 2, DECODE (x.k3 + x.k4, 2, 'J', 'H'), + 'K'), -- Deze helft geen boekingen in beide kwartalen! + DECODE (x.k3 + x.k4, + 2, DECODE (x.k1 + x.k2, 2, 'J', 'H'), + 'K') -- Deze helft geen boekingen in beide kwartalen! + ) + khj + FROM ( SELECT x.res_rsv_ruimte_ordernr, + x.res_helft, + x.res_ruimte_key, + DECODE (SIGN (SUM (x.k1) - 8), -1, 0, 1) k1, + DECODE (SIGN (SUM (x.k2) - 8), -1, 0, 1) k2, + DECODE (SIGN (SUM (x.k3) - 8), -1, 0, 1) k3, + DECODE (SIGN (SUM (x.k4) - 8), -1, 0, 1) k4 + FROM (SELECT rrr.res_rsv_ruimte_key, + rrr.res_rsv_ruimte_ordernr, + DECODE ( + TRUNC (ADD_MONTHS (rrr.res_rsv_ruimte_tot, 6), + 'yyyy'), + TRUNC (rrr.res_rsv_ruimte_tot, + 'yyyy'), + '1', + '2' + ) + res_helft, + rr.res_ruimte_key, + rga.alg_locatie_key, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 1, 1, + 0 + ) + k1, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 2, 1, + 0 + ) + k2, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 3, 1, + 0 + ) + k3, + DECODE ( + TO_CHAR (rrr.res_rsv_ruimte_tot, 'Q'), + 4, 1, + 0 + ) + k4 + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + res_ruimte rr, + res_v_res_ruimte_gegevens_all rga + WHERE rrr.res_rsv_ruimte_ordernr IS NOT NULL + AND rrr.res_activiteit_key = 230 -- Schoollokaal + AND rrr.res_status_fo_key IN (1, 2) + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key + AND rro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_discipline_key = 43 + AND rr.res_ruimte_key = rga.res_ruimte_key) x + LEFT JOIN -- 303 = Verhuur tarief + res_v_aanwezigkenmerkwaarde tarief + ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key + AND tarief.res_kenmerk_key = 303 + LEFT JOIN -- 9 = Regelmatige relatiegegevens + res_v_aanwezigkenmerkwaarde bedr_key + ON x.res_rsv_ruimte_key = bedr_key.res_rsv_ruimte_key + AND bedr_key.res_kenmerk_key = 9 + WHERE tarief.res_kenmerkreservering_waarde = '84' + GROUP BY x.res_rsv_ruimte_ordernr, + x.res_helft, + x.res_ruimte_key) x; + +/* Formatted on 25-11-2013 11:12:24 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW renk_v_rap_res_frozen +( + hide_f_groepering, + hide_f_mindatum, + hide_f_maxdatum, + hide_f_restype, + fclt_f_naam, + naam, + afd, + tav, + aanhef, + adres, + postcode, + plaats, + factuurdatum, + ordernr, + periode, -- res_helft + dagnaam, + dagnr, + van, + tot, + rvc_oms, + aantal, + stuksprijs, + bruto, + onderwerp, + datumverzoek, + soortverzoek, + tarief_code, + termijnen, + korting, + fclt_f_kenmerk, + behandelaar_naam, + behandelaar_tel, + behandelaar_mail, + res_discipline_key, + res_ruimte_key, + aant_weken +) +AS + SELECT x.groepering, + MIN (x.sortering1), + MAX (x.sortering1), + x.sortering2, + MIN (x.fclt_f_naam), + MIN (x.naam), + MIN (x.afd), + MIN (x.tav), + MIN (x.aanhef), + MIN (x.adres), + MIN (x.postcode), + MIN (x.plaats), + MIN (x.factuurdatum), + MIN (x.ordernr), + MIN (x.sys_helft), + MIN (x.dagnaam), + x.dagnr, + x.van, + x.tot, + MIN (x.res_voorziening), + MIN (x.aantal), + MIN (x.stuksprijs), + DECODE (x.khj_tarief, + NULL, SUM (x.bruto), + SUM (x.bruto) / COUNT ( * )), + MIN (x.onderwerp), + MIN (x.datumverzoek), -- Langst geleden verzoekdatum! + MIN (x.soortverzoek), -- Schriftelijk wint! + MIN (x.tarief_code), + MIN (x.termijnen), + MIN (x.korting), + x.ordernr kenmerk, + MIN (x.behandelaar_naam), + MIN (x.behandelaar_tel), + MIN (x.behandelaar_mail), + MIN (x.res_discipline_key), + x.res_ruimte_key, + COUNT ( * ) aant_weken + FROM (SELECT x.groepering, + x.sortering1, + x.sortering2, + x.fclt_f_naam, + x.naam, + x.afd, + x.tav, + x.aanhef, + x.adres, + x.postcode, + x.plaats, + x.factuurdatum, + x.ordernr, + x.sys_helft, + x.dagnaam, + x.dagnr, + TO_CHAR (x.van, 'hh24:mi') van, + TO_CHAR (x.tot, 'hh24:mi') tot, + x.res_voorziening, + x.aantal, + ROUND ( + DECODE ( + x.res_rsv_prijs, + NULL, + DECODE ( + x.res_type, + '1R', + DECODE ( + x.tarief_code, + 'V', -- Speciale tarieven igv. lokalen! + DECODE (y.khj_tarief, + 'H', x.pa, -- Halfjaar + 'J', x.pd, -- Jaar + x.pm), -- Vast/Kwartaal + 'C', + x.pa, -- Commercieel! + x.po -- Incidenteel! + ), + x.ps -- 2V/3C! + ), + x.res_rsv_prijs + / DECODE (x.aantal, NULL, 1, 0, 1, x.aantal) + ), + 2 + ) + stuksprijs, + ROUND ( + DECODE ( + x.res_type, + '1R', -- ZIE OOK ONDERSTAANDE - GEVAARLIJKE - AANNAME! + COALESCE ( + x.res_rsv_prijs, -- NULL totdat door MVH "bevroren" + --DECODE (x.res_ruimte_key, + -- 121, CEIL (x.aantal / 4), + -- x.aantal) -- Instructieruimte per dagdeel + x.aantal + * DECODE ( + x.tarief_code, + 'V', -- Speciale tarieven igv. lokalen! + DECODE (y.khj_tarief, + 'H', x.pa, -- Halfjaar + 'J', x.pd, -- Jaar + x.pm), -- Vast/Kwartaal + 'C', + x.pa, -- Commercieel! + x.po -- Incidenteel! + ) + * x.korting + ), + COALESCE (x.res_rsv_prijs, x.aantal * x.ps) -- 2V/3C! + ), + 2 + ) + bruto, + x.onderwerp, + SUBSTR (x.datumverzoek, 7, 4) + || SUBSTR (x.datumverzoek, 4, 2) + || SUBSTR (x.datumverzoek, 1, 2) + datumverzoek, + x.soortverzoek, + x.tarief_code, + x.termijnen, + x.korting, + x.behandelaar_naam, + x.behandelaar_tel, + x.behandelaar_mail, + x.res_discipline_key, + x.res_ruimte_key, + y.khj_tarief + FROM renk_v_verhuurregels_frozen x, + renk_v_lokaalverhuur_vast y + WHERE x.groepering = y.groepering(+) + AND x.sys_helft = y.sys_helft(+) + AND x.res_ruimte_key = y.res_ruimte_key(+)) x + GROUP BY x.groepering, + x.sortering2, + x.dagnr, + x.van, + x.tot, + x.res_ruimte_key, + x.khj_tarief; + /* Formatted on 2-8-2013 10:05:45 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW renk_v_rap_freezereserveringen ( @@ -3077,7 +3833,7 @@ AS OR (TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24MISS') BETWEEN '180000' AND '235959')); -BEGIN fac.registercustversion('RENK', 6); END; +BEGIN fac.registercustversion('RENK', 8); END; / BEGIN adm.systrackscript('$Workfile: renk.sql $', '$Revision$', 0); END; / diff --git a/RWSN/Once/rwsn51.sql b/RWSN/Once/rwsn51.sql index 9a6dfb5d3..8c6929a44 100644 --- a/RWSN/Once/rwsn51.sql +++ b/RWSN/Once/rwsn51.sql @@ -9,11 +9,15 @@ SET ECHO ON SPOOL xrwsn51.lst SET DEFINE OFF --- 41=rwsn_v_noti_aut_ictaanvragen -DELETE FROM fac_notificatie_job WHERE fac_notificatie_job_key = 41; -DROP VIEW rwsn_v_noti_aut_ictaanvragen; +-- RWSN#14925 +UPDATE fac_notificatie_job + SET fac_notificatie_job_flags = 1 + WHERE fac_notificatie_job_view = 'RWSN_V_NOTI_EXTERN'; -DROP VIEW rwsn_v_rap_aut_ictaanvragen; +COMMIT; + +-- RWSN#27455: Aanpassing IDM_PERS-import (van BSN naar RIN)! +ALTER TABLE rwsn_imp_idm_pers ADD (RIN VARCHAR2(30)); -- 102=BUDGETHOUDER-import DELETE FROM fac_import WHERE fac_import_app_key = 102; @@ -28,23 +32,195 @@ DELETE FROM fac_import_app WHERE fac_import_app_key = 142; DROP PROCEDURE RWSN_IMPORT_ICTCP; DROP PROCEDURE RWSN_UPDATE_ICTCP; DROP TABLE RWSN_IMP_ICTCP; +DROP VIEW rwsn_v_rap_ictcp_expimp; --- CUST02=101(?) en CUST06=309 vervallen! -DELETE FROM fac_srtnotificatie WHERE fac_srtnotificatie_key IN (101, 309); +DROP VIEW rwsn_v_rap_aut_ictaanvragen; + +-- CUST02=101 omkatten naar 'opdracht'-node! +UPDATE fac_srtnotificatie + SET fac_srtnotificatie_xmlnode = 'opdracht' + WHERE fac_srtnotificatie_key = 101; + +-- CUST06=309 omkatten naar (pseudo) MLDREJ-notificatie! +UPDATE fac_srtnotificatie + SET fac_srtnotificatie_oms = 'Uw melding ##KEY## is afgewezen' + WHERE fac_srtnotificatie_key = 309; + +-- Troux-import! +CREATE TABLE rwsn_imp_appl +( + spiv_domein VARCHAR2 (60), + applicatiecode VARCHAR2 (10), + applicatienaam VARCHAR2 (100), + aut_proces VARCHAR2 (10), + beh_type VARCHAR2 (10), + beh_mail VARCHAR2 (60), + beh_org VARCHAR2 (10), + webbased VARCHAR2 (10), + vervaldatum DATE +); + +INSERT INTO fac_import_app (fac_import_app_code, + fac_import_app_oms, + fac_functie_key, + fac_import_app_prefix) + SELECT 'APPL', + 'Inlezen/bijwerken applicaties (uit Troux)', + fac_functie_key, + 'RWSN' + FROM fac_functie + WHERE fac_functie_code = 'WEB_PRSSYS'; + +COMMIT; + +-- Aanmaken kenmerksoorten + kenmerken voor discipline CIV-applicaties (= 2361)! +-- Delete voorbereide keyuser-kenmerksoorten (NIET op volgorde). +DELETE FROM ins_srtkenmerk + WHERE ins_srtkenmerk_key BETWEEN 106 AND 204 + AND TO_CHAR (ins_srtkenmerk_aanmaak, 'yyyymmdd') = '20130906'; + +COMMIT; + +-- Insert definitieve keyuser-kenmerksoorten (WEL op volgorde). +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (121,'Keyuser1 NN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (122,'Keyuser2 NN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (123,'Keyuser3 NN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (124,'Keyuser4 NN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (125,'Keyuser5 NN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (126,'Keyuser1 ON', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (127,'Keyuser2 ON', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (128,'Keyuser3 ON', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (129,'Keyuser4 ON', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (130,'Keyuser5 ON', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (131,'Keyuser1 ZN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (132,'Keyuser2 ZN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (133,'Keyuser3 ZN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (134,'Keyuser4 ZN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (135,'Keyuser5 ZN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (136,'Keyuser1 MN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (137,'Keyuser2 MN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (138,'Keyuser3 MN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (139,'Keyuser4 MN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (140,'Keyuser5 MN', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (141,'Keyuser1 WNZ','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (142,'Keyuser2 WNZ','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (143,'Keyuser3 WNZ','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (144,'Keyuser4 WNZ','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (145,'Keyuser5 WNZ','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (146,'Keyuser1 WNM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (147,'Keyuser2 WNM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (148,'Keyuser3 WNM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (149,'Keyuser4 WNM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (150,'Keyuser5 WNM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (151,'Keyuser1 ZD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (152,'Keyuser2 ZD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (153,'Keyuser3 ZD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (154,'Keyuser4 ZD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (155,'Keyuser5 ZD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (156,'Keyuser1 VWM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (157,'Keyuser2 VWM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (158,'Keyuser3 VWM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (159,'Keyuser4 VWM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (160,'Keyuser5 VWM','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (161,'Keyuser1 CIV','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (162,'Keyuser2 CIV','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (163,'Keyuser3 CIV','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (164,'Keyuser4 CIV','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (165,'Keyuser5 CIV','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (166,'Keyuser1 GPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (167,'Keyuser2 GPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (168,'Keyuser3 GPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (169,'Keyuser4 GPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (170,'Keyuser5 GPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (171,'Keyuser1 PPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (172,'Keyuser2 PPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (173,'Keyuser3 PPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (174,'Keyuser4 PPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (175,'Keyuser5 PPO','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (176,'Keyuser1 WVL','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (177,'Keyuser2 WVL','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (178,'Keyuser3 WVL','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (179,'Keyuser4 WVL','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (180,'Keyuser5 WVL','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (181,'Keyuser1 CD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (182,'Keyuser2 CD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (183,'Keyuser3 CD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (184,'Keyuser4 CD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (185,'Keyuser5 CD', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (186,'Keyuser1 BS', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (187,'Keyuser2 BS', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (188,'Keyuser3 BS', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (189,'Keyuser4 BS', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (190,'Keyuser5 BS', 'S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (191,'Keyuser1 RvR','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (192,'Keyuser2 RvR','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (193,'Keyuser3 RvR','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (194,'Keyuser4 RvR','S',461); +INSERT INTO ins_srtkenmerk (ins_srtkenmerk_key,ins_srtkenmerk_omschrijving,ins_srtkenmerk_kenmerktype,fac_kenmerkdomein_key) VALUES (195,'Keyuser5 RvR','S',461); + +COMMIT; + +-- Insert definitieve objectsoort-kenmerken (op volgorde). +INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer, + ins_kenmerk_bewerkniveau) + SELECT ins_srtkenmerk_key, + 2361, + 'D', + (ins_srtkenmerk_key - 100) * 5, + 'S' + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_key BETWEEN 100 AND 200; + +COMMIT; + +INSERT INTO fac_usrtab ( + fac_usrtab_key, + fac_usrtab_naam, + fac_usrtab_omschrijving + ) + VALUES (2, 'Org2Afkorting', 'Org2Afkorting CIV Aut.proces'); + +COMMIT; + +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2691, 'NN', 1); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2689, 'ON', 2); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2690, 'ZN', 3); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2688, 'MN', 4); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2686, 'WNZ', 5); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2685, 'WNN', 6); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2687, 'ZD', 7); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2201, 'VWM', 8); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2682, 'CIV', 9); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2681, 'GPO', 10); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 3141, 'PPO', 11); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2692, 'WVL', 12); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2683, 'CD', 13); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 2684, 'BS', 14); +INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_volgnr) VALUES (2, 32, 'RvR', 15); + +COMMIT; -- Verhuis DBV-ers naar kostenplaatsgroep (als budgethouder)! -- Aanmaken kostenplaatsgroep per divisie met als budgethouder de budgethouder --- (DBV) van de kostenplaats van de divisie! +-- (DBV) van de huidige divisie-kostenplaats! -- Ook verwijderde DBV-ers??? INSERT INTO prs_kostenplaatsgrp (prs_kostenplaatsgrp_oms, prs_perslid_key) - SELECT afd.prs_afdeling_naam, kpn.prs_perslid_key - FROM prs_afdeling afd, prs_kostenplaats kpn - WHERE afd.prs_afdeling_verwijder IS NULL + SELECT afd.prs_afdeling_naam, kp.prs_perslid_key + FROM prs_afdeling afd, prs_kostenplaats kp + WHERE afd.prs_afdeling_verwijder IS NULL AND afd.prs_afdeling_parentkey IS NULL - AND afd.prs_afdeling_omschrijving LIKE 'RWS%' -- Nieuwe diensten! - AND afd.prs_afdeling_key > 2000 -- Voor de zekerheid! - AND afd.prs_kostenplaats_key = kpn.prs_kostenplaats_key - --AND kpn.prs_perslid_key IS NOT NULL + --AND afd.prs_afdeling_omschrijving LIKE 'RWS%' -- Nieuwe diensten! + --AND afd.prs_afdeling_key > 2000 -- Voor de zekerheid! + AND afd.prs_afdeling_key IN + (SELECT fac.safe_to_number (fac_usrdata_code) + FROM fac_usrdata + WHERE fac_usrtab_key = 2) + AND afd.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_kostenplaats_module = 'PRS' -- Altijd zo! + --AND kp.prs_perslid_key IS NOT NULL AND NOT EXISTS (SELECT 1 FROM prs_kostenplaatsgrp @@ -53,6 +229,9 @@ INSERT INTO prs_kostenplaatsgrp (prs_kostenplaatsgrp_oms, prs_perslid_key) COMMIT; -- Hang kostenplaatsen onder de juiste kostenplaatsgroep! +-- Aanname: Afdeling-kostenplaats-relatie bij RWS 1-op-1! Theoretisch kan een +-- kostenplaats aan >1 afdeling hangen; deze update zal dan een fout +-- geven (bewust zo)! UPDATE prs_kostenplaats kp SET kp.prs_kostenplaatsgrp_key = (SELECT kpg.prs_kostenplaatsgrp_key @@ -65,7 +244,25 @@ UPDATE prs_kostenplaats kp AND ab.prs_afdeling_key1 = afd1.prs_afdeling_key AND afd1.prs_afdeling_naam = kpg.prs_kostenplaatsgrp_oms) - WHERE kp.prs_kostenplaatsgrp_key IS NULL; + WHERE kp.prs_kostenplaatsgrp_key IS NULL + AND kp.prs_kostenplaats_module = 'PRS' + AND EXISTS + (SELECT 1 + FROM prs_afdeling afdx, + prs_v_afdeling_boom ab, + prs_afdeling afd1, + prs_kostenplaatsgrp kpg + WHERE afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND afdx.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = afd1.prs_afdeling_key + AND afd1.prs_afdeling_key IN + (SELECT fac.safe_to_number ( + fac_usrdata_code + ) + FROM fac_usrdata + WHERE fac_usrtab_key = 2) + AND afd1.prs_afdeling_naam = + kpg.prs_kostenplaatsgrp_oms); COMMIT; @@ -80,20 +277,42 @@ COMMIT; -- Niet verwijderde leidinggevenden! Of wel??? UPDATE prs_kostenplaats kp SET kp.prs_perslid_key = - (SELECT v.prs_key + (SELECT vl.prs_key FROM prs_afdeling afdx, (SELECT kl.prs_link_key afd_key, fac.safe_to_number ( kl.prs_kenmerklink_waarde ) prs_key - FROM prs_kenmerklink kl + FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! WHERE kl.prs_kenmerk_key = 1020) vl, prs_v_aanwezigperslid pl WHERE afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key AND afdx.prs_afdeling_key = vl.afd_key AND vl.prs_key = pl.prs_perslid_key) - WHERE kp.prs_perslid_key IS NULL; + WHERE kp.prs_perslid_key IS NULL AND kp.prs_kostenplaats_module = 'PRS' + AND EXISTS + (SELECT 1 + FROM prs_afdeling afdx, + prs_v_afdeling_boom ab, + (SELECT kl.prs_link_key afd_key, + fac.safe_to_number ( + kl.prs_kenmerklink_waarde + ) + prs_key + FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! + WHERE kl.prs_kenmerk_key = 1020) vl, + prs_v_aanwezigperslid pl + WHERE afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND afdx.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 IN + (SELECT fac.safe_to_number ( + fac_usrdata_code + ) + FROM fac_usrdata + WHERE fac_usrtab_key = 2) + AND afdx.prs_afdeling_key = vl.afd_key + AND vl.prs_key = pl.prs_perslid_key); COMMIT; @@ -105,16 +324,26 @@ INSERT INTO prs_collega (prs_perslid_key, prs_perslid_key_alt) SELECT DISTINCT vl.prs_key, vc.prs_key FROM (SELECT kl.prs_link_key afd_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_kenmerklink kl -- TODO: En afdeling onder nieuwe structuur? - WHERE kl.prs_kenmerk_key = 1020) vl, + FROM prs_v_aanwezigkenmerklink kl, -- Actief kenmerkveld! + prs_v_afdeling_boom ab, + prs_afdeling afd1 + WHERE kl.prs_kenmerk_key = 1020 + AND kl.prs_link_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = afd1.prs_afdeling_key + AND afd1.prs_afdeling_key IN + (SELECT fac.safe_to_number ( + fac_usrdata_code + ) + FROM fac_usrdata + WHERE fac_usrtab_key = 2)) vl, -- Voor de zekerheid! (SELECT kl.prs_link_key afd_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_kenmerklink kl + FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! WHERE kl.prs_kenmerk_key = 1021 UNION ALL SELECT kl.prs_link_key afd_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_kenmerklink kl + FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! WHERE kl.prs_kenmerk_key = 1022) vc, prs_v_aanwezigperslid pl, prs_v_aanwezigperslid pc @@ -134,13 +363,25 @@ COMMIT; -- Alleen actieve vervangers van actieve leidinggevenden! -- DB. Een verwijderde persoon kan actieve vervangers hebben (en andersom een -- actieve persoon verwijderde vervangers)??? --- DB. Een verwijderde persoon kan in een groep zitten (of worden geplaatst)??? -> Via trigger normaal word je bij zetten verwijderdatum verwijderd uit groep(en)! +-- DB. Een verwijderde persoon kan in een groep zitten (of worden geplaatst)??? -> Trigger verwijdert je normaliter uit groep(en) bij zetten verwijderdatum! INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) - SELECT DISTINCT vl.prs_key, vc.prs_key + SELECT DISTINCT 1219, vc.prs_key FROM (SELECT kl.prs_link_key afd_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! -> TODO: Alleen voor afdelingen onder nieuwe structuur? - WHERE kl.prs_kenmerk_key = 1020) vl, + FROM prs_v_aanwezigkenmerklink kl, -- Actief kenmerkveld! + prs_v_afdeling_boom ab, + prs_afdeling afd1 + WHERE kl.prs_kenmerk_key = 1020 + AND kl.prs_link_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = afd1.prs_afdeling_key + --AND afd1.prs_afdeling_omschrijving LIKE 'RWS%' -- Nieuwe diensten! + --AND afd1.prs_afdeling_key > 2000) vl, + AND afd1.prs_afdeling_key IN + (SELECT fac.safe_to_number ( + fac_usrdata_code + ) + FROM fac_usrdata + WHERE fac_usrtab_key = 2)) vl, -- Voor de zekerheid! (SELECT kl.prs_link_key afd_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! @@ -154,106 +395,121 @@ INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) prs_v_aanwezigperslid pc WHERE vl.afd_key = vc.afd_key AND vl.prs_key = pl.prs_perslid_key - AND vc.prs_key = pc.prs_perslid_key; + AND vc.prs_key = pc.prs_perslid_key + AND NOT EXISTS + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = 1219 + AND prs_perslid_key = vc.prs_key); COMMIT; --- Verwijder *alle* huidige (mede-)leidinggevenden! Of toch voorlopig niet en handhaven als bron voor bijwerken? ---UPDATE prs_kenmerklink --- SET prs_kenmerklink_verwijder = SYSDATE --- WHERE prs_kenmerk_key IN (1020, 1021, 1022) --- AND prs_kenmerklink_niveau = 'A'; - ---COMMIT; - --- HANDIG!!! --- Verwijderde Leidinggevenden! - SELECT afd.prs_afdeling_key, - afd.prs_afdeling_naam, - afd.prs_afdeling_omschrijving, - pl.prs_perslid_key, - pl.prs_perslid_naam_full naam - FROM (SELECT kl.prs_link_key afd_key, - fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! - WHERE kl.prs_kenmerk_key = 1020) vl, - prs_afdeling afd, - prs_v_perslid_fullnames_all pl - WHERE vl.afd_key = afd.prs_afdeling_key - AND afd.prs_afdeling_verwijder IS NULL -- Actieve afdeling! - AND vl.prs_key = pl.prs_perslid_key - AND NOT EXISTS (SELECT 1 - FROM prs_v_aanwezigperslid - WHERE prs_perslid_key = vl.prs_key) -ORDER BY 5, - 1, - 2, - 3; - --- Verwijderde mede-leidinggevenden! - SELECT afd.prs_afdeling_key, - afd.prs_afdeling_naam, - afd.prs_afdeling_omschrijving, - pc.prs_perslid_key, - pc.prs_perslid_naam_full naam - FROM (SELECT kl.prs_link_key afd_key, - fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! - WHERE kl.prs_kenmerk_key = 1021 - UNION ALL - SELECT kl.prs_link_key afd_key, - fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! - WHERE kl.prs_kenmerk_key = 1022) vc, - prs_afdeling afd, - prs_v_perslid_fullnames_all pc - WHERE vc.afd_key = afd.prs_afdeling_key - AND afd.prs_afdeling_verwijder IS NULL -- Actieve afdeling! - AND vc.prs_key = pc.prs_perslid_key - AND NOT EXISTS (SELECT 1 - FROM prs_v_aanwezigperslid - WHERE prs_perslid_key = vc.prs_key) -ORDER BY 5, - 1, - 2, - 3; - --- GEEN leidinggevende en WEL mede-leidinggevenden! - SELECT afd.prs_afdeling_key, - afd.prs_afdeling_naam, - afd.prs_afdeling_omschrijving, - pc.prs_perslid_key, - pc.prs_perslid_naam_full naam - FROM (SELECT kl.prs_link_key afd_key, - fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! - WHERE kl.prs_kenmerk_key = 1021 - UNION ALL - SELECT kl.prs_link_key afd_key, - fac.safe_to_number (kl.prs_kenmerklink_waarde) prs_key - FROM prs_v_aanwezigkenmerklink kl -- Actief kenmerkveld! - WHERE kl.prs_kenmerk_key = 1022) vc, - prs_afdeling afd, - prs_v_aanwezigperslid p, - prs_v_perslid_fullnames_all pc - WHERE vc.afd_key = afd.prs_afdeling_key - AND afd.prs_afdeling_verwijder IS NULL -- Actieve afdeling! - AND vc.prs_key = p.prs_perslid_key - AND p.prs_perslid_key = pc.prs_perslid_key - AND NOT EXISTS - (SELECT 1 - FROM prs_v_aanwezigkenmerklink kl - WHERE kl.prs_kenmerk_key = 1020 - AND kl.prs_link_key = vc.afd_key) -ORDER BY 3; - --- RWSN#14925 -UPDATE fac_notificatie_job - SET fac_notificatie_job_flags = 1 - WHERE fac_notificatie_job_view = 'RWSN_V_NOTI_EXTERN'; +INSERT INTO fac_profiel (fac_profiel_key, fac_profiel_omschrijving, fac_profiel_limiet) VALUES (1, 'Default', 0); +INSERT INTO fac_profiel (fac_profiel_key, fac_profiel_omschrijving, fac_profiel_limiet) VALUES (2, 'Beheerder', 1); +INSERT INTO fac_profiel (fac_profiel_key, fac_profiel_omschrijving, fac_profiel_limiet) VALUES (3, 'Leidinggevende', 2); +INSERT INTO fac_profiel (fac_profiel_key, fac_profiel_omschrijving, fac_profiel_limiet) VALUES (4, 'DBV', 3); COMMIT; +UPDATE prs_perslid p + SET p.fac_profiel_key = 4 + WHERE p.prs_perslid_verwijder IS NULL + AND EXISTS (SELECT 1 + FROM prs_kostenplaatsgrp + WHERE prs_perslid_key = p.prs_perslid_key); +UPDATE prs_perslid p + SET p.fac_profiel_key = 4 + WHERE p.prs_perslid_verwijder IS NULL + AND EXISTS + (SELECT 1 + FROM prs_collega c, + fac_gebruikersgroep gg, + prs_kostenplaatsgrp kpg + WHERE c.prs_perslid_key_alt = p.prs_perslid_key + AND c.prs_perslid_key_alt = gg.prs_perslid_key + AND gg.fac_groep_key = 1219 + AND c.prs_perslid_key = kpg.prs_perslid_key); +UPDATE prs_perslid p + SET p.fac_profiel_key = 3 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 3 + AND EXISTS + (SELECT 1 + FROM prs_kostenplaats + WHERE prs_perslid_key = p.prs_perslid_key + AND prs_kostenplaats_verwijder IS NULL); +UPDATE prs_perslid p + SET p.fac_profiel_key = 3 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 3 + AND EXISTS + (SELECT 1 + FROM prs_collega c, + fac_gebruikersgroep gg, + prs_kostenplaats kp + WHERE c.prs_perslid_key_alt = p.prs_perslid_key + AND c.prs_perslid_key_alt = gg.prs_perslid_key + AND gg.fac_groep_key = 1219 + AND c.prs_perslid_key = kp.prs_perslid_key); +UPDATE prs_perslid p + SET p.fac_profiel_key = 2 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 2 + AND prs_perslid_key IN + (SELECT fac.safe_to_number (kd.ins_kenmerkdeel_waarde) + FROM ins_kenmerkdeel kd, ins_kenmerk k + WHERE kd.ins_kenmerkdeel_verwijder IS NULL + AND kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key BETWEEN 103 AND 200); +UPDATE prs_perslid p + SET p.fac_profiel_key = 1 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 1; + +COMMIT; + +-- Rapportage tbv. FBs/KEYs (64=WEB_USER01) +CREATE OR REPLACE VIEW rwsn_v_rap_aut_ictbeheer AS SELECT NULL x FROM DUAL; +INSERT INTO FAC_USRRAP + (fac_usrrap_omschrijving, fac_usrrap_view_name, + fac_usrrap_in_huidige_locatie, + fac_usrrap_template, fac_usrrap_macro, + fac_usrrap_vraagbegindatum, fac_usrrap_vraageinddatum, + fac_usrrap_functie, + fac_usrrap_info, + fac_functie_key, fac_usrrap_autorefresh + ) + VALUES ('CIV: Te autoriseren applicatie aanvragen', 'RWSN_V_RAP_AUT_ICTBEHEER', + NULL, + NULL, NULL, + 0, 0, + 1, + 'Overzicht van te behandelen aanvragen door FB-er of Key-user.', + 64, + 0 + ); + +-- RWSN#27941: Rapportage CIV-specials (61=WEB_PRSSYS) +CREATE OR REPLACE VIEW rwsn_v_rap_civ_specials AS SELECT NULL x FROM DUAL; +INSERT INTO FAC_USRRAP + (fac_usrrap_omschrijving, fac_usrrap_view_name, + fac_usrrap_in_huidige_locatie, + fac_usrrap_template, fac_usrrap_macro, + fac_usrrap_vraagbegindatum, fac_usrrap_vraageinddatum, + fac_usrrap_functie, + fac_usrrap_info, + fac_functie_key, fac_usrrap_autorefresh + ) + VALUES ('CIV: Contactgegevens per product/dienst', 'RWSN_V_RAP_CIV_SPECIALS', + NULL, + NULL, NULL, + 0, 0, + 0, + 'RWSN#27941', + 61, + 0 + ); + BEGIN adm.systrackscript('$Workfile: rwsn51.sql $', '$Revision$', 0); END; / SPOOL OFF diff --git a/RWSN/Once/rwsn52.sql b/RWSN/Once/rwsn52.sql new file mode 100644 index 000000000..684f80bd1 --- /dev/null +++ b/RWSN/Once/rwsn52.sql @@ -0,0 +1,1040 @@ +-- Customer specific once-script RWSN52. +-- +-- (c) 2013 SG|facilitor bv +-- $Revision$ +-- $Id$ +-- +-- Support: +31 53 4800700 +SET ECHO ON +SPOOL xrwsn52.lst +SET DEFINE OFF + +-- RWSN#27455: Aanpassing IDM-koppeling (van BSN naar RIN); tbv. levering naar +-- Test nu nog in rwsn52, maar later (TODO) opnemen in rwsn.sql!!! +CREATE OR REPLACE PROCEDURE rwsn_update_idm_pers (p_import_key IN NUMBER) +AS + /* Globale werking: + Op basis van het IDM importbestand + -- worden personen toegevoegd aan (vereist) bestaande afdelingen + -- worden onderwijl functie aangemaakt, zonodig + -- worden werkplekken gedefinieerd zomogelijk (vertaaltabel) + -- worden vervallen personen verwijderd + (c) SG|facilitor bv + */ + -- Constanten + c_verdieping_omschr_default VARCHAR2 (16) := 'Begane grond'; + c_srtruimte_default INTEGER := 1; + c_ruimte_code VARCHAR2 (3) := '001'; + c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend'; + c_werkplek_volgnr_default INTEGER := 1; + c_prs_werkplek_omschrijving VARCHAR2 (16) := '1'; + c_default_profiel_key NUMBER (10) := 1; + c_rin_kkey NUMBER (10) := 1160; + c_commitbuffer NUMBER := 1000; + -- om de zoveel committen + v_buffercount NUMBER := 0; + + -- Personen die moeten vervallen zijn personen die: + --- volgens de importregels zijn ingevoerd (ignore handmatige) + --- in de import voorkomen en een einddatum hebben die voorbij is + --- of niet in de import voorkomen + -- en die nog niet vervallen waren + -- personeelsnummer=BSN uit de importtabel mapt op prs_perslid_authenticatie => per RWSN52 vervallen! + -- RIN uit de importtabel mapt op kenmerk met key=1160 + -- dienstverbandid uit de importtabel (SAPHRnummer) mapt op prs_perslid_nr + CURSOR c_prs_del + IS + SELECT p.prs_perslid_key, + pf.prs_perslid_naam_full, + kl.prs_kenmerklink_waarde rin + FROM prs_perslid p, + prs_v_perslid_fullnames_all pf, + prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_verwijder IS NULL -- is niet al verwijderd + AND p.prs_perslid_key = pf.prs_perslid_key + AND p.prs_perslid_key = kl.prs_link_key + AND kl.prs_kenmerk_key = c_rin_kkey -- is ooit geimporteerd + AND NOT EXISTS -- komt niet voor in import + (SELECT 1 + FROM rwsn_imp_idm_pers + WHERE UPPER (rin) = UPPER (kl.prs_kenmerklink_waarde)) + UNION ALL + SELECT p.prs_perslid_key, + pf.prs_perslid_naam_full, + kl.prs_kenmerklink_waarde rin + FROM prs_perslid p, + prs_v_perslid_fullnames_all pf, + prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_verwijder IS NULL -- is niet al verwijderd + AND p.prs_perslid_key = pf.prs_perslid_key + AND p.prs_perslid_key = kl.prs_link_key + AND kl.prs_kenmerk_key = c_rin_kkey -- is ooit geimporteerd + AND NOT EXISTS -- is beeindigd volgens import (geen persoon-regels met einddatum in toekomst) + (SELECT 1 + FROM rwsn_imp_idm_pers + WHERE UPPER (rin) = UPPER (kl.prs_kenmerklink_waarde) + AND COALESCE (einddatum,SYSDATE + 1) > SYSDATE) + ORDER BY 3, 1; + + -- Personen die nieuw of gewijzigd zijn + --- Reeds eerder verwijderde personen kunnen worden gereactiveerd (.. check) + -- Dubbele dienstverbanden wordt achter elkaar ingelezen en overschrijven elkaar dus. + -- In de volgorde is de laatste einddatum het laatst aan de beurt. Dit is vaak het + -- permanente contract tot jaar 9999. + CURSOR c_prs_upd + IS + SELECT p.prs_perslid_key, idm.locatiecode alg_locatie_code, idm.afdelingscode prs_afdeling_naam, + idm.persoonachternaam prs_perslid_naam, idm.tussenvoegsel prs_perslid_tussenvoegsel, + idm.voorletters prs_perslid_voorletters, idm.voornaam prs_perslid_voornaam, + idm.telefoonnummer prs_perslid_telefoonnr, idm.functie prs_srtperslid_omschrijving, idm.rin, + idm.personeelsnummer personeelsnummer, idm.titel prs_perslid_titel, p.prs_perslid_verwijder, + idm.begindatum, idm.einddatum, idm.mobielnummer, idm.email, idm.loginnaam, idm.dienstverbandguid, + idm.dienstverbandid, idm.bezoekadresnaam, idm.bezoekadresnummer, idm.bezoekadrespostcode, + idm.bezoekadresplaats, idm.aanduidingnaamgebruik, idm.partnertussenvoegsel, idm.partnernaam + FROM (SELECT * + FROM rwsn_imp_idm_pers + WHERE einddatum > SYSDATE) idm + LEFT JOIN + (SELECT kl.prs_kenmerklink_waarde rin, + p.prs_perslid_key, + p.prs_perslid_verwijder + FROM prs_perslid p, prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_key = kl.prs_link_key + AND kl.prs_kenmerk_key = c_rin_kkey) p + ON idm.rin = p.rin + ORDER BY idm.rin, idm.einddatum, prs_perslid_key DESC; + + v_perslid_key NUMBER (10); + v_prs_key_cnt NUMBER (10); + v_srtperslid_key NUMBER (10); + v_afdeling_key NUMBER (10); + v_srtperslid_omschr VARCHAR2 (30); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + v_count NUMBER (10); + v_update BOOLEAN; + v_perslid_count_imp NUMBER; + v_perslid_count_fclt NUMBER; + v_perslid_newcount_fclt NUMBER; + currentversion fac_module.fac_module_version%TYPE; + v_newgebouwkey NUMBER; + lnaampresentatie VARCHAR2 (100); + ltussenvoegselpres VARCHAR2 (100); + lemail VARCHAR2 (100); + llogin1 VARCHAR2 (100); + llogin2 VARCHAR2 (100); + + + -- Bepaal het gebouw behorende bij postcode en nummer (best guess!) + -- Return -1 als het niet bepaald kan worden + FUNCTION getgebouwkey (postcode IN VARCHAR2, nummer IN VARCHAR2) + RETURN NUMBER + IS + llocatiekey alg_locatie.alg_locatie_key%TYPE; + lgebouwkey alg_gebouw.alg_gebouw_key%TYPE; + BEGIN + IF postcode IS NULL + THEN + RETURN -1; + END IF; + + SELECT NVL (MIN (alg_locatie_key), -1) + INTO llocatiekey + FROM mld_adres m + WHERE m.mld_adres_bezoek_postcode = postcode + AND UPPER(SUBSTR(RTRIM(m.mld_adres_bezoek_adres), INSTR(RTRIM(m.mld_adres_bezoek_adres), ' ', -1)+1)) + = UPPER(nummer) ; + + IF llocatiekey <> -1 + THEN + SELECT NVL (MIN (alg_gebouw_key), -1) + INTO lgebouwkey + FROM alg_gebouw + WHERE alg_gebouw_verwijder IS NULL AND alg_locatie_key = llocatiekey; + ELSE + lgebouwkey := -1; + END IF; + + RETURN lgebouwkey; + END; + + -- Het login veld in het importbestand heeft de onzalige eigenschap + -- dat er soms meerdere in staan, gescheiden door een , (komma) + -- Deze functie vertaalt dit veld tot een goede login + -- Op dit moment is dat het eerste adres. Tenzij de bestaande login voorkomt + -- in de lijst. + PROCEDURE handle_login (plogin IN VARCHAR2, p_perslid_key IN NUMBER, login1 OUT VARCHAR2, login2 OUT VARCHAR2) + IS + l_login_str rwsn_imp_idm_pers.loginnaam%TYPE; + BEGIN + l_login_str := UPPER(plogin); + IF p_perslid_key IS NOT NULL THEN + -- bestaand persoon + SELECT prs_perslid_oslogin, prs_perslid_oslogin2 + INTO login1, login2 + FROM prs_perslid + WHERE prs_perslid_key = p_perslid_key; + IF login1 = login2 THEN + login2 := NULL; + END IF; + IF login1 IS NOT NULL AND INSTR(','||l_login_str||',', ','||login1||',') > 0 THEN + -- 1e login is niet leeg en is gevonden in login lijst + -- we hoeven niets te doen + NULL; + ELSE + -- 1e login is niet gevonden of is leeg + -- controleer of er meerdere logins op de regel staan + IF INSTR (l_login_str, ',') > 0 THEN + login1 := SUBSTR (l_login_str, 1, INSTR (l_login_str, ',') - 1); + ELSE + login1 := l_login_str; + END IF; + IF login1 = login2 THEN + login2 := NULL; + END IF; + END IF; + + IF login2 IS NOT NULL AND INSTR(','||l_login_str||',', ','||login2||',') > 0 THEN + -- 2e login is niet leeg en is gevonden in login lijst + -- we hoeven niets te doen + NULL; + ELSE + -- 2e login is niet gevonden of is leeg + login2 := SUBSTR (l_login_str, 1, INSTR (l_login_str, ',') - 1); + IF login1 = login2 THEN + -- ga op zoek naar de volgende + l_login_str := SUBSTR(l_login_str, INSTR (l_login_str, ',')+1); + IF INSTR (l_login_str, ',') > 0 THEN + login2 := SUBSTR (l_login_str, 1, INSTR (l_login_str, ',') - 1); + ELSE + login2 := l_login_str; + END IF; + END IF; + END IF; + + ELSE + + IF INSTR (l_login_str, ',') > 0 + THEN + login1 := SUBSTR (l_login_str, 1, INSTR (l_login_str, ',') - 1); + l_login_str := SUBSTR(l_login_str, INSTR (l_login_str, ',')+1); + IF INSTR (l_login_str, ',') > 0 THEN + login2 := SUBSTR (l_login_str, 1, INSTR (l_login_str, ',') - 1); + ELSE + login2 := l_login_str; + END IF; + ELSE + login1 := l_login_str; + login2 := null; + END IF; + END IF; + END; + + -- Het emailveld in het importbestand heeft de onzalige eigenschap + -- dat er soms meerdere in staan, gescheiden door een , (komma) + -- Deze functie vertaalt dit veld tot een goed emailadressen + -- Op dit moment nemen we alle email adressen over zodat de + -- gebruiker meerdere mailtjes krijgt. + FUNCTION handle_email (pemail IN VARCHAR2) + RETURN VARCHAR2 + IS + rstr rwsn_imp_idm_pers.email%TYPE; + BEGIN + rstr := pemail; + RETURN rstr; + END; + + -- Procedure die alles regelt voor de locatie van een persoon, varierend van + -- NIKS: als plaats ongeldig is of de huidige situatie al goed is + -- ZETTEN OP EEN BESTAANDE WERKPLEK + -- VERDIEPING/RUIMTE/WERKPLEK AANMAKEN EN TOEKENNEN + PROCEDURE handle_location (pkey IN NUMBER, pgebouwkey IN VARCHAR2, prin IN VARCHAR2) + IS + lv_errormsg VARCHAR2 (1000); + lv_errorhint VARCHAR2 (1000); + lv_nr_werkplek NUMBER; + lv_current_gebouw_key NUMBER; + lv_verdieping_key NUMBER (10); + lv_ruimte_key NUMBER (10); + lv_werkplek_key NUMBER (10); + BEGIN + lv_errormsg := 'Toekennen van een plaats'; + + IF pgebouwkey = -1 + THEN + lv_errorhint := 'Onbekend gebouw voor persoon/RIN: ' || prin; + fac.imp_writelog (p_import_key, 'W', lv_errormsg, lv_errorhint); + RETURN; + END IF; + + -- komt de nieuwe werkplek al voor bij een van de bestaande werkplekken? + SELECT COUNT (*) + INTO lv_nr_werkplek + FROM prs_perslidwerkplek pw, prs_werkplek w, alg_ruimte r, alg_verdieping v + WHERE pw.prs_werkplek_key = w.prs_werkplek_key + AND nvl(w.prs_werkplek_virtueel, 0) <> 1 + AND w.prs_alg_ruimte_key = r.alg_ruimte_key + AND r.alg_verdieping_key = v.alg_verdieping_key + AND prs_perslid_key = pkey + AND v.alg_gebouw_key = pgebouwkey; + + IF lv_nr_werkplek > 0 + THEN + -- nieuwe werkplek bestaat al als een van de werkplekken. + lv_errorhint := 'Ongewijzigd gebouw voor persoon/RIN: ' || prin; + fac.imp_writelog (p_import_key, 'I', lv_errormsg, lv_errorhint); + RETURN; + END IF; + + -- verwijder de bestaande werkplekken. + -- HdZ (6-8-2009: werkplekken mogen nog niet verwijderd worden via de koppeling. + -- werkplekken worden nog vaak handmatig aangemaakt. + --DELETE prs_perslidwerkplek WHERE prs_perslid_key = pkey; + + -- Er moet wat gebeuren, plaatsen of verplaatsen + -- Vooralsnog even (bij)plaatsen + -- De gebouwkey is bekend, dus het gebouw ook. + -- Dan zoeken we naar de laagste verdieping en laagste ruimtenr + -- en dan maken we daarvoor een werkplek aan + IF lv_nr_werkplek = 0 + THEN + -- persoon heeft geen werkplek(ken) + BEGIN + lv_errormsg := 'Bepalen verdieping'; + + SELECT alg_verdieping_key + INTO lv_verdieping_key + FROM alg_verdieping + WHERE alg_gebouw_key = pgebouwkey AND alg_verdieping_verwijder IS NULL AND alg_verdieping_upper like '%BEGANE GROND%'; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errorhint := 'Begane grond toevoegen voor persoon/RIN: ' || prin; + + INSERT INTO alg_verdieping + (alg_gebouw_key, alg_verdieping_omschrijving, alg_verdieping_volgnr, alg_verdieping_code) + VALUES (pgebouwkey, c_verdieping_omschr_default, 0, '0') + RETURNING alg_verdieping_key + INTO lv_verdieping_key; + END; + + -- lv_verdieping_key bekend + BEGIN + -- zoek de laagste ruimte op deze verdieping + SELECT alg_ruimte_key + INTO lv_ruimte_key + FROM alg_ruimte + WHERE alg_verdieping_key = lv_verdieping_key + AND alg_ruimte_verwijder IS NULL + AND alg_ruimte_nr = (SELECT MIN (alg_ruimte_nr) + FROM alg_ruimte + WHERE alg_verdieping_key = lv_verdieping_key AND alg_ruimte_verwijder IS NULL); + EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errorhint := 'Ruimte toevoegen voor persoon/RIN: ' || prin; + + -- Noot: de srtruimte 1 moet bestaan + INSERT INTO alg_ruimte + (alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving) + VALUES (lv_verdieping_key, c_srtruimte_default, c_ruimte_code, c_ruimte_omschr_default) + RETURNING alg_ruimte_key + INTO lv_ruimte_key; + END; + + -- lv_ruimte_key bekend + BEGIN + SELECT prs_werkplek_key + INTO lv_werkplek_key + FROM prs_werkplek + WHERE prs_alg_ruimte_key = lv_ruimte_key + AND prs_werkplek_volgnr = c_werkplek_volgnr_default; + -- Altijd werkplek met deze notatie! + EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errorhint := 'Werkplek toevoegen voor persoon/RIN: ' || prin; + + -- WEL/NIET VIRTUEEL? + INSERT INTO prs_werkplek + (prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key, prs_werkplek_virtueel) + VALUES (c_werkplek_volgnr_default, c_prs_werkplek_omschrijving, lv_ruimte_key, 0) + RETURNING prs_werkplek_key + INTO lv_werkplek_key; + -- Altijd werkplek met deze notatie! + END; + + -- lv_werkplek_key bekend + -- 11-12-2009/MvdH - Unique constraint exception igv. virtuele werkplek? Volgens mij wel, maar niet opgelost! + INSERT INTO prs_perslidwerkplek + (prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting) + VALUES (pkey, lv_werkplek_key, 0); + END IF; + END; + + PROCEDURE update_adres + AS + CURSOR cadressen + IS + SELECT DISTINCT + substr(bezoekadresplaats || '-' || bezoekadresnaam,1,30) adres_naam + , substr(bezoekadresnaam || ' ' || bezoekadresnummer,1,35) adres_bezoek_adres + , substr(bezoekadrespostcode,1,12) adres_bezoek_postcode + , substr(bezoekadresplaats, 1, 30) adres_bezoek_plaats + FROM rwsn_imp_idm_pers + WHERE bezoekadrespostcode IS NOT NULL; + + ladreskey NUMBER (10); + l_newcount NUMBER; + l_impcount NUMBER; + v_errormsg VARCHAR (200); + oracle_err_mes VARCHAR2 (150); + currentversion fac_module.fac_module_version%TYPE; + BEGIN + + FOR rc IN cadressen + LOOP + -- Bestaat deze al? + -- Er is geen key, dus checken we op alle velden + -- Een update is dus nvt + BEGIN + SELECT mld_adres_key + INTO ladreskey + FROM mld_adres + WHERE mld_adres_naam = rc.adres_naam + AND mld_adres_bezoek_postcode = rc.adres_bezoek_postcode + AND mld_adres_bezoek_adres = rc.adres_bezoek_adres + AND mld_adres_bezoek_plaats = rc.adres_bezoek_plaats; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + ladreskey := -1; + END; + +-- DBMS_OUTPUT.put_line (rc.adres_naam); + + IF ladreskey = -1 + THEN + INSERT INTO mld_adres + (mld_adres_naam, + mld_adres_bezoek_adres, + mld_adres_bezoek_postcode, + mld_adres_bezoek_plaats, + mld_adres_afleveradres + ) + VALUES (rc.adres_naam, rc.adres_bezoek_adres, rc.adres_bezoek_postcode, rc.adres_bezoek_plaats, 1); + + fac.imp_writelog (p_import_key, 'I', 'Adres is toegevoegd', rc.adres_naam); + END IF; + END LOOP; + + -- Zoek de locatiekey bij het adres op basis van postcode + -- Als er meerdere locaties matchen pak ik de oudste (=grootste?) + UPDATE mld_adres + SET alg_locatie_key = + (SELECT MIN (l.alg_locatie_key) + FROM alg_locatie l + WHERE l.alg_locatie_postcode = mld_adres_bezoek_postcode + AND UPPER(SUBSTR(RTRIM(l.alg_locatie_adres), INSTR(RTRIM(l.alg_locatie_adres), ' ', -1))) = UPPER(SUBSTR(mld_adres_bezoek_adres, INSTR(mld_adres_bezoek_adres, ' ', -1))) + AND l.alg_locatie_verwijder IS NULL) + WHERE mld_adres_verwijder IS NULL AND alg_locatie_key IS NULL; + END; + + + PROCEDURE update_dienstverbandguid(p_prs_perslid_key IN NUMBER, p_dienstverbandguid IN VARCHAR2) + AS + v_prs_kenmerk_key NUMBER; + v_prs_kenmerklink_key NUMBER; + BEGIN + BEGIN + -- check for dienstverbandguid kenmerk + SELECT prs_kenmerk_key + INTO v_prs_kenmerk_key + FROM prs_v_aanwezigkenmerk + WHERE prs_kenmerk_omschrijving = 'DienstverbandGUID'; + EXCEPTION WHEN NO_DATA_FOUND THEN + INSERT INTO prs_kenmerk + ( PRS_KENMERK_NIVEAU + , PRS_KENMERK_VOLGNR + , PRS_KENMERK_OMSCHRIJVING + , PRS_KENMERK_KENMERKTYPE + , PRS_KENMERK_LENGTE) + VALUES ( 'P' + , 10 + , 'DienstverbandGUID' + , 'C' + , 49 + ) + RETURNING prs_kenmerk_key + INTO v_prs_kenmerk_key; + END; + BEGIN + SELECT prs_kenmerklink_key + INTO v_prs_kenmerklink_key + FROM prs_kenmerklink + WHERE prs_kenmerk_key = v_prs_kenmerk_key + AND prs_link_key = p_prs_perslid_key + AND prs_kenmerklink_niveau = 'P'; + EXCEPTION WHEN NO_DATA_FOUND THEN + INSERT INTO PRS_KENMERKLINK + ( PRS_LINK_KEY + , PRS_KENMERKLINK_NIVEAU + , PRS_KENMERK_KEY + , PRS_KENMERKLINK_WAARDE) + VALUES ( p_prs_perslid_key + , 'P' + , v_prs_kenmerk_key + , p_dienstverbandguid); + END; + UPDATE prs_kenmerklink + SET prs_kenmerklink_waarde = p_dienstverbandguid + WHERE prs_kenmerklink_key = v_prs_kenmerklink_key; + END; + + + +---------------------- +---------------------- +---------------------- +---------------------- +---------------------- +-- MAIN PROCEDURE +---------------------- +---------------------- +---------------------- +---------------------- +---------------------- +BEGIN + SELECT MAX (fac_module_version) + INTO currentversion + FROM fac_module; + + fac.imp_writelog (p_import_key, + 'I', + 'Facilitor IDM_PERS import version ' || currentversion, + '$Revision$' + ); + +-- -- #Import + SELECT COUNT (*) + INTO v_perslid_count_imp + FROM rwsn_imp_idm_pers; + + -- Informatieve logging, zien we gelijk hoe laat het was + fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen personen: ' || TO_CHAR (v_perslid_count_imp), ''); + + -- #Actieve personen mèt RIN + SELECT COUNT (*) + INTO v_perslid_count_fclt + FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerk_key = c_rin_kkey; + + -- Check het aantal regels, stop als onvoldoende (=bestaand maar ongeldig bestand) + IF v_perslid_count_imp = 0 + THEN + fac.imp_writelog (p_import_key, 'E', 'Het importbestand is ongeldig. Import afgebroken', ''); + RETURN; + END IF; + + update_adres (); + + -- Begin met het ontmantelen van vervallen personen + FOR rec_prs_del IN c_prs_del + LOOP + BEGIN + v_perslid_key := rec_prs_del.prs_perslid_key; + v_errormsg := 'Verwijderen van persoon NIET gelukt'; + v_errorhint := 'Heeft persoon met key ' || TO_CHAR (v_perslid_key) || ' historie?'; + + SELECT SUM (x.aant) + INTO v_count + FROM (SELECT COUNT ( * ) aant + FROM prs_v_verplichting_refcheck pv + WHERE pv.prs_perslid_key = v_perslid_key + UNION + SELECT COUNT ( * ) aant + FROM fac_tracking t + WHERE t.prs_perslid_key = v_perslid_key) x; + + IF v_count = 0 + THEN + -- Persoon heeft geen enkele (actuele of historische) verplichting + v_errorhint := 'Verwijderen van persoon met key ' || TO_CHAR (v_perslid_key); + + DELETE FROM prs_perslid + WHERE prs_perslid_key = v_perslid_key; + + --Via trigger! + --DELETE FROM prs_kenmerklink + -- WHERE prs_link_key = v_perslid_key AND prs_kenmerklink_niveau = 'P'; + + fac.imp_writelog (p_import_key, + 'I', + 'Persoon verwijderd; RIN: ' || rec_prs_del.rin, + ''); + ELSE + -- Controleer of er ACTUELE verplichtingen zijn + SELECT COUNT (*) + INTO v_count + FROM prs_v_verplichting_keys pv + WHERE pv.prs_perslid_key = v_perslid_key; + + IF v_count > 0 + THEN + UPDATE prs_perslid + SET prs_perslid_naam = SUBSTR ('INACTIEF:' || prs_perslid_naam, 1, 30), + prs_perslid_oslogin = NULL + WHERE prs_perslid_key = v_perslid_key AND prs_perslid_naam NOT LIKE 'INACTIEF:%'; + + fac.imp_writelog (p_import_key, + 'I', + 'Persoon INACTIEF; RIN: ' || rec_prs_del.rin, + ''); + ELSE + -- Er zijn geen actieve verplichtingen, wel historische + BEGIN + UPDATE prs_perslid + SET prs_perslid_verwijder = SYSDATE + WHERE prs_perslid_key = v_perslid_key; + + fac.imp_writelog (p_import_key, + 'I', + 'Persoon verwijderd; RIN: ' || rec_prs_del.rin, + ''); + EXCEPTION + WHEN OTHERS + THEN + -- Kennelijk heeft persoon toch ernstige verplichtingen + v_errorhint := + 'Persoon heeft nog (max. ' + || TO_CHAR (v_count) + || ') verplichtingen; RIN: ' + || rec_prs_del.rin; + fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint); + END; + END IF; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := 'Delete exception ' || oracle_err_mes; + fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); + END; + END LOOP; + + COMMIT; + + -- Ga verder met het toevoegen of bijwerken + FOR rec_prs_upd IN c_prs_upd + LOOP + BEGIN + -- Init + v_update := TRUE; -- wordt PER RECORD false bij funest gebrek aan vervulde randvoorwaarden + v_afdeling_key := 0; + v_srtperslid_key := 0; + v_perslid_key := 0; + v_errormsg := 'Fout bij bepalen randvoorwaarden'; + + -- *** Controle verplichte gegevens + ophalen extra informatie *** + -- Controle: RIN + IF rec_prs_upd.rin IS NULL + THEN + v_errorhint := 'Persoon heeft geen RIN; achternaam: ' || rec_prs_upd.prs_perslid_naam; + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + v_update := FALSE; + END IF; + + -- Controle: PRS_PERSLID_NAAM + IF v_update AND rec_prs_upd.prs_perslid_naam IS NULL + THEN + v_errorhint := 'Persoon heeft geen achternaam; RIN: ' || rec_prs_upd.rin; + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + v_update := FALSE; + END IF; + + -- Controle: Persoon reactiveren of is er al een actieve persoon met dezelfde RIN? + IF v_update AND rec_prs_upd.prs_perslid_verwijder IS NOT NULL + THEN + v_errorhint := + 'Bepalen reactivatie persoon/RIN: ' || rec_prs_upd.rin; + + -- Is er al een actieve persoon met dezelfde RIN? + SELECT COUNT (p.prs_perslid_key) + INTO v_prs_key_cnt + FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_key = kl.prs_link_key + AND kl.prs_kenmerk_key = c_rin_kkey + AND kl.prs_kenmerklink_waarde LIKE rec_prs_upd.rin + AND p.prs_perslid_key != rec_prs_upd.prs_perslid_key; + + IF v_prs_key_cnt > 0 + THEN + -- Waarde(n) gevonden, dus is er al een actieve persoon met dezelfde RIN! + -- => Geen update + v_update := FALSE; + ELSE + -- Kennelijk is er geen actieve persoon met dezelfde RIN! + -- => Wel update (prs_perslid_verwijder op NULL zetten) + fac.imp_writelog ( + p_import_key, + 'I', + 'Persoon reactiveren; RIN: ' || rec_prs_upd.rin, + '' + ); + END IF; + END IF; + + -- Controle: PRS_AFDELING_NAAM + v_errorhint := 'De afdeling kan niet bepaald worden ' || rec_prs_upd.prs_afdeling_naam; + + IF v_update + THEN + BEGIN + -- Bepaal de afdelingskey; afdelingen worden met een andere import beheerd + SELECT prs_afdeling_key + INTO v_afdeling_key + FROM prs_afdeling + WHERE prs_afdeling_naam = rec_prs_upd.prs_afdeling_naam AND prs_afdeling_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_update := FALSE; + v_errorhint := + 'Afdeling ' + || rec_prs_upd.prs_afdeling_naam + || ' bestaat niet; persoon/RIN: ' + || rec_prs_upd.rin; + -- Kennelijk is de afdeling niet gevonden + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + WHEN OTHERS + THEN + v_update := FALSE; + v_errorhint := 'Kan Afdeling ' || rec_prs_upd.prs_afdeling_naam || ' niet eenduidig bepalen?!'; + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + END; + END IF; + + v_errorhint := 'Bepaling functie'; + + -- Controle: PRS_SRTPERSLID_OMSCHRIJVING + IF v_update + THEN + BEGIN + v_srtperslid_omschr := rec_prs_upd.prs_srtperslid_omschrijving; + + -- Bepaal de key van de functie + SELECT prs_srtperslid_key + INTO v_srtperslid_key + FROM prs_srtperslid + WHERE prs_srtperslid_upper = UPPER (v_srtperslid_omschr) AND prs_srtperslid_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + fac.imp_writelog (p_import_key, + 'I', + 'Functie ' || v_srtperslid_omschr || ' toegevoegd', + v_errorhint + ); + + -- Functie bestaat kennelijk niet, maak 'm maar aan + INSERT INTO prs_srtperslid + (prs_srtperslid_omschrijving) + VALUES (v_srtperslid_omschr); + + -- Wat is de key van deze nieuwe geworden? + SELECT prs_srtperslid_key + INTO v_srtperslid_key + FROM prs_srtperslid + WHERE prs_srtperslid_omschrijving = v_srtperslid_omschr AND prs_srtperslid_verwijder IS NULL; + WHEN OTHERS + THEN + v_errorhint := + 'Functie ' + || v_srtperslid_omschr + || ' kan niet bepaald worden; persoon/RIN: ' + || rec_prs_upd.rin; + v_update := FALSE; + END; + END IF; + + IF rec_prs_upd.partnernaam IS NULL THEN + -- als de partnernaam niet gevuld is dan kunnen we deze ook niet gebruiken. + lnaampresentatie := rec_prs_upd.prs_perslid_naam; + ltussenvoegselpres := rec_prs_upd.prs_perslid_tussenvoegsel; + ELSE + -- Bepaal de te gebruiken achternaamformattering + CASE LPAD (rec_prs_upd.aanduidingnaamgebruik, 1, '0') + WHEN '0' + THEN + BEGIN + -- code 0 = [aanhef, titel, voorletters,] voorvoegsels, achternaam + -- Opgem. naam Mevr. T. de Haan + lnaampresentatie := rec_prs_upd.prs_perslid_naam; + ltussenvoegselpres := rec_prs_upd.prs_perslid_tussenvoegsel; + END; + WHEN '1' + THEN + BEGIN + --Code 1 = [aanhef, titel, voorletters,] 2e voorvoegsels, 2e naam(partnernaam) voorvoegsels, achternaam + --Opgem. naam Mevr. T. Bronsgeest-de Haan + lnaampresentatie := + rec_prs_upd.partnernaam + || '-' + || rec_prs_upd.prs_perslid_tussenvoegsel + || ' ' + || rec_prs_upd.prs_perslid_naam; + ltussenvoegselpres := rec_prs_upd.partnertussenvoegsel; + END; + WHEN '2' + THEN + BEGIN + --Code 2 = [aanhef, titel, voorletters,] voorvoegsels, achternaam, 2e voorvoegsels, 2e naam(partnernaam) + --Opgem. naam Mevr. T. de Haan-Bronsgeest + lnaampresentatie := + rec_prs_upd.prs_perslid_naam + || '-' + || rec_prs_upd.partnertussenvoegsel + || ' ' + || rec_prs_upd.partnernaam; + ltussenvoegselpres := rec_prs_upd.prs_perslid_tussenvoegsel; + END; + WHEN '3' + THEN + BEGIN + --code 3 = [aanhef, titel, voorletters,] 2e voorvoegsels, 2e naam(partnernaam) + --Opgem. naam Mevr. T. Bronsgeest + lnaampresentatie := rec_prs_upd.partnernaam; + ltussenvoegselpres := rec_prs_upd.partnertussenvoegsel; + END; + ELSE + BEGIN + -- code 0 = [aanhef, titel, voorletters,] voorvoegsels, achternaam + -- Opgem. naam Mevr. T. de Haan + lnaampresentatie := rec_prs_upd.prs_perslid_naam; + ltussenvoegselpres := rec_prs_upd.prs_perslid_tussenvoegsel; + fac.imp_writelog (p_import_key, + 'W', + 'Ongedefinieerd naamformattering (AanduidingNaamGebruik) ' + || rec_prs_upd.aanduidingnaamgebruik, + 'Default (0) wordt gehanteerd.' + ); + END; + END CASE; + END IF; + lnaampresentatie := substrb (lnaampresentatie,1,30); + + v_errorhint := 'E-mail'; + lemail := handle_email (rec_prs_upd.email); + v_errorhint := 'Aanmeldnaam'; + handle_login (rec_prs_upd.loginnaam, rec_prs_upd.prs_perslid_key, llogin1, llogin2); + + -- *** Daadwerkelijk insert/update prs_perslid *** + IF v_update + THEN + BEGIN + IF rec_prs_upd.prs_perslid_key IS NULL + THEN + v_errormsg := 'Persoon kan niet worden toegevoegd'; + + INSERT INTO prs_perslid + (prs_perslid_naam, + prs_perslid_tussenvoegsel, + prs_perslid_voorletters, + prs_perslid_voornaam, + prs_perslid_telefoonnr, + prs_perslid_authenticatie, + prs_perslid_nr, + prs_perslid_titel, + prs_srtperslid_key, + prs_afdeling_key, + prs_perslid_oslogin, + prs_perslid_oslogin2, + prs_perslid_mobiel, + prs_perslid_email, + prs_perslid_ingangsdatum, + prs_perslid_einddatum, + fac_profiel_key + ) + VALUES (lnaampresentatie, + ltussenvoegselpres, + rec_prs_upd.prs_perslid_voorletters, + rec_prs_upd.prs_perslid_voornaam, + rec_prs_upd.prs_perslid_telefoonnr, + rec_prs_upd.personeelsnummer, + rec_prs_upd.dienstverbandid, + rec_prs_upd.prs_perslid_titel, + v_srtperslid_key, + v_afdeling_key, + llogin1, + llogin2, + rec_prs_upd.mobielnummer, + lemail, + rec_prs_upd.begindatum, + rec_prs_upd.einddatum, + c_default_profiel_key + ) + RETURNING prs_perslid_key + INTO v_perslid_key; + + v_errormsg := 'Fout bij toevoegen RIN'; + + INSERT INTO prs_kenmerklink (prs_link_key, + prs_kenmerklink_niveau, + prs_kenmerk_key, + prs_kenmerklink_waarde) + VALUES (v_perslid_key, + 'P', + c_rin_kkey, + rec_prs_upd.rin); + + fac.imp_writelog (p_import_key, + 'I', + 'Nieuw persoon toegevoegd', + 'Naam/RIN: ' + || ltussenvoegselpres || ' ' || lnaampresentatie + || '/' + || rec_prs_upd.rin + ); + ELSE + v_errormsg := 'Persoon kan niet worden gewijzigd'; + + UPDATE prs_perslid + SET prs_perslid_naam = lnaampresentatie, + prs_perslid_tussenvoegsel = ltussenvoegselpres, + prs_perslid_voorletters = rec_prs_upd.prs_perslid_voorletters, + prs_perslid_voornaam = NVL (rec_prs_upd.prs_perslid_voornaam, prs_perslid_voornaam), + prs_perslid_telefoonnr = rec_prs_upd.prs_perslid_telefoonnr, + prs_perslid_titel = rec_prs_upd.prs_perslid_titel, + prs_srtperslid_key = v_srtperslid_key, + prs_afdeling_key = v_afdeling_key, + prs_perslid_verwijder = NULL, + prs_perslid_oslogin = llogin1, + prs_perslid_oslogin2 = COALESCE (prs_perslid_oslogin2, llogin2), -- RWSN#21033! + prs_perslid_mobiel = rec_prs_upd.mobielnummer, + prs_perslid_email = lemail, + prs_perslid_ingangsdatum = rec_prs_upd.begindatum, + prs_perslid_einddatum = rec_prs_upd.einddatum, + prs_perslid_nr = rec_prs_upd.dienstverbandid + WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key + AND ( prs_perslid_naam <> lnaampresentatie + OR NVL (prs_perslid_tussenvoegsel, '-') <> NVL (ltussenvoegselpres, '-') + OR NVL (prs_perslid_voorletters, '-') <> NVL (rec_prs_upd.prs_perslid_voorletters, '-') + OR NVL (prs_perslid_voornaam, '-') <> NVL (rec_prs_upd.prs_perslid_voornaam, '-') + OR NVL (prs_perslid_telefoonnr, '-') <> NVL (rec_prs_upd.prs_perslid_telefoonnr, '-') + OR NVL (prs_perslid_titel, '-') <> NVL (rec_prs_upd.prs_perslid_titel, '-') + OR prs_srtperslid_key <> v_srtperslid_key + OR prs_afdeling_key <> v_afdeling_key + OR NVL (prs_perslid_oslogin, '-') <> NVL (llogin1, '-') + OR (prs_perslid_oslogin2 IS NULL AND llogin2 IS NOT NULL) -- RWSN#21033! + OR NVL (prs_perslid_oslogin2, '-') <> NVL (llogin2, '-') + OR NVL (prs_perslid_mobiel, '-') <> NVL (rec_prs_upd.mobielnummer, '-') + OR NVL (prs_perslid_email, '-') <> NVL (lemail, '-') + OR NVL (prs_perslid_ingangsdatum, to_date('01012000', 'ddmmyyyy')) <> NVL (rec_prs_upd.begindatum, to_date('01012000', 'ddmmyyyy')) + OR NVL (prs_perslid_einddatum, to_date('01012000', 'ddmmyyyy')) <> NVL (rec_prs_upd.einddatum, to_date('01012000', 'ddmmyyyy')) + OR NVL (prs_perslid_nr, '-') <> NVL (rec_prs_upd.dienstverbandid, '-') + OR rec_prs_upd.prs_perslid_verwijder IS NOT NULL + ); + + v_perslid_key := rec_prs_upd.prs_perslid_key; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := v_errormsg || ' - ' || oracle_err_mes; + v_errorhint := 'Persoon/RIN: ' || rec_prs_upd.rin; + v_update := FALSE; + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + END; + END IF; + + -- v_perslid_key is nu zeker bekend; zoniet, dan is v_update dus FALSE + -- en gaan we niet verder aanpassen/aanmaken + IF v_perslid_key <> 0 + THEN + -- RWSN#24870: Per RWSN49 vervallen. + -- ---------------------------------------------------------- + -- DID-stuff: autorisatie van personen op basis van dienst!!! + -- En, ALLEEN als persoon een login heeft (niet altijd zo)!!! + -- ---------------------------------------------------------- + -- RWSN#24870-einde! + + v_errorhint := 'Update dienstverbandguid persoon/RIN: ' || rec_prs_upd.rin; + update_dienstverbandguid(v_perslid_key, rec_prs_upd.dienstverbandguid); + + v_errorhint := 'Locatiebepaling persoon/RIN: ' || rec_prs_upd.rin; + + IF rec_prs_upd.bezoekadrespostcode IS NOT NULL + THEN + v_newgebouwkey := getgebouwkey (rec_prs_upd.bezoekadrespostcode, rec_prs_upd.bezoekadresnummer); + handle_location (v_perslid_key, v_newgebouwkey, rec_prs_upd.rin); + END IF; + + v_buffercount := v_buffercount + 1; + IF v_buffercount >= c_commitbuffer + THEN + COMMIT; + v_buffercount := 0; + END IF; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'Local exception ' || oracle_err_mes; + fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint); + END; + END LOOP; + + SELECT COUNT ( * ) + INTO v_perslid_newcount_fclt + FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl + WHERE p.prs_perslid_key = kl.prs_link_key + AND kl.prs_kenmerk_key = c_rin_kkey; + + fac.imp_writelog ( + p_import_key, + 'S', + 'Aantal actieve personen met RIN vooraf: ' + || TO_CHAR (v_perslid_count_fclt) + || ' nu: ' + || TO_CHAR (v_perslid_newcount_fclt), + ''); + + SELECT COUNT ( * ) + INTO v_perslid_newcount_fclt -- misbruik + FROM prs_v_aanwezigperslid p + WHERE NOT EXISTS + (SELECT 1 + FROM prs_v_aanwezigkenmerklink + WHERE prs_link_key = p.prs_perslid_key + AND prs_kenmerk_key = c_rin_kkey); + + fac.imp_writelog ( + p_import_key, + 'S', + 'Aantal actieve personen zonder RIN (nu): ' + || TO_CHAR (v_perslid_newcount_fclt), + ''); +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'Global exception ' || oracle_err_mes; + fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); +END; +/ + +BEGIN adm.systrackscript('$Workfile: rwsn52.sql $', '$Revision$', 0); END; +/ +BEGIN fac.registercustversion('RWSN', 52); END; +/ +COMMIT; +spool off diff --git a/RWSN/rwsn.sql b/RWSN/rwsn.sql index 735af5a21..8e98201ba 100644 --- a/RWSN/rwsn.sql +++ b/RWSN/rwsn.sql @@ -862,6 +862,7 @@ END; --AcademischeTitelsVoor ing. --AcademischeTitelsNa --BurgerServiceNummer 14021067 +--RijksIdentificatieNummer 999..9 --FunctieOmschrijving --FormatieplaatsOmschrijving Adviseur / Specialistisch Medewerker --DatumIngangGeldigheid 20060101 @@ -912,6 +913,7 @@ AS v_perslid_titel VARCHAR2 (100); -- v_perslid_nr VARCHAR2 (100); + v_rin VARCHAR2 (100); -- v_srtperslid_omschrijving VARCHAR2 (100); -- @@ -980,6 +982,7 @@ BEGIN fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_titel); fac.imp_getfield (v_newline, v_fielddelimitor, v_skipfield); -- TitelsNa fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr); -- BurgerServiceNummer + fac.imp_getfield (v_newline, v_fielddelimitor, v_rin); -- RijksIdentificatieNummer fac.imp_getfield (v_newline, v_fielddelimitor, v_skipfield); -- FunctieOmschrijving fac.imp_getfield (v_newline, v_fielddelimitor, @@ -999,6 +1002,7 @@ BEGIN -- Skip until a valid header is found IF (v_perslid_oslogin = 'AanmeldNaam' + AND v_rin = 'RijksIdentificatieNummer' AND v_bezoekadresplaats = 'BezoekAdresPlaats') THEN header_found := TRUE; @@ -1021,6 +1025,7 @@ BEGIN telefoonnummer, functie, personeelsnummer, + rin, titel, loginnaam, email, @@ -1046,6 +1051,7 @@ BEGIN SUBSTRB (v_perslid_telefoonnr, 1, 15), SUBSTRB (v_srtperslid_omschrijving, 1, 29), SUBSTRB (v_perslid_nr, 1, 16), + SUBSTRB (v_rin, 1, 30), SUBSTRB (v_perslid_titel, 1, 6), SUBSTRB (v_perslid_oslogin, 1, 200), SUBSTRB (v_perslid_email, 1, 255), @@ -1141,13 +1147,14 @@ AS (c) SG|facilitor bv */ -- Constanten + c_verdieping_omschr_default VARCHAR2 (16) := 'Begane grond'; c_srtruimte_default INTEGER := 1; c_ruimte_code VARCHAR2 (3) := '001'; c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend'; - c_verdieping_omschr_default VARCHAR2 (16) := 'Begane grond'; c_werkplek_volgnr_default INTEGER := 1; c_prs_werkplek_omschrijving VARCHAR2 (16) := '1'; - c_dienstgroep_postfix VARCHAR2 (20) := 'FE/Dienstspecifiek'; + c_default_profiel_key NUMBER (10) := 1; + c_rin_kkey NUMBER (10) := 1160; c_commitbuffer NUMBER := 1000; -- om de zoveel committen v_buffercount NUMBER := 0; @@ -1157,7 +1164,8 @@ AS --- in de import voorkomen en een einddatum hebben die voorbij is --- of niet in de import voorkomen -- en die nog niet vervallen waren - -- personeelsnummer uit de importtabel mapt op prs_perslid_authenticatie en + -- personeelsnummer=BSN uit de importtabel mapt op prs_perslid_authenticatie + -- RIN uit de importtabel mapt op kenmerk met key=1160 -- dienstverbandid uit de importtabel (SAPHRnummer) mapt op prs_perslid_nr CURSOR c_prs_del IS @@ -1193,7 +1201,7 @@ AS SELECT p.prs_perslid_key, idm.locatiecode alg_locatie_code, idm.afdelingscode prs_afdeling_naam, idm.persoonachternaam prs_perslid_naam, idm.tussenvoegsel prs_perslid_tussenvoegsel, idm.voorletters prs_perslid_voorletters, idm.voornaam prs_perslid_voornaam, - idm.telefoonnummer prs_perslid_telefoonnr, idm.functie prs_srtperslid_omschrijving, + idm.telefoonnummer prs_perslid_telefoonnr, idm.functie prs_srtperslid_omschrijving, idm.rin, idm.personeelsnummer personeelsnummer, idm.titel prs_perslid_titel, p.prs_perslid_verwijder, idm.begindatum, idm.einddatum, idm.mobielnummer, idm.email, idm.loginnaam, idm.dienstverbandguid, idm.dienstverbandid, idm.bezoekadresnaam, idm.bezoekadresnummer, idm.bezoekadrespostcode, @@ -1379,9 +1387,7 @@ AS SELECT COUNT (*) INTO lv_nr_werkplek FROM prs_perslidwerkplek pw, prs_werkplek w, alg_ruimte r, alg_verdieping v - WHERE pw.prs_perslidwerkplek_verwijder IS NULL - AND pw.prs_werkplek_key = w.prs_werkplek_key - AND w.prs_werkplek_verwijder IS NULL + WHERE pw.prs_werkplek_key = w.prs_werkplek_key AND nvl(w.prs_werkplek_virtueel, 0) <> 1 AND w.prs_alg_ruimte_key = r.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key @@ -1458,7 +1464,6 @@ AS INTO lv_werkplek_key FROM prs_werkplek WHERE prs_alg_ruimte_key = lv_ruimte_key - AND prs_werkplek_verwijder IS NULL AND prs_werkplek_volgnr = c_werkplek_volgnr_default; -- Altijd werkplek met deze notatie! EXCEPTION @@ -1973,7 +1978,8 @@ BEGIN prs_perslid_mobiel, prs_perslid_email, prs_perslid_ingangsdatum, - prs_perslid_einddatum + prs_perslid_einddatum, + fac_profiel_key ) VALUES (lnaampresentatie, ltussenvoegselpres, @@ -1990,11 +1996,23 @@ BEGIN rec_prs_upd.mobielnummer, lemail, rec_prs_upd.begindatum, - rec_prs_upd.einddatum + rec_prs_upd.einddatum, + c_default_profiel_key ) RETURNING prs_perslid_key INTO v_perslid_key; + --v_errormsg := 'Fout bij toevoegen RIN'; + + --INSERT INTO prs_kenmerklink (prs_link_key, + -- prs_kenmerklink_niveau, + -- prs_kenmerk_key, + -- prs_kenmerklink_waarde) + -- VALUES (v_perslid_key, + -- 'P', + -- c_rin_kkey, + -- rec_prs_upd.rin); + fac.imp_writelog (p_import_key, 'I', 'Nieuw persoon toegevoegd', @@ -2042,11 +2060,44 @@ BEGIN OR NVL (prs_perslid_einddatum, to_date('01012000', 'ddmmyyyy')) <> NVL (rec_prs_upd.einddatum, to_date('01012000', 'ddmmyyyy')) OR NVL (prs_perslid_nr, '-') <> NVL (rec_prs_upd.dienstverbandid, '-') OR rec_prs_upd.prs_perslid_verwijder IS NOT NULL - ); v_perslid_key := rec_prs_upd.prs_perslid_key; END IF; + + IF LENGTH (rec_prs_upd.rin) > 0 + THEN + v_errormsg := 'Fout bij bepalen RIN'; + + SELECT COUNT ( * ) + INTO v_count + FROM prs_v_aanwezigkenmerklink + WHERE prs_link_key = v_perslid_key + AND prs_kenmerklink_niveau = 'P' + AND prs_kenmerk_key = c_rin_kkey; + + IF v_count = 0 + THEN + v_errormsg := 'Fout bij toevoegen RIN'; + + INSERT INTO prs_kenmerklink (prs_link_key, + prs_kenmerklink_niveau, + prs_kenmerk_key, + prs_kenmerklink_waarde) + VALUES (v_perslid_key, + 'P', + c_rin_kkey, + rec_prs_upd.rin); + --ELSE -- v_count = 1 + -- v_errormsg := 'Fout bij wijzigen WIN-ID'; + + -- UPDATE prs_kenmerklink + -- SET prs_kenmerklink_waarde = rec_prs_upd.rin + -- WHERE prs_kenmerklink_key = v_kenmerklink_key; + END IF; + + COMMIT; + END IF; EXCEPTION WHEN OTHERS THEN @@ -8164,7 +8215,7 @@ AS AND f.mldafm_userkey = p_afm.prs_perslid_key; -/* Formatted on 1-12-2010 16:05:20 (QP5 v5.115.810.9015) */ +/* Formatted on 7-11-2013 11:54:48 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW rwsn_v_rap_melding_overzicht ( melding, @@ -8192,14 +8243,9 @@ AS m.stdmld_groep kwisg, TO_CHAR (m.mld_begin_date, 'dd-mm-yyyy'), TO_CHAR (m.mld_begin_date, 'ww') week, - DECODE ( - sm.mld_stdmelding_streeftijd, - NULL, - DECODE (sm.mld_stdmelding_planbaar, - NULL, 'Planbaar', - TO_CHAR (sm.mld_stdmelding_uitvoertijd) || ' DAGEN'), - TO_CHAR (sm.mld_stdmelding_streeftijd) || ' UREN' - ) + DECODE (sm.mld_stdmelding_planbaar, + 1, 'Planbaar', + TO_CHAR (sm.mld_stdmelding_uitvoertijd) || ' DAGEN') uitvoertijd, m.mldafm_date einddatum, pf1.prs_perslid_naam_full melder, @@ -8484,7 +8530,6 @@ CREATE OR REPLACE VIEW rwsn_v_rap_fip5_servicedesk ( uitvoertijd_kritiek, uitvoertijd_hoog, uitvoertijd_laag, - streeftijd, directklaar ) AS @@ -8505,7 +8550,6 @@ AS std.mld_stdmelding_uitvoertijd_pr1, std.mld_stdmelding_uitvoertijd_pr2, std.mld_stdmelding_uitvoertijd_pr4, - std.mld_stdmelding_streeftijd, dp.mld_disc_params_directklaar FROM mld_discipline d, ins_srtdiscipline sd, @@ -8970,7 +9014,7 @@ AS WHERE 1 = 0 / -/* Formatted on 19-6-2013 16:52:25 (QP5 v5.115.810.9015) */ +/* Formatted on 29-11-2013 10:30:50 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE rwsn_export_did_opdr (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, @@ -9040,15 +9084,20 @@ AS AND std.mld_ins_discipline_key = td.ins_discipline_key AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag - AND m.mld_melding_status = 4 -- Geaccepteerd + AND m.mld_melding_status IN (2, 3, 4) AND NOT EXISTS (SELECT 1 FROM mld_opdr o WHERE o.mld_melding_key = m.mld_melding_key) ORDER BY m.mld_melding_key; - -- Cursor loopt over de gefiatteerde ICT opdrachten; deze worden uitgegeven - -- en bijgewerkt. + -- Cursor loopt over de gefiatteerde ICT opdrachten; deze worden bijgewerkt. + -- RWSN#27015: Was na DBV-goedkeuring, nu na BEH-, LDG- én DBV-goedkeuring! + -- Hoe onderscheid maken? -> prs_kostenplaatsgrp/collega (DBV), + -- prs_kostenplaats (LDG), ins_kenmerkdeel (BEH) + -- Hoe eerdere goedkeuring herkennen? -> mld_melding_opmerking + -- RWSN#27015: Per RWSN51 loopt het uitgeven via (Fiatteringsverzoeken-)GUI + -- automatisch; alleen dus nog de melding bijwerken. CURSOR c4 IS SELECT m.mld_melding_key, @@ -9072,9 +9121,13 @@ AS AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag AND m.mld_melding_status IN (4, 7) -- Geaccepteerd/Uitgegeven AND m.mld_melding_key = o.mld_melding_key - AND fac.gettrackingdate ('ORDFOK', o.mld_opdr_key) IS NOT NULL - AND o.mld_opdr_teverzenden IS NULL - ORDER BY m.mld_melding_key, o.mld_opdr_key; + AND o.mld_opdr_key = t.fac_tracking_refkey + AND t.fac_srtnotificatie_key = 167 -- ORDFOK + ORDNEW? + AND t.fac_tracking_datum > TRUNC (SYSDATE - (1 / 24), 'HH24') + AND t.prs_perslid_key = pf.prs_perslid_key + AND t.prs_perslid_key = ldg.prs_perslid_key(+) + AND t.prs_perslid_key = dbv.prs_perslid_key(+) + ORDER BY m.mld_melding_key, o.mld_opdr_key, t.fac_tracking_datum; -- Cursor loopt over de afgewezen ICT opdrachten; deze worden bijgewerkt. CURSOR c5 @@ -9108,7 +9161,45 @@ AS FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = 1577) - ORDER BY m.mld_melding_key, o.mld_opdr_key; + AND o.mld_opdr_key = t.fac_tracking_refkey + AND t.fac_srtnotificatie_key = 168 -- ORDFNO + ORDGNO? + AND t.fac_tracking_datum > TRUNC (SYSDATE - (1 / 24), 'HH24') + AND t.prs_perslid_key = pf.prs_perslid_key + AND t.prs_perslid_key = dbv.prs_perslid_key(+) + ORDER BY m.mld_melding_key, o.mld_opdr_key, t.fac_tracking_datum; + + -- Cursor loopt over de verzonden ICT opdrachten; deze worden bijgewerkt. + -- RWSN#27015: Nieuw! + -- Hoe eerdere verzending herkennen? -> mld_melding_opmerking + CURSOR c6 + IS + SELECT m.mld_melding_key, + m.mld_melding_opmerking, + o.mld_opdr_key, + o.mld_opdr_bedrijfopdr_volgnr, + SUBSTR (o.mld_opdr_omschrijving, + 1, + INSTR (o.mld_opdr_omschrijving, + CHR (13), + 1, + 1) + - 1) + opdracht + FROM mld_melding m, + mld_stdmelding sm, + ins_tab_discipline td, + mld_opdr o, + fac_tracking t + WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = td.ins_discipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag + AND m.mld_melding_status = 7 -- Uitgegeven + AND m.mld_melding_key = o.mld_melding_key + AND o.mld_opdr_key = t.fac_tracking_refkey + AND t.fac_srtnotificatie_key = 171 -- ORDSNT + AND t.fac_tracking_datum > TRUNC (SYSDATE - (1 / 24), 'HH24') + ORDER BY m.mld_melding_key, o.mld_opdr_key, t.fac_tracking_datum; -- Cursor loopt over alle 'Laatste actie'-kenmerkwaarden en voert deze door -- in de Afhandeling en Opmerking van resp. de opdracht en de melding. @@ -9216,18 +9307,22 @@ AS v_deel1_start NUMBER (3); v_deeln_start NUMBER (3); v_count NUMBER (10); - v_persoon_key NUMBER; - v_kostenplaats_key NUMBER; - v_budgethouder_key NUMBER; + v_afdeling_key NUMBER (10); + v_kostenplaats_key NUMBER (10); + v_budgethouder_key NUMBER (10); + v_fiatteur_type VARCHAR2 (100); + v_kosten_appl NUMBER (12, 2) := NULL; + v_aut_proces VARCHAR2 (10) := ''; + v_webbased NUMBER (10) := -1; v_opdr_dagen NUMBER (3); v_stdmelding VARCHAR2 (200); v_uitvoerende_key NUMBER; v_hoofdlocatie VARCHAR2 (200); v_typeopdr_key NUMBER; - v_mld_flexcontent VARCHAR (4000); + v_mld_flexcontent VARCHAR2 (4000); v_terfiat NUMBER (1); v_opdr_key NUMBER; - v_mld_opmerking VARCHAR (4000); + v_mld_opmerking VARCHAR2 (4000); BEGIN v_aanduiding := '[ICT aanvraag ' || p_mldkey || '] '; v_deel1_start := -1; @@ -9262,6 +9357,192 @@ AS COMMIT; END IF; + -- Geen autorisatieproces, dan ook geen applicatieaanvraag! + v_errormsg := 'Fout bij bepalen autorisatieproces.'; + + SELECT COUNT ( * ), MIN (ud.fac_usrdata_upper) + INTO v_count, v_aut_proces + FROM mld_melding m, + mld_stdmelding sm, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik, + fac_usrdata ud + WHERE m.mld_melding_key = p_mldkey + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = 101 -- Autorisatieproces + AND fac.safe_to_number (ikd.ins_kenmerkdeel_waarde) = + ud.fac_usrdata_key; + + -- Logica specifiek voor Applicatieaanvragen; de kosten (v_kosten_appl) + -- bepalen uiteindelijk of opdracht via status 'Ter goedkeuring' loopt! + IF (v_count = 1) + THEN + v_errormsg := 'Fout bij bepalen webbased.'; + + SELECT fac_usrdata_key -- 1 = Ja; anders Nee of EXCEPTION! + INTO v_webbased + FROM mld_melding m, + mld_stdmelding sm, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik, + fac_usrdata ud + WHERE m.mld_melding_key = p_mldkey + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = 102 -- Webbased + AND fac.safe_to_number (ikd.ins_kenmerkdeel_waarde) = + ud.fac_usrdata_key + AND ud.fac_usrtab_key = 1; + + -- Applicatie-flow wordt bepaald op basis van 'v_kosten_appl'! + -- -1 => Geen goedkeuring/fiattering en opdracht niet verzenden (als + -- [a] aut.proces is '2' en webbased is 'J' of [b] aut.proces is '4')! + -- 0 => Geen goedkeuring/fiattering en opdracht direct verzenden! + -- 1 => Goedkeuring door FB/KEY, later opdracht pas verzenden! + -- 2 => Fiattering door budgethouder, later opdracht pas verzenden! + v_kosten_appl := -1; + + IF (v_aut_proces = '0') + THEN + v_kosten_appl := 0; + ELSIF (v_aut_proces = '1') + THEN + v_kosten_appl := 2; + ELSIF (v_aut_proces = '2') + THEN + -- Bepaal aantal FBs via srtkenmerk_key=103/104/105! + v_errormsg := 'Fout bij bepalen aantal FBs.'; + + SELECT COUNT (*) + INTO v_count + FROM mld_melding m, + mld_stdmelding sm, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik + WHERE m.mld_melding_key = p_mldkey + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = + mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE + 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key BETWEEN 103 AND 105; -- FB123 + + IF (v_count > 0) + THEN + v_kosten_appl := 1; -- ORDGOE; FB bekend, dan langs FB! + ELSE + IF (v_webbased = 1) + THEN + v_kosten_appl := 0; -- Webbased; geen FB, dan direct door! + ELSE + v_kosten_appl := 2; -- ORDFIA; geen FB, dan langs budgethouder! + END IF; + END IF; + ELSIF (v_aut_proces = '3') + THEN + -- Bepaal aantal KEYs via eigen tabel Org2Afkorting! + v_errormsg := 'Fout bij bepalen aantal KEYs.'; + + SELECT COUNT (*) + INTO v_count + FROM prs_v_afdeling_boom ab, + fac_usrdata ud, + mld_melding m, + mld_stdmelding sm, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik, + ins_srtkenmerk isk + WHERE ab.prs_afdeling_key = v_afdeling_key + AND ab.prs_afdeling_key1 = + fac.safe_to_number (ud.fac_usrdata_code) + AND ud.fac_usrtab_key = 2 -- Org2Afkorting + AND m.mld_melding_key = p_mldkey + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = + mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE + 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND isk.ins_srtkenmerk_upper LIKE + '%' || UPPER (ud.fac_usrdata_omschr); + + IF (v_count > 0) + THEN + v_kosten_appl := 1; -- ORDGOE; KEY bekend, dan langs KEY! + ELSE + IF (v_webbased = 1) + THEN + v_kosten_appl := 0; -- Webbased; geen KEY, dan direct door! + ELSE + v_kosten_appl := 2; -- ORDFIA; geen KEY, dan langs budgethouder! + END IF; + END IF; + END IF; + END IF; + v_errormsg := 'Fout bij bepalen uitvoertijd + stdmelding.'; SELECT DECODE ( @@ -9391,15 +9672,28 @@ AS v_typeopdr_key, -- DID 4, -- Facilitor v_mld_flexcontent, + DECODE ( + v_kosten_appl, + -1, + 0, + COALESCE (v_kosten_appl, v_kosten_rest, 0) + ), 0, 0, - 0, - 0, + DECODE ( + v_kosten_appl, + -1, + 0, + COALESCE (v_kosten_appl, v_kosten_rest, 0) + ), v_kostenplaats_key, p_mldkey, 'MLD', MLD.bepaalopdrmeldingvolgnr (p_mldkey), - DECODE (v_terfiat, 0, 1, NULL), + DECODE (v_kosten_appl, + -1, NULL, + 1, DECODE (v_webbased, 1, NULL, 1), + 1), SUBSTR ('Facilitor', 1, 30) ) RETURNING mld_opdr_key INTO v_opdr_key; @@ -9410,18 +9704,7 @@ AS IF (v_terfiat = 1 AND v_budgethouder_key <> -1) THEN BEGIN - MLD.setopdrachtstatus (v_opdr_key, 3, 4); -- Facilitor - fac.putnotificationsrtprio (NULL, - v_budgethouder_key, - 'MLDAP1', - v_opdr_key, - NULL, - NULL, - NULL, - NULL, - NULL, - 2, - NULL); + MLD.setopdrachtstatus (v_opdr_key, 5, 4); -- Facilitor v_errormsg := 'Fout bij bijwerken ter fiattering door DBV.'; @@ -9430,16 +9713,74 @@ AS TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') || ' Opdracht "' || v_stdmelding - || '" ter autorisatie aangeboden aan DBV.'; - v_count := LENGTH (v_mld_opmerking) + 5; -- Beetje speling qua lengte! + || '" geregistreerd tbv. verdere afhandeling.'; + END; + -- v_kosten_appl=1, dan ALTIJD 'Ter goedkeuring'! + -- Of bestellimiet wel of niet voldoet doet er niet toe. + -- NB. Tenminste 1 Beheerder hier altijd bekend/gedefinieerd. + ELSIF (v_kosten_appl = 1) + THEN + BEGIN + -- Via MLD.setopdrachtstatus() naar 10 doet ORDGOE-trackaction en triggert een ORD2GO-notificatie naar iedereen met ORDGOE-rechten! + --MLD.setopdrachtstatus (v_opdr_key, 10, 4); -- Facilitor + -- Bovenstaande willen wij niet, daarom hier via UPDATE, eigen ORDGOE#-trackaction (#-prefix onderdrukt standaard notificaties) en + -- ORD2GO-notificatie naar beheerders volgt via notificatiejob! + UPDATE mld_opdr + SET mld_statusopdr_key = 10 + WHERE mld_opdr_key = v_opdr_key; - UPDATE mld_melding - SET mld_melding_opmerking = - v_mld_opmerking || CHR (13) || CHR (10) - || SUBSTR (mld_melding_opmerking, - 1, - (4000 - v_count)) - WHERE mld_melding_key = p_mldkey; + fac.trackaction ('#ORDGOE', + v_opdr_key, + 4, + NULL, + NULL); + + v_errormsg := + 'Fout bij bijwerken ter ORD2GO-fiattering (' + || TO_CHAR (v_count) + || ').'; + + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || v_stdmelding + || '" ter autorisatie aangeboden aan Beheerder.'; + END; + -- v_kosten_xxxx>1, dan ALTIJD 'Ter fiattering'! + -- Of budgethouder wel of niet bestaat doet er niet toe. + ELSIF (COALESCE (v_kosten_appl, v_kosten_rest, 0) > 1) + THEN + BEGIN + MLD.setopdrachtstatus (v_opdr_key, 3, 4); -- Facilitor + + -- Notificeren als budgethouder bekend! + IF (v_budgethouder_key <> -1) + THEN + fac.putnotificationsrtprio (NULL, + v_budgethouder_key, + 'MLDAP1', + v_opdr_key, + NULL, + NULL, + NULL, + NULL, + NULL, + 2, + NULL); + END IF; + + v_errormsg := + 'Fout bij bijwerken ter MLDAP1-fiattering (' + || TO_CHAR (v_count) + || ').'; + + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || v_stdmelding + || '" ter autorisatie aangeboden aan ' + || v_fiatteur_type + || '.'; END; ELSE BEGIN @@ -9890,7 +10231,74 @@ BEGIN ); COMMIT; - -- Loop door de ter fiattering aangeboden ICT opdrachten die zojuist zijn + -- Loop door de ter goedkeuring of ter fiattering aangeboden ICT opdrachten + -- die zojuist zijn goedgekeurd/gefiatteerd en werk melding bij. + -- Per RWSN#27015 loopt de flow (na autorisatie via de GUI) voortaan verder + -- vanzelf (gebruikmakend van standaard functionaliteit). + FOR rec IN c4 + LOOP + BEGIN + v_aanduiding := + '[ICT aanvraag ' + || rec.mld_melding_key + || '/' + || rec.mld_opdr_bedrijfopdr_volgnr + || '] '; + v_errormsg := + 'Fout bij bijwerken goedkeuring door ' + || rec.fiatteur_type + || '.'; + + IF (rec.mld_melding_opmerking NOT LIKE + '%goedgekeurd door ' || rec.fiatteur_naam || '%') + THEN + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || SUBSTR (rec.opdracht, 1, 60) + || '" goedgekeurd door ' + || rec.fiatteur_naam + || '.'; + + IF (rec.fiatteur_type = 'Beheerder' AND rec.mld_opdr_kosten > 1) + THEN + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || SUBSTR (rec.opdracht, 1, 60) + || '" ter autorisatie aangeboden aan Leidinggevende.' + || CHR (13) + || CHR (10) + || v_mld_opmerking; + ELSIF (rec.fiatteur_type = 'Leidinggevende' AND rec.mld_opdr_kosten > 2) + THEN + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || SUBSTR (rec.opdracht, 1, 60) + || '" ter autorisatie aangeboden aan DBV.' + || CHR (13) + || CHR (10) + || v_mld_opmerking; + END IF; + + v_count := LENGTH (v_mld_opmerking) + 5; + + -- Beetje speling qua lengte! + UPDATE mld_melding + SET mld_melding_opmerking = + v_mld_opmerking || CHR (13) || CHR (10) + || SUBSTR (rec.mld_melding_opmerking, + 1, + (4000 - v_count)) + WHERE mld_melding_key = rec.mld_melding_key; + + COMMIT; + END IF; + END; + END LOOP; + + -- Loop door de ter autorisatie aangeboden ICT opdrachten die zojuist zijn -- afgewezen en werk melding bij. FOR rec IN c5 LOOP @@ -9912,14 +10320,18 @@ BEGIN v_errormsg := 'Fout bij bijwerken afwijzing door DBV.'; - -- Sowieso lengte < 4000! - v_mld_opmerking := - TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') - || ' Opdracht "' - || SUBSTR (rec.opdracht, 1, 60) - || '" afgewezen door DBV, met als reden: ' - || SUBSTR (rec.mld_opdr_opmerking_fiat, 1, 1024); - v_count := LENGTH (v_mld_opmerking) + 5; -- Beetje speling qua lengte! + IF (rec.mld_melding_opmerking NOT LIKE + '%afgewezen door ' || rec.fiatteur_naam || '%') + THEN + v_mld_opmerking := + TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') + || ' Opdracht "' + || SUBSTR (rec.opdracht, 1, 60) + || '" afgewezen door ' + || rec.fiatteur_naam + || ', met als reden: ' + || SUBSTR (rec.mld_opdr_opmerking_fiat, 1, 1024); + v_count := LENGTH (v_mld_opmerking) + 5; UPDATE mld_melding SET mld_melding_opmerking = @@ -10570,7 +10982,193 @@ AS WHERE kl.prs_kenmerk_key IN (1020, 1021, 1022) AND kl.prs_link_key = afd4.prs_afdeling_key); -/* Formatted on 23-7-2010 12:51:25 (QP5 v5.136.908.31019) */ +/* Formatted on 3-7-2013 13:14:15 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW RWSN_V_ICTCP_PER_AFD +( + afd_key, + prs_key, + direct, + bv +) +AS + SELECT afdx.prs_afdeling_key afd_key, + pb.prs_perslid_key prs_key, + 'Ja' direct, + 'B' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_v_aanwezigperslid pb + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = pb.prs_perslid_key + UNION ALL + SELECT afdx.prs_afdeling_key afd_key, + c.prs_perslid_key_alt prs_key, + 'Ja' direct, + 'V' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, prs_v_aanwezigkostenplaats kp, prs_collega c + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = c.prs_perslid_key + UNION ALL -- Afdelingen zonder budgethouder 1 niveau lager + SELECT afd1.prs_afdeling_key afd_key, + ap.prs_key, + 'Nee', + ap.bv + FROM (SELECT afdx.prs_afdeling_key afd_key, + kp.prs_perslid_key prs_key, + 'B' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_v_aanwezigperslid pb + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = pb.prs_perslid_key + UNION ALL + SELECT afdx.prs_afdeling_key afd_key, + c.prs_perslid_key_alt prs_key, + 'V' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_collega c + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = c.prs_perslid_key) ap, + prs_afdeling afd1, + prs_v_aanwezigkostenplaats kp1 + WHERE ap.afd_key = afd1.prs_afdeling_parentkey + AND afd1.prs_afdeling_verwijder IS NULL + AND afd1.prs_kostenplaats_key = kp1.prs_kostenplaats_key + AND kp1.prs_perslid_key IS NULL + UNION ALL -- Afdelingen zonder budgethouder 2 niveaux lager + SELECT afd2.prs_afdeling_key afd_key, + ap.prs_key, + 'Nee', + ap.bv + FROM (SELECT afdx.prs_afdeling_key afd_key, + kp.prs_perslid_key prs_key, + 'B' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_v_aanwezigperslid pb + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = pb.prs_perslid_key + UNION ALL + SELECT afdx.prs_afdeling_key afd_key, + c.prs_perslid_key_alt prs_key, + 'V' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_collega c + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = c.prs_perslid_key) ap, + prs_afdeling afd1, + prs_v_aanwezigkostenplaats kp1, + prs_afdeling afd2, + prs_v_aanwezigkostenplaats kp2 + WHERE ap.afd_key = afd1.prs_afdeling_parentkey + AND afd1.prs_afdeling_verwijder IS NULL + AND afd1.prs_kostenplaats_key = kp1.prs_kostenplaats_key + AND kp1.prs_perslid_key IS NULL + AND afd1.prs_afdeling_key = afd2.prs_afdeling_parentkey + AND afd2.prs_afdeling_verwijder IS NULL + AND afd2.prs_kostenplaats_key = kp2.prs_kostenplaats_key + AND kp2.prs_perslid_key IS NULL + UNION ALL -- Afdelingen zonder budgethouder 3 niveaux lager + SELECT afd3.prs_afdeling_key afd_key, + ap.prs_key, + 'Nee', + ap.bv + FROM (SELECT afdx.prs_afdeling_key afd_key, + kp.prs_perslid_key prs_key, + 'B' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_v_aanwezigperslid pb + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = pb.prs_perslid_key + UNION ALL + SELECT afdx.prs_afdeling_key afd_key, + c.prs_perslid_key_alt prs_key, + 'V' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_collega c + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = c.prs_perslid_key) ap, + prs_afdeling afd1, + prs_v_aanwezigkostenplaats kp1, + prs_afdeling afd2, + prs_v_aanwezigkostenplaats kp2, + prs_afdeling afd3, + prs_v_aanwezigkostenplaats kp3 + WHERE ap.afd_key = afd1.prs_afdeling_parentkey + AND afd1.prs_afdeling_verwijder IS NULL + AND afd1.prs_kostenplaats_key = kp1.prs_kostenplaats_key + AND kp1.prs_perslid_key IS NULL + AND afd1.prs_afdeling_key = afd2.prs_afdeling_parentkey + AND afd2.prs_afdeling_verwijder IS NULL + AND afd2.prs_kostenplaats_key = kp2.prs_kostenplaats_key + AND kp2.prs_perslid_key IS NULL + AND afd2.prs_afdeling_key = afd3.prs_afdeling_parentkey + AND afd3.prs_afdeling_verwijder IS NULL + AND afd3.prs_kostenplaats_key = kp3.prs_kostenplaats_key + AND kp3.prs_perslid_key IS NULL + UNION ALL -- Afdelingen zonder budgethouder 4 niveaux lager + SELECT afd4.prs_afdeling_key afd_key, + ap.prs_key, + 'Nee', + ap.bv + FROM (SELECT afdx.prs_afdeling_key afd_key, + kp.prs_perslid_key prs_key, + 'B' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_v_aanwezigperslid pb + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = pb.prs_perslid_key + UNION ALL + SELECT afdx.prs_afdeling_key afd_key, + c.prs_perslid_key_alt prs_key, + 'V' bv -- Budgethouder/Vervanger + FROM prs_afdeling afdx, + prs_v_aanwezigkostenplaats kp, + prs_collega c + WHERE afdx.prs_afdeling_verwijder IS NULL + AND afdx.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND kp.prs_perslid_key = c.prs_perslid_key) ap, + prs_afdeling afd1, + prs_v_aanwezigkostenplaats kp1, + prs_afdeling afd2, + prs_v_aanwezigkostenplaats kp2, + prs_afdeling afd3, + prs_v_aanwezigkostenplaats kp3, + prs_afdeling afd4, + prs_v_aanwezigkostenplaats kp4 + WHERE ap.afd_key = afd1.prs_afdeling_parentkey + AND afd1.prs_afdeling_verwijder IS NULL + AND afd1.prs_kostenplaats_key = kp1.prs_kostenplaats_key + AND kp1.prs_perslid_key IS NULL + AND afd1.prs_afdeling_key = afd2.prs_afdeling_parentkey + AND afd2.prs_afdeling_verwijder IS NULL + AND afd2.prs_kostenplaats_key = kp2.prs_kostenplaats_key + AND kp2.prs_perslid_key IS NULL + AND afd2.prs_afdeling_key = afd3.prs_afdeling_parentkey + AND afd3.prs_afdeling_verwijder IS NULL + AND afd3.prs_kostenplaats_key = kp3.prs_kostenplaats_key + AND kp3.prs_perslid_key IS NULL + AND afd3.prs_afdeling_key = afd4.prs_afdeling_parentkey + AND afd4.prs_afdeling_verwijder IS NULL + AND afd4.prs_kostenplaats_key = kp4.prs_kostenplaats_key + AND kp4.prs_perslid_key IS NULL; + +-- RWSN#27015: Omgebutst! +/* Formatted on 29-11-2013 13:24:42 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW rwsn_v_noti_aut_ictaanvragen ( code, @@ -10582,11 +11180,200 @@ CREATE OR REPLACE VIEW rwsn_v_noti_aut_ictaanvragen par2, xkey ) -AS +AS -- ORD2GO naar FBs via srtkenmerk_key=103/104/105! SELECT sn.fac_srtnotificatie_code, NULL, - cp.prs_key, - REPLACE (sn.fac_srtnotificatie_oms, '##MAILTO##', p.prs_perslid_email), + fac.safe_to_number (ikd2.ins_kenmerkdeel_waarde), + REPLACE ( + REPLACE ( + sn.fac_srtnotificatie_oms, + '##OPDRKEY##', + TO_CHAR (o.mld_melding_key) + || '/' + || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) + ), + '##MAILTO##', + p.prs_perslid_email + ), + o.mld_opdr_key, + sm.mld_stdmelding_omschrijving, + NULL, + NULL + FROM mld_opdr o, + mld_melding m, + mld_stdmelding sm, + ins_tab_discipline td, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + prs_perslid p, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd1, + ins_kenmerk ik1, + fac_usrdata ap, + ins_v_aanwezigkenmerkdeel ikd2, + ins_kenmerk ik2, + fac_srtnotificatie sn + WHERE o.mld_statusopdr_key = 10 -- Ter goedkeuring! + AND EXISTS + (SELECT 1 + FROM fac_tracking + WHERE fac_srtnotificatie_key = 276 -- ORDGOE + AND fac_tracking_refkey = o.mld_opdr_key + AND TRUNC (fac_tracking_datum) = TRUNC (SYSDATE + 5 / 1440) + AND TO_NUMBER (TO_CHAR (fac_tracking_datum, 'HH24')) + 1 = + TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24'))) + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = td.ins_discipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.prs_perslid_key = p.prs_perslid_key + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd1.ins_deel_key + AND ikd1.ins_kenmerk_key = ik1.ins_kenmerk_key + AND ik1.ins_srtkenmerk_key = 101 -- Autorisatieproces + AND fac.safe_to_number (ikd1.ins_kenmerkdeel_waarde) = + ap.fac_usrdata_key + AND ap.fac_usrdata_code = '2' -- Langs FB + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd2.ins_deel_key + AND ikd2.ins_kenmerk_key = ik2.ins_kenmerk_key + AND ik2.ins_srtkenmerk_key BETWEEN 103 AND 105 -- FB123 + AND sn.fac_srtnotificatie_code = 'ORD2GO' + UNION ALL -- ORD2GO naar KEYs via eigen tabel Org2Afkorting! + SELECT sn.fac_srtnotificatie_code, + NULL, + fac.safe_to_number (ikd2.ins_kenmerkdeel_waarde), + REPLACE ( + REPLACE ( + sn.fac_srtnotificatie_oms, + '##OPDRKEY##', + TO_CHAR (o.mld_melding_key) + || '/' + || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) + ), + '##MAILTO##', + p.prs_perslid_email + ), + o.mld_opdr_key, + sm.mld_stdmelding_omschrijving, + NULL, + NULL + FROM mld_opdr o, + mld_melding m, + mld_stdmelding sm, + ins_tab_discipline td, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + prs_perslid p, + prs_v_afdeling_boom ab, + fac_usrdata oa, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd1, + ins_kenmerk ik1, + fac_usrdata ap, + ins_v_aanwezigkenmerkdeel ikd2, + ins_kenmerk ik2, + ins_srtkenmerk isk, + fac_srtnotificatie sn + WHERE o.mld_statusopdr_key = 10 -- Ter goedkeuring! + AND EXISTS + (SELECT 1 + FROM fac_tracking + WHERE fac_srtnotificatie_key = 276 -- ORDGOE + AND fac_tracking_refkey = o.mld_opdr_key + AND TRUNC (fac_tracking_datum) = TRUNC (SYSDATE + 5 / 1440) + AND TO_NUMBER (TO_CHAR (fac_tracking_datum, 'HH24')) + 1 = + TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24'))) + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = td.ins_discipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.prs_perslid_key = p.prs_perslid_key + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = + fac.safe_to_number (oa.fac_usrdata_code) + AND oa.fac_usrtab_key = 2 -- Org2Afkorting + AND m.mld_melding_key = mkm.mld_melding_key + AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd1.ins_deel_key + AND ikd1.ins_kenmerk_key = ik1.ins_kenmerk_key + AND ik1.ins_srtkenmerk_key = 101 -- Autorisatieproces + AND fac.safe_to_number (ikd1.ins_kenmerkdeel_waarde) = + ap.fac_usrdata_key + AND ap.fac_usrdata_code = '3' -- Langs KEY + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd2.ins_deel_key + AND ikd2.ins_kenmerk_key = ik2.ins_kenmerk_key + AND ik2.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND isk.ins_srtkenmerk_upper LIKE + '%' || UPPER (oa.fac_usrdata_omschr) + AND sn.fac_srtnotificatie_code = 'ORD2GO' + UNION ALL -- Initiele notificatie ook naar (huidige) vervangers van BH! + SELECT sn.fac_srtnotificatie_code, + NULL, + pv.prs_perslid_key, + REPLACE (sn.fac_srtnotificatie_oms, + '##MAILTO##', + pv.prs_perslid_email), + o.mld_opdr_key, + sm.mld_stdmelding_omschrijving, + NULL, + NULL + FROM mld_melding m, + mld_stdmelding sm, + ins_tab_discipline td, + mld_opdr o, + fac_tracking t, + prs_collega c, -- Vervangers! + prs_perslid pv, -- Vervangers! + fac_srtnotificatie sn + WHERE m.mld_melding_status IN (4, 7) -- Geaccepteerd/Uitgegeven + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = td.ins_discipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag + AND m.mld_melding_key = o.mld_melding_key + AND o.mld_statusopdr_key = 3 -- Ter fiattering! + AND o.mld_opdr_key = t.fac_tracking_refkey + AND t.fac_srtnotificatie_key = 166 -- ORDFIA + AND t.fac_tracking_key IN + (SELECT MAX (fac_tracking_key) + FROM fac_tracking + WHERE fac_srtnotificatie_key = 166 -- ORDFIA + AND fac_tracking_refkey = + t.fac_tracking_refkey) + AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE + 5 / 1440) + AND TO_NUMBER (TO_CHAR (t.fac_tracking_datum, 'HH24')) + 1 = + TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24')) + AND t.prs_perslid_key = c.prs_perslid_key + AND c.prs_perslid_key_alt = pv.prs_perslid_key + AND sn.fac_srtnotificatie_code = 'CUST02' + UNION ALL -- Afwijzing naar klant! + SELECT sn.fac_srtnotificatie_code, + NULL, + m.prs_perslid_key, + REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key), m.mld_melding_key, sm.mld_stdmelding_omschrijving, NULL, @@ -10594,27 +11381,30 @@ AS FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline td, - prs_v_aanwezigperslid p, - rwsn_v_ictcp_per_afd cp, + mld_opdr o, + fac_tracking t, fac_srtnotificatie sn - WHERE m.mld_melding_status IN (2, 3) -- Te behandelen! - AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE + 5/1440) - AND TO_NUMBER(TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 = TO_NUMBER (TO_CHAR (SYSDATE + 5/1440, 'HH24')) + WHERE m.mld_melding_status IN (4, 7) -- Geaccepteerd/Uitgegeven AND m.mld_stdmelding_key = sm.mld_stdmelding_key - AND sm.mld_stdmelding_urgentie IS NOT NULL AND sm.mld_ins_discipline_key = td.ins_discipline_key - AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen - AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag - AND m.prs_perslid_key = p.prs_perslid_key - AND p.prs_afdeling_key = cp.afd_key - AND sn.fac_srtnotificatie_code = 'CUST02' - AND NOT EXISTS - (SELECT 1 - FROM fac_gebruikersgroep gg - WHERE gg.fac_groep_key IN (421, 422) -- ICT cp. - AND gg.prs_perslid_key = fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key)); + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag + AND m.mld_melding_key = o.mld_melding_key + AND o.mld_statusopdr_key = 2 -- Niet akkoord! + AND o.mld_opdr_key = t.fac_tracking_refkey + AND t.fac_srtnotificatie_key IN (168, 277) -- ORDFNO/GNO + AND t.fac_tracking_key IN + (SELECT MAX (fac_tracking_key) + FROM fac_tracking + WHERE fac_srtnotificatie_key IN (168, 277) + AND fac_tracking_refkey = + t.fac_tracking_refkey) + AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE + 5 / 1440) + AND TO_NUMBER (TO_CHAR (t.fac_tracking_datum, 'HH24')) + 1 = + TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24')) + AND sn.fac_srtnotificatie_code = 'CUST06'; -/* Formatted on 15-6-2012 11:55:55 (QP5 v5.115.810.9015) */ +/* Formatted on 8-11-2013 11:06:25 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW rwsn_v_noti_did_reminder ( code, @@ -10655,18 +11445,11 @@ AS AND MOD (fac.count_work_days (m.mld_melding_datum, SYSDATE), 2) = 1 -- Om de (werk)dag! AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Ma t/m Vr - AND sn.fac_srtnotificatie_code = 'CUST06' - AND NOT EXISTS - (SELECT 1 - FROM fac_gebruikersgroep gg - WHERE gg.fac_groep_key IN (421, 422) -- ICT cp. - AND gg.prs_perslid_key = - fac.gettrackinguserkey ('MLDNEW', - m.mld_melding_key)) - UNION ALL + AND sn.fac_srtnotificatie_code = 'CUST07' + UNION ALL -- En opnieuw naar (huidige) vervangers van die persoon igv. BH? SELECT sn.fac_srtnotificatie_code, NULL, - prs.getkpverantwoordelijke (a.prs_kostenplaats_key, 2, -1), -- Wat als ongedefinieerd? + c.prs_perslid_key_alt, -- En vervangers van die persoon igv. BH? REPLACE (sn.fac_srtnotificatie_oms, '##MAILTO##', p.prs_perslid_email), @@ -10681,6 +11464,9 @@ AS prs_afdeling a, mld_opdr o, fac_tracking t, + prs_collega c, -- Vervangers! + prs_perslid pv, -- Vervangers! + fac_gebruikersgroep gg, fac_srtnotificatie sn WHERE m.mld_melding_status IN (4, 7) -- Geaccepteerd/Uitgegeven AND m.mld_stdmelding_key = sm.mld_stdmelding_key @@ -10693,14 +11479,25 @@ AS AND o.mld_statusopdr_key = 3 -- Ter fiattering! AND o.mld_opdr_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = 166 -- ORDFIA + AND t.fac_tracking_key IN + (SELECT MAX (fac_tracking_key) + FROM fac_tracking + WHERE fac_srtnotificatie_key = 166 -- ORDFIA + AND fac_tracking_refkey = + t.fac_tracking_refkey) + AND t.prs_perslid_key = c.prs_perslid_key + AND c.prs_perslid_key_alt = pv.prs_perslid_key + AND pv.prs_perslid_key = gg.prs_perslid_key + AND gg.fac_groep_key = 1219 -- ICT: Fiattering namens AND fac.count_work_days (t.fac_tracking_datum, SYSDATE) > 2 AND MOD (fac.count_work_days (t.fac_tracking_datum, SYSDATE), 2) = 1 -- Om de (werk)dag! AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Ma t/m Vr AND sn.fac_srtnotificatie_code = 'CUST07'; -/* Formatted on 23-7-2010 12:54:12 (QP5 v5.136.908.31019) */ -CREATE OR REPLACE VIEW rwsn_v_rap_aut_ictaanvragen +-- RWSN#27015: Voorheen rwsn_v_rap_aut_ictaanvragen! +/* Formatted on 9-11-2013 21:15:20 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW rwsn_v_rap_aut_ictbeheer ( nummer, datum, @@ -10711,11 +11508,15 @@ CREATE OR REPLACE VIEW rwsn_v_rap_aut_ictaanvragen status, geplande_einddatum, hide_f_mld_melding_key, + hide_f_mld_opdr_key, fclt_3d_user_key ) AS - SELECT DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''), '', '', sd.ins_srtdiscipline_prefix) - || TO_CHAR (m.mld_melding_key) + -- 1 regel per FB voor applicatie in onderdeel van melder! + SELECT COALESCE (sd.ins_srtdiscipline_prefix, '') + || TO_CHAR (o.mld_melding_key) + || '/' + || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) nummer, TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum, DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''), '', '', sd.ins_srtdiscipline_prefix || '-') @@ -10731,30 +11532,148 @@ AS melder, s.mld_statuses_omschrijving status, m.mld_melding_einddatum geplande_einddatum, - m.mld_melding_key mld_key, - cp.prs_key ict_contact_key - FROM mld_melding m, + o.mld_melding_key melding_key, + o.mld_opdr_key opdracht_key, + fac.safe_to_number (ikd.ins_kenmerkdeel_waarde) beheerder_key + FROM mld_opdr o, + mld_statusopdr s, + mld_melding m, mld_statuses s, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd, + --mld_disc_params dp, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, prs_v_aanwezigperslid p, - rwsn_v_ictcp_per_afd cp - WHERE m.mld_melding_status IN (2, 3) -- Te behandelen! - AND m.mld_melding_status = s.mld_statuses_key + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik, + ins_v_aanwezigkenmerkdeel ikd2, + ins_kenmerk ik2, + fac_usrdata ud2 + WHERE o.mld_statusopdr_key = 10 -- Ter goedkeuring! + AND o.mld_statusopdr_key = s.mld_statusopdr_key + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = td.ins_discipline_key + AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag + --AND td.ins_discipline_key = dp.mld_ins_discipline_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' + AND m.prs_perslid_key = p.prs_perslid_key + AND m.mld_melding_key = mkm.mld_melding_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key BETWEEN 103 AND 105 -- FB123 + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd2.ins_deel_key + AND ikd2.ins_kenmerk_key = ik2.ins_kenmerk_key + AND ik2.ins_srtkenmerk_key = 101 -- Autorisatieproces + AND fac.safe_to_number (ikd2.ins_kenmerkdeel_waarde) = + ud2.fac_usrdata_key + AND ud2.fac_usrdata_code = '2' + UNION ALL -- 1 regel per KEY voor applicatie in onderdeel van melder! + SELECT COALESCE (sd.ins_srtdiscipline_prefix, '') + || TO_CHAR (o.mld_melding_key) + || '/' + || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) + nummer, + TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum, + DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''), + '', '', + sd.ins_srtdiscipline_prefix || '-') + || td.ins_discipline_omschrijving + vakgroep, + sm.mld_stdmelding_omschrijving melding, + o.mld_opdr_omschrijving opdracht_tekst, + p.prs_perslid_naam + || DECODE (NVL (p.prs_perslid_voorletters, ''), + '', '', + ', ' || p.prs_perslid_voorletters) + || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), + '', '', + ' ' || p.prs_perslid_tussenvoegsel) + || DECODE (NVL (p.prs_perslid_voornaam, ''), + '', '', + ' (' || p.prs_perslid_voornaam || ')') + || DECODE (NVL (p.prs_perslid_nr, ''), + '', '', + ' [' || p.prs_perslid_nr || ']') + melder, + s.mld_statusopdr_omschrijving status, + m.mld_melding_einddatum geplande_einddatum, + o.mld_melding_key melding_key, + o.mld_opdr_key opdracht_key, + fac.safe_to_number (ikd.ins_kenmerkdeel_waarde) beheerder_key + FROM mld_opdr o, + mld_statusopdr s, + mld_melding m, + mld_stdmelding sm, + ins_tab_discipline td, + ins_srtdiscipline sd, + --mld_disc_params dp, + mld_kenmerk mk, + mld_srtkenmerk msk, + fac_kenmerkdomein kd, + prs_v_aanwezigperslid p, + prs_v_afdeling_boom ab, + fac_usrdata ud, + mld_v_aanwezigkenmerkmelding mkm, + ins_v_aanwezigkenmerkdeel ikd, + ins_kenmerk ik, + ins_srtkenmerk isk, + ins_v_aanwezigkenmerkdeel ikd2, + ins_kenmerk ik2, + fac_usrdata ud2 + WHERE o.mld_statusopdr_key = 10 -- Ter goedkeuring! + AND o.mld_statusopdr_key = s.mld_statusopdr_key + AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key - AND sm.mld_stdmelding_urgentie IS NOT NULL AND sm.mld_ins_discipline_key = td.ins_discipline_key AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND td.ins_srtdiscipline_key = 21 -- ICT aanvragen + AND td.ins_discipline_key <> 532 -- Niet standaard aanvraag + --AND td.ins_discipline_key = dp.mld_ins_discipline_key + AND ( (sm.mld_stdmelding_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'S') + OR (sm.mld_ins_discipline_key = mk.mld_stdmelding_key + AND mk.mld_kenmerk_niveau = 'D')) + AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key + AND msk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key + AND kd.fac_kenmerkdomein_objectnaam LIKE 'RWSN_V_DID_SPIV%' + AND kd.fac_kenmerkdomein_module = 'MLD' AND m.prs_perslid_key = p.prs_perslid_key - AND p.prs_afdeling_key = cp.afd_key - AND NOT EXISTS - (SELECT 1 - FROM fac_gebruikersgroep gg - WHERE gg.fac_groep_key IN (421, 422) -- ICT cp. - AND gg.prs_perslid_key = fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key)); + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = + fac.safe_to_number (ud.fac_usrdata_code) + AND ud.fac_usrtab_key = 2 -- Org2Afkorting + AND m.mld_melding_key = mkm.mld_melding_key + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND isk.ins_srtkenmerk_upper LIKE + '%' || UPPER (ud.fac_usrdata_omschr) + AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = + ikd2.ins_deel_key + AND ikd2.ins_kenmerk_key = ik2.ins_kenmerk_key + AND ik2.ins_srtkenmerk_key = 101 -- Autorisatieproces + AND fac.safe_to_number (ikd2.ins_kenmerkdeel_waarde) = + ud2.fac_usrdata_key + AND ud2.fac_usrdata_code = '3'; /* Formatted on 23-7-2010 14:32:13 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW rwsn_v_rap_orphan_ictaanvragen @@ -11587,6 +12506,29 @@ AS OR hardware.oms IS NOT NULL -- ICT Aanvraag voor hardware / +-- RWSN#27941 - Via product/dienst in eigen tabel naar alle contactpersonen in +-- autorisatiegroep en daarvan de contactgegevens! +/* Formatted on 31-10-2013 17:16:08 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW rwsn_v_rap_civ_specials +( + fclt_f_product, + contactpersoon, + telefoon, + email +) +AS + SELECT ud.fac_usrdata_code, + pf.prs_perslid_naam_full, + COALESCE (p.prs_perslid_telefoonnr, p.prs_perslid_mobiel), + p.prs_perslid_email + FROM fac_usrdata ud, + fac_gebruikersgroep gg, + prs_perslid p, + prs_v_perslid_fullnames_all pf + WHERE ud.fac_usrtab_key = 2302 -- CIV-specials + AND fac.safe_to_number (ud.fac_usrdata_omschr) = gg.fac_groep_key + AND gg.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_key = pf.prs_perslid_key; /* ISDM-koppeling */ /* RWSN#16022 - Automatisch aanmaken van opdrachten tbv. ISDM-koppeling! */ @@ -12463,770 +13405,6 @@ END; / -/* Formatted on 28-6-2010 11:12:28 (QP5 v5.115.810.9015) */ -CREATE OR REPLACE PROCEDURE rwsn_import_budgethouders ( - p_import_key IN NUMBER -) -IS - c_delim VARCHAR2 (1) := ';'; - v_newline VARCHAR2 (1000); -- Input line - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_aanduiding VARCHAR (200); - header_is_valid NUMBER := 0; - v_count_tot NUMBER (10) := 0; - v_count_import NUMBER (10) := 0; - v_ongeldig NUMBER (1) := 0; - -- De importvelden: - v_prs_afdeling_naam VARCHAR2 (256); -- C10 - v_prs_perslid_key VARCHAR2 (256); -- N10 - - CURSOR c1 - IS - SELECT * - FROM fac_imp_file - WHERE fac_import_key = p_import_key - ORDER BY fac_imp_file_index; -BEGIN - DELETE FROM rwsn_imp_budgethouders; - - COMMIT; - - FOR rec1 IN c1 - LOOP - v_newline := rec1.fac_imp_file_line; - v_errormsg := 'Fout bij opvragen importregel'; - v_aanduiding := ''; - v_ongeldig := 0; - - -- Lees alle veldwaarden - fac.imp_getfield (v_newline, c_delim, v_prs_afdeling_naam); - fac.imp_getfield (v_newline, c_delim, v_prs_perslid_key); - v_aanduiding := - '[' || v_prs_afdeling_naam || '|' || v_prs_perslid_key || '] '; - - -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen - -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! - -- Ik negeer alles totdat ik een geldige header ben gepasseerd. - IF (header_is_valid = 0) - THEN - IF UPPER (v_prs_afdeling_naam) = 'DIENST' - AND UPPER (v_prs_perslid_key) = 'BUDGETHOUDER' - THEN - header_is_valid := 1; - END IF; - ELSE - v_count_tot := v_count_tot + 1; - -- Controleer alle veldwaarden - v_errormsg := 'Dienst ongeldig; ongedefinieerd of te lang'; - v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam); - - IF v_prs_afdeling_naam IS NULL OR LENGTH (v_prs_afdeling_naam) > 10 - THEN - v_ongeldig := 1; - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'Regel wordt overgeslagen!'); - END IF; - - -- - v_errormsg := 'Budgethouder ongeldig; ongedefinieerd of te lang'; - v_prs_perslid_key := TRIM (v_prs_perslid_key); - - IF v_prs_perslid_key IS NULL OR LENGTH (v_prs_perslid_key) > 10 - THEN - v_ongeldig := 1; - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'Regel wordt overgeslagen!'); - END IF; - - -- Insert geformatteerde import record - IF v_ongeldig = 0 - THEN - BEGIN - v_errormsg := 'Fout bij wegschrijven importregel'; - - INSERT INTO rwsn_imp_budgethouders ( - prs_afdeling_naam, - prs_perslid_key - ) - VALUES (v_prs_afdeling_naam, v_prs_perslid_key); - - v_count_import := v_count_import + 1; - 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.imp_writelog ( - p_import_key, - 'E', - v_aanduiding || v_errormsg, - '' - ); - END; - END IF; - END IF; - - COMMIT; - 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', - 'Budgethouders/aantal ingelezen importregels: ' - || TO_CHAR (v_count_tot), - '' - ); - fac.imp_writelog ( - p_import_key, - 'S', - 'Budgethouders/aantal ongeldige niet ingelezen 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, 200); - v_errormsg := - v_errormsg - || 'ORACLE (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - 'Inleesproces budgethouders afgebroken!'); -END rwsn_import_budgethouders; -/ - -/* Formatted on 12-1-2011 11:44:55 (QP5 v5.115.810.9015) */ -CREATE OR REPLACE PROCEDURE rwsn_update_budgethouders ( - p_import_key IN NUMBER -) -AS - -- Cursor loopt over de voorkomende diensten. - CURSOR c1 - IS - SELECT prs_afdeling_naam dienst_naam, - prs_perslid_key budgethouder_key - FROM rwsn_imp_budgethouders; - - v_errormsg VARCHAR2 (1000) := ''; - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_test_key NUMBER; -BEGIN - -- Loop door de voorkomende diensten en werk daarvoor de budgethouders bij. - FOR rec IN c1 - LOOP - v_errormsg := 'Fout bij bepalen dienst [' || rec.dienst_naam || '] '; - - SELECT prs_afdeling_key - INTO v_test_key - FROM prs_v_aanwezigafdeling dienst - WHERE dienst.prs_afdeling_naam = rec.dienst_naam - AND dienst.prs_afdeling_parentkey IS NULL; - - v_errormsg := - 'Fout bij bepalen budgethouder [' || rec.budgethouder_key || '] '; - - SELECT prs_perslid_key - INTO v_test_key - FROM prs_v_aanwezigperslid p - WHERE p.prs_perslid_key = rec.budgethouder_key; - - v_errormsg := - 'Fout bij bijwerken budgethouder [' - || rec.budgethouder_key - || '] voor dienst [' - || rec.dienst_naam - || '] '; - - UPDATE prs_kostenplaats k - SET k.prs_perslid_key = rec.budgethouder_key - WHERE k.prs_kostenplaats_key IN - (SELECT k.prs_kostenplaats_key - FROM prs_v_aanwezigafdeling dienst, - prs_v_afdeling_boom ab, - prs_afdeling a, - prs_kostenplaats k - WHERE dienst.prs_afdeling_naam = rec.dienst_naam - AND dienst.prs_afdeling_parentkey IS NULL - AND dienst.prs_afdeling_key = - ab.prs_afdeling_key1 - AND ab.prs_afdeling_key = a.prs_afdeling_key - AND a.prs_kostenplaats_key = - k.prs_kostenplaats_key); - - COMMIT; - END LOOP; -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.imp_writelog (p_import_key, - 'E', - v_errormsg, - 'Importproces budgethouders afgebroken!'); -END rwsn_update_budgethouders; -/ - -/* Formatted on 10-1-2011 12:22:35 (QP5 v5.115.810.9015) */ -CREATE OR REPLACE VIEW rwsn_v_rap_ictcp_expimp -( - hide_f_volgorde, - fclt_f_dienst, - fclt_f_afdelingsnivo, - fclt_f_afdelingscode, - afdelingspad, - ictcp1, - ictcp2, - ictcp3 -) -AS - SELECT x.volgorde, - COALESCE (y.dienst, '-'), - COALESCE (x.nivo, '-'), - COALESCE (x.afd_code, '-'), - COALESCE (x.afd_pad, '-'), - z1.ictcp1_email, - z2.ictcp2_email, - z3.ictcp3_email - FROM ( SELECT ROWNUM volgorde, - prs_afdeling_key, - LPAD ('[' || TO_CHAR (LEVEL) || ']', - DECODE (LEVEL, 1, 3, 3 * LEVEL), - '.') - nivo, - prs_afdeling_naam1 afd_pad, - prs_afdeling_upper afd_code - FROM prs_v_aanwezigafdeling - CONNECT BY PRIOR prs_afdeling_key = - prs_afdeling_parentkey - START WITH prs_afdeling_parentkey IS NULL) x - LEFT JOIN - (SELECT ab.prs_afdeling_key, - a.prs_afdeling_omschrijving dienst - FROM prs_v_afdeling_boom ab, prs_afdeling a - WHERE ab.prs_afdeling_key1 = a.prs_afdeling_key) - y - ON x.prs_afdeling_key = y.prs_afdeling_key - LEFT JOIN - (SELECT kl.prs_link_key afd_key, - p.prs_perslid_key ictcp1_key, - COALESCE (p.prs_perslid_email, 'Onbekend') - ictcp1_email - FROM prs_kenmerklink kl, prs_perslid p - WHERE kl.prs_kenmerk_key IN (1020) -- ICP1 - AND kl.prs_kenmerklink_verwijder IS NULL - AND fac.safe_to_number ( - kl.prs_kenmerklink_waarde - ) = p.prs_perslid_key - AND p.prs_perslid_verwijder IS NULL) z1 - ON x.prs_afdeling_key = z1.afd_key - LEFT JOIN - (SELECT kl.prs_link_key afd_key, - p.prs_perslid_key ictcp2_key, - COALESCE (p.prs_perslid_email, 'Onbekend') - ictcp2_email - FROM prs_kenmerklink kl, prs_perslid p - WHERE kl.prs_kenmerk_key IN (1021) -- ICP2 - AND kl.prs_kenmerklink_verwijder IS NULL - AND fac.safe_to_number ( - kl.prs_kenmerklink_waarde - ) = p.prs_perslid_key - AND p.prs_perslid_verwijder IS NULL) z2 - ON x.prs_afdeling_key = z2.afd_key - LEFT JOIN - (SELECT kl.prs_link_key afd_key, - p.prs_perslid_key ictcp3_key, - COALESCE (p.prs_perslid_email, 'Onbekend') - ictcp3_email - FROM prs_kenmerklink kl, prs_perslid p - WHERE kl.prs_kenmerk_key IN (1022) -- ICP3 - AND kl.prs_kenmerklink_verwijder IS NULL - AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = - p.prs_perslid_key - AND p.prs_perslid_verwijder IS NULL) z3 - ON x.prs_afdeling_key = z3.afd_key; - -/* Formatted on 10-1-2011 12:54:26 (QP5 v5.115.810.9015) */ -CREATE OR REPLACE PROCEDURE rwsn_import_ictcp (p_import_key IN NUMBER) -IS - c_delim VARCHAR2 (1) := ';'; - v_newline VARCHAR2 (1000); -- Input line - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_aanduiding VARCHAR (200); - header_is_valid NUMBER := 0; - v_count_tot NUMBER (10) := 0; - v_count_import NUMBER (10) := 0; - v_ongeldig NUMBER (1) := 0; - -- De importvelden: - v_dienst VARCHAR2 (256); -- C60 - v_nivo VARCHAR2 (256); -- C10 - v_prs_afdeling_naam VARCHAR2 (256); -- C10 - v_prs_afdeling_pad VARCHAR2 (256); -- C256 - v_ictcp1_email VARCHAR2 (256); -- C200 - v_ictcp2_email VARCHAR2 (256); -- C200 - v_ictcp3_email VARCHAR2 (256); -- C200 - - CURSOR c1 - IS - SELECT * - FROM fac_imp_file - WHERE fac_import_key = p_import_key - ORDER BY fac_imp_file_index; -BEGIN - DELETE FROM rwsn_imp_ictcp; - - COMMIT; - - FOR rec1 IN c1 - LOOP - v_newline := rec1.fac_imp_file_line; - v_errormsg := 'Fout opvragen te importeren rij'; - v_aanduiding := ''; - v_ongeldig := 0; - - -- Lees alle veldwaarden - fac.imp_getfield (v_newline, c_delim, v_dienst); - fac.imp_getfield (v_newline, c_delim, v_nivo); - fac.imp_getfield (v_newline, c_delim, v_prs_afdeling_naam); - fac.imp_getfield (v_newline, c_delim, v_prs_afdeling_pad); - fac.imp_getfield (v_newline, c_delim, v_ictcp1_email); - fac.imp_getfield (v_newline, c_delim, v_ictcp2_email); - fac.imp_getfield (v_newline, c_delim, v_ictcp3_email); - v_aanduiding := - '[' - || v_dienst - || '|' - || v_nivo - || '|' - || v_prs_afdeling_naam - || '] '; - - -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen - -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! - -- Ik negeer alles totdat ik een geldige header ben gepasseerd. - IF (header_is_valid = 0) - THEN - IF UPPER (v_dienst) = 'DIENST' - AND UPPER (v_nivo) = 'AFDELINGSNIVO' - AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE' - AND UPPER (v_prs_afdeling_pad) = 'AFDELINGSPAD' - AND UPPER (v_ictcp1_email) = 'ICTCP1' - AND UPPER (v_ictcp2_email) = 'ICTCP2' - AND UPPER (v_ictcp3_email) = 'ICTCP3' - THEN - header_is_valid := 1; - END IF; - ELSE - v_count_tot := v_count_tot + 1; - -- Controleer alle veldwaarden - v_errormsg := 'Afdelingscode ongeldig; ongedefinieerd of te lang'; - v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam); - - IF v_prs_afdeling_naam IS NULL OR LENGTH (v_prs_afdeling_naam) > 10 - THEN - v_ongeldig := 1; - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'Regel wordt overgeslagen!'); - END IF; - - -- - v_errormsg := 'ICTCP1-email te lang'; - v_ictcp1_email := TRIM (v_ictcp1_email); - - IF LENGTH (v_ictcp1_email) > 200 - THEN - v_ictcp1_email := SUBSTR (v_ictcp1_email, 1, 200); - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'ICTCP1-email wordt afgebroken tot [' || v_ictcp1_email || ']' - ); - END IF; - - -- - v_errormsg := 'ICTCP2-email te lang'; - v_ictcp2_email := TRIM (v_ictcp2_email); - - IF LENGTH (v_ictcp2_email) > 200 - THEN - v_ictcp2_email := SUBSTR (v_ictcp2_email, 1, 200); - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'ICTCP2-email wordt afgebroken tot [' || v_ictcp2_email || ']' - ); - END IF; - - -- - v_errormsg := 'ICTCP3-email te lang'; - v_ictcp3_email := TRIM (v_ictcp3_email); - - IF LENGTH (v_ictcp3_email) > 200 - THEN - v_ictcp3_email := SUBSTR (v_ictcp3_email, 1, 200); - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'ICTCP3-email wordt afgebroken tot [' || v_ictcp3_email || ']' - ); - END IF; - - -- Insert geformatteerde import record - IF v_ongeldig = 0 - THEN - BEGIN - INSERT INTO rwsn_imp_ictcp (prs_afdeling_naam, - ictcp1_email, - ictcp2_email, - ictcp3_email) - VALUES (v_prs_afdeling_naam, - v_ictcp1_email, - v_ictcp2_email, - v_ictcp3_email); - - v_count_import := v_count_import + 1; - 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, - 'Fout bij toevoegen regel aan importtabel RWSN_IMP_ICTCP.' - ); - END; - END IF; - END IF; - - COMMIT; - 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', - 'ICT-CP: Aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), - '' - ); - fac.imp_writelog ( - p_import_key, - 'S', - 'ICT-CP: Aantal ongeldige niet ingelezen importregels: ' - || TO_CHAR (v_count_tot - v_count_import), - '' - ); - 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.imp_writelog (p_import_key, - 'E', - v_errormsg, - 'Inleesproces ICT-CP afgebroken!'); -END rwsn_import_ictcp; -/ - -/* Formatted on 12-1-2011 12:22:22 (QP5 v5.115.810.9015) */ -CREATE OR REPLACE PROCEDURE rwsn_update_ictcp (p_import_key IN NUMBER) -AS - -- Cursor loopt over de voorkomende afdelingen. - CURSOR c1 - IS - SELECT prs_afdeling_naam, - ictcp1_email, - ictcp2_email, - ictcp3_email - FROM rwsn_imp_ictcp; - - v_errormsg VARCHAR2 (1000) := ''; -- Global procedure variable! - oracle_err_num NUMBER; -- Global procedure variable! - oracle_err_mes VARCHAR2 (200); -- Global procedure variable! - v_aanduiding VARCHAR (200); -- Global procedure variable! - v_afd_key NUMBER; - v_count_upd NUMBER; - v_count NUMBER; - - -- SUBPROC - PROCEDURE update_ictcp (p_afd_key IN NUMBER, - p_ictcp_kkey IN NUMBER, -- 1020,1021 of 1022 - p_ictcp_email IN VARCHAR2) - IS - v_ictcp_key NUMBER; - v_update NUMBER; - v_count NUMBER; - BEGIN - v_errormsg := - 'Fout bij bepalen/bestaan nieuwe ICT-CP [' || p_ictcp_email || '] '; - - SELECT COUNT ( * ) - INTO v_update - FROM prs_v_aanwezigperslid - WHERE prs_perslid_email = p_ictcp_email; - - IF (v_update != 1 AND p_ictcp_email IS NOT NULL) - THEN - -- Niets doen; eventuele ICT-CPx van deze afdeling ongewijzigd! - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'Kan ICT-CP niet 1-duidig bepalen!'); - - COMMIT; - ELSE -- v_update=1 (wijzigen) OR ictcpx_email IS NULL (verwijderen)! - -- Voor hoeveel ANDERE afdelingen is huidige ICT-CPx nog ICT-CP? - v_errormsg := - 'Fout bij bepalen rol huidige ICT-CP [' - || TO_CHAR (p_ictcp_kkey) - || '] '; - - SELECT COUNT ( * ) - INTO v_count - FROM prs_v_aanwezigkenmerklink kl1 - WHERE kl1.prs_kenmerk_key IN (1020, 1021, 1022) -- ICT-CP1+2+3 - AND kl1.prs_link_key != p_afd_key - AND EXISTS - (SELECT 1 - FROM prs_kenmerklink kl2 - WHERE kl2.prs_link_key = p_afd_key - AND kl2.prs_kenmerk_key = p_ictcp_kkey - AND fac.safe_to_number ( - kl2.prs_kenmerklink_waarde - ) = - fac.safe_to_number ( - kl1.prs_kenmerklink_waarde - )); - - IF (v_count = 0) - THEN - v_errormsg := - 'Fout bij verwijderen rol van ICT-CP [' - || TO_CHAR (p_ictcp_kkey) - || '] '; - - DELETE FROM fac_gebruikersgroep gg - WHERE gg.fac_groep_key = 422 -- ICT-CP rol - AND EXISTS - (SELECT 1 - FROM prs_kenmerklink kl - WHERE kl.prs_link_key = p_afd_key - AND kl.prs_kenmerk_key = - p_ictcp_kkey - AND fac.safe_to_number ( - kl.prs_kenmerklink_waarde - ) = gg.prs_perslid_key); - END IF; - - v_errormsg := - 'Fout bij verwijderen ICT-CP [' || TO_CHAR (p_ictcp_kkey) || '] '; - - DELETE FROM prs_kenmerklink - WHERE prs_link_key = p_afd_key - AND prs_kenmerk_key = p_ictcp_kkey; - - COMMIT; - - IF (v_update = 1) - THEN - v_errormsg := - 'Fout bij bepalen/key nieuwe ICT-CP [' - || p_ictcp_email - || '] '; - - SELECT prs_perslid_key - INTO v_ictcp_key - FROM prs_v_aanwezigperslid - WHERE prs_perslid_email = p_ictcp_email; - - v_errormsg := - 'Fout bij toevoegen ICT-CP [' || p_ictcp_email || '] '; - - INSERT INTO prs_kenmerklink (prs_link_key, - prs_kenmerklink_niveau, - prs_kenmerk_key, - prs_kenmerklink_waarde) - VALUES (p_afd_key, - 'A', - p_ictcp_kkey, - v_ictcp_key); - - -- Heeft nieuwe ICT-CPx al rol ICT-CP=422? - v_errormsg := - 'Fout bij bepalen rol nieuwe ICT-CP [' - || p_ictcp_email - || '] '; - - SELECT COUNT ( * ) - INTO v_count - FROM fac_gebruikersgroep - WHERE fac_groep_key = 422 AND prs_perslid_key = v_ictcp_key; - - IF (v_count = 0) - THEN - v_errormsg := - 'Fout bij toevoegen rol van ICT-CP [' - || p_ictcp_email - || '] '; - - INSERT INTO fac_gebruikersgroep ( - fac_groep_key, - prs_perslid_key - ) - VALUES (422, v_ictcp_key); - END IF; - - COMMIT; - END IF; - 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.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - 'Importregel niet volledig verwerkt!'); - END; -BEGIN - v_count_upd := 0; - - -- Loop door de voorkomende afdelingen en werk daarvoor de ICT-CP(s) bij. - FOR rec IN c1 - LOOP - v_aanduiding := '[' || rec.prs_afdeling_naam || '] '; - v_errormsg := 'Fout bij bepalen afdeling '; - - SELECT COUNT ( * ) - INTO v_count - FROM prs_v_aanwezigafdeling - WHERE prs_afdeling_upper = UPPER (rec.prs_afdeling_naam); - - IF (v_count != 1) - THEN - -- Niets doen! - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - 'Kan afdeling niet 1-duidig bepalen!'); - - COMMIT; - ELSE - SELECT prs_afdeling_key - INTO v_afd_key - FROM prs_v_aanwezigafdeling - WHERE prs_afdeling_upper = UPPER (rec.prs_afdeling_naam); - - update_ictcp (v_afd_key, 1020, -- ICT-CP1 - rec.ictcp1_email); - update_ictcp (v_afd_key, 1021, -- ICT-CP2 - rec.ictcp2_email); - update_ictcp (v_afd_key, 1022, -- ICT-CP3 - rec.ictcp3_email); - v_count_upd := v_count_upd + 1; - END IF; - END LOOP; - - fac.imp_writelog ( - p_import_key, - 'S', - 'ICT-CP: Aantal verwerkte importregels: ' || TO_CHAR (v_count_upd), - '' - ); -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.imp_writelog (p_import_key, - 'E', - v_aanduiding || v_errormsg, - 'Importproces ICT-CP afgebroken!'); -END rwsn_update_ictcp; -/ - - -- import van relaties uit het IKD CREATE OR REPLACE PROCEDURE rwsn_import_partners ( p_import_key IN NUMBER @@ -15252,7 +15430,6 @@ CREATE OR REPLACE VIEW rwsn_v_mld_actual stdmld_key, stdmld_oms, stdmld_groep, - stdmld_streeftijd, melder_userkey, dienst, mld_oms, @@ -15286,7 +15463,6 @@ AS meld.stdmld_key, SUBSTR (meld.stdmld_oms, 1, 60), SUBSTR (COALESCE (meld.stdmld_groep, 'Onbekend'), 1, 30) groep, - meld.stdmld_streeftijd, meld.prs_perslid_key, SUBSTR (rwsn.bepaal_dienst (meld.prs_perslid_key), 1, 60) dienst, SUBSTR (meld.mld_oms, 1, 1000) mld_oms, @@ -15382,8 +15558,6 @@ AS sm.mld_stdmelding_uitvoertijd_pr4 ) stdmld_sla, - sm.mld_stdmelding_streeftijd - stdmld_streeftijd, sm.mld_stdmelding_planbaar stdmld_pb, m.prs_perslid_key, m.mld_melding_omschrijving mld_oms, @@ -15555,7 +15729,7 @@ AS OR mldafm.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY'); -/* Formatted on 14-12-2012 10:25:50 (QP5 v5.115.810.9015) */ +/* Formatted on 8-11-2013 14:36:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE rwsn_select_nacht_werk (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS @@ -15602,11 +15776,14 @@ AS WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_statusopdr_key IN (3, 4, 5, 8)); - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_count NUMBER; - v_date DATE; + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count NUMBER; + v_date DATE; + v_kenmerklink_key NUMBER (10); + v_kenmerk_key NUMBER (10); + v_cur_perslid_key NUMBER (10); BEGIN v_count := 0; @@ -15723,7 +15900,6 @@ BEGIN stdmld_key, stdmld_oms, stdmld_groep, - stdmld_streeftijd, melder_userkey, dienst, mld_oms, @@ -15755,7 +15931,6 @@ BEGIN stdmld_key, stdmld_oms, stdmld_groep, - stdmld_streeftijd, melder_userkey, dienst, mld_oms, @@ -15836,6 +16011,8 @@ BEGIN 'Aantal bevroren OPDR-regels: ' || TO_CHAR (v_count), ''); + COMMIT; + -- controle taak om te kijken of de AAFM-communicatie loopt. BEGIN -- bedrijf aafm heeft key 5; @@ -15879,9 +16056,10 @@ BEGIN 'E', 'Controle AAFM-communicatie afgebroken!', v_errormsg); - COMMIT; END; + COMMIT; + -- controle taak om te kijken of PutOrders loopt. BEGIN SELECT MAX (imp_log_datum) @@ -15911,10 +16089,271 @@ BEGIN 'E', 'Controle PutOrders afgebroken!', v_errormsg); - COMMIT; END; COMMIT; + + -- RWSN#27015: Bijwerken vervangers van budgethouders=leidinggevenden in + -- afdelingskenmerken 1020/1021/1022 (max. 3 op alfabetische + -- volgorde)! + FOR rc1 + IN (SELECT x.prs_afdeling_key, + x.prs_perslid_key budgethouder_key, + v1.prs_kenmerklink_key v1_kenmerklink_key, + v1.prs_kenmerk_key v1_kenmerk_key, + fac.safe_to_number (v1.prs_kenmerklink_waarde) v1_perslid_key, + v2.prs_kenmerklink_key v2_kenmerklink_key, + v2.prs_kenmerk_key v2_kenmerk_key, + fac.safe_to_number (v2.prs_kenmerklink_waarde) v2_perslid_key, + v3.prs_kenmerklink_key v3_kenmerklink_key, + v3.prs_kenmerk_key v3_kenmerk_key, + fac.safe_to_number (v3.prs_kenmerklink_waarde) v3_perslid_key + FROM (SELECT a.prs_afdeling_key, kp.prs_perslid_key + FROM prs_kostenplaats kp, prs_afdeling a + WHERE a.prs_kostenplaats_key = + kp.prs_kostenplaats_key + AND kp.prs_perslid_key IS NOT NULL + AND a.prs_afdeling_verwijder IS NULL + AND kp.prs_kostenplaats_verwijder IS NULL) + x + LEFT JOIN -- 1020 = 1e vervanger! + prs_v_aanwezigkenmerklink v1 + ON x.prs_afdeling_key = v1.prs_link_key + AND v1.prs_kenmerk_key = 1020 + LEFT JOIN -- 1021 = 2e vervanger! + prs_v_aanwezigkenmerklink v2 + ON x.prs_afdeling_key = v2.prs_link_key + AND v2.prs_kenmerk_key = 1021 + LEFT JOIN -- 1022 = 3e vervanger! + prs_v_aanwezigkenmerklink v3 + ON x.prs_afdeling_key = v3.prs_link_key + AND v3.prs_kenmerk_key = 1022) + LOOP -- Alleen over afdelingen met een budgethouder! + BEGIN + FOR rc2 + IN ( SELECT x.vnr, v.prs_perslid_key_alt, v.prs_perslid_naam_full + FROM ( SELECT LEVEL vnr + FROM DUAL + CONNECT BY LEVEL <= 3) x + LEFT JOIN + (SELECT ROWNUM vnr, + prs_perslid_key_alt, + prs_perslid_naam_full + FROM ( SELECT c.prs_perslid_key_alt, + pc.prs_perslid_naam_full + FROM prs_collega c, + fac_gebruikersgroep gg, + prs_v_perslid_fullnames pc + WHERE c.prs_perslid_key = + rc1.budgethouder_key + AND c.prs_perslid_key_alt = + gg.prs_perslid_key + AND gg.fac_groep_key = 1219 + AND c.prs_perslid_key_alt = + pc.prs_perslid_key + ORDER BY 2)) v + ON x.vnr = v.vnr + ORDER BY 1) + LOOP -- Altijd alfabetisch over 3 echte of lege vervangers! + IF rc2.vnr = 1 + THEN + v_kenmerklink_key := rc1.v1_kenmerklink_key; + v_kenmerk_key := 1020; -- 1e vervanger + v_cur_perslid_key := rc1.v1_perslid_key; + ELSIF rc2.vnr = 2 + THEN + v_kenmerklink_key := rc1.v2_kenmerklink_key; + v_kenmerk_key := 1021; -- 2e vervanger + v_cur_perslid_key := rc1.v2_perslid_key; + ELSE -- rc2.vnr = 3 + v_kenmerklink_key := rc1.v3_kenmerklink_key; + v_kenmerk_key := 1022; -- 3e vervanger + v_cur_perslid_key := rc1.v3_perslid_key; + END IF; + + IF (rc2.prs_perslid_key_alt IS NOT NULL) + THEN -- Er is een vervanger + IF (v_kenmerklink_key IS NULL) -- Was geen vervanger->insert + THEN + v_errormsg := + 'Fout bij toevoegen vervanger-' || TO_CHAR (rc2.vnr); + + INSERT INTO prs_kenmerklink (prs_link_key, + prs_kenmerklink_niveau, + prs_kenmerk_key, + prs_kenmerklink_waarde) + VALUES (rc1.prs_afdeling_key, + 'A', + v_kenmerk_key, + TO_CHAR (rc2.prs_perslid_key_alt)); + ELSIF (v_cur_perslid_key != rc2.prs_perslid_key_alt) + THEN -- Was andere vervanger->update + v_errormsg := + 'Fout bij bijwerken vervanger-' || TO_CHAR (rc2.vnr); + + UPDATE prs_kenmerklink + SET prs_kenmerklink_waarde = + TO_CHAR (rc2.prs_perslid_key_alt) + WHERE prs_kenmerklink_key = v_kenmerklink_key; + END IF; + ELSE -- Er is geen vervanger + IF (v_kenmerklink_key IS NOT NULL) -- Was wel vervanger->delete + THEN + v_errormsg := + 'Fout bij verwijderen vervanger-' || TO_CHAR (rc2.vnr); + + DELETE FROM prs_kenmerklink + WHERE prs_kenmerklink_key = v_kenmerklink_key; + END IF; + END IF; + END LOOP; + + COMMIT; + 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 (p_applname, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + COMMIT; + + -- RWSN#27015: Toevoegen nieuwe BH-vervangers aan 1219=ICT:Fiattering namens. + INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) + SELECT DISTINCT 1219, c.prs_perslid_key_alt + FROM prs_kostenplaats kp, + prs_afdeling a, + prs_v_afdeling_boom ab, + prs_collega c, + prs_v_aanwezigperslid pl, + prs_v_aanwezigperslid pv + WHERE kp.prs_kostenplaats_verwijder IS NULL + AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key -- PRS-KPN + AND a.prs_afdeling_verwijder IS NULL + AND a.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 IN -- Afdeling onder Troux-regime + (SELECT fac.safe_to_number (fac_usrdata_code) + FROM fac_usrdata + WHERE fac_usrtab_key = 2) + AND kp.prs_perslid_key = c.prs_perslid_key -- BH met collega's + AND c.prs_perslid_key = pl.prs_perslid_key -- Actief + AND c.prs_perslid_key_alt = pv.prs_perslid_key -- Actief + AND NOT EXISTS -- Nog niet in autorisatiegroep + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = 1219 -- ICT:Fiattering namens + AND prs_perslid_key = c.prs_perslid_key_alt) + UNION + SELECT DISTINCT 1219, c.prs_perslid_key_alt + FROM prs_kostenplaatsgrp kpg, + prs_collega c, + prs_v_aanwezigperslid pl, + prs_v_aanwezigperslid pv + WHERE kpg.prs_perslid_key = c.prs_perslid_key -- BH met collega's + AND c.prs_perslid_key = pl.prs_perslid_key -- Actief + AND c.prs_perslid_key_alt = pv.prs_perslid_key -- Actief + AND NOT EXISTS -- Nog niet in autorisatiegroep + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = 1219 -- ICT:Fiattering namens + AND prs_perslid_key = c.prs_perslid_key_alt); + + COMMIT; + + -- RWSN#27015: Verwijderen oude BH-vervangers uit 1219=ICT:Fiattering namens. + DELETE FROM fac_gebruikersgroep gg + WHERE gg.fac_groep_key = 1219 -- ICT:Fiattering namens + AND NOT EXISTS + (SELECT 1 + FROM prs_collega c, prs_kostenplaats kp + WHERE c.prs_perslid_key_alt = gg.prs_perslid_key + AND c.prs_perslid_key = kp.prs_perslid_key) + AND NOT EXISTS + (SELECT 1 + FROM prs_collega c, prs_kostenplaatsgrp kpg + WHERE c.prs_perslid_key_alt = gg.prs_perslid_key + AND c.prs_perslid_key = kpg.prs_perslid_key); + + COMMIT; + + -- RWSN#27015: Bijwerken profielen van alle (aanwezige) medewerkers zonder + -- een profiel of met een profiel_key < 4! + UPDATE prs_perslid p + SET p.fac_profiel_key = 4 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 4 + AND EXISTS (SELECT 1 + FROM prs_kostenplaatsgrp + WHERE prs_perslid_key = p.prs_perslid_key); + + UPDATE prs_perslid p + SET p.fac_profiel_key = 4 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 4 + AND EXISTS + (SELECT 1 + FROM prs_collega c, + fac_gebruikersgroep gg, + prs_kostenplaatsgrp kpg + WHERE c.prs_perslid_key_alt = p.prs_perslid_key + AND c.prs_perslid_key_alt = gg.prs_perslid_key + AND gg.fac_groep_key = 1219 + AND c.prs_perslid_key = kpg.prs_perslid_key); + + UPDATE prs_perslid p + SET p.fac_profiel_key = 3 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 3 + AND EXISTS + (SELECT 1 + FROM prs_kostenplaats + WHERE prs_perslid_key = p.prs_perslid_key + AND prs_kostenplaats_verwijder IS NULL); + + UPDATE prs_perslid p + SET p.fac_profiel_key = 3 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 3 + AND EXISTS + (SELECT 1 + FROM prs_collega c, + fac_gebruikersgroep gg, + prs_kostenplaats kp + WHERE c.prs_perslid_key_alt = p.prs_perslid_key + AND c.prs_perslid_key_alt = gg.prs_perslid_key + AND gg.fac_groep_key = 1219 + AND c.prs_perslid_key = kp.prs_perslid_key); + + UPDATE prs_perslid p + SET p.fac_profiel_key = 2 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 2 + AND prs_perslid_key IN + (SELECT fac.safe_to_number (kd.ins_kenmerkdeel_waarde) + FROM ins_kenmerkdeel kd, ins_kenmerk k + WHERE kd.ins_kenmerkdeel_verwijder IS NULL + AND kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key BETWEEN 103 AND 200); + + UPDATE prs_perslid p + SET p.fac_profiel_key = 1 + WHERE p.prs_perslid_verwijder IS NULL + AND COALESCE (p.fac_profiel_key, 0) < 1; + + COMMIT; EXCEPTION WHEN OTHERS THEN @@ -20021,7 +20460,1165 @@ AS )) d ON x.alg_gebouw_key = d.alg_onrgoed_key; --- RWSN#27838 +/* Formatted on 21-11-2013 10:42:16 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE rwsn_import_appl (p_import_key IN NUMBER) +IS + c_delim VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (1000); -- Input line + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + header_is_valid NUMBER; + v_count_tot NUMBER (10); + v_count_import NUMBER (10); + v_ongeldig NUMBER (1); + v_aanduiding VARCHAR (200); + -- De importvelden: + v_spiv_domein VARCHAR2 (255); -- C60 + v_applicatiecode VARCHAR2 (255); -- C10 + v_applicatienaam VARCHAR2 (255); -- C100 + v_aut_proces VARCHAR2 (255); -- C10; feitelijk 1! + v_beh_type VARCHAR2 (255); -- C10 + v_beh_mail VARCHAR2 (255); -- C60 + v_beh_org VARCHAR2 (255); -- C10 + v_webbased VARCHAR2 (255); -- C10; feitelijk 1! + v_vervaldatum VARCHAR2 (255); -- C10 + v_vervaldatum_d DATE; + + CURSOR c1 + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; +BEGIN + DELETE FROM rwsn_imp_appl; + + COMMIT; + + v_count_tot := 0; + v_count_import := 0; + header_is_valid := 0; + + FOR rec1 IN c1 + LOOP + BEGIN + v_newline := rec1.fac_imp_file_line; + v_errormsg := 'Fout bij opvragen importregel'; + v_aanduiding := ''; + v_ongeldig := 0; + -- Lees alle veldwaarden + fac.imp_getfield (v_newline, c_delim, v_spiv_domein); + fac.imp_getfield (v_newline, c_delim, v_applicatiecode); + fac.imp_getfield (v_newline, c_delim, v_applicatienaam); + fac.imp_getfield (v_newline, c_delim, v_aut_proces); + fac.imp_getfield (v_newline, c_delim, v_beh_type); + fac.imp_getfield (v_newline, c_delim, v_beh_mail); + fac.imp_getfield (v_newline, c_delim, v_beh_org); + fac.imp_getfield (v_newline, c_delim, v_webbased); + fac.imp_getfield (v_newline, c_delim, v_vervaldatum); + + v_aanduiding := + '[' + || v_spiv_domein + || '|' + || v_applicatiecode + || '|' + || v_applicatienaam + || '|' + || v_aut_proces + || '] '; + + -- 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_spiv_domein) = 'SPIV_DOMEIN' + AND UPPER (v_applicatiecode) = 'APPLICATIECODE' + AND UPPER (v_applicatienaam) = 'APPLICATIENAAM' + AND UPPER (v_aut_proces) = 'AUTORISATIEPROCES' + AND UPPER (v_beh_type) = 'BEHEERDER_TYPE' + AND UPPER (v_beh_mail) = 'BEHEERDER_MAIL' + AND UPPER (v_beh_org) = 'BEHEERDER_ORG' + AND UPPER (v_webbased) = 'WEBBASED' + AND UPPER (v_vervaldatum) = 'VERVALDATUM' + THEN + header_is_valid := 1; + END IF; + ELSE + v_count_tot := v_count_tot + 1; + -- Controleer alle veldwaarden + v_errormsg := 'SPIV-domein ongeldig; ongedefinieerd of te lang'; + v_spiv_domein := TRIM (v_spiv_domein); + + IF v_spiv_domein IS NULL OR LENGTH (v_spiv_domein) > 60 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Applicatiecode ongeldig; ongedefinieerd of te lang'; + v_applicatiecode := TRIM (v_applicatiecode); + + IF v_applicatiecode IS NULL OR LENGTH (v_applicatiecode) > 10 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Applicatienaam ongeldig; ongedefinieerd of te lang'; + v_applicatienaam := TRIM (v_applicatienaam); + + IF v_applicatienaam IS NULL OR LENGTH (v_applicatienaam) > 100 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := + 'Autorisatieproces ongeldig; ongedefinieerd of te lang'; + v_aut_proces := TRIM (v_aut_proces); + + IF v_aut_proces IS NULL OR LENGTH (v_aut_proces) > 1 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Beheerder-type ongeldig; ongedefinieerd'; + v_beh_type := TRIM (v_beh_type); + + IF UPPER (v_beh_type) != 'FB' AND UPPER (v_beh_type) != 'KEY' + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Beheerder-mail ongeldig'; + v_beh_mail := TRIM (v_beh_mail); + + IF UPPER (v_beh_type) = 'FB' OR UPPER (v_beh_type) = 'KEY' + THEN + IF v_beh_mail IS NULL OR LENGTH (v_beh_org) > 60 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + ELSE + IF v_ongeldig = 0 AND LENGTH (v_beh_mail) > 0 + THEN + v_beh_mail := NULL; + fac.imp_writelog (p_import_key, + 'I', + v_aanduiding || v_errormsg, + 'Beheerder-mail wordt genegeerd'); + END IF; + END IF; + + -- + v_errormsg := 'Beheerder-organisatie ongeldig'; + v_beh_org := TRIM (v_beh_org); + + IF UPPER (v_beh_type) = 'KEY' + THEN + IF v_beh_org IS NULL OR LENGTH (v_beh_org) > 10 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + ELSE + IF v_ongeldig = 0 AND LENGTH (v_beh_org) > 0 + THEN + v_beh_org := NULL; + fac.imp_writelog (p_import_key, + 'I', + v_aanduiding || v_errormsg, + 'Beheerder-organisatie wordt genegeerd'); + END IF; + END IF; + + -- + v_errormsg := + 'Webbased-eigenschap ongeldig; ongedefinieerd of te lang'; + v_webbased := TRIM (v_webbased); + + IF v_webbased IS NULL OR LENGTH (v_webbased) > 1 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + -- + v_errormsg := 'Vervaldatum ongeldig'; + v_vervaldatum := TRIM (v_vervaldatum); + v_vervaldatum_d := fac.safe_to_date (v_vervaldatum, 'dd-mm-yyyy'); + + IF v_vervaldatum IS NOT NULL AND v_vervaldatum_d IS NULL + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Vervaldatum wordt genegeerd'); + END IF; + + -- Insert geformatteerde import record + IF v_ongeldig = 0 + THEN + BEGIN + v_errormsg := 'Fout bij wegschrijven importregel'; + + INSERT INTO rwsn_imp_appl (spiv_domein, + applicatiecode, + applicatienaam, + aut_proces, + beh_type, + beh_mail, + beh_org, + webbased, + vervaldatum) + VALUES (v_spiv_domein, + v_applicatiecode, + v_applicatienaam, + v_aut_proces, + v_beh_type, + v_beh_mail, + v_beh_org, + v_webbased, + v_vervaldatum_d); + + COMMIT; + v_count_import := v_count_import + 1; + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + + 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', + 'DID-applicaties/aantal ingelezen importregels: ' + || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'DID-applicaties/aantal ongeldige niet ingelezen 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, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces DID-applicaties afgebroken!'); +END rwsn_import_appl; +/ + +/* Formatted on 21-11-2013 10:42:24 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE rwsn_update_appl (p_import_key IN NUMBER) +AS + c_appl_discipline NUMBER (10) := 2361; + c_aut_proces_srtkey NUMBER (10) := 101; + c_webbased_srtkey NUMBER (10) := 102; + c_fb1_srtkey NUMBER (10) := 103; + c_fb2_srtkey NUMBER (10) := 104; + c_fb3_srtkey NUMBER (10) := 105; + c_min_key_srtkey NUMBER (10) := 121; -- Keyuser1 NN + c_max_key_srtkey NUMBER (10) := 195; -- Keyuser5 RvR + v_errormsg VARCHAR2 (1000) := '-'; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_aanduiding VARCHAR2 (200); + + -- SUBPROC + PROCEDURE add_srtgroep (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT UPPER (spiv_domein) spiv_domein_upper, + MAX (spiv_domein) spiv_domein + FROM rwsn_imp_appl + GROUP BY UPPER (spiv_domein) + ORDER BY 1; + + v_count_tot NUMBER (10); + v_count_new NUMBER (10); + v_discipline_key NUMBER (10); + ccount NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_new := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := + 'Fout bij bepalen INS-discipline [' + || TO_CHAR (c_appl_discipline) + || ']'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND ins_discipline_key = c_appl_discipline; + + v_errormsg := + 'Fout bij toevoegen SPIV-domein [' || rec.spiv_domein || ']'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + rec.spiv_domein_upper; + + IF (ccount = 0) + THEN + INSERT INTO ins_srtgroep ( + ins_discipline_key, + ins_srtgroep_module, + ins_srtgroep_omschrijving + ) + VALUES (v_discipline_key, 'INS', rec.spiv_domein); + + COMMIT; + v_count_new := v_count_new + 1; + 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.imp_writelog (p_import_key, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'SPIV-domeinen/#ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'SPIV-domeinen/#toegevoegd: ' || TO_CHAR (v_count_new), + '' + ); + COMMIT; + END; + + -- SUBPROC + PROCEDURE upsert_inskenmerk (p_srtdeel_key IN NUMBER, + p_srtkenmerk_key IN NUMBER, + p_waarde IN VARCHAR2) + AS + v_kenmerk_key NUMBER; + v_srtkenmerk_type VARCHAR2 (1); + ccount NUMBER; + v_objectnaam VARCHAR2 (30); + v_kolomnaam VARCHAR2 (30); + v_kolomtxt VARCHAR2 (30); + sql_stmt VARCHAR2 (1000); + v_new_waarde VARCHAR2 (1000); + v_kenmerkdeel_key NUMBER; + v_cur_waarde VARCHAR2 (4000); + BEGIN + v_errormsg := + 'Fout bij bepalen D-kenmerksoort [' || p_srtkenmerk_key || ']'; + + SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype + INTO v_kenmerk_key, v_srtkenmerk_type + FROM ins_srtdeel sd, + ins_srtgroep sg, + ins_v_aanwezigkenmerk k, + ins_v_aanwezigsrtkenmerk sk + WHERE sd.ins_srtdeel_key = p_srtdeel_key + AND sd.ins_srtgroep_key = sg.ins_srtgroep_key + AND k.ins_srtkenmerk_key = p_srtkenmerk_key + AND k.ins_srtinstallatie_key = sg.ins_discipline_key + AND k.ins_kenmerk_niveau = 'D' + AND k.ins_kenmerk_bewerkniveau = 'S' + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; + + IF (v_srtkenmerk_type IN ('R', 'S') AND p_waarde IS NOT NULL) + THEN + v_errormsg := 'Fout bij bepalen eigen tabel'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtkenmerk sk, fac_kenmerkdomein d + WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NOT NULL; + + v_errormsg := 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']'; + + IF (ccount = 1) + THEN -- Eigen tabel; p_waarde is code! + SELECT TO_CHAR (ud.fac_usrdata_key) + INTO v_new_waarde + FROM ins_srtkenmerk sk, + fac_kenmerkdomein d, + fac_v_aanwezigusrdata ud + WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key = ud.fac_usrtab_key + AND UPPER (TRIM (ud.fac_usrdata_code)) = + UPPER (p_waarde); + ELSE -- FACILITOR view/tabel; p_waarde is omschrijving! + SELECT d.fac_kenmerkdomein_objectnaam, + d.fac_kenmerkdomein_kolomnaam, + d.fac_kenmerkdomein_kolomtxt + INTO v_objectnaam, v_kolomnaam, v_kolomtxt + FROM ins_srtkenmerk sk, fac_kenmerkdomein d + WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NULL; + + sql_stmt := + 'SELECT MAX (' + || v_kolomnaam + || ') FROM ' + || v_objectnaam + || ' WHERE UPPER (TRIM (' + || v_kolomtxt + || ')) = UPPER (''' + || p_waarde + || ''')'; + + EXECUTE IMMEDIATE sql_stmt INTO v_new_waarde; + END IF; + ELSE -- C(haracter)/D(ate)/N(umeric) + v_new_waarde := p_waarde; + END IF; + + v_errormsg := 'Fout bij bepalen huidige waarde'; + + SELECT COUNT ( * ), + MAX (ins_kenmerkdeel_key), + MAX (ins_kenmerkdeel_waarde) + INTO ccount, v_kenmerkdeel_key, v_cur_waarde + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = p_srtdeel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF (ccount = 0) + THEN + IF (v_new_waarde IS NOT NULL) + THEN + v_errormsg := 'Fout bij toevoegen waarde [' || v_new_waarde || ']'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (p_srtdeel_key, v_kenmerk_key, v_new_waarde); + + COMMIT; + END IF; + ELSIF (COALESCE (v_cur_waarde, -1) <> COALESCE (v_new_waarde, -1)) + THEN + IF (v_new_waarde IS NOT NULL) + THEN + v_errormsg := 'Fout bij bijwerken waarde [' || v_new_waarde || ']'; + + UPDATE ins_kenmerkdeel + SET ins_kenmerkdeel_waarde = v_new_waarde + WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + ELSE -- v_new_waarde IS NULL + v_errormsg := + 'Fout bij verwijderen waarde [' || v_cur_waarde || ']'; + + UPDATE ins_kenmerkdeel + SET ins_kenmerkdeel_verwijder = SYSDATE + WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + END IF; + + COMMIT; + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'upsert_inskenmerk'); + END; + + -- SUBPROC + -- Aanmaken/bijwerken applicaties (incl. aut.proces + webbased)! + PROCEDURE upd_srtdeel (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT DISTINCT + spiv_domein, + applicatiecode, + applicatienaam, + aut_proces aut_proc_code, -- '0' t/m '4' + DECODE (UPPER (webbased), 'J', 1, 'N', 0, NULL) + webbased_code, + vervaldatum + FROM rwsn_imp_appl + ORDER BY 1, 2, 3; + + v_discipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + v_srtdeel_key NUMBER (10); + ccount NUMBER (10); + v_count_tot NUMBER (10); + v_count_new NUMBER (10); + v_count_upd NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_new := 0; + v_count_upd := 0; + v_aanduiding := ''; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || rec.spiv_domein + || '|' + || rec.applicatiecode + || '|' + || rec.applicatienaam + || '] '; + v_errormsg := + 'Fout bij bepalen INS-discipline [' + || TO_CHAR (c_appl_discipline) + || ']'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND ins_discipline_key = c_appl_discipline; + + v_errormsg := 'Fout bij bepalen SPIV-domein'; + + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + UPPER (rec.spiv_domein); + + -- Applicatie objectsoorten hebben een unieke code/naam per SPIV-domein??? + v_errormsg := 'Fout bij (uniek) bepalen applicatie'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND UPPER (TRIM (ins_srtdeel_omschrijving)) = + UPPER (rec.applicatienaam); + + IF (ccount = 0) + THEN + v_errormsg := + 'Fout bij toevoegen applicatie [' + || rec.applicatienaam + || ']'; + + -- Binding 16 betekent persoonsgebonden (Persoon-vinkje)! + INSERT INTO ins_srtdeel (ins_srtgroep_key, + ins_srtdeel_module, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_srtdeel_binding, + ins_srtdeel_vervaldatum) + VALUES (v_srtgroep_key, + 'INS', + UPPER (rec.applicatiecode), + rec.applicatienaam, + 16, + rec.vervaldatum) + RETURNING ins_srtdeel_key INTO v_srtdeel_key; + + COMMIT; + + --v_srtnoti_code := 'INSNEW'; + v_count_new := v_count_new + 1; + ELSE -- Objectsoort bestaat reeds! + SELECT ins_srtdeel_key + INTO v_srtdeel_key + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND UPPER (TRIM (ins_srtdeel_omschrijving)) = + UPPER (rec.applicatienaam); + + v_errormsg := 'Fout bij bijwerken applicatiecode'; + + UPDATE ins_srtdeel + SET ins_srtdeel_code = rec.applicatiecode, + ins_srtdeel_omschrijving = rec.applicatienaam, + ins_srtdeel_vervaldatum = rec.vervaldatum + WHERE ins_srtdeel_key = v_srtdeel_key; + + COMMIT; + + --v_srtnoti_code := 'INSUPD'; + v_count_upd := v_count_upd + 1; + END IF; + + upsert_inskenmerk (v_srtdeel_key, + c_aut_proces_srtkey, + rec.aut_proc_code); + upsert_inskenmerk (v_srtdeel_key, + c_webbased_srtkey, + rec.webbased_code); + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Applicaties/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Applicaties/#toegevoegd: ' || TO_CHAR (v_count_new), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Applicaties/#bijgewerkt: ' || TO_CHAR (v_count_upd), + ''); + COMMIT; + END; + + -- SUBPROC + PROCEDURE insert_FB (p_srtdeel_key IN NUMBER, p_beh_mail IN VARCHAR2) + AS + v_perslid_key NUMBER; + v_kenmerk_key NUMBER; + BEGIN + -- Bepalen fb-user op basis van e-mail. + v_errormsg := 'Fout bij bepalen fb-user [' || p_beh_mail || ']'; + + SELECT prs_perslid_key + INTO v_perslid_key + FROM prs_v_aanwezigperslid + WHERE INSTR (UPPER (prs_perslid_email), UPPER (p_beh_mail)) > 0 + AND prs_perslid_oslogin IS NOT NULL; + + -- Bepalen eerstvrije=niet gevulde fb-veld (max. 3). + v_errormsg := 'Fout bij bepalen fb-veld'; + + SELECT MIN (ins_kenmerk_key) eerstvrije + INTO v_kenmerk_key + FROM (SELECT k.ins_kenmerk_key + FROM ins_v_aanwezigkenmerk k, ins_srtkenmerk sk + WHERE k.ins_kenmerk_bewerkniveau = 'S' + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_key IN + (c_fb1_srtkey, c_fb2_srtkey, c_fb3_srtkey) + MINUS + SELECT k.ins_kenmerk_key + FROM ins_v_aanwezigkenmerkdeel kd, + ins_v_aanwezigkenmerk k, + ins_srtkenmerk sk + WHERE kd.ins_deel_key = p_srtdeel_key + AND kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_kenmerk_bewerkniveau = 'S' + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_key IN + (c_fb1_srtkey, c_fb2_srtkey, c_fb3_srtkey)); + + -- Toevoegen (vullen) key-veldwaarde met fb-user. + v_errormsg := 'Fout bij toevoegen fb-veldwaarde'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (p_srtdeel_key, v_kenmerk_key, v_perslid_key); + + COMMIT; + --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.imp_writelog (p_import_key, + -- 'W', + -- v_aanduiding || v_errormsg, + -- 'insert_FB'); + END; + + -- SUBPROC + PROCEDURE insert_KEY (p_srtdeel_key IN NUMBER, + p_beh_mail IN VARCHAR2, + p_beh_org IN VARCHAR2) + AS + v_perslid_key NUMBER; + v_kenmerk_key NUMBER; + BEGIN + -- Bepalen key-user op basis van e-mail. + v_errormsg := 'Fout bij bepalen key-user [' || p_beh_mail || ']'; + + SELECT prs_perslid_key + INTO v_perslid_key + FROM prs_v_aanwezigperslid + WHERE INSTR (UPPER (prs_perslid_email), UPPER (p_beh_mail)) > 0 + AND prs_perslid_oslogin IS NOT NULL; + + -- Bepalen eerstvrije=niet gevulde key-veld voor onderdeel (max. 5). + v_errormsg := 'Fout bij bepalen key-veld [' || p_beh_org || ']'; + + SELECT MIN (ins_kenmerk_key) eerstvrije + INTO v_kenmerk_key + FROM (SELECT k.ins_kenmerk_key + FROM ins_v_aanwezigkenmerk k, ins_srtkenmerk sk + WHERE k.ins_kenmerk_bewerkniveau = 'S' + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_key BETWEEN c_min_key_srtkey + AND c_max_key_srtkey + AND UPPER (TRIM (sk.ins_srtkenmerk_omschrijving)) LIKE + '%' || p_beh_org + MINUS + SELECT k.ins_kenmerk_key + FROM ins_v_aanwezigkenmerkdeel kd, + ins_v_aanwezigkenmerk k, + ins_srtkenmerk sk + WHERE kd.ins_deel_key = p_srtdeel_key + AND kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_kenmerk_bewerkniveau = 'S' + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_key BETWEEN c_min_key_srtkey + AND c_max_key_srtkey + AND UPPER (TRIM (sk.ins_srtkenmerk_omschrijving)) LIKE + '%' || p_beh_org); + + -- Toevoegen (vullen) key-veldwaarde met key-user voor onderdeel. + v_errormsg := 'Fout bij toevoegen key-veldwaarde'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (p_srtdeel_key, v_kenmerk_key, v_perslid_key); + + COMMIT; + --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.imp_writelog (p_import_key, + -- 'W', + -- v_aanduiding || v_errormsg, + -- 'insert_KEY'); + END; + + -- SUBPROC + -- Bijwerken beheerders! + PROCEDURE upd_beheerder (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT DISTINCT spiv_domein, + applicatiecode, + applicatienaam, + beh_type, + beh_mail, + beh_org + FROM rwsn_imp_appl + WHERE beh_type = 'FB' OR beh_type = 'KEY' + ORDER BY 1, 2, 3; + + v_errorhint VARCHAR2 (1000) := '-'; + v_discipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + v_srtdeel_key NUMBER (10); + ccount NUMBER (10); + v_count_tot NUMBER (10); + v_count_upd NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_upd := 0; + v_aanduiding := ''; + + -- Verwijder -elke import opnieuw- alle beheerders (FB + KEY) en maak de + -- mogelijk gewijzigde set beheerders vervolgens weer aan! + -- Aanname: Import buiten werktijd ('s nachts) om samenloop te voorkomen + -- met notificaties en goedkeuring/afwijzing van opdrachten. + v_errormsg := 'Fout bij verwijderen beheerders (huidige)'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_kenmerkdeel + WHERE ins_kenmerk_key IN + (SELECT ins_kenmerk_key + FROM ins_kenmerk + WHERE ins_kenmerk_bewerkniveau = 'S' + AND ins_srtkenmerk_key BETWEEN c_fb1_srtkey + AND c_max_key_srtkey); + + --DELETE FROM ins_kenmerkdeel + -- WHERE ins_kenmerkdeel_verwijder IS NULL + -- AND ins_kenmerk_key IN + -- (SELECT ins_kenmerk_key + -- FROM ins_kenmerk + -- WHERE ins_kenmerk_bewerkniveau = 'S' + -- AND ins_srtkenmerk_key BETWEEN c_fb1_srtkey + -- AND c_max_key_srtkey); + UPDATE ins_kenmerkdeel + SET ins_kenmerkdeel_verwijder = SYSDATE + WHERE ins_kenmerkdeel_verwijder IS NULL + AND ins_kenmerk_key IN + (SELECT ins_kenmerk_key + FROM ins_kenmerk + WHERE ins_kenmerk_bewerkniveau = 'S' + AND ins_srtkenmerk_key BETWEEN c_fb1_srtkey + AND c_max_key_srtkey); + + fac.imp_writelog (p_import_key, + 'S', + 'Beheerders/#verwijderd: ' || TO_CHAR (ccount), + ''); + COMMIT; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || rec.spiv_domein + || '|' + || rec.applicatiecode + || '|' + || rec.applicatienaam + || '] '; + v_errormsg := + 'Fout bij bepalen INS-discipline [' + || TO_CHAR (c_appl_discipline) + || ']'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND ins_discipline_key = c_appl_discipline; + + v_errormsg := 'Fout bij bepalen SPIV-domein'; + + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + UPPER (rec.spiv_domein); + + v_errormsg := 'Fout bij (uniek) bepalen applicatie'; + + SELECT ins_srtdeel_key + INTO v_srtdeel_key + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND UPPER (TRIM (ins_srtdeel_omschrijving)) = + UPPER (rec.applicatienaam); + + IF (rec.beh_type = 'FB') + THEN + v_errorhint := 'insert_FB'; + insert_FB (v_srtdeel_key, rec.beh_mail); + ELSE + v_errorhint := 'insert_KEY'; + insert_KEY (v_srtdeel_key, rec.beh_mail, rec.beh_org); + END IF; + + v_count_upd := v_count_upd + 1; + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Beheerders/#ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Beheerders/#toegevoegd: ' || TO_CHAR (v_count_upd), + ''); + COMMIT; + END; + + -- SUBPROC + -- Verwijderen applicaties (incl. alle gegevens???)! + -- Wat met lopende ICT aanvragen? Voorstel om in view op applicaties, de + -- verwijderde applicaties te prefixen met 'VERVALLEN:' en tot een maand + -- na verwijderen nog te tonen? + PROCEDURE del_srtdeel (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT sg.ins_srtgroep_omschrijving, + sd.ins_srtdeel_code, + sd.ins_srtdeel_omschrijving, + sd.ins_srtdeel_key + FROM ins_v_aanwezigsrtgroep sg, ins_v_aanwezigsrtdeel sd + WHERE sg.ins_discipline_key = c_appl_discipline + AND sg.ins_srtgroep_key = sd.ins_srtgroep_key + AND NOT EXISTS + (SELECT 1 + FROM rwsn_imp_appl + WHERE UPPER (spiv_domein) = + TRIM (sg.ins_srtgroep_upper) + AND UPPER (applicatienaam) = + TRIM (sd.ins_srtdeel_upper)) + ORDER BY 1, 2, 3; + + v_count_del NUMBER (10); + BEGIN + v_count_del := 0; + v_aanduiding := ''; + + FOR rec IN c1 + LOOP + BEGIN + v_aanduiding := + '[' + || rec.ins_srtgroep_omschrijving + || '|' + || rec.ins_srtdeel_omschrijving + || '] '; + v_errormsg := 'Fout bij verwijderen applicatie'; + + --DELETE FROM ins_srtdeel + -- WHERE ins_srtdeel_key = rec.ins_srtdeel_key; + UPDATE ins_srtdeel + SET ins_srtdeel_verwijder = SYSDATE + WHERE ins_srtdeel_key = rec.ins_srtdeel_key; + + --UPDATE ins_kenmerkdeel kd + -- SET kd.ins_kenmerkdeel_verwijder = SYSDATE + -- WHERE kd.ins_kenmerkdeel_verwijder IS NULL + -- AND kd.ins_deel_key = rec.ins_srtdeel_key + -- AND EXISTS + -- (SELECT 1 + -- FROM ins_kenmerk + -- WHERE ins_kenmerk_key = kd.ins_kenmerk_key + -- AND ins_kenmerk_bewerkniveau = 'S'); + + COMMIT; + + v_count_del := v_count_del + 1; + 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.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'Applicaties/aantal verwijderd: ' || TO_CHAR (v_count_del), + '' + ); + COMMIT; + END; +-- MAIN +BEGIN + add_srtgroep (p_import_key); + upd_srtdeel (p_import_key); + upd_beheerder (p_import_key); + del_srtdeel (p_import_key); +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.imp_writelog (p_import_key, + 'E', + v_errormsg, + 'Importproces DID-applicaties afgebroken!'); +END rwsn_update_appl; +/ + +-- RWSN#27838 CREATE OR REPLACE VIEW RWSN_V_NOTI_RESREMINDER ( CODE, diff --git a/UWVA/Once/uwva84.sql b/UWVA/Once/uwva84.sql new file mode 100644 index 000000000..a1b818041 --- /dev/null +++ b/UWVA/Once/uwva84.sql @@ -0,0 +1,58 @@ +-- Customer specific once-script UWVA84. +-- +-- (c) 2013 SG|facilitor bv +-- $Revision$ +-- $Id$ +-- +-- Support: +31 53 4800700 +SET ECHO ON +SPOOL xuwva84.lst +SET DEFINE OFF + +--UWVA#23764 MLD: Vinkje bij Openstaande opdrachten ook afmelden default aan (setting) +UPDATE fac_setting + SET fac_setting_pvalue = 1, fac_setting_datum = SYSDATE + WHERE fac_setting_name = 'mld_close_opdr_default'; + +-- UWVA#27876+UWVA#27882 Webservice-user tbv. VOB-koppeling; dezelfde module, afdeling +-- en functie als _FACILITOR (= 33759)! +INSERT INTO prs_perslid (prs_perslid_module, + prs_srtperslid_key, + prs_afdeling_key, + prs_perslid_naam, + prs_perslid_oslogin, + prs_perslid_flags, + prs_perslid_apikey) + SELECT p.prs_perslid_module, + p.prs_srtperslid_key, + p.prs_afdeling_key, + 'Pseudo-user tbv. VOB', + '_VOB', + 0, + 'KHXbqwlUKbzOMUgfcmPzmgHzyJxQiurN' + FROM prs_perslid p + WHERE p.prs_perslid_key = 33759; + +-- UWVA#28137 Alle klachten (vakgroeptype 3) mogen verwijzen naar bestellingen, meldingen en reserveringen (waarde 13) +UPDATE mld_stdmelding + SET mld_stdmelding_kanverwijzen = 13 + WHERE mld_stdmelding_key IN + (SELECT mld_stdmelding_key + FROM mld_stdmelding std, mld_discipline md + WHERE mld_ins_discipline_key = md.ins_discipline_key + AND md.ins_srtdiscipline_key = 3); + +COMMIT; + +BEGIN adm.systrackscript('$Workfile: uwva84.sql $', '$Revision$', 2); END; +/ +SPOOL OFF + +@@uwva_prs.sql +@@uwva_fin.sql +@@uwva_hv.sql +@@uwva_misc.sql + +BEGIN fac.registercustversion('UWVA', 84); END; +/ +COMMIT; diff --git a/UWVA/post-imp/post-imp_uwva.sql b/UWVA/post-imp/post-imp_uwva.sql index c35e46ec7..0c38793b9 100644 --- a/UWVA/post-imp/post-imp_uwva.sql +++ b/UWVA/post-imp/post-imp_uwva.sql @@ -100,7 +100,7 @@ UPDATE fac_srtnotificatie SET fac_srtnotificatie_oms=SUBSTR('SGF-'||fac_srtnotif -- 1) Notificatiejobs uitzetten UPDATE fac_notificatie_job - SET fac_notificatie_job_nextrun = NULL +SET fac_notificatie_job_nextrun = ADD_MONTHS(TRUNC(SYSDATE), 15*12) WHERE fac_notificatie_job_key IN (3, 21, 122, 161, 181, 183); -- 2) Een aantal mail-notificatie uitzetten diff --git a/UWVA/uwva_fin.sql b/UWVA/uwva_fin.sql index 78909685f..9ced6d3fa 100644 --- a/UWVA/uwva_fin.sql +++ b/UWVA/uwva_fin.sql @@ -6475,11 +6475,12 @@ END; / -/* Formatted on 19-11-2010 14:18:42 (QP5 v5.136.908.31019) */ -- UWVA#19018: Notificeer niet gefiatteerde facturen naar de budgethouders (1 mail per persoon) -- Maakt hierbij niet veel uit of ze net zijn geimporteerd of vroeger (of handmatig ingevoerd) -- Medium wordt bepaalt door mode bij FININF -- Wordt aangeroepen na factuurimport +-- UWVA#27940: Alleen actieve kostenplaatsen +/* Formatted on 25-11-2013 21:30:58 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW uwva_v_noti_finreminder ( code, @@ -6494,19 +6495,26 @@ CREATE OR REPLACE VIEW uwva_v_noti_finreminder AS SELECT 'FININF', '', - prs.getkpverantwoordelijke (fin.getfactuurkostenplaats (f.fin_factuur_key), 2, -1) budgethouder, - 'Fiatteringsverzoek voor ' - || COUNT (f.fin_factuur_key) - || DECODE (COUNT (f.fin_factuur_key), 1, ' factuur.', ' facturen.'), - MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; nog testen of dit werkt??? + prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1) + budgethouder, + 'Fiatteringsverzoek voor ' || COUNT (f.fin_factuur_key) + || DECODE (COUNT (f.fin_factuur_key), + 1, ' factuur.', + ' facturen.'), + MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige! NULL, NULL, NULL - FROM fin_factuur f - WHERE f.fin_factuur_statuses_key = 2 - --AND f.mld_opdr_key IS NOT NULL - AND f.fin_factuur_datum > SYSDATE - 0.1 / 24 -- minder dan 6 minuten geleden - GROUP BY prs.getkpverantwoordelijke (fin.getfactuurkostenplaats (f.fin_factuur_key), 2, -1); + FROM fin_factuur f, prs_v_aanwezigkostenplaats kp + WHERE f.fin_factuur_verwijder IS NULL + AND f.fin_factuur_statuses_key = 2 + AND f.fin_factuur_datum > SYSDATE - 0.1 / 24 -- Minder dan 6 minuten geleden + AND fin.getfactuurkostenplaats (f.fin_factuur_key) = + kp.prs_kostenplaats_key + AND kp.prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF%' + AND (kp.prs_kostenplaats_eind > TRUNC (SYSDATE) + OR kp.prs_kostenplaats_eind IS NULL) + GROUP BY prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1); --UWVA#20283 rapportage tbv combinatieconrolle mismatch bij opdrachten @@ -6712,71 +6720,69 @@ AS -- UWVA#21019: Reminders naar budgethouders dat ze facturen moeten accorderen -- (na 1 week en na 3 weken) +-- UWVA#27940: Alleen actieve kostenplaatsen +/* Formatted on 25-11-2013 21:30:58 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW uwva_v_noti_factuurreminder ( - CODE, - SENDER, - RECEIVER, - TEXT, - KEY, - PAR1, - PAR2, - XKEY + code, + sender, + receiver, + text, + key, + par1, + par2, + xkey ) AS - SELECT 'CUST11', - '', - prs.getkpverantwoordelijke ( - fin.getfactuurkostenplaats (f.fin_factuur_key), - 2, - -1) - budgethouder, - 'RAPPEL: ' - || COUNT (f.fin_factuur_key) - || ' niet automatisch goedgekeurde factuurregel' - || DECODE (COUNT (f.fin_factuur_key), 1, '. (', 's. (') - || TO_CHAR( TRUNC( SYSDATE - 7 ), 'DD-MM-YYYY') - || ')', - MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; nog testen of dit werkt??? - NULL, - NULL, - NULL - FROM fin_factuur f - WHERE f.fin_factuur_statuses_key = 2 - AND f.fin_factuur_verwijder IS NULL - --AND f.mld_opdr_key IS NOT NULL - AND TRUNC(f.fin_factuur_datum) = TRUNC( SYSDATE - 7 ) -- 1 week (7 dagen) geleden - GROUP BY prs.getkpverantwoordelijke ( - fin.getfactuurkostenplaats (f.fin_factuur_key), - 2, - -1) -UNION - SELECT 'CUST12', - '', - prs.getkpverantwoordelijke ( - fin.getfactuurkostenplaats (f.fin_factuur_key), - 2, - -1) - budgethouder, - 'TWEEDE RAPPEL: ' - || COUNT (f.fin_factuur_key) - || ' niet automatisch goedgekeurde factuurregel' - || DECODE (COUNT (f.fin_factuur_key), 1, '. (', 's. (') - || TO_CHAR( TRUNC( SYSDATE - 21 ), 'DD-MM-YYYY') - || ')', - MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; nog testen of dit werkt??? - NULL, - NULL, - NULL - FROM fin_factuur f - WHERE f.fin_factuur_statuses_key = 2 - AND f.fin_factuur_verwijder IS NULL - --AND f.mld_opdr_key IS NOT NULL - AND TRUNC(f.fin_factuur_datum) = TRUNC( SYSDATE - 21 ) -- 3 weken (21 dagen) geleden - GROUP BY prs.getkpverantwoordelijke ( - fin.getfactuurkostenplaats (f.fin_factuur_key), - 2, - -1); + SELECT 'CUST11', + '', + prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1) + budgethouder, + 'RAPPEL: ' + || COUNT (f.fin_factuur_key) + || ' niet automatisch goedgekeurde factuurregel' + || DECODE (COUNT (f.fin_factuur_key), 1, '. (', 's. (') + || TO_CHAR (TRUNC (SYSDATE - 7), 'DD-MM-YYYY') + || ')', + MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige! + NULL, + NULL, + NULL + FROM fin_factuur f, prs_v_aanwezigkostenplaats kp + WHERE f.fin_factuur_verwijder IS NULL + AND f.fin_factuur_statuses_key = 2 + AND TRUNC (f.fin_factuur_datum) = TRUNC (SYSDATE - 7) -- 1 week (7 dagen) geleden + AND fin.getfactuurkostenplaats (f.fin_factuur_key) = + kp.prs_kostenplaats_key + AND kp.prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF%' + AND (kp.prs_kostenplaats_eind > TRUNC (SYSDATE) + OR kp.prs_kostenplaats_eind IS NULL) + GROUP BY prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1) + UNION + SELECT 'CUST12', + '', + prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1) + budgethouder, + 'TWEEDE RAPPEL: ' + || COUNT (f.fin_factuur_key) + || ' niet automatisch goedgekeurde factuurregel' + || DECODE (COUNT (f.fin_factuur_key), 1, '. (', 's. (') + || TO_CHAR (TRUNC (SYSDATE - 21), 'DD-MM-YYYY') + || ')', + MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige! + NULL, + NULL, + NULL + FROM fin_factuur f, prs_v_aanwezigkostenplaats kp + WHERE f.fin_factuur_verwijder IS NULL + AND f.fin_factuur_statuses_key = 2 + AND TRUNC (f.fin_factuur_datum) = TRUNC (SYSDATE - 21) -- 3 weken (21 dagen) geleden + AND fin.getfactuurkostenplaats (f.fin_factuur_key) = + kp.prs_kostenplaats_key + AND kp.prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF%' + AND (kp.prs_kostenplaats_eind > TRUNC (SYSDATE) + OR kp.prs_kostenplaats_eind IS NULL) + GROUP BY prs.getkpverantwoordelijke (kp.prs_kostenplaats_key, 2, -1); -- UWVA#20124: Rapportage voor doorbelasten geannuleerde bestellingen diff --git a/UWVA/uwva_misc.sql b/UWVA/uwva_misc.sql index 9ecce78eb..89170e2a0 100644 --- a/UWVA/uwva_misc.sql +++ b/UWVA/uwva_misc.sql @@ -145,15 +145,11 @@ AS BEGIN v_dl := 0; - SELECT COALESCE (fac_setting_pvalue, fac_setting_default) - INTO v_kt_van - FROM fac_setting - WHERE fac_setting_key = 21; + -- Bepaal 'Start time of working day' (21=fac_t_startofworkday)! + v_kt_van := fac.safe_to_number (fac.getsetting ('fac_t_startofworkday')); - SELECT COALESCE (fac_setting_pvalue, fac_setting_default) - INTO v_kt_tot - FROM fac_setting - WHERE fac_setting_key = 22; + -- Bepaal 'End time of working day' (22=fac_t_endofworkday)! + v_kt_van := fac.safe_to_number (fac.getsetting ('fac_t_endofworkday')); IF (van_date > tot_date) THEN @@ -5680,8 +5676,8 @@ BEGIN -- Delete BSN voor reserveringen ouder dan 31 dagen en een activiteitkey -- hebben tussen 21 en 181 (UWVA#19128) -- Nu ook tussen 281 en 283 (UWVA#23258) - -- (UWVA#25930) - -- Kenmerken tussen 321 en 324 hoeven niet meer deze worden verwijderd. (UWVA#27583, nog niet per UWVA83!!!) + -- Nu ook tussen 321 en 323 (UWVA#25930) + -- Nu niet meer tussen 321 en 323 (UWVA#27583) DELETE FROM res_kenmerkwaarde WHERE res_kenmerkwaarde_key IN (SELECT kw.res_kenmerkwaarde_key @@ -5689,12 +5685,10 @@ BEGIN res_kenmerkwaarde kw, res_kenmerk k, res_srtkenmerk srtk - WHERE ((r.res_activiteit_key > 20 + WHERE ( (r.res_activiteit_key > 20 AND r.res_activiteit_key < 182) OR (r.res_activiteit_key > 280 - AND r.res_activiteit_key < 284) --) - OR (r.res_activiteit_key > 320 -- UWVA#27583: Nog niet per UWVA83! - AND r.res_activiteit_key < 324)) -- UWVA#27583: Nog niet per UWVA83! + AND r.res_activiteit_key < 284)) AND kw.res_rsv_ruimte_key = r.res_rsv_ruimte_key AND k.res_kenmerk_key = kw.res_kenmerk_key @@ -5706,7 +5700,7 @@ BEGIN -- Anonimiseer bezoekersnaam voor reserveringen ouder dan 31 dagen en een -- activiteitkey hebben tussen 21 en 181 (UWVA#19128) -- Nu ook tussen 281 en 283 (UWVA#23258) - -- Nu ook tussen 321 en 324 (UWVA#25930) + -- Nu ook tussen 321 en 323 (UWVA#25930) UPDATE bez_bezoekers SET bez_afspraak_naam = 'Anoniem', bez_afspraak_bedrijf = 'Anoniem' WHERE bez_afspraak_key IN @@ -5723,32 +5717,32 @@ BEGIN AND v.bez_afspraak_key = b.bez_afspraak_key AND v.bez_afspraak_naam != 'Anoniem'); - -- Verwijder opmerking voor afspraken van reserveringen ouder dan 31 dagen en een - -- activiteitkey hebben tussen 21 en 181, tussen 281 en 283 en tussen 321 en 324 (UWVA#27583, nog niet per UWVA83!!!) ---UPDATE bez_afspraak --- SET bez_afspraak_opmerking = NULL --- WHERE bez_afspraak_key IN --- (SELECT b.bez_afspraak_key --- FROM res_rsv_ruimte r, bez_afspraak b --- WHERE ( (r.res_activiteit_key > 20 --- AND r.res_activiteit_key < 182) --- OR (r.res_activiteit_key > 280 --- AND r.res_activiteit_key < 284) --- OR (r.res_activiteit_key > 320 --- AND r.res_activiteit_key < 324)) --- AND r.res_rsv_ruimte_tot < SYSDATE - 31 --- AND b.res_rsv_ruimte_key = r.res_rsv_ruimte_key --- AND b.bez_afspraak_opmerking IS NOT NULL); + -- Verwijder opmerking voor afspraken van reserveringen ouder dan 31 dagen en een + -- activiteitkey hebben tussen 21 en 181, tussen 281 en 283 en tussen 321 en 323 (UWVA#27583) + UPDATE bez_afspraak + SET bez_afspraak_opmerking = NULL + WHERE bez_afspraak_key IN + (SELECT b.bez_afspraak_key + FROM res_rsv_ruimte r, bez_afspraak b + WHERE ( (r.res_activiteit_key > 20 + AND r.res_activiteit_key < 182) + OR (r.res_activiteit_key > 280 + AND r.res_activiteit_key < 284) + OR (r.res_activiteit_key > 320 + AND r.res_activiteit_key < 324)) + AND r.res_rsv_ruimte_tot < SYSDATE - 31 + AND b.res_rsv_ruimte_key = r.res_rsv_ruimte_key + AND b.bez_afspraak_opmerking IS NOT NULL); - -- Verwijder opmerking van reserveringen ouder dan 31 dagen en een - -- activiteitkey hebben tussen 21 en 181, tussen 281 en 283 en tussen 321 en 324 (UWVA#27583, nog niet per UWVA83!!!) ---UPDATE res_rsv_ruimte r --- SET r.res_rsv_ruimte_opmerking = NULL --- WHERE ( (r.res_activiteit_key > 20 AND r.res_activiteit_key < 182) --- OR (r.res_activiteit_key > 280 AND r.res_activiteit_key < 284) --- OR (r.res_activiteit_key > 320 AND r.res_activiteit_key < 324)) --- AND r.res_rsv_ruimte_tot < SYSDATE - 31 --- AND r.res_rsv_ruimte_opmerking IS NOT NULL; + -- Verwijder opmerking van reserveringen ouder dan 31 dagen en een + -- activiteitkey hebben tussen 21 en 181, tussen 281 en 283 en tussen 321 en 323 (UWVA#27583) + UPDATE res_rsv_ruimte r + SET r.res_rsv_ruimte_opmerking = NULL + WHERE ( (r.res_activiteit_key > 20 AND r.res_activiteit_key < 182) + OR (r.res_activiteit_key > 280 AND r.res_activiteit_key < 284) + OR (r.res_activiteit_key > 320 AND r.res_activiteit_key < 324)) + AND r.res_rsv_ruimte_tot < SYSDATE - 31 + AND r.res_rsv_ruimte_opmerking IS NOT NULL; COMMIT; EXCEPTION @@ -8971,7 +8965,7 @@ AS -- UWVA#27681 - Vervolg op bovenstaande rapportage (maar dan anders ;-)! -- NB. Erg zware rapportage, dus via tabelizer? -/* Formatted on 1-11-2013 12:54:36 (QP5 v5.115.810.9015) */ +/* Formatted on 11-11-2013 12:28:32 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW uwva_v_rap_opdr_doorloop ( hide_f_srt, @@ -9068,22 +9062,31 @@ AS WHEN alldag_uren = 0 THEN '0d-0u-0m' - WHEN afmdag_uren = 0 + WHEN newdag_uren = 0 OR afmdag_uren = 0 THEN - TO_CHAR (workdays) - || 'd-' - || TO_CHAR (FLOOR (newdag_uren)) - || 'u-' - || TO_CHAR (MOD (ROUND (newdag_uren * 60, 0), 60)) - || 'm' - WHEN newdag_uren = 0 - THEN - TO_CHAR (workdays - 1) - || 'd-' - || TO_CHAR (FLOOR (afmdag_uren)) - || 'u-' - || TO_CHAR (MOD (ROUND (afmdag_uren * 60, 0), 60)) - || 'm' + CASE + WHEN TO_CHAR (ordafm_date, 'D') IN (1, 7) + OR mld_vrije_dagen_datum IS NOT NULL + THEN + TO_CHAR (workdays) + || 'd-' + || TO_CHAR (FLOOR (newdag_uren)) + || 'u-' + || TO_CHAR (MOD (ROUND (newdag_uren * 60, 0), 60)) + || 'm' + ELSE + TO_CHAR (workdays - 1) + || 'd-' + || TO_CHAR (FLOOR (newdag_uren + afmdag_uren)) + || 'u-' + || TO_CHAR(MOD ( + CEIL ( + (newdag_uren + afmdag_uren) * 60 + ), + 60 + )) + || 'm' + END ELSE CASE WHEN TO_CHAR (ordafm_date, 'HH24MI') >= @@ -9101,19 +9104,16 @@ AS * 24)) || 'u-' || TO_CHAR(MOD ( - ROUND ( - (ordafm_date - - TO_DATE ( - TO_CHAR (ordafm_date, - 'DDMMYYYY') - || TO_CHAR (ordnew_date, - 'HH24MISS'), - 'DDMMYYYYHH24MISS' - )) - * 24 - * 60, - 0 - ), + CEIL( (ordafm_date + - TO_DATE ( + TO_CHAR (ordafm_date, + 'DDMMYYYY') + || TO_CHAR (ordnew_date, + 'HH24MISS'), + 'DDMMYYYYHH24MISS' + )) + * 24 + * 60), 60 )) || 'm' @@ -9123,9 +9123,8 @@ AS || TO_CHAR (FLOOR (newdag_uren + afmdag_uren)) || 'u-' || TO_CHAR(MOD ( - ROUND ( - (newdag_uren + afmdag_uren) * 60, - 0 + CEIL ( + (newdag_uren + afmdag_uren) * 60 ), 60 )) @@ -9171,21 +9170,26 @@ AS ordafm.fac_tracking_datum ) afmdag_uren, + vd.mld_vrije_dagen_datum, opdr.gebouw_key, opdr.gebouw, opdr.verdieping, opdr.ruimte, opdr.ins_srtdeel_omschrijving, opdr.ins_deel_omschrijving - FROM opdr + FROM opdr + LEFT JOIN + fac_tracking ordnew + ON opdr.opdr_key = ordnew.fac_tracking_refkey + AND ordnew.fac_srtnotificatie_key = 125 LEFT JOIN - fac_tracking ordnew - ON opdr.opdr_key = ordnew.fac_tracking_refkey - AND ordnew.fac_srtnotificatie_key = 125 + fac_tracking ordafm + ON opdr.opdr_key = ordafm.fac_tracking_refkey + AND ordafm.fac_srtnotificatie_key = 26 LEFT JOIN - fac_tracking ordafm - ON opdr.opdr_key = ordafm.fac_tracking_refkey - AND ordafm.fac_srtnotificatie_key = 26); + mld_vrije_dagen vd + ON TRUNC (ordafm.fac_tracking_datum) = + TRUNC (vd.mld_vrije_dagen_datum)); BEGIN DBMS_UTILITY.COMPILE_SCHEMA(USER, FALSE); END; /