diff --git a/BCGV/bcgv.sql b/BCGV/bcgv.sql index ec8130ee5..cf0a4a415 100644 --- a/BCGV/bcgv.sql +++ b/BCGV/bcgv.sql @@ -1040,6 +1040,618 @@ END; / +/* Formatted on 30-9-2024 14:05:23 (QP5 v5.336) */ +CREATE OR REPLACE PROCEDURE bcgv_import_budgettering (p_import_key IN NUMBER) +AS + CURSOR imp_csv IS + SELECT fac_imp_csv_key fac_imp_csv_key, + fac_imp_csv_col01 kostenplaats_nr, + fac_imp_csv_col02 kostenplaats_oms, + fac_imp_csv_col03 kostensoort_code, + fac_imp_csv_col04 kostensoort_oms, + fac_imp_csv_col05 periode, + fac_imp_csv_col06 budget + FROM fac_imp_csv + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_csv_key; + + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + v_aanduiding VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + v_header_valid NUMBER := 0; + v_prs_kostenplaats_key NUMBER; + v_prs_kostensoortgrp_key NUMBER; + v_prs_kostensoort_key NUMBER; + v_alg_gebouw_code VARCHAR2 (20); +BEGIN + FOR rec IN imp_csv + LOOP + IF v_header_valid = 0 + THEN + IF ( UPPER (rec.kostenplaats_nr) = 'KOSTENPLAATSCODE' + AND UPPER (rec.kostenplaats_oms) = 'KOSTENPLAATSOMS' + AND UPPER (rec.kostensoort_code) = 'KOSTENSOORTCODE' + AND UPPER (rec.kostensoort_oms) = 'KOSTENSOORTOMS' + AND UPPER (rec.periode) = 'PERIODE' + AND UPPER (rec.budget) = 'BUDGET (EURO)') + THEN + v_header_valid := 1; + END IF; + ELSE + v_aanduiding := 'Ophalen kostenplaats ' || rec.kostenplaats_nr || ' mislukt'; + + SELECT p.prs_kostenplaats_key + INTO v_prs_kostenplaats_key + FROM prs_kostenplaats p + WHERE p.prs_kostenplaats_nr = rec.kostenplaats_nr AND p.prs_kostenplaats_verwijder IS NULL; + + IF v_prs_kostenplaats_key IS NULL + THEN + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errorhint, + 'Kan kostenplaats niet 1-duidig bepalen'); + END IF; + + v_aanduiding := 'Ophalen kostensoort ' || rec.kostensoort_code || ' mislukt'; + + SELECT k.prs_kostensoort_key + INTO v_prs_kostensoort_key + FROM prs_kostensoort k + WHERE k.prs_kostensoort_upper = UPPER (rec.kostensoort_code) + AND k.prs_kostensoort_verwijder IS NULL; + + IF v_prs_kostensoort_key IS NULL + THEN + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errorhint, + 'Kan kostensoort niet 1-duidig bepalen'); + END IF; + END IF; + END LOOP; + + IF v_header_valid = 0 + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Geen valide header gevonden', + 'Header fout'); + END IF; +EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); +END; +/ + + +CREATE OR REPLACE PROCEDURE bcgv_update_budgettering (p_import_key IN NUMBER) +AS + CURSOR bdgt IS + SELECT fac_imp_csv_key fac_imp_csv_key, + fac_imp_csv_col01 kostenplaats_nr, + fac_imp_csv_col02 kostenplaats_oms, + fac_imp_csv_col03 kostensoort_code, + fac_imp_csv_col04 kostensoort_oms, + fac_imp_csv_col05 periode, + fac_imp_csv_col06 budget + FROM fac_imp_csv + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_csv_key; + + + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + v_aanduiding VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count NUMBER := 0; + v_ongeldig NUMBER := 0; + + v_ins_discipline_key NUMBER; + v_bgt_project_key NUMBER; + v_bgt_kostenrubriek_key NUMBER; + v_kostensoortgrp_key NUMBER; + v_kostensoort_key NUMBER; + v_kostenplaatsgrp_key NUMBER; + v_kostenplaats_key NUMBER; + v_kostenplaats_omschrijving PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_OMSCHRIJVING%TYPE; + v_budget NUMBER; + v_budget_nu NUMBER; + v_budget_key NUMBER; + v_periode_start DATE; + v_periode_eind DATE; +BEGIN + BEGIN + v_aanduiding := 'Ophalen budget project disciplne Investering budgettering mislukt'; + + SELECT ins_discipline_key + INTO v_ins_discipline_key + FROM ins_tab_discipline i + WHERE i.ins_discipline_module = 'BGT' + AND i.ins_discipline_omschrijving = 'Investering' + AND i.ins_discipline_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_tab_discipline (ins_discipline_omschrijving, + ins_discipline_module, + ins_discipline_aanmaak, + ins_discipline_kpnverplicht) + VALUES ('Investering', + 'BGT', + SYSDATE, + 0) + RETURNING ins_discipline_key + INTO v_ins_discipline_key; + + INSERT INTO bgt_disc_params (bgt_ins_discipline_key) + VALUES (v_ins_discipline_key); + END; + + IF v_ins_discipline_key = NULL + THEN + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errorhint, + 'Kan budget project disciplne niet 1-duidig bepalen of aanmaken'); + v_ongeldig := 1; + ELSE + BEGIN + v_aanduiding := 'Ophalen budget project Budgettering mislukt'; + + SELECT p.bgt_project_key + INTO v_bgt_project_key + FROM bgt_project p + WHERE p.bgt_project_code = 'Budgettering' + AND p.ins_discipline_key = v_ins_discipline_key + AND bgt_project_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO bgt_project (ins_discipline_key, + bgt_project_code, + bgt_project_omschrijving, + bgt_project_aanmaak) + VALUES (v_ins_discipline_key, + 'Budgettering', + 'Budgettering', + SYSDATE) + RETURNING bgt_project_key + INTO v_bgt_project_key; + END; + END IF; + + IF v_bgt_project_key = NULL OR v_ongeldig = 1 + THEN + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errorhint, + 'Kan project niet 1-duidig bepalen of aanmaken'); + v_ongeldig := 1; + ELSE + FOR rec IN bdgt + LOOP + IF v_count > 0 + THEN + BEGIN + v_aanduiding := 'Ophalen budget project Budgettering mislukt'; + + SELECT p.bgt_project_key + INTO v_bgt_project_key + FROM bgt_project p + WHERE p.bgt_project_code = rec.periode + AND p.ins_discipline_key = v_ins_discipline_key + AND bgt_project_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO bgt_project (ins_discipline_key, + bgt_project_code, + bgt_project_omschrijving, + bgt_project_aanmaak) + VALUES (v_ins_discipline_key, + rec.periode, + rec.periode, + SYSDATE) + RETURNING bgt_project_key + INTO v_bgt_project_key; + END; + + v_aanduiding := 'OPhalen kostenplaatsnr ' || rec.kostenplaats_nr || ' mislukt'; + + SELECT k.prs_kostenplaats_key, k.prs_kostenplaatsgrp_key, k.prs_kostenplaats_omschrijving + INTO v_kostenplaats_key, v_kostenplaatsgrp_key, v_kostenplaats_omschrijving + FROM prs_kostenplaats k + WHERE k.prs_kostenplaats_nr = rec.kostenplaats_nr AND k.prs_kostenplaats_verwijder IS NULL; + + BEGIN + v_aanduiding := 'Ophalen budget project kostenrubriek ' || v_kostenplaats_omschrijving || ' mislukt'; + + SELECT k.bgt_kostenrubriek_key + INTO v_bgt_kostenrubriek_key + FROM bgt_kostenrubriek k + WHERE k.bgt_project_key = v_bgt_project_key + AND k.bgt_kostenrubriek_code = rec.kostenplaats_nr + AND k.bgt_kostenrubriek_oms = v_kostenplaats_omschrijving; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO bgt_kostenrubriek (bgt_project_key, bgt_kostenrubriek_code, bgt_kostenrubriek_oms) + VALUES (v_bgt_project_key, rec.kostenplaats_nr, v_kostenplaats_omschrijving) + RETURNING bgt_kostenrubriek_key + INTO v_bgt_kostenrubriek_key; + END; + + v_aanduiding := + 'Ophalen kostensoort en kostengroep ' || rec.kostensoort_code || '-' || rec.kostensoort_oms || ' mislukt'; + + SELECT s.prs_kostensoort_key, s.prs_kostensoortgrp_key + INTO v_kostensoort_key, v_kostensoortgrp_key + FROM prs_kostensoort s, prs_kostensoortgrp g + WHERE s.prs_kostensoort_upper = rec.kostensoort_code + AND s.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key + AND s.prs_kostensoort_verwijder IS NULL; + + v_budget := fac.safe_to_number (REPLACE (rec.budget, '.', '')); + + v_periode_start := fac.safe_to_date ('01-01-' || rec.periode, 'DD-MM-YYYY'); + v_periode_eind := fac.safe_to_date ('31-12-' || rec.periode, 'DD-MM-YYYY'); + + + IF v_kostenplaats_key > 0 + AND v_kostenplaatsgrp_key > 0 + AND v_kostensoort_key > 0 + AND v_kostensoortgrp_key > 0 + AND v_budget > 0 + THEN + -- Eerst kijken of hij er al is + BEGIN + SELECT b.bgt_budget_key, b.bgt_budget_bedrag + INTO v_budget_key, v_budget_nu + FROM bgt_budget b + WHERE b.ins_discipline_key = v_ins_discipline_key + AND b.bgt_project_key = v_bgt_project_key + AND b.bgt_kostenrubriek_key = v_bgt_kostenrubriek_key + AND b.prs_kostensoortgrp_key = v_kostensoortgrp_key + AND b.prs_kostensoort_key = v_kostensoort_key + AND b.prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key + AND b.prs_kostenplaats_key = v_kostenplaats_key + AND b.bgt_budget_begin = v_periode_start + AND b.bgt_budget_eind = v_periode_eind; + + v_aanduiding := + 'Aanpassen budget van ' + || rec.kostenplaats_nr + || '-' + || rec.kostensoort_code + || ' van ' + || v_budget_nu + || '-> ' + || v_budget; + + UPDATE bgt_budget b + SET b.bgt_budget_bedrag = v_budget + WHERE bgt_budget_key = v_budget_key; + + fac.imp_writelog (p_import_key, + 'I', + v_aanduiding, + 'Aanpassen budget bedrag'); + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO bgt_budget (ins_discipline_key, + bgt_project_key, + bgt_kostenrubriek_key, + prs_kostensoortgrp_key, + prs_kostensoort_key, + prs_kostenplaatsgrp_key, + prs_kostenplaats_key, + bgt_budget_bedrag, + bgt_budget_begin, + bgt_budget_eind) + VALUES (v_ins_discipline_key, + v_bgt_project_key, + v_bgt_kostenrubriek_key, + v_kostensoortgrp_key, + v_kostensoort_key, + v_kostenplaatsgrp_key, + v_kostenplaats_key, + v_budget, + v_periode_start, + v_periode_eind); + END; + END IF; + END IF; + + v_count := v_count + 1; + END LOOP; + END IF; +EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); +END; +/ + +CREATE OR REPLACE VIEW bcgv_v_budgetuitnutting +AS + SELECT x.*, budget - COALESCE (opdracht_gefact, opdracht_uitv, offerte) budget_res + FROM (SELECT kp.prs_kostenplaats_nr || ' - ' || kp.prs_kostenplaats_omschrijving prs_kostenplaats, + kp.prs_kostenplaats_nr, + kp.prs_kostenplaats_omschrijving, + kp.prs_kostenplaats_key, + kp.prs_perslid_key, + (SELECT prs_perslid_naam_friendly + FROM prs_v_perslid_fullnames p + WHERE p.prs_perslid_key = kp.prs_perslid_key) budgethouder, + ksg.prs_kostensoortgrp_key, + ksg.prs_kostensoortgrp_oms, + ks.prs_kostensoort_key, + ks.prs_kostensoort_opmerking prs_kostensoort, + ks.prs_kostensoort_upper, + b.bgt_budget_bedrag budget, + TRUNC (b.bgt_budget_begin, 'YYYY') budget_jaar, + b.bgt_budget_begin, + b.bgt_budget_eind, + (SELECT SUM (opdr_kost) + FROM ( SELECT AVG (mld_opdr_kosten) opdr_kost + FROM mld_opdr o, mld_typeopdr ot + WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND o.prs_kostensoort_key = ks.prs_kostensoort_key + AND o.mld_typeopdr_key = ot.MLD_TYPEOPDR_KEY + AND ot.mld_typeopdr_isofferte = 1 + AND NOT EXISTS (SELECT 1 FROM mld_opdr o2, mld_typeopdr to2 WHERE o2.mld_melding_key = o.mld_melding_key AND o2.mld_typeopdr_key = to2.mld_typeopdr_key and to2.mld_typeopdr_kosten = 1) + AND o.mld_statusopdr_key IN (5, + 6, + 7, + 8, + 9) + AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind + GROUP BY o.mld_melding_key)) offerte, + (SELECT SUM (mld_opdr_kosten) + FROM mld_opdr o, mld_typeopdr ot + WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND o.prs_kostensoort_key = ks.prs_kostensoort_key + AND o.mld_typeopdr_key = ot.mld_typeopdr_key + AND ot.mld_typeopdr_kosten = 1 + AND o.mld_statusopdr_key IN (3,4,5,6,7,8,9,10) -- Ter fiattering, Gefiatteerd, Toegekend, Afgemeld, Verwerkt, Geaccepteerd, Afgerond, Ter goedkeuring + AND NOT EXISTS (SELECT 1 FROM fin_factuur f WHERE f.mld_opdr_key = o.mld_opdr_key) + AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_uitv, + (SELECT SUM (mld_opdr_kosten) + FROM mld_opdr o, mld_typeopdr ot + WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key + AND o.prs_kostensoort_key = ks.prs_kostensoort_key + AND o.mld_typeopdr_key = ot.mld_typeopdr_key + AND ot.mld_typeopdr_kosten = 1 + AND o.mld_statusopdr_key = 9 + AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_gefact + FROM bgt_budget b, + bgt_project p, + bgt_kostenrubriek kr, + prs_kostenplaats kp, + prs_kostensoort ks, + prs_kostensoortgrp ksg + WHERE p.bgt_project_key = b.bgt_project_key + AND kr.bgt_kostenrubriek_key = b.bgt_kostenrubriek_key + AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key + AND ks.prs_kostensoort_key = b.prs_kostensoort_key + AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key) x; + +CREATE OR REPLACE VIEW bcgv_v_budgetuitn_detail +AS + SELECT k.prs_kostenplaats_key, + k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving prs_kostenplaats, + k.prs_kostenplaats_nr, + ksg.prs_kostensoortgrp_key, + ksg.prs_kostensoortgrp_oms, + ks.prs_kostensoort_key, + ks.prs_kostensoort_oms, + ks.prs_kostensoort_opmerking prs_kostensoort, + o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr mld_opdr_nr, + o.mld_opdr_key, + so.mld_statusopdr_omschrijving, + CASE + WHEN ot.mld_typeopdr_isofferte = 1 + THEN 'Offerte' + ELSE 'Opdracht' + END opdracht_soort, + TO_CHAR (m.mld_melding_omschrijving) omschrijving, + CASE + WHEN ot.mld_typeopdr_isofferte = 1 + THEN mld_opdr_kosten + ELSE 0 + END offerte_bedrag, + CASE + WHEN ot.mld_typeopdr_isofferte = 0 + THEN mld_opdr_kosten + ELSE 0 + END opdracht_bedrag + FROM mld_opdr o, + prs_kostenplaats k, + prs_kostensoort ks, + prs_kostensoortgrp ksg, + mld_melding m, + mld_typeopdr ot, + mld_statusopdr so + WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key + AND ks.prs_kostensoort_key = o.prs_kostensoort_key + AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key + AND m.mld_melding_key = o.mld_melding_key + AND ot.mld_typeopdr_key = o.mld_typeopdr_key + AND so.mld_statusopdr_key = o.mld_statusopdr_key; + +-- Ordertracking: Per omgeving ontvang de verantwoordelijke Servicedesk alle notities en mutaties/status-updates op de Opdrachtenstroom die zijn geweest per gestylde mail +-- Opzet: Job kijkt of er vanaf de laatste job_run nog mutaties zijn geweest en indien geval dan wordt gestyled rapport gemaild naar desbtreffende backoffice-email-adres + +-- Bronview behorende bij job BCGV_V_NOTIFY_BACKOFFICE_OT +CREATE OR REPLACE VIEW bcgv_v_rap_ordertracking_bron +AS + SELECT -- notitie + dp.mld_disc_params_emailnw3 vakgroep_email, + m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, + o.mld_opdr_key, + u.naam uitvoerder, + po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, + ot.mld_typeopdr_omschrijving opdracht_type, + 'Notitie' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign + mld_opdr_note_aanmaak datum, + pn.prs_perslid_naam || ' (' || pn.prs_perslid_voornaam || ')' actie_door, + 'Notitie' actie_omschrijving, -- Subsoort voor status + mld_opdr_note_omschrijving actie_details, + note.mld_opdr_note_aanmaak datum_mutatie_filter, + TO_NUMBER (TO_CHAR (note.mld_opdr_note_aanmaak, 'hh24')) uur_filter + FROM mld_melding m, + mld_opdr o, + mld_typeopdr ot, + mld_v_uitvoerende u, + mld_opdr_note note, + prs_perslid pn, + prs_perslid po, + mld_stdmelding sm, + ins_tab_discipline d, + mld_disc_params dp, + alg_locatie l + WHERE o.mld_opdr_key = note.mld_opdr_key + AND m.mld_melding_key = o.mld_melding_key + AND o.mld_typeopdr_key = ot.mld_typeopdr_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = d.ins_discipline_key + AND d.ins_discipline_module = 'MLD' + AND d.ins_discipline_key = dp.mld_ins_discipline_key + AND note.prs_perslid_key = pn.prs_perslid_key + AND pn.prs_perslid_verwijder IS NULL + AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key + AND o.prs_perslid_key = po.prs_perslid_key(+) + AND note.prs_perslid_key NOT IN + (SELECT gg.prs_perslid_key + FROM fac_gebruikersgroep gg, fac_groep g + WHERE gg.fac_groep_key = g.fac_groep_key + AND (g.fac_groep_upper = 'HEYDAY' OR g.fac_groep_upper = 'CVGV')) + UNION + SELECT -- Voor status -- in geval dsm, rabo en sabic + dp.mld_disc_params_emailnw3 vakgroep_email, + m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, + o.mld_opdr_key, + u.naam uitvoerder, + po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, + ot.mld_typeopdr_omschrijving opdracht_type, + 'Status' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign + t.fac_tracking_datum datum, + pt.prs_perslid_naam || ' (' || pt.prs_perslid_voornaam || ')' actie_door, + COALESCE (vert.actiecode_tekst, sn.fac_srtnotificatie_code) actie_omschrijving, + t.fac_tracking_oms actie_details, + t.fac_tracking_datum datum_mutatie_filter, + TO_NUMBER (TO_CHAR (t.fac_tracking_datum, 'hh24')) uur_filter + FROM mld_melding m, + mld_opdr o, + mld_typeopdr ot, + fac_tracking t, + fac_srtnotificatie sn, + (SELECT UPPER (SUBSTR (fac_locale_xsl_label, 12)) AS actiecode, fac_locale_xsl_tekst AS actiecode_tekst + FROM fac_locale_xsl + WHERE INSTR (fac_locale_xsl_label, 'lcl_ord_is_') > 0 AND fac_locale_xsl_lang = 'NL') vert, + mld_v_uitvoerende u, + prs_perslid pt, + prs_perslid po, + mld_stdmelding sm, + ins_tab_discipline d, + mld_disc_params dp, + alg_locatie l + WHERE o.mld_opdr_key = t.fac_tracking_refkey + AND sn.fac_srtnotificatie_xmlnode = 'opdracht' + AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND sn.fac_srtnotificatie_code = vert.actiecode(+) + AND o.mld_typeopdr_key = ot.mld_typeopdr_key + AND m.mld_melding_key = o.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = d.ins_discipline_key + AND d.ins_discipline_module = 'MLD' + AND d.ins_discipline_key = dp.mld_ins_discipline_key + AND t.prs_perslid_key = pt.prs_perslid_key + AND pt.prs_perslid_verwijder IS NULL + AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key + AND o.prs_perslid_key = po.prs_perslid_key(+) + AND t.prs_perslid_key NOT IN + (SELECT gg.prs_perslid_key + FROM fac_gebruikersgroep gg, fac_groep g + WHERE gg.fac_groep_key = g.fac_groep_key + AND (g.fac_groep_upper = 'HEYDAY' OR g.fac_groep_upper = 'CVGV')); + +-- Rapportview behorende bij job BCGV_V_NOTIFY_BACKOFFICE_OT +-- De lijst die gemaild wordt - inclusief filtering op notificatie-interval +CREATE OR REPLACE VIEW bcgv_v_rap_ordertrackinglijst +AS + SELECT vakgroep_email, + v.opdrachtnr, + v.mld_opdr_key, + v.uitvoerder, + v.behandelaar, + v.opdracht_type, + v.soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging + v.datum, + v.actie_door, + v.actie_omschrijving, + v.actie_details, + TO_CHAR (d.last_jobrun, 'dd-mm-yyyy hh24:mi:ss') run_deze, + TO_CHAR (d.last_cust01, 'dd-mm-yyyy hh24:mi:ss') run_vorige + FROM bcgv_v_rap_ordertracking_bron v, + (SELECT MAX (COALESCE (ft.fac_tracking_datum, SYSDATE)) last_cust01, -- subview waarin notificatie-interval bepaald wordt (=datums waartussen het resultaat in rapport getoond moet worden) + MAX ((SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE) + FROM fac_notificatie_job + WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT')) last_jobrun + FROM fac_tracking ft, fac_srtnotificatie sn + WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND sn.fac_srtnotificatie_code = 'CUST01' + AND ft.fac_tracking_datum < (SELECT COALESCE (fac_notificatie_job_lastrun - 1/(24*60), SYSDATE) -- de lastrun kan een latere datum hebben dan de laatste notificatie. + FROM fac_notificatie_job + WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT')) d + WHERE v.datum_mutatie_filter BETWEEN d.last_cust01 AND d.last_jobrun; + +-- Job voor de ordertrackinglijst te versturen +CREATE OR REPLACE VIEW bcgv_v_notify_backoffice_ot -- OT = Ordertrackinglijst +AS + SELECT (SELECT prs_perslid_key + FROM prs_perslid + WHERE prs_perslid_upper = 'FACILITOR') sender, + NULL receiver, + 'Ordertrackinglijst' text, + 'CUST01' code, + (SELECT fac_srtnotificatie_key + FROM fac_srtnotificatie + WHERE fac_srtnotificatie_code = 'CUST01') fac_srtnotificatie_key, + 163 key, -- Ordertrackinglijst + NULL xkey, + v.vakgroep_email xemail, + NULL xmobile + FROM ( SELECT vakgroep_email + FROM bcgv_v_rap_ordertracking_bron + WHERE datum_mutatie_filter >= (SELECT COALESCE (fac_notificatie_job_lastrun, TRUNC (SYSDATE)) + FROM fac_notificatie_job + WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT') + AND vakgroep_email IS NOT NULL + AND LOWER (vakgroep_email) NOT IN ('heyq@heydayfm.nl') -- ticket AAIT#84516 + GROUP BY vakgroep_email) v; + ------ payload end ------