-- Script containing customer specific configuration sql statements for vebe: Vebego -- $Revision$ -- $Id$ DEFINE thisfile = 'VEBE.SQL' DEFINE dbuser = '^VEBE' DEFINE custid = 'VEBE' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ -- -- Personen import -- CREATE OR REPLACE PROCEDURE vebe_post_import_perslid (p_import_key IN NUMBER) AS -- Kenmerk 1: Indirect of direct -- Kenmerk 2: Adres van medewerker (straatnaam + huisnr) -- Kenmerk 3: Woonplaats van medewerker (postcode + woonplaats) -- Kenmerk 4: Contact via contactpersoon (maw de contactgegevens als mail, mobile etc zijn van contactpersoon van medewerkers en niet van hem/haar zelf) CURSOR c_perslid_kenmerken IS SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_email, prs_kenmerk1, prs_kenmerk2, prs_kenmerk3, prs_kenmerk4 FROM fac_imp_perslid WHERE fac_import_key = p_import_key; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); BEGIN -- Kenmerk 1: Indirect of direct heeft de waarde I of D. Een I wordt vertaald naar 1, een D naar 0. Een andere letter of NULL value wordt naar 0 vertaald. UPDATE fac_imp_perslid SET prs_kenmerk1 = DECODE(UPPER(prs_kenmerk1),'I','1','D','0','0') WHERE fac_import_key = p_import_key; -- Kenmerk 4: Contactvia heeft waarde ja of nee of leeg (NULL). Een ja wordt vertaald naar 1, een nee naar 0. Iets anders of NULL value wordt naar 0 vertaald. UPDATE fac_imp_perslid SET prs_kenmerk4 = DECODE(UPPER(prs_kenmerk4),'JA','1','NEE','0','0') WHERE fac_import_key = p_import_key; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END vebe_post_import_perslid; / CREATE OR REPLACE PROCEDURE vebe_import_perslid (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); BEGIN v_errorhint := 'Generieke update'; -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc -- 1.Roepnaam 2.Voorletters 3.Tussenvoegsel 4.Achternaam 5.Persnr. 6.Afdnr. 7.Functie 8.Email 9.Mobile 10.Telefoon 11.Loginnaam 12.Direct-Indirect 13.Straat-huisnr 14.Postcode-Woonplaats 15.Contactvia prs.import_perslid (p_import_key, '0;0;0;0;0;0;6;4;3;1;' || '2;0;0;0;0;10;9;8;0;5;' || '7;11;0;0;0;0;12;13;14;15;'|| '0;0;0;0;0;0;0;0;0;0;'|| '0;0;0;0;0;0', 'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam%' ); vebe_post_import_perslid(p_import_key); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END vebe_import_perslid; / CREATE OR REPLACE PROCEDURE vebe_post_update_perslid (p_import_key IN NUMBER) AS -- Kenmerk 1: Indirect of direct -- Kenmerk 2: Adres van medewerker (straatnaam + huisnr) -- Kenmerk 3: Woonplaats van medewerker (postcode + woonplaats) -- Kenmerk 4: Contact via contactpersoon (maw de contactgegevens als mail, mobile etc zijn van contactpersoon van medewerkers en niet van hem/haar zelf) CURSOR c_perslid_kenmerken IS SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_email, prs_kenmerk1, prs_kenmerk2, prs_kenmerk3, prs_kenmerk4 FROM fac_imp_perslid WHERE fac_import_key = p_import_key; BEGIN FOR rc IN c_perslid_kenmerken LOOP BEGIN -- Indirect of direct heeft vaste kenmerk-key 1000 prs.upsertkenmerk(1000, rc.prs_perslid_key, rc.prs_kenmerk1); -- Adres heeft vaste kenmerk-key 1001 prs.upsertkenmerk(1001, rc.prs_perslid_key, rc.prs_kenmerk2); -- Postcode + Woonplaats heeft vaste kenmerk-key 1002 prs.upsertkenmerk(1002, rc.prs_perslid_key, rc.prs_kenmerk3); -- Contactvia heeft vaste kenmerk-key 1004 prs.upsertkenmerk(1004, rc.prs_perslid_key, rc.prs_kenmerk4); EXCEPTION WHEN OTHERS THEN fac.imp_writelog (p_import_key, 'W', 'Post update bij persoon' || rc.prs_perslid_key || ' is NIET volledig uitgevoerd )', 'Naam:' || rc.prs_perslid_naam || ' Email:' || rc.prs_perslid_email ); END; END LOOP; END; / CREATE OR REPLACE PROCEDURE vebe_update_perslid ( p_import_key IN NUMBER ) IS -- Alle personen verwijderen die niet meer in import bestand voorkomen. -- Anker bij vebe is personeelnummer, hieronder de query om alle personen te verwijderen die: -- a) niet meer in het importbestand staan, wel in Facilitor, en -- b) waarvan de persoon in Facilitor een gevulde personeelsnummer heeft (leeg personeelsnummer van af blijven, dit zijn stagiairs etc die handmatig zijn toegevoegd) -- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven) -- d) CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE UPPER(p.prs_perslid_nr) = UPPER(i.prs_perslid_nr(+)) AND p.prs_perslid_verwijder IS NULL AND SUBSTR(p.prs_perslid_oslogin,1,1) <> '_' AND p.prs_perslid_nr IS NOT NULL AND pf.prs_perslid_key = p.prs_perslid_key AND i.prs_perslid_nr IS NULL ORDER BY 2; v_count NUMBER; BEGIN -- generic update SELECT count(*) INTO v_count FROM fac_imp_perslid; IF v_count < 100 THEN fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', 'Zie Specificatie (minimaal 100 personen)' ); RETURN; END IF; -- 'LOGIN' betekent dat op basis van Login wordt gematched. -- 'NR' betekent dat op basis van Personeelsnummer wordt gematched. -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen prs.update_perslid (p_import_key, 'NR', NULL); -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; vebe_post_update_perslid(p_import_key); END vebe_update_perslid; / -- View met 1 record voor de combinatie de leasecontractgegevens (ins_discipline_key = 21), de gebruiksovereenkomstgegevens (ins_discipline_key = 22) en de auto-gegevens. CREATE OR REPLACE VIEW vebe_cnt_lease_en_gebruiks_ovk ( extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_key_eig, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_deel_omschrijving, ins_deel_opmerking, ins_srtdeel_omschrijving, gov_huidig_jaar, gov_vorig_jaar ) AS SELECT c1.cnt_contract_key extra_key, c1.cnt_contract_key cnt_lease_key, b.prs_bedrijf_key, c2.cnt_contract_key cnt_gebruik_key, p2.prs_perslid_key prs_berijder_key, d.ins_deel_key, c1.prs_perslid_key_eig prs_lease_perslid_key_eig, c1.cnt_contract_nummer_intern cnt_lease_nummer_intern, c1.cnt_contract_versie cnt_lease_versie, c1.cnt_contract_omschrijving cnt_lease_omschr, c1.cnt_contract_looptijd_van cnt_lease_looptijd_van, c1.cnt_contract_looptijd_tot cnt_lease_looptijd_tot, 12 * ( TO_CHAR (c1.cnt_contract_looptijd_tot, 'YYYY') - TO_CHAR (c1.cnt_contract_looptijd_van, 'YYYY') - 1) + (12 - TO_CHAR (c1.cnt_contract_looptijd_van, 'MM')) + (TO_CHAR (c1.cnt_contract_looptijd_tot, 'MM')) cnt_lease_looptijd_mnd, ROUND(100 * LEAST ( 1, (SYSDATE - LEAST (c1.cnt_contract_looptijd_van, SYSDATE)) / (GREATEST ( c1.cnt_contract_looptijd_tot - c1.cnt_contract_looptijd_van, 1 )) )) perc_lease_duur, ROUND( (c1.cnt_contract_looptijd_tot - GREATEST (c1.cnt_contract_looptijd_van, LEAST (SYSDATE, c1.cnt_contract_looptijd_tot))) / 7) lease_weken_tegaan, cnt.cnt_getrappeldatum (c1.cnt_contract_key) cnt_lease_rappeldatum, cnt.cnt_getopzegdatum (c1.cnt_contract_key) cnt_lease_opzegdatum, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c1.cnt_contract_opzegtermijn) cnt_lease_opzegtermijn, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c1.cnt_contract_rappeltermijn) cnt_lease_rappeltermijn, c1.cnt_contract_status cnt_lease_status, DECODE ( cnt.cnt_contract_status ( c1.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c1.cnt_contract_key), cnt.cnt_getopzegdatum (c1.cnt_contract_key), c1.cnt_contract_looptijd_tot ), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past') ) lease_fase_actief, DECODE ( c1.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval') ) cnt_lease_status_txt, c1.cnt_contract_kosten cnt_lease_kosten, c1.cnt_contract_termijnkosten cnt_lease_termijnkosten, COALESCE (c1.ins_discipline_key, -1) lease_disc_key, c1.prs_afdeling_key_eig lease_eigenaar_key, (SELECT prs_afdeling_naam FROM prs_v_afdeling WHERE prs_afdeling_key = c1.prs_afdeling_key_eig) lease_eigenaar_afdeling_naam, b.prs_bedrijf_naam, c2.prs_perslid_key_eig prs_gebr_perslid_key_eig, c2.cnt_contract_nummer_intern cnt_gebruik_nummer_intern, c2.cnt_contract_versie cnt_gebruik_versie, c2.cnt_contract_omschrijving cnt_gebruik_omschr, c2.cnt_contract_looptijd_van cnt_gebruik_looptijd_van, c2.cnt_contract_looptijd_tot cnt_gebruik_looptijd_tot, ROUND(100 * LEAST ( 1, (SYSDATE - LEAST (c2.cnt_contract_looptijd_van, SYSDATE)) / (GREATEST ( c2.cnt_contract_looptijd_tot - c2.cnt_contract_looptijd_van, 1 )) )) perc_gebruik_duur, ROUND( (c2.cnt_contract_looptijd_tot - GREATEST (c2.cnt_contract_looptijd_van, LEAST (SYSDATE, c2.cnt_contract_looptijd_tot))) / 7) gebruik_weken_tegaan, cnt.cnt_getrappeldatum (c2.cnt_contract_key) cnt_gebruik_rappeldatum, cnt.cnt_getopzegdatum (c2.cnt_contract_key) cnt_gebruik_opzegdatum, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c2.cnt_contract_opzegtermijn) cnt_gebruik_opzegtermijn, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c2.cnt_contract_rappeltermijn) cnt_gebruik_rappeltermijn, c2.cnt_contract_status cnt_gebruik_status, DECODE ( cnt.cnt_contract_status ( c2.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c2.cnt_contract_key), cnt.cnt_getopzegdatum (c2.cnt_contract_key), c2.cnt_contract_looptijd_tot ), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past') ) gebruik_fase_actief, DECODE ( c2.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval') ) cnt_gebruik_status_txt, COALESCE (c2.ins_discipline_key, -1) gebruik_disc_key, c2.prs_afdeling_key_eig gebruik_eigenaar_key, (SELECT prs_afdeling_naam FROM prs_v_afdeling WHERE prs_afdeling_key = c2.prs_afdeling_key_eig) gebruik_eigenaar_afdeling_naam, p1.prs_perslid_naam_full prs_eigenaar_naam_full, p1.prs_perslid_naam_friendly prs_eigenaar_naam_friendly, p2.prs_perslid_nr prs_berijder_prsnr, p2.prs_perslid_naam_full prs_berijder_naam_full, p2.prs_perslid_naam_friendly prs_berijder_naam_friendly, d.ins_deel_omschrijving, d.ins_deel_opmerking, sd.ins_srtdeel_omschrijving, (SELECT 'Ja' FROM cnt_contract WHERE TO_CHAR (SYSDATE, 'YYYY') BETWEEN TO_CHAR ( cnt_contract_looptijd_van, 'YYYY') AND TO_CHAR ( cnt_contract_looptijd_tot, 'YYYY') AND cnt_contract_key = c2.cnt_contract_key) gov_huidig_jaar, (SELECT 'Ja' FROM cnt_contract WHERE TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'YYYY') BETWEEN TO_CHAR ( cnt_contract_looptijd_van, 'YYYY') AND TO_CHAR ( cnt_contract_looptijd_tot, 'YYYY') AND cnt_contract_key = c2.cnt_contract_key) gov_vorig_jaar FROM cnt_v_aanwezigcontract c1, prs_v_perslid_fullnames_all p1, prs_bedrijf b, cnt_contract_object co1, cnt_v_aanwezigcontract c2, (SELECT pf.prs_perslid_key, pf.prs_perslid_naam_friendly, pf.prs_perslid_naam_full, p.prs_perslid_nr FROM prs_v_perslid_fullnames_all pf, prs_perslid p WHERE pf.prs_perslid_key = p.prs_perslid_key) p2, cnt_contract_object co2, ins_deel d, ins_srtdeel sd WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key AND c1.ins_discipline_key = 21 AND co1.cnt_contract_key = c1.cnt_contract_key AND co1.cnt_ins_deel_key = co2.cnt_ins_deel_key AND co2.cnt_contract_key = c2.cnt_contract_key AND c2.ins_discipline_key = 22 AND COALESCE (c2.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_contract c3 WHERE c3.cnt_contract_nummer_intern = c2.cnt_contract_nummer_intern) AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+) AND c2.cnt_prs_perslid_key = p2.prs_perslid_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND d.ins_deel_key = co1.cnt_ins_deel_key AND COALESCE (c1.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_v_aanwezigcontract c4 WHERE c4.cnt_contract_nummer_intern = c1.cnt_contract_nummer_intern) and c2.cnt_contract_looptijd_tot > c1.cnt_contract_looptijd_van and c2.cnt_contract_looptijd_van < c1.cnt_contract_looptijd_tot; -- TEMP view t.b.v. Basis UDR rapport... CREATE OR REPLACE VIEW vebe_rap_wagenpark_tmp ( extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_key_eig, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, gov_huidig_jaar, gov_vorig_jaar, ins_deel_belettering, ins_deel_brandstof, ins_deel_leasecategorie, ins_deel_perc_bijtelling, ins_deel_merk, ins_deel_type, ins_deel_fiscale_waarde, ins_deel_kleur, cnt_lease_jaarkilometrage, cnt_lease_rayon, cnt_gebruik_verklaring, prs_berijder_indirect, mut_datum_fiscale_waardehuidig, mut_datum_gebr_ovkhuidig, mut_datum_verklaringhuidig, mut_datum_in_directhuidig, mut_datum_fiscale_waardevorig, mut_datum_gebr_ovkvorig, mut_datum_verklaringvorig, mut_datum_in_directvorig ) AS SELECT extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_key_eig, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, COALESCE (gov_huidig_jaar, 'Nee') gov_huidig_jaar, COALESCE (gov_vorig_jaar, 'Nee') gov_vorig_jaar, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 1 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 81) belettering, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 3 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 24) brandstof, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 6 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 21) leasecategorie, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 2 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 22) perc_bijtelling, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 7 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 23) merk, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 8 AND kd.ins_kenmerkdeel_verwijder IS NULL) AND ud.fac_usrtab_key = 26) ins_deel_type, (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde) FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 4 AND kd.ins_kenmerkdeel_verwijder IS NULL) fiscale_waarde, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 5 AND kd.ins_kenmerkdeel_verwijder IS NULL) kleur, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_lease_key AND kc.cnt_kenmerk_key = 21 AND kc.cnt_kenmerkcontract_verwijder IS NULL) AND ud.fac_usrtab_key = 25) jaarkilometrage, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_lease_key AND kc.cnt_kenmerk_key = 141 AND kc.cnt_kenmerkcontract_verwijder IS NULL) AND ud.fac_usrtab_key = 141) Rayon, (SELECT ud.fac_usrdata_code FROM fac_usrdata ud WHERE ud.fac_usrdata_key = (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_gebruik_key AND kc.cnt_kenmerk_key = 41 AND kc.cnt_kenmerkcontract_verwijder IS NULL) AND ud.fac_usrtab_key = 1) verklaring, (SELECT DECODE (fac.safe_to_number (COALESCE(MAX(prs_kenmerklink_waarde), '0')), 0, 'Direct', 'Indirect') FROM prs_kenmerklink kl WHERE kl.prs_link_key = lg.prs_berijder_key AND kl.prs_kenmerk_key = 1000 AND kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_kenmerklink_niveau = 'P') in_direct, (SELECT fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy') FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 101 AND kd.ins_kenmerkdeel_verwijder IS NULL and to_char(fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY')) mut_datum_fiscale_waardehuidig, (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_gebruik_key AND kc.cnt_kenmerk_key = 81 AND kc.cnt_kenmerkcontract_verwijder IS NULL and to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY')) mut_datum_gebr_ovkhuidig, (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_gebruik_key AND kc.cnt_kenmerk_key = 82 AND kc.cnt_kenmerkcontract_verwijder IS NULL and to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY')) mut_datum_verklaringhuidig, (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy') FROM prs_kenmerklink kl WHERE kl.prs_link_key = lg.prs_berijder_key AND kl.prs_kenmerk_key = 1020 AND kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_kenmerklink_niveau = 'P' and to_char(fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY')) mut_datum_in_directhuidig, (SELECT fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy') FROM ins_kenmerkdeel kd WHERE kd.ins_deel_key = lg.ins_deel_key AND kd.ins_kenmerk_key = 101 AND kd.ins_kenmerkdeel_verwijder IS NULL and to_char(fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY')) mut_datum_fiscale_waardevorig, (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_gebruik_key AND kc.cnt_kenmerk_key = 81 AND kc.cnt_kenmerkcontract_verwijder IS NULL and to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY')) mut_datum_gebr_ovkvorig, (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = lg.cnt_gebruik_key AND kc.cnt_kenmerk_key = 82 AND kc.cnt_kenmerkcontract_verwijder IS NULL and to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY')) mut_datum_verklaringvorig, (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy') FROM prs_kenmerklink kl WHERE kl.prs_link_key = lg.prs_berijder_key AND kl.prs_kenmerk_key = 1020 AND kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_kenmerklink_niveau = 'P' and to_char(fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY')) mut_datum_in_directvorig FROM vebe_cnt_lease_en_gebruiks_ovk lg; ----- Hulptabellen tbv de salarisverwerking. ----------------------------------- Periodetabellen ---------------------------------------- CREATE OR REPLACE VIEW vebe_v_startperiode_per_jaar (jaar, periode, week, maandag, aantal_weken) AS SELECT ud.fac_usrdata_code, 1, 1, fac.safe_to_date(fac_usrdata_omschr, 'dd-mm-yyyy'), fac_usrdata_volgnr FROM fac_usrdata ud WHERE ud.fac_usrtab_key = 121 AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > SYSDATE; --CREATE OR REPLACE VIEW vebe_v_periodeweektabel_2jaar --(jaar, periode, week, maandag) --AS --SELECT -- TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar, -- LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode, -- TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week, -- TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum --FROM DUAL --CONNECT BY LEVEL <= 1*52+1 --UNION ALL --SELECT -- TO_CHAR (SYSDATE + 7*(LEVEL), 'IYYY') jaar, -- LEAST(FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1, 13) periode, -- TO_CHAR (SYSDATE + 7*(LEVEL), 'IW') week, -- TRUNC (SYSDATE + 7*(LEVEL), 'IW') startdatum --FROM DUAL --CONNECT BY LEVEL <= 1*52+1; CREATE OR REPLACE VIEW vebe_v_vebe_weektabel_2jaar (jaar, periode, week, maandag) AS WITH thisyear AS (SELECT * FROM vebe_v_startperiode_per_jaar WHERE jaar = to_char(SYSDATE, 'yyyy')), nextyear AS (SELECT * FROM vebe_v_startperiode_per_jaar WHERE jaar = to_char(SYSDATE, 'yyyy') + 1) SELECT jaar, LEAST(13, ROUND((LEVEL + 1) / 4)) periode, LEVEL week, TRUNC (maandag + 7*(LEVEL-1), 'IW') startdatum FROM thisyear CONNECT BY LEVEL <= 1* (COALESCE(aantal_weken, 52)) UNION ALL SELECT jaar, LEAST(13, ROUND((LEVEL + 1) / 4)) periode, LEVEL week, TRUNC (maandag + 7*(LEVEL-1), 'IW') startdatum FROM nextyear CONNECT BY LEVEL <= 1* (COALESCE(aantal_weken, 52)); CREATE OR REPLACE VIEW vebe_v_vebe_periodetabel_2jaar (jaar, periode, dag_start, dag_eind, aant_dagen_jaar) AS SELECT jaar, periode, MIN(maandag), MAX(maandag) + 6, to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1 FROM vebe_v_vebe_weektabel_2jaar GROUP BY jaar, periode; ----------------------------------- Maandtabellen ---------------------------------------- CREATE OR REPLACE VIEW vebe_v_maandtabel_2jaar (jaar, periode, dag_start, dag_eind, aant_dagen_jaar) AS WITH thisyear AS (SELECT * FROM vebe_v_startperiode_per_jaar WHERE jaar = to_char(SYSDATE, 'yyyy')), nextyear AS (SELECT * FROM vebe_v_startperiode_per_jaar WHERE jaar = to_char(SYSDATE, 'yyyy') + 1) SELECT jaar, LEVEL periode, to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') startdatum, TRUNC(to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') + 32, 'MM') - 1 einddatum, to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1 FROM thisyear CONNECT BY LEVEL <= 1* 12 UNION ALL SELECT jaar, 13 periode, NULL startdatum, NULL einddatum, to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1 FROM thisyear UNION ALL SELECT jaar, LEVEL periode, to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') startdatum, TRUNC(to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') + 32, 'MM') - 1 einddatum, to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1 FROM nextyear CONNECT BY LEVEL <= 1* 12 UNION ALL SELECT jaar, 13 periode, NULL startdatum, NULL einddatum, to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1 FROM nextyear; CREATE OR REPLACE VIEW vebe_v_total_periodtable_2jaar (jaar, periode, dag_start, dag_eind, aant_dagen_jaar, berijder_indirect) AS SELECT jaar, periode, dag_start, dag_eind, aant_dagen_jaar, 'Direct' FROM vebe_v_vebe_periodetabel_2jaar UNION ALL SELECT jaar, periode, dag_start, dag_eind, aant_dagen_jaar, 'Indirect' FROM vebe_v_maandtabel_2jaar; -- Basis UDR rapport... CREATE OR REPLACE VIEW vebe_rap_wagenpark ( extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_eig_key, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, cnt_lease_eerstedatum, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, fclt_3d_afdeling_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, cnt_gebruik_huidig_jaar, cnt_gebruik_vorig_jaar, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_belettering, ins_deel_brandstof, ins_deel_leasecategorie, ins_deel_perc_bijtelling, ins_deel_merk, ins_deel_type, ins_deel_fiscale_waarde, ins_deel_kleur, cnt_lease_jaarkilometrage, cnt_lease_rayon, cnt_gebruik_verklaring, prs_berijder_indirect, mut_datum_fiscale_waardehuidig, mut_datum_gebr_ovkhuidig, mut_datum_verklaringhuidig, mut_datum_in_directhuidig, mut_datum_totaalhuidig, mut_datum_fiscale_waardevorig, mut_datum_gebr_ovkvorig, mut_datum_verklaringvorig, mut_datum_in_directvorig, mut_datum_totaalvorig ) AS SELECT extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_key_eig, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, (SELECT MIN (TRUNC (c.cnt_contract_aanmaak)) FROM cnt_contract c, cnt_contract_object co WHERE c.cnt_contract_key = co.cnt_contract_key AND co.cnt_contract_object_verwijder IS NULL AND co.cnt_ins_deel_key = tmp.ins_deel_key AND c.cnt_contract_verwijder IS NULL AND c.ins_discipline_key = tmp.lease_disc_key) AS cnt_lease_eerstedatum, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_key fclt_3d_afdeling_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, gov_huidig_jaar, gov_vorig_jaar, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_belettering, ins_deel_brandstof, ins_deel_leasecategorie, ins_deel_perc_bijtelling, ins_deel_merk, ins_deel_type, ins_deel_fiscale_waarde, ins_deel_kleur, cnt_lease_jaarkilometrage, cnt_lease_rayon, cnt_gebruik_verklaring, prs_berijder_indirect, mut_datum_fiscale_waardehuidig, mut_datum_gebr_ovkhuidig, mut_datum_verklaringhuidig, mut_datum_in_directhuidig, decode ( greatest ( coalesce (mut_datum_fiscale_waardehuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_gebr_ovkhuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_verklaringhuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_in_directhuidig, to_date ('01-01-2000', 'dd-mm-yyyy'))), to_date ('01-01-2000', 'dd-mm-yyyy'), null, to_char ( greatest ( coalesce (mut_datum_fiscale_waardehuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_gebr_ovkhuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_verklaringhuidig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_in_directhuidig, to_date ('01-01-2000', 'dd-mm-yyyy'))), 'yyyy-mm')) mut_datum_totaalhuidig, mut_datum_fiscale_waardevorig, mut_datum_gebr_ovkvorig, mut_datum_verklaringvorig, mut_datum_in_directvorig, decode ( greatest ( coalesce (mut_datum_fiscale_waardevorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_gebr_ovkvorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_verklaringvorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_in_directvorig, to_date ('01-01-2000', 'dd-mm-yyyy'))), to_date ('01-01-2000', 'dd-mm-yyyy'), null, to_char ( greatest ( coalesce (mut_datum_fiscale_waardevorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_gebr_ovkvorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_verklaringvorig, to_date ('01-01-2000', 'dd-mm-yyyy')), coalesce (mut_datum_in_directvorig, to_date ('01-01-2000', 'dd-mm-yyyy'))), 'yyyy-mm')) mut_datum_totaalvorig FROM vebe_rap_wagenpark_tmp tmp; -- Basis UDR rapport (zonder financiele gegevens) CREATE OR REPLACE VIEW vebe_rap_wagenpark_basis ( extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_eig_key, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_belettering, ins_deel_brandstof, ins_deel_leasecategorie, ins_deel_perc_bijtelling, ins_deel_merk, ins_deel_type, ins_deel_fiscale_waarde, ins_deel_kleur, cnt_lease_jaarkilometrage, cnt_gebruik_verklaring, prs_berijder_indirect ) AS SELECT extra_key, cnt_lease_key, prs_bedrijf_key, cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_lease_perslid_key_eig, cnt_lease_nummer_intern, cnt_lease_versie, cnt_lease_omschr, cnt_lease_looptijd_van, cnt_lease_looptijd_tot, cnt_lease_looptijd_mnd, perc_lease_duur, lease_weken_tegaan, cnt_lease_rappeldatum, cnt_lease_opzegdatum, cnt_lease_opzegtermijn, cnt_lease_rappeltermijn, cnt_lease_status, lease_fase_actief, cnt_lease_status_txt, cnt_lease_kosten, cnt_lease_termijnkosten, lease_disc_key, lease_eigenaar_key, lease_eigenaar_afdeling_naam, prs_bedrijf_naam, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_eigenaar_naam_full, prs_eigenaar_naam_friendly, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_belettering, ins_deel_brandstof, ins_deel_leasecategorie, ins_deel_perc_bijtelling, ins_deel_merk, ins_deel_type, ins_deel_fiscale_waarde, ins_deel_kleur, cnt_lease_jaarkilometrage, cnt_gebruik_verklaring, prs_berijder_indirect FROM vebe_rap_wagenpark_tmp; ---------- Gebruiksovereenkomst TIJDELIJKE Tankpassen CREATE OR REPLACE VIEW vebe_cnt_tankpas_gebruiks_ovk ( cnt_gebruik_key, prs_berijder_key, ins_deel_key, prs_gebr_perslid_key_beh, prs_gebr_perslid_key_eig, cnt_gebruik_nummer_intern, cnt_gebruik_versie, cnt_gebruik_omschr, cnt_gebruik_looptijd_van, cnt_gebruik_looptijd_tot, perc_gebruik_duur, gebruik_weken_tegaan, cnt_gebruik_rappeldatum, cnt_gebruik_opzegdatum, cnt_gebruik_opzegtermijn, cnt_gebruik_rappeltermijn, cnt_gebruik_status, gebruik_fase_actief, cnt_gebruik_status_txt, gebruik_disc_key, gebruik_eigenaar_key, gebruik_eigenaar_afdeling_naam, prs_berijder_prsnr, prs_berijder_naam_full, prs_berijder_naam_friendly, ins_deel_omschrijving, ins_deel_opmerking ) AS SELECT c2.cnt_contract_key cnt_gebruik_key, p2.prs_perslid_key prs_berijder_key, d.ins_deel_key, c2.prs_perslid_key_beh prs_gebr_perslid_key_beh, c2.prs_perslid_key_eig prs_gebr_perslid_key_eig, c2.cnt_contract_nummer_intern cnt_gebruik_nummer_intern, c2.cnt_contract_versie cnt_gebruik_versie, c2.cnt_contract_omschrijving cnt_gebruik_omschr, c2.cnt_contract_looptijd_van cnt_gebruik_looptijd_van, c2.cnt_contract_looptijd_tot cnt_gebruik_looptijd_tot, ROUND(100 * LEAST ( 1, (SYSDATE - LEAST (c2.cnt_contract_looptijd_van, SYSDATE)) / (GREATEST ( c2.cnt_contract_looptijd_tot - c2.cnt_contract_looptijd_van, 1 )) )) perc_gebruik_duur, ROUND( (c2.cnt_contract_looptijd_tot - GREATEST (c2.cnt_contract_looptijd_van, LEAST (SYSDATE, c2.cnt_contract_looptijd_tot))) / 7) gebruik_weken_tegaan, cnt.cnt_getrappeldatum (c2.cnt_contract_key) cnt_gebruik_rappeldatum, cnt.cnt_getopzegdatum (c2.cnt_contract_key) cnt_gebruik_opzegdatum, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c2.cnt_contract_opzegtermijn) cnt_gebruik_opzegtermijn, (SELECT lcl.x ('cnt_termijn_omschrijving', cnt_termijn_key, cnt_termijn_omschrijving) FROM cnt_termijn WHERE cnt_termijn_key = c2.cnt_contract_rappeltermijn) cnt_gebruik_rappeltermijn, c2.cnt_contract_status cnt_gebruik_status, DECODE ( cnt.cnt_contract_status ( c2.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c2.cnt_contract_key), cnt.cnt_getopzegdatum (c2.cnt_contract_key), c2.cnt_contract_looptijd_tot ), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past') ) gebruik_fase_actief, DECODE ( c2.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval') ) cnt_gebruik_status_txt, COALESCE (c2.ins_discipline_key, -1) gebruik_disc_key, c2.prs_afdeling_key_eig gebruik_eigenaar_key, (SELECT prs_afdeling_naam FROM prs_v_afdeling WHERE prs_afdeling_key = c2.prs_afdeling_key_eig) gebruik_eigenaar_afdeling_naam, p2.prs_perslid_nr prs_berijder_prsnr, p2.prs_perslid_naam_full prs_berijder_naam_full, p2.prs_perslid_naam_friendly prs_berijder_naam_friendly, d.ins_deel_omschrijving, d.ins_deel_opmerking FROM cnt_v_aanwezigcontract c2, (SELECT pf.prs_perslid_key, pf.prs_perslid_naam_friendly, pf.prs_perslid_naam_full, p.prs_perslid_nr FROM prs_v_perslid_fullnames_all pf, prs_perslid p WHERE pf.prs_perslid_key = p.prs_perslid_key) p2, cnt_contract_object co2, ins_deel d WHERE c2.ins_discipline_key = 22 AND d.ins_srtdeel_key = 4 AND co2.cnt_contract_key = c2.cnt_contract_key AND COALESCE (c2.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_contract c3 WHERE c3.cnt_contract_nummer_intern = c2.cnt_contract_nummer_intern) AND c2.cnt_prs_perslid_key = p2.prs_perslid_key(+) AND d.ins_deel_key = co2.cnt_ins_deel_key; -- rapportage tankpassen CREATE OR REPLACE VIEW vebe_v_rap_tankpassen ( ins_deel_key, ins_deel_omschrijving, object_eignaar, afdeling_object_eig, pincode, pasnummer, ins_deel_vervaldatum, cnt_contract_key, cnt_contract_nummer, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_opmerking, cnt_contract_nummer_intern, cnt_prs_perslid_key, cnt_contractant, cnt_eigenaar, prs_afdeling_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, fase, cnt_status_txt, ovk_aanwezig ) AS SELECT ins_deel_key, ins_deel_omschrijving, pf3.prs_perslid_naam_full object_eigenaar, a.prs_afdeling_omschrijving afdeling_object_eig, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_kenmerk_key = 122 AND ins_deel_key = d.ins_deel_key) pincode, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_kenmerk_key = 121 AND ins_deel_key = d.ins_deel_key) pasnummer, ins_deel_vervaldatum, cnt_contract_key, cnt_contract_nummer, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_opmerking, cnt_contract_nummer_intern, cnt_prs_perslid_key, cnt_contractant, cnt_eigenaar, cco.prs_afdeling_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, fase, cnt_status_txt, DECODE (COALESCE (cnt_contract_key, 0), 0, 'Nee', 'Ja') ovk_aanwezig FROM ins_deel d, ins_srtdeel sd, prs_perslid p, prs_v_perslid_fullnames pf3, prs_afdeling a, (SELECT c.cnt_contract_key, cnt_contract_nummer, cnt_contract_versie, cnt_contract_omschrijving, cnt_contract_opmerking, cnt_contract_nummer_intern, cnt_prs_perslid_key, pf2.prs_perslid_naam_full cnt_contractant, prs_perslid_key_eig, pf.prs_perslid_naam_full cnt_eigenaar, prs_afdeling_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_ins_deel_key, DECODE ( cnt.cnt_contract_status ( c.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c.cnt_contract_key), cnt.cnt_getopzegdatum (c.cnt_contract_key), c.cnt_contract_looptijd_tot), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past')) fase, DECODE ( c.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval')) cnt_status_txt FROM cnt_contract c, cnt_contract_object co, prs_v_perslid_fullnames pf, prs_v_perslid_fullnames pf2, prs_afdeling a WHERE cnt_contract_verwijder IS NULL AND c.ins_discipline_key = 22 AND cnt_contract_verwijder IS NULL AND c.cnt_contract_key = co.cnt_contract_key AND prs_perslid_key_eig = pf.prs_perslid_key AND a.prs_afdeling_key = prs_afdeling_key_eig AND c.cnt_prs_perslid_key = pf2.prs_perslid_key(+) AND COALESCE (c.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_v_aanwezigcontract c2 WHERE c2.cnt_contract_nummer_intern = c.cnt_contract_nummer_intern)) cco WHERE ins_deel_verwijder IS NULL AND sd.ins_srtdeel_verwijder IS NULL AND ins_alg_ruimte_type = 'P' AND ins_alg_ruimte_key = p.prs_perslid_key AND pf3.prs_perslid_key = p.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = 3 AND cco.cnt_ins_deel_key(+) = d.ins_deel_key; -- LEASECONTRACT NOTIFICATIES naar contractbeheerder, contracteigenaren, (nog) niet naar berijders. -- Elke dag de bij aflopende leaseonctracten notificaties de deur 'uitgooien', die NIET met de standaard noti-jobs gaan (omdat de export nog iets extra's doet, insert of zo). -- 1. LEASEcontracten (soortcontract met disckey 21) die in rappel staat, en waarvan nog niet eerder een noti naar contracteigenaar is uitgegaan -- 2. Afgemelde GUNNINGSOpdracht (type opdracht met mld_typeopdr_key = 5) een noti met 2 links naar de melder (= AP/aanspreekpunt) van de bijbehorende melding zodat deze 2 acties kan uitvoeren: -- a) LINK 1: naar opdracht zodat de bijlage bij de opdracht kan downloaden/openen, printen en laten ondertekenen -- b) LINK 2: Nieuwe melding 'Stuur getekende leaseovk' zodat de getekende leaseovk kan worden geupload. CREATE OR REPLACE PROCEDURE vebe_export_noti_wagenpark ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) IS v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errorhint2 VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); v_tracking VARCHAR2 (1000); v_fac_usrrap_key NUMBER(10); -- Leasecontracten (met disckey 21) die in rappel staat, en waarvan nog niet eerder een noti naar contracteigenaar is uitgegaan -- Als het kenmerk Vaker notificeren (key 121) aan staat dan wordt er vaker dan 1x genotificeerd. CURSOR c_noti_leasecontract_1st_time IS SELECT c.prs_lease_perslid_key_eig, c.prs_eigenaar_naam_friendly, 'Rappèl: Leaseovereenkomst ' || c.cnt_lease_nummer_intern || DECODE (c.cnt_lease_versie, NULL, '', '.' || c.cnt_lease_versie) || ' (' || c.cnt_lease_omschr || ' ' || c.prs_bedrijf_naam || ')' || ' loopt af op ' || TO_CHAR (c.cnt_lease_looptijd_tot, 'DD-MM-YYYY') || '.' mail_subject, c.cnt_lease_key, c.cnt_lease_nummer_intern, c.cnt_lease_versie FROM vebe_cnt_lease_en_gebruiks_ovk c WHERE cnt_lease_status = 0 AND (SYSDATE BETWEEN c.cnt_lease_rappeldatum AND c.cnt_lease_opzegdatum) AND c.cnt_lease_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy') AND NOT EXISTS (SELECT 'x' FROM fac_tracking t, fac_srtnotificatie sn WHERE c.cnt_lease_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST02' AND t.fac_tracking_refkey NOT IN (SELECT kc.cnt_contract_key FROM cnt_kenmerkcontract kc WHERE kc.cnt_kenmerk_key = 121 AND kc.cnt_kenmerkcontract_waarde = 1 AND TRUNC (t.fac_tracking_datum) < TRUNC (SYSDATE))); CURSOR c_noti_krabbel_leaseovk IS SELECT m.prs_perslid_key prs_perslid_key_aanspreekpunt, p1.prs_perslid_naam_friendly prs_perslid_naam_aanspreekpunt, 'Verzoek ondertekenen van leaseovereenkomst voor ' || p2.prs_perslid_naam_friendly mail_subject, o.mld_opdr_key FROM mld_opdr o, fac_tracking t, fac_srtnotificatie sn, mld_melding m, prs_v_perslid_fullnames_all p1, prs_v_perslid_fullnames_all p2 WHERE o.mld_typeopdr_key = 5 AND o.mld_opdr_key = t.fac_tracking_refkey AND m.mld_melding_key = o.mld_melding_key AND p1.prs_perslid_key = m.prs_perslid_key AND p2.prs_perslid_key = m.prs_perslid_key_voor AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND o.mld_statusopdr_key = 6 AND sn.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'ORDAFM') AND NOT EXISTS (SELECT 'x' FROM fac_tracking t, fac_srtnotificatie sn WHERE o.mld_opdr_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST03'); CURSOR c_noti_cnt_tankpas IS SELECT c.prs_gebr_perslid_key_beh, NULL, 'Rappèl: Tijdelijke tankpas van gebruiksovereenkomst ' || c.cnt_gebruik_nummer_intern || DECODE (c.cnt_gebruik_versie, NULL, '', '.' || c.cnt_gebruik_versie) || ' (' || c.cnt_gebruik_omschr || ')' || ' loopt af op ' || TO_CHAR (c.cnt_gebruik_looptijd_tot, 'DD-MM-YYYY') || '.' mail_subject, c.cnt_gebruik_key, c.cnt_gebruik_nummer_intern, c.cnt_gebruik_versie FROM vebe_cnt_tankpas_gebruiks_ovk c WHERE cnt_gebruik_status = 0 AND TO_CHAR (SYSDATE, 'd') = '4' AND (SYSDATE BETWEEN c.cnt_gebruik_rappeldatum AND c.cnt_gebruik_opzegdatum) AND c.cnt_gebruik_looptijd_tot >= to_date('01-05-2017','dd-mm-yyyy'); BEGIN -- Userrapportage key 81 waar de view vebe_cnt_lease_en_gebruiks_ovk met alle leasecontract info staat. v_fac_usrrap_key := 81; -- Alle leasecontracten in rappel die niet al eerder naar eigenaar zijn genotificeerd, dus alleen 1x, notificeren. FOR rc IN c_noti_leasecontract_1st_time LOOP BEGIN v_errorhint := rc.mail_subject; v_errormsg := ''; -- Mailen van eenmalige notificatie naar de eigenaar/aanspreekpunt via CUST01 (rapport-node). -- fac.putnotificationsrtprio ( NULL, rc.prs_lease_perslid_key_eig, 'CUST01', v_fac_usrrap_key, rc.mail_subject, NULL, NULL, NULL, rc.cnt_lease_key, 2, NULL); fac.putnotificationsrtprio ( NULL, rc.prs_lease_perslid_key_eig, 'CUST01', v_fac_usrrap_key, rc.mail_subject, NULL, NULL, NULL, rc.cnt_lease_key, 2, NULL); v_tracking := 'Rappel mail naar aanspreekpunt ' || rc.prs_eigenaar_naam_friendly || ': Leaseovereenkomst ' || rc.cnt_lease_nummer_intern || ' loopt af'; -- En we tracken via CUST02 (contract-node) fac.trackaction ('CUST02', rc.cnt_lease_key, NULL, NULL, v_tracking); DELETE cnt_kenmerkcontract WHERE cnt_kenmerk_key = 121 AND cnt_contract_key = rc.cnt_lease_key; COMMIT; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; COMMIT; END; END LOOP; FOR rc IN c_noti_krabbel_leaseovk LOOP BEGIN v_errorhint := rc.mail_subject; v_errormsg := ''; -- Mailen van eenmalige notificatie naar de aanspreekpunt via CUST03 (opdracht-node). fac.putnotificationsrtprio ( NULL, rc.prs_perslid_key_aanspreekpunt, 'CUST03', rc.mld_opdr_key, rc.mail_subject, NULL, NULL, NULL, NULL, 2, NULL); -- En we tracken via CUST03 (opdracht-node) v_tracking := 'Mail naar aanspreekpunt ' || rc.prs_perslid_naam_aanspreekpunt || ': ' || rc.mail_subject; fac.trackaction ('#CUST03', rc.mld_opdr_key, NULL, NULL, v_tracking); COMMIT; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; COMMIT; END; END LOOP; FOR rc IN c_noti_cnt_tankpas LOOP BEGIN v_errorhint := rc.mail_subject; v_errormsg := ''; -- Mailen van een notificatie naar de beheerder van de gebruiksovereenkomst van de tijdelijke tankpas. -- fac.putnotificationsrtprio (NULL, rc.prs_gebr_perslid_key_beh, '', rc.cnt_gebruik_key, rc.mail_subject, NULL, NULL, NULL, NULL, 2, NULL); -- fac.putnotificationprio (pfrom, pto, pmessage, pmode, poptemail, poptmobile, 2); fac.putnotificationprio (NULL, rc.prs_gebr_perslid_key_beh, rc.mail_subject, 2, NULL, NULL, 2); COMMIT; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; COMMIT; END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (vebe_noti_wagenpark error ' || oracle_err_num || '/' || oracle_err_mes || ')'; COMMIT; END vebe_export_noti_wagenpark; / CREATE OR REPLACE VIEW vebe_v_export_noti_wagenpark ( result, result_order ) AS SELECT 'notificatie;key contract;contractnr;key aanspreekpunt;aanspreekpunt;mailsubject;contractomschrijving;leasemaatschappij;einddatum', 0 FROM DUAL UNION ALL SELECT REPLACE(REPLACE('CUST01' || ';' || c.cnt_lease_key || ';' || cnt_lease_nummer_intern || ';' || c.prs_lease_perslid_key_eig || ';' || c.prs_eigenaar_naam_friendly || ';' || 'Rappèl: Leaseovereenkomst ' || c.cnt_lease_nummer_intern || ' loopt af' || DECODE (c.cnt_lease_versie, NULL, '', '.' || c.cnt_lease_versie) || ';' || c.cnt_lease_omschr || ';' || c.prs_bedrijf_naam || ';' || TO_CHAR (c.cnt_lease_looptijd_tot, 'DD-MM-YYYY') ,CHR (13), ''), CHR (10), ''), cnt_lease_key FROM ( SELECT MAX (cnt_gebruik_looptijd_tot), cnt_lease_key, cnt_lease_nummer_intern, prs_lease_perslid_key_eig, cnt_lease_omschr, prs_eigenaar_naam_friendly, cnt_lease_versie, prs_bedrijf_naam, cnt_lease_looptijd_tot, cnt_lease_opzegdatum, cnt_lease_rappeldatum, cnt_lease_status FROM vebe_cnt_lease_en_gebruiks_ovk GROUP BY cnt_lease_key, cnt_lease_nummer_intern, prs_lease_perslid_key_eig, cnt_lease_omschr, prs_eigenaar_naam_friendly, cnt_lease_versie, prs_bedrijf_naam, cnt_lease_looptijd_tot, cnt_lease_opzegdatum, cnt_lease_rappeldatum, cnt_lease_status) c WHERE cnt_lease_status = 0 AND (SYSDATE BETWEEN c.cnt_lease_rappeldatum AND c.cnt_lease_opzegdatum) AND c.cnt_lease_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy') AND NOT EXISTS (SELECT 'x' FROM fac_tracking t, fac_srtnotificatie sn WHERE c.cnt_lease_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST02' AND t.fac_tracking_refkey NOT IN (SELECT kc.cnt_contract_key FROM cnt_kenmerkcontract kc WHERE kc.cnt_kenmerk_key = 121 AND kc.cnt_kenmerkcontract_waarde = 1 AND TRUNC (t.fac_tracking_datum) < TRUNC (SYSDATE))) UNION ALL SELECT 'notificatie; key opdracht;opdrachtnr;key aanspreekpunt;aanspreekpunt;mailsubject;opdrachtomschrijving;;', 10000 FROM DUAL UNION ALL SELECT REPLACE(REPLACE( 'CUST03' || ';' || o.mld_opdr_key || ';' || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || ';' || m.prs_perslid_key || ';' || p1.prs_perslid_naam_friendly || ';' || 'Verzoek ondertekenen van leaseovereenkomst voor ' || p2.prs_perslid_naam_friendly || ';' || '' || ';' || '' ,CHR (13), ''), CHR (10), ''), 10000 + m.mld_melding_key FROM mld_opdr o, fac_tracking t, fac_srtnotificatie sn, mld_melding m, prs_v_perslid_fullnames_all p1, prs_v_perslid_fullnames_all p2 WHERE o.mld_typeopdr_key = 5 AND o.mld_opdr_key = t.fac_tracking_refkey AND m.mld_melding_key = o.mld_melding_key AND p1.prs_perslid_key = m.prs_perslid_key AND p2.prs_perslid_key = m.prs_perslid_key_voor AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND o.mld_statusopdr_key = 6 AND sn.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'ORDAFM') AND NOT EXISTS (SELECT 'x' FROM fac_tracking t, fac_srtnotificatie sn WHERE o.mld_opdr_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST03') UNION ALL SELECT 'notificatie;key contract;contractnr;key wagenparkbeh;berijder;mailsubject;contractomschrijving;afdeling;einddatum', (select max(mld_melding_key) + 20000 from mld_melding) FROM DUAL UNION ALL SELECT REPLACE(REPLACE('' || ';' || c.cnt_gebruik_key || ';' || c.cnt_gebruik_nummer_intern || ';' || c.prs_gebr_perslid_key_beh || ';' || c.prs_berijder_naam_friendly || ';' || 'Rappèl: Tijdelijke tankpas ' || c.cnt_gebruik_nummer_intern || ' loopt af' || DECODE (c.cnt_gebruik_versie, NULL, '', '.' || c.cnt_gebruik_versie) || ';' || c.cnt_gebruik_omschr || ';' || c.gebruik_eigenaar_afdeling_naam || ';' || TO_CHAR (c.cnt_gebruik_looptijd_tot, 'DD-MM-YYYY') ,CHR (13), ''), CHR (10), ''), (select max(mld_melding_key) + 20000 from mld_melding) + cnt_gebruik_key FROM vebe_cnt_tankpas_gebruiks_ovk c WHERE cnt_gebruik_status = 0 AND (SYSDATE BETWEEN c.cnt_gebruik_rappeldatum AND c.cnt_gebruik_opzegdatum) AND c.cnt_gebruik_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy'); CREATE OR REPLACE PROCEDURE vebe_processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS sender prs_perslid.prs_perslid_key%TYPE; kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE; v_mldkey mld_melding.mld_melding_key%TYPE; defaultstdmelding fac_setting.fac_setting_default%TYPE; kkey mld_kenmerk.mld_kenmerk_key%TYPE; errormsg fac_result.fac_result_waarde%TYPE; v_mailadres_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE; v_flexprop_mail VARCHAR2(1000); v_from VARCHAR2 (1000); subject_regexp fac_setting.fac_setting_default%TYPE; v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE; v_mldnum VARCHAR2 (4000); v_srtdisc VARCHAR2 (4000); v_flag_on_fenote NUMBER (10); v_flag_on_bonote NUMBER (10); v_mld_meldbron_key NUMBER (10); v_prs_perslid_sysuser_key NUMBER (10); v_mailadres_to_wagenpark VARCHAR2(100); BEGIN v_prs_perslid_sysuser_key := 81; v_mailadres_to_wagenpark := 'XrTeMOZ@vebe.facilitor.nl'; -- We beschouwen dit als een nieuwe melding IF (UPPER(pto) = UPPER(v_mailadres_to_wagenpark)) THEN -- Mailmelding (onder vakgroep 'Mailmelding') met mld_stdmelding_key 161, deze staat in de setting defaultmelding. defaultstdmelding := fac.getsetting ('defaultstdmelding'); v_mld_meldbron_key := 4; END IF; -- Selecteer de kostenplaats van prs_perslid_key = v_prs_perslid_sysuser_key (Dit is de system-user 'SYSTEM API Mail2Melding') SELECT prs_perslid_key, d.prs_kostenplaats_key INTO sender, kostenplaats FROM prs_perslid p, prs_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key AND prs_perslid_key = v_prs_perslid_sysuser_key; -- Bepaal kenmerk-key van kenmerksoort 'mailadres' (key 61) op vakgroeptype niveau van vakgroeptype-key 1 die niet verwijderd is SELECT MAX(mld_kenmerk_key) INTO v_mailadres_kenmerk_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = 27 AND mld_kenmerk_verwijder IS NULL AND mld_kenmerk_niveau = 'T' AND mld_stdmelding_key = 1; -- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd. -- Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp 'MLD123' kan worden opgevist, waarbij het deel achter MLD minimaal uit 1 cijfer bestaat. subject_regexp := '[[:alpha:]]*MLD[[:digit:]]{1,}'; v_mldnum := REGEXP_SUBSTR (psubject, subject_regexp, 1, 1, 'i'); -- M123, of M12345, of M12, of M1 v_srtdisc := REGEXP_SUBSTR (v_mldnum, '[[:alpha:]]*', 1, 1, 'i'); -- M v_mldkey := fac.safe_to_number (SUBSTR (v_mldnum, LENGTH (v_srtdisc) + 1)); -- 123, of 12345, of 12, of 1 -- Uit onderwerp is de vermoedelijke juiste v_mldkey geparsed. -- Final check: is de afzender van de mail dezelfde als die van v_mldkey, deze afzender (mailadres) staat in flexprop (zie verderop hieronder in gedeelte bij insert melding). SELECT MAX(SUBSTR(TRIM(km.mld_kenmerkmelding_waarde),1,50)) INTO v_flexprop_mail FROM mld_kenmerkmelding km WHERE mld_melding_key = v_mldkey AND mld_kenmerk_key = v_mailadres_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; v_from := SUBSTR(TRIM(pfrom),1,50); IF v_flexprop_mail = v_from THEN -- Gotcha: van deze afzender is een eerdere melding geregistreerd, die we plakken de subject en body nu als notitie toe (als perslid system-user 'SYSTEM API Mail2Melding'). INSERT INTO mld_melding_note (mld_melding_key, mld_melding_note_omschrijving, prs_perslid_key, mld_melding_note_flag) VALUES (v_mldkey, SUBSTR ( psubject || CHR (13) || CHR (10) || REPLACE ( SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels sender, 0); -- 0 is NIET zichtbaar FE (want is system-user, zinloos). -- Default tracking is even goed genoeg fac.trackaction ('MLDNOT', v_mldkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || v_mldkey); -- We gaan GEEN Vlaggetjes zetten zoals mld_edit_note.asp dat doet, VEBE werkt hier niet mee. ELSE -- suggested extensions: -- check for MLDUSE-write autorisations -- parse the subject to find an appropriate stdmelding, if uniquely possible -- append (as a note?) to an existing melding if #key is found in the subject BEGIN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_alg_locatie_key, mld_melding_omschrijving, mld_melding_status, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', v_mld_meldbron_key, -- email (4) SYSDATE, NULL, -- Geen locatie bekend SUBSTR ( psubject || CHR (13) || REPLACE ( SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels NULL, defaultstdmelding, sender, sender, kostenplaats, 3) RETURNING mld_melding_key INTO v_mldkey; -- Vullen van kenmerkwaarde "e-mail adres" IF v_from IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL THEN -- v_from is gevuld, en kenmerk mailadres bestaat, zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding. INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from); END IF; mld.setmeldingstatus (v_mldkey, 2, sender); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey); END; END IF; -- find the lowest volgnummer of the flexfield of type folder. SELECT MIN (mld_kenmerk_key) INTO kkey FROM mld_kenmerk k, mld_srtkenmerk sk, mld_stdmelding std, ins_tab_discipline d WHERE mld_srtkenmerk_kenmerktype = 'M' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND std.mld_stdmelding_key = defaultstdmelding AND std.mld_ins_discipline_key = d.ins_discipline_key AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S') OR (k.mld_stdmelding_key = d.ins_discipline_key AND k.mld_kenmerk_niveau = 'D') OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T')) AND k.mld_kenmerk_verwijder IS NULL AND NOT EXISTS (SELECT mld_kenmerk_volgnummer FROM mld_kenmerk k1, mld_srtkenmerk sk1, mld_stdmelding std1, ins_tab_discipline d1 WHERE sk1.mld_srtkenmerk_kenmerktype = 'M' AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key AND std1.mld_stdmelding_key = defaultstdmelding AND std1.mld_ins_discipline_key = d1.ins_discipline_key AND ( (k1.mld_stdmelding_key = std1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S') OR (k1.mld_stdmelding_key = d1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D') OR (k1.mld_stdmelding_key = d1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T')) AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_kenmerk_volgnummer < k.mld_kenmerk_volgnummer); IF kkey IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || to_char( TRUNC(v_mldkey/1000), 'FM0000') || '___\M' || v_mldkey || '\' || kkey || '\'); END IF; IF errormsg IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', errormsg); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Mail kon niet verwerkt worden afzender: ' || pfrom || '[' || errormsg || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder'); END; / -- Selectie doorlooptijden leaseovereenkomst CREATE OR REPLACE VIEW vebe_v_doorlooptijden AS SELECT mld_melding_key, mld_melding_status, naam_berijder, naam_ap, key_bedrijf1, bedrijf1, off_mld_opdr_key, datum_einde_off_athlon, key_bedrijf2, bedrijf2, off1_mld_opdr_key, datum_start_off_pon, datum_einde_off_pon, gun_mld_opdr_key, datum_start_gunning, datum_einde_gunning, mld_vervolgmelding_key, datum_start_vervolgmelding, uitv_mld_opdr_key, datum_start_uitvoering, datum_einde_uitvoering FROM (SELECT m.mld_melding_key, m.mld_melding_status, berijder.prs_perslid_naam naam_berijder, ap.prs_perslid_naam naam_ap, lm.prs_bedrijf_key key_bedrijf1, lm.prs_bedrijf_naam bedrijf1, off.mld_opdr_key off_mld_opdr_key, fac.gettrackingdate ('ORDAFM', off.mld_opdr_key) datum_einde_off_athlon, lm1.prs_bedrijf_key key_bedrijf2, lm1.prs_bedrijf_naam bedrijf2, off1.mld_opdr_key off1_mld_opdr_key, fac.gettrackingdate ('ORDNEW', off1.mld_opdr_key) datum_start_off_pon, fac.gettrackingdate ('ORDAFM', off1.mld_opdr_key) datum_einde_off_pon, gun.mld_opdr_key gun_mld_opdr_key, fac.gettrackingdate ('ORDNEW', gun.mld_opdr_key) datum_start_gunning, fac.gettrackingdate ('ORDAFM', gun.mld_opdr_key) datum_einde_gunning, m1.mld_melding_key mld_vervolgmelding_key, fac.gettrackingdate ('MLDNEW', m1.mld_melding_key) datum_start_vervolgmelding, uitv.mld_opdr_key uitv_mld_opdr_key, fac.gettrackingdate ('ORDNEW', uitv.mld_opdr_key) datum_start_uitvoering, fac.gettrackingdate ('ORDAFM', uitv.mld_opdr_key) datum_einde_uitvoering, (SELECT MAX (mld_melding_key) FROM mld_melding m1a WHERE m.mld_melding_key = m1a.mld_melding_start_key AND m1a.mld_stdmelding_key = 82) incl_start_key, m1.mld_melding_key mld_vervolg_melding FROM mld_melding m, prs_perslid berijder, prs_perslid ap, mld_opdr off, mld_opdr off1, mld_opdr gun, prs_bedrijf lm, prs_bedrijf lm1, mld_melding m1, mld_opdr uitv WHERE m.mld_stdmelding_key IN (1, 21) AND m.prs_perslid_key_voor = berijder.prs_perslid_key AND m.prs_perslid_key = ap.prs_perslid_key AND off.mld_melding_key = m.mld_melding_key AND off.mld_typeopdr_key = 41 AND lm.prs_bedrijf_key = off.mld_uitvoerende_keys AND lm.prs_bedrijf_key = 23 AND off1.mld_melding_key = m.mld_melding_key AND off1.mld_typeopdr_key = 41 AND lm1.prs_bedrijf_key = off1.mld_uitvoerende_keys AND lm1.prs_bedrijf_key = 22 AND gun.mld_melding_key = m.mld_melding_key AND gun.mld_typeopdr_key = 5 AND m.mld_melding_key = m1.mld_melding_start_key(+) AND uitv.mld_melding_key = m.mld_melding_key AND uitv.mld_typeopdr_key = 81 AND off1.mld_opdr_key = (SELECT MAX (mld_opdr_key) FROM mld_opdr off1a, prs_bedrijf lm1a WHERE off1a.mld_melding_key = m.mld_melding_key AND off1a.mld_typeopdr_key = 41 AND lm1a.prs_bedrijf_key = off1a.mld_uitvoerende_keys AND lm1a.prs_bedrijf_key = 22) AND off.mld_opdr_key = (SELECT MAX (mld_opdr_key) FROM mld_opdr offat, prs_bedrijf lma WHERE offat.mld_melding_key = m.mld_melding_key AND offat.mld_typeopdr_key = 41 AND lma.prs_bedrijf_key = offat.mld_uitvoerende_keys AND lma.prs_bedrijf_key = 23) AND gun.mld_opdr_key = (SELECT MAX (mld_opdr_key) FROM mld_opdr gun_a WHERE gun_a.mld_melding_key = m.mld_melding_key AND gun_a.mld_typeopdr_key = 5) AND uitv.mld_opdr_key = (SELECT MAX (mld_opdr_key) FROM mld_opdr uitv_a WHERE (uitv_a.mld_melding_key = m.mld_melding_key OR uitv_a.mld_melding_key = m1.mld_melding_key) AND uitv_a.mld_typeopdr_key = 81)) WHERE mld_vervolg_melding = incl_start_key OR incl_start_key IS NULL; -- Rapport doorlooptijden CREATE OR REPLACE VIEW VEBE_V_RAP_DOORLOOPTIJDEN AS SELECT mld_melding_key, naam_berijder, naam_ap, key_bedrijf1, bedrijf1, off_mld_opdr_key, datum_einde_off_athlon, key_bedrijf2, bedrijf2, off1_mld_opdr_key, datum_start_off_pon, datum_einde_off_pon, gun_mld_opdr_key, datum_start_gunning, datum_einde_gunning, mld_vervolgmelding_key, datum_start_vervolgmelding, uitv_mld_opdr_key, datum_start_uitvoering, ROUND ( datum_start_gunning - GREATEST (datum_einde_off_athlon, datum_einde_off_pon), 0) dagen_off_gun, ROUND (datum_einde_gunning - datum_start_gunning, 0) dagen_srtgun_endgun, ROUND (datum_start_vervolgmelding - datum_einde_gunning) dagen_endgun_verv, ROUND (datum_start_uitvoering - datum_start_vervolgmelding, 0) dagen_verv_uitv, ROUND (datum_einde_off_pon - datum_start_off_pon, 0) dagen_off_pon, ROUND ( datum_start_uitvoering - LEAST (datum_einde_off_athlon, datum_einde_off_pon), 0) totaal_doorlooptijd FROM vebe_v_doorlooptijden WHERE mld_melding_status IN (1, 5, 6); CREATE OR REPLACE VIEW vebe_v_rap_cnt ( contract_key, nummer, omschrijving, opmerking, contractafdeling, contractpartij, contracteigenaar, contractbeheerder, begindatum, einddatum, opzegdatum, rappeldatum, opzegtermijn, rappeltermijn, beschrijving, ins_deel_key ) AS SELECT contract_key, nummer, omschrijving, opmerking, contractafdeling, contractpartij, contracteigenaar, contractbeheerder, begindatum, einddatum, opzegdatum, rappeldatum, opzegtermijn, rappeltermijn, omschrijving || ' - ' || COALESCE ( (SELECT pkm.prs_kenmerklink_waarde FROM prs_kenmerklink pkm, cnt_contract cnt WHERE pkm.prs_kenmerk_key = 1040 --Kenmerk-key voor afkorting van relatie AND cnt.cnt_contract_key = contract_key AND pkm.prs_link_key = cnt.cnt_prs_bedrijf_key), contractpartij) || ' (' || contractafdeling || ' - ' || TO_CHAR (einddatum, 'DD-MM-YYYY') || ')' AS aflopend_contract, ins_cnt.cnt_ins_deel_key FROM cnt_v_udr_contract, cnt_v_aanwezigcontract_object ins_cnt WHERE UPPER (contractsoort) = 'LEASECONTRACT' AND contract_key = ins_cnt.cnt_contract_key AND contract_key = (SELECT MAX (co.cnt_contract_key) FROM cnt_v_aanwezigcontract_object co, cnt_contract c WHERE c.cnt_contract_key = co.cnt_contract_key AND c.ins_discipline_key = 21 -- Leaseovereenkomst AND co.cnt_ins_deel_key = ins_cnt.cnt_ins_deel_key); CREATE OR REPLACE VIEW vebe_v_noti_cntrappel_wm ( code, sender, receiver, text, key, xkey ) AS SELECT 'CUST04', '', p.prs_perslid_key, 'Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY') || ' worden verlengd of opgezegd.', c.cnt_contract_key, NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b, prs_perslid p, prs_afdeling a, fac_groeprechten gr, fac_gebruikersgroep gg, fac_functie f WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_verwijder IS NULL AND cnt_contract_status = 0 AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)) AND gr.ins_discipline_key = 121 -- Werkmaatschappij (administratief) AND p.prs_perslid_key = gg.prs_perslid_key AND gr.fac_groep_key = gg.fac_groep_key AND p.prs_afdeling_key = a.prs_afdeling_key AND c.prs_afdeling_key_eig = p.prs_afdeling_key AND gr.fac_functie_key = f.fac_functie_key AND p.prs_perslid_email IS NOT NULL AND f.fac_functie_code = 'WEB_MLDBOF' AND c.cnt_contract_key NOT IN (SELECT km.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km, mld_melding m WHERE m.mld_melding_key = km.mld_melding_key AND m.mld_stdmelding_key = 301 --Start workflow AND km.mld_kenmerk_key = 421 -- Kenmerk aflopend contract AND m.mld_melding_status IN (2, 4)) -- Nieuw / In behandeling AND c.cnt_contract_key NOT IN (SELECT fac_tracking_refkey --CUST04 FROM fac_tracking WHERE fac_srtnotificatie_key = 449); CREATE OR REPLACE PROCEDURE vebe_export_clean_att (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) IS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); -- De bijlagen uit de workflow 'Aanvraag leaseauto' kunnen worden opgeschoond. -- Enkel bijlagen die zijn bijgevoegd in de stappen 'Overeenkomst&Matrix' en 'Bestellen auto' (KVI) moeten bewaard blijven. CURSOR c_attachments IS SELECT b.fac_bijlagen_key, (SELECT MAX (t.fac_tracking_datum) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_tracking_refkey = start_m.mld_melding_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFM') FROM fac_bijlagen b, mld_melding m, mld_melding start_m, mld_kenmerk km WHERE b.fac_bijlagen_verwijder IS NULL AND m.mld_melding_start_key = start_m.mld_melding_key AND m.mld_melding_key = b.fac_bijlagen_refkey AND km.mld_kenmerk_key = b.fac_bijlagen_kenmerk_key AND km.mld_kenmerk_niveau NOT LIKE '%O%' --Geen opdrachtkenmerk AND b.fac_bijlagen_module = 'MLD' AND start_m.mld_melding_status IN (1, 5, 6, 99) --Workflow mag niet meer actief zijn. AND start_m.mld_stdmelding_key = 301 --Start nieuwe leaseaanvraag (start workflow) AND (SELECT MAX (t.fac_tracking_datum) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_tracking_refkey = start_m.mld_melding_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFM') < SYSDATE - 183 -- Workflow langer dan half jaar gestopt ORDER BY b.fac_bijlagen_key DESC; BEGIN -- Verwijder de bijlagen die uit de workflows die langer dan een half jaar geleden zijn afgerond (behalve ovk/matrix/kvi). FOR rec IN c_attachments LOOP BEGIN flx.deleteflexbijlage(rec.fac_bijlagen_key); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (vebe_export_clean_att error ' || oracle_err_num || '/' || oracle_err_mes || ')'; COMMIT; END vebe_export_clean_att; / CREATE OR REPLACE VIEW vebe_v_rap_lease_aanvr AS SELECT m.melding_key AS melding_nr, m.melding_start_key AS melding_startnr, m.melder AS berijder, m.afdeling_omschrijving, m.invoerder, m.soortmelding AS vakgroeptype, m.productgroep AS vakgroep, sm.mld_stdmelding_key, m.subproductgroep AS std_melding, m.behandelaar, m.melding_status, m.melding_datum, m.melding_afgemeld, m.doorlooptijd_werkdgn, m.onderwerp, (SELECT DISTINCT (c.nummer) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractnummer, (SELECT DISTINCT (c.contractsoort) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractsoort, (SELECT DISTINCT (c.omschrijving) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractomschrijving, (SELECT DISTINCT (c.contractpartij) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractpartij, (SELECT DISTINCT (c.contractafdeling) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractafdeling, (SELECT DISTINCT (c.contractbeheerder) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contractbeheerder, (SELECT DISTINCT (c.begindatum) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_begindatum, (SELECT DISTINCT (c.einddatum) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_einddatum, (SELECT DISTINCT (c.opzegdatum) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_opzegdatum, (SELECT DISTINCT (c.rappeldatum) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_rappeldatum, (SELECT DISTINCT (c.fase_actief) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_fase, (SELECT DISTINCT (c.status) FROM mld_kenmerkmelding kmm, mld_kenmerk km, cnt_v_udr_contract c WHERE kmm.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_key = 421 AND c.nummer = kmm.mld_kenmerkmelding_waarde AND mld_kenmerkmelding_verwijder IS NULL AND kmm.mld_melding_key = m2.mld_melding_start_key) AS contract_status FROM mld_v_udr_melding m, mld_melding m2, mld_stdmelding sm, ins_tab_discipline disc WHERE m2.mld_melding_key = m.melding_key AND disc.ins_srtdiscipline_key = 21 -- Workflow leaseaanvraag AND m2.mld_melding_start_key IS NOT NULL -- Het moet wel onderdeel zijn van een workflow en geen losse melding AND m2.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = disc.ins_discipline_key; CREATE OR REPLACE VIEW vebe_v_rap_wfleaseaanv ( melding_key, meldingnummer, melding_start_key, melder_key, melder, afdeling_omschrijving, invoerder, vakgroeptype, vakgroep, melding, volgnr, behandelaar, startmelding_status, melding_status, melding_datum, melding_einddatum_std, melding_afgemeld, sla_werkdgn, doorlooptijd_werkdgn, onderwerp, omschrijving, offerte_athlon_correct, offerte_vwpfs_correct, aflopend_contract_key, aflopend_contract_oms ) AS SELECT m.melding_key, m.meldingnummer, m.melding_start_key, m.melder_key, m.melder, m.afdeling_omschrijving, m.invoerder, m.soortmelding, m.productgroep, m.subproductgroep, sm.mld_stdmelding_volgnr, m.behandelaar, (SELECT startm.melding_status FROM mld_v_udr_melding startm WHERE startm.melding_key = m.melding_start_key) AS startmelding_status, m.melding_status, m.melding_datum, m.melding_einddatum_std, m.melding_afgemeld, m.sla_werkdgn, m.doorlooptijd_werkdgn, m.onderwerp, m.vomschrijving, (SELECT ud.fac_usrdata_omschr FROM mld_kenmerkmelding kmm, mld_kenmerk km, fac_usrdata ud WHERE km.mld_kenmerk_key = kmm.mld_kenmerk_key AND kmm.mld_kenmerkmelding_waarde = ud.fac_usrdata_key AND kmm.mld_kenmerkmelding_verwijder IS NULL AND km.mld_srtkenmerk_key = 462 --Kenmerksoort Offerte Athlon correct AND kmm.mld_melding_key = m.melding_key) AS offerte_athlon_correct, (SELECT ud.fac_usrdata_omschr FROM mld_kenmerkmelding kmm, mld_kenmerk km, fac_usrdata ud WHERE km.mld_kenmerk_key = kmm.mld_kenmerk_key AND kmm.mld_kenmerkmelding_waarde = ud.fac_usrdata_key AND kmm.mld_kenmerkmelding_verwijder IS NULL AND km.mld_srtkenmerk_key = 463 --Kenmerksoort Offerte VWPFS correct AND kmm.mld_melding_key = m.melding_key) AS offerte_vwpfs_correct, (SELECT kmm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding kmm, mld_kenmerk km WHERE km.mld_kenmerk_key = kmm.mld_kenmerk_key AND kmm.mld_kenmerkmelding_verwijder IS NULL AND km.mld_srtkenmerk_key = 281 --Kenmerksoort aflopend contract AND kmm.mld_melding_key = m.melding_start_key) AS aflopend_contract_key, (SELECT c.omschrijving FROM mld_kenmerkmelding kmm, mld_kenmerk km, vebe_v_rap_cnt c WHERE km.mld_kenmerk_key = kmm.mld_kenmerk_key AND fac.safe_to_number (kmm.mld_kenmerkmelding_waarde) = c.contract_key AND kmm.mld_kenmerkmelding_verwijder IS NULL AND km.mld_srtkenmerk_key = 281 --Kenmerksoort aflopend contract AND kmm.mld_melding_key = m.melding_start_key) AS aflopend_contract_oms FROM mld_v_udr_melding m, ins_tab_discipline disc, mld_melding mm, mld_stdmelding sm WHERE m.fclt_3d_discipline_key = disc.ins_discipline_key AND mm.mld_melding_key = m.melding_key AND sm.mld_stdmelding_key = mm.mld_stdmelding_key AND disc.ins_srtdiscipline_key = 21 -- Vakgroeptype lease aanvraag AND disc.ins_discipline_module = 'MLD' ORDER BY m.melding_start_key, m.melding_key; -- payload end --- SET DEFINE OFF BEGIN adm.systrackscriptId('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile