-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database -- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt. -- (dit in tegenstelling tot sample_xxxx.sql) DEFINE thisfile = 'AKZO.SQL' DEFINE dbuser = '^AKZO' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust ('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PACKAGE AKZO AS PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER, p_srtkenmerk_key IN NUMBER, p_waarde IN VARCHAR2); PROCEDURE mld_after_insert (p_melding_key IN NUMBER); PROCEDURE prs_mandaten; PROCEDURE prs_autorisaties; END; / CREATE OR REPLACE PACKAGE BODY AKZO AS PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER, p_srtkenmerk_key IN NUMBER, p_waarde IN VARCHAR2) AS v_kenmerk_key NUMBER; v_srtkenmerk_type VARCHAR2 (1); v_waarde VARCHAR2 (255); v_objectnaam VARCHAR2 (30); v_kolomnaam VARCHAR2 (30); v_kolomtxt VARCHAR2 (30); v_errormsg VARCHAR2 (1024); v_aanduiding VARCHAR (200); sql_stmt VARCHAR2 (1000); ccount NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_kenmerkdeel_key NUMBER; BEGIN IF p_srtkenmerk_key IS NOT NULL AND p_waarde IS NOT NULL THEN v_errormsg := 'Fout bepalen kenmerk van soort [' || p_srtkenmerk_key || ']'; SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype INTO v_kenmerk_key, v_srtkenmerk_type FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE d.ins_deel_key = p_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND k.ins_srtkenmerk_key = p_srtkenmerk_key AND ( ( k.ins_srtinstallatie_key = sd.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S') OR ( k.ins_srtinstallatie_key = sg.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G') OR ( k.ins_srtinstallatie_key = sg.ins_discipline_key AND k.ins_kenmerk_niveau = 'D')) AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; IF v_srtkenmerk_type IN ('R', 'S') THEN v_errormsg := 'Fout bepalen eigen tabel'; SELECT COUNT (*) INTO ccount FROM ins_srtkenmerk sk, fac_kenmerkdomein d WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key IS NOT NULL; v_errormsg := 'Fout bepalen nieuwe waarde [' || p_waarde || ']'; IF ccount = 1 THEN -- Eigen tabel SELECT TO_CHAR (ud.fac_usrdata_key) INTO v_waarde FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ud.fac_usrtab_key AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (p_waarde); ELSE -- FACILITOR view/tabel waarbij we uitgaan van de key v_waarde := p_waarde; END IF; ELSE -- C(haracter)/D(ate)/N(umeric) v_waarde := p_waarde; END IF; v_errormsg := 'Fout bepalen huidige waarde'; SELECT COUNT (*), MAX (ins_kenmerkdeel_key) INTO ccount, v_kenmerkdeel_key FROM ins_v_aanwezigkenmerkdeel WHERE ins_deel_key = p_deel_key AND ins_kenmerk_key = v_kenmerk_key; IF ccount = 0 THEN v_errormsg := 'Fout toevoegen waarde [' || v_waarde || ']'; INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde) VALUES (p_deel_key, v_kenmerk_key, v_waarde); ELSE v_errormsg := 'Fout bijwerken waarde [' || v_waarde || ']'; UPDATE ins_kenmerkdeel SET ins_kenmerkdeel_waarde = v_waarde WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog ('p_deel_key', 'W', v_aanduiding || v_errormsg, 'upsert_inskenmerk'); END; PROCEDURE mld_after_insert (p_melding_key IN NUMBER) AS v_errormsg VARCHAR2 (1024); v_stdmelding_key NUMBER (10); v_discipline_key NUMBER (10); v_srtgroep_key NUMBER (10); v_srtdeel_key NUMBER (10); v_srtdeel_code VARCHAR2 (50); v_perslid_naam VARCHAR (200); v_perslid_voornaam VARCHAR (200); v_perslid_tussenvoegsel VARCHAR (15); v_perslid_geslacht NUMBER (10); v_perslid_telefoonnr VARCHAR (15); v_perslid_email VARCHAR (200); v_startdatum DATE; v_vervaldatum DATE; v_vervaldatum_oud DATE; v_pas_voor NUMBER (10); v_deel_key NUMBER (10); v_deel_oms VARCHAR2 (60); v_aanduiding VARCHAR (200); v_bedrijf VARCHAR2 (60); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); CURSOR c_melding IS SELECT m.mld_melding_key, m.mld_stdmelding_key, m.prs_perslid_key_voor FROM mld_melding m WHERE m.mld_melding_key = p_melding_key; BEGIN v_aanduiding := ''; FOR rec IN c_melding LOOP BEGIN v_stdmelding_key := rec.mld_stdmelding_key; IF v_stdmelding_key = 41 -- aanvragen nieuwe badge, die moet aangemaakt worden THEN --- Welke badge wordt aangevraagd? op basis van een keuzelijst die alle objectsoorten toont v_errormsg := 'Fout bepalen INS-objectsoort'; SELECT km.mld_kenmerkmelding_waarde, sd.ins_srtdeel_code_upper INTO v_srtdeel_key, v_srtdeel_code FROM mld_kenmerkmelding km, ins_srtdeel sd WHERE km.mld_kenmerk_key = 62 AND km.mld_kenmerkmelding_waarde = sd.ins_srtdeel_key AND km.mld_melding_key = p_melding_key; v_errormsg := 'Fout bepalen ingangsdatum badge'; --- ingangsdatum badge bepalen, kenmerk in de melding SELECT fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') INTO v_startdatum FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 81 AND km.mld_melding_key = p_melding_key; v_errormsg := 'Fout bepalen einddatum t-badge'; --- als het om een tijdelijke badge gaat, dat moet direct de einddatum op vandaag+ 1 jaar gezet worden --- Passen die beginnen met AN zijn voor intern en dus onbeperkt geldig SELECT (CASE WHEN ins_srtdeel_code_upper NOT LIKE 'AN%' THEN ADD_MONTHS (TRUNC (v_startdatum), 12) ELSE NULL END) eind_badge INTO v_vervaldatum FROM ins_srtdeel sd WHERE sd.ins_srtdeel_key = v_srtdeel_key; v_errormsg := 'Fout bepalen INS-discipline'; SELECT d.ins_discipline_key INTO v_discipline_key FROM ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline d WHERE sd.ins_srtdeel_key = v_srtdeel_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key AND d.ins_discipline_key = sg.ins_discipline_key AND d.ins_discipline_module = 'INS'; v_errormsg := 'Fout bepalen INS-groepsoort'; SELECT sg.ins_srtgroep_key INTO v_srtgroep_key FROM ins_srtdeel sd, ins_srtgroep sg WHERE sd.ins_srtdeel_key = v_srtdeel_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key; v_errormsg := 'Fout toevoegen INS-object'; SELECT MAX (fac.safe_to_number (ins_deel_omschrijving)) + 1 INTO v_deel_oms FROM ins_deel d WHERE ins_deel_verwijder IS NULL AND ins_deel_module = 'INS'; v_errormsg := 'Fout aanmaken externe medewerker'; --- voor wie wordt de pas aangevraagd? SELECT p.prs_perslid_key INTO v_pas_voor FROM mld_kenmerkmelding km, prs_perslid p WHERE km.mld_kenmerk_key = 61 AND km.mld_kenmerkmelding_waarde = p.prs_perslid_key AND km.mld_melding_key = p_melding_key; v_errormsg := 'Fout aanmaken pas'; INSERT INTO ins_deel (ins_discipline_key, ins_srtdeel_key, ins_deel_module, ins_deel_omschrijving, ins_deel_opmerking, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_alg_locatie_key, ins_deel_aanmaak, ins_deel_vervaldatum) VALUES (v_discipline_key, v_srtdeel_key, 'INS', TO_CHAR (v_deel_oms), 'Toegangspas Sassenheim', v_pas_voor, 'P', NULL, v_startdatum, COALESCE (v_vervaldatum, NULL)) RETURNING ins_deel_key INTO v_deel_key; COMMIT; --- noteren door wie de pas is aangevraagd, dat is de melder akzo.upsert_inskenmerk (v_deel_key, 21, rec.prs_perslid_key_voor); --- bij een tijdelijke badge is bedrijf verplicht --- bedrijf bepalen, kenmerk in de melding SELECT COALESCE (km.prs_kenmerklink_waarde, 'AN SSH') INTO v_bedrijf FROM prs_perslid p, (SELECT km.prs_kenmerklink_waarde, km.prs_link_key FROM prs_kenmerklink km WHERE km.prs_kenmerklink_key = 1020) km WHERE km.prs_link_key(+) = p.prs_perslid_key AND p.prs_perslid_key = v_pas_voor; akzo.upsert_inskenmerk (v_deel_key, 41, v_bedrijf); -- en dan mag de melding direct weer afgesloten worden UPDATE mld_melding m SET m.mld_melding_status = 5 WHERE m.mld_melding_key = p_melding_key; COMMIT; END IF; IF v_stdmelding_key = 42 -- verlengen badge THEN v_errormsg := 'Fout bepalen te verlengen pas'; --- om welke pas gaat het SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde) INTO v_deel_key FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 141 AND km.mld_melding_key = p_melding_key; v_errormsg := 'Fout bepalen nieuwe einddatum t-badge'; --- nieuwe einddatum SELECT fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') INTO v_vervaldatum FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 142 AND km.mld_melding_key = p_melding_key; --- oude vervaldatum SELECT d.ins_deel_vervaldatum INTO v_vervaldatum_oud FROM ins_deel d WHERE d.ins_deel_key = v_deel_key; --- dan kan de pas bijgewerkt worden UPDATE ins_deel d SET ins_deel_vervaldatum = v_vervaldatum WHERE d.ins_deel_key = v_deel_key; -- Tracking fac.trackaction ( 'INSUPD', v_deel_key, NULL, NULL, 'Vervaldatum bijgewerkt ' || v_vervaldatum_oud || ' --> ' || v_vervaldatum); -- en dan mag de melding direct weer afgesloten worden UPDATE mld_melding m SET m.mld_melding_status = 5 WHERE m.mld_melding_key = p_melding_key; COMMIT; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_melding_key, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END LOOP; END; PROCEDURE prs_mandaten AS -- Alle AkzoNobel medewerkers die nog geen mandaten hebben CURSOR c IS SELECT prs_perslid_key FROM prs_perslid p WHERE UPPER (p.prs_perslid_email) LIKE '%AKZONOBEL%' AND prs_perslid_key NOT IN (SELECT prs_perslid_key FROM prs_perslidkostenplaats kpl); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); BEGIN FOR rec IN c LOOP v_errormsg := 'Fout toekennen mandaten ' || rec.prs_perslid_key; INSERT INTO prs_perslidkostenplaats ( prs_perslid_key, prs_perslidkostenplaats_boeken, prs_perslidkostenplaats_inzage) VALUES (rec.prs_perslid_key, 1, 1); END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('Mandaten', 'E', v_errormsg, ''); END; PROCEDURE prs_autorisaties AS -- Alle medewerkers zonder login of AkzoNobel mailadres moeten uit de _default autorisatie groep verwijderd worden CURSOR c IS SELECT p.prs_perslid_key FROM fac_gebruikersgroep g, prs_perslid p WHERE g.fac_groep_key = 1 AND g.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_oslogin IS NULL AND ( UPPER (p.prs_perslid_email) NOT LIKE '%AKZONOBEL%' OR p.prs_perslid_email IS NULL); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); BEGIN FOR rec IN c LOOP v_errormsg := 'Fout opschonen autorisatie ' || rec.prs_perslid_key; DELETE fac_gebruikersgroep g WHERE g.fac_groep_key = 1 AND g.prs_perslid_key = rec.prs_perslid_key; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('Mandaten', 'E', v_errormsg, ''); END; END; / CREATE OR REPLACE VIEW AKZO_V_T_PAS_AMSTERDAM ( INS_DEEL_OMSCHRIJVING, INS_DEEL_KEY, INS_DEEL_VERWIJDER ) AS SELECT p.prs_perslid_naam_full || ' / ' || sd.ins_srtdeel_omschrijving || ' ' || d.ins_deel_omschrijving, ins_deel_key, ins_deel_verwijder FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, prs_v_perslid_fullnames_all p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_srtgroep_key = 81 AND d.ins_alg_ruimte_type = 'P' AND d.ins_alg_ruimte_key = p.prs_perslid_key AND d.ins_deel_actief = 1 AND sd.ins_srtdeel_code_upper LIKE 'T-PAS' --- alleen tijdelijk passen kunnen worden verlengd ORDER BY p.prs_perslid_naam_full; CREATE OR REPLACE VIEW AKZO_V_TIJDELIJK_PAS ( INS_DEEL_OMSCHRIJVING, INS_DEEL_KEY, INS_DEEL_VERWIJDER ) AS SELECT p.prs_perslid_naam_full || ' / ' || sd.ins_srtdeel_omschrijving || ' ' || d.ins_deel_omschrijving, ins_deel_key, ins_deel_verwijder FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, prs_v_perslid_fullnames_all p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_srtgroep_key = 1 AND d.ins_alg_ruimte_type = 'P' AND d.ins_alg_ruimte_key = p.prs_perslid_key AND d.ins_deel_actief = 1 AND sd.ins_srtdeel_code_upper NOT LIKE 'AN%' --- alleen tijdelijk passen kunnen worden verlengd ORDER BY p.prs_perslid_naam_full; CREATE OR REPLACE VIEW AKZO_V_SOORT_PAS_SSH ( INS_SRTDEEL_KEY, INS_SRTDEEL_OMSCHRIJVING, INS_SRTDEEL_VERWIJDER ) AS SELECT sd.ins_srtdeel_key, ins_srtdeel_omschrijving, ins_srtdeel_verwijder FROM ins_srtdeel sd, ins_srtgroep gr WHERE sd.ins_srtgroep_key = gr.ins_srtgroep_key AND gr.ins_srtgroep_key = 1; CREATE OR REPLACE VIEW AKZO_V_SOORT_PAS_AMS ( INS_SRTDEEL_KEY, INS_SRTDEEL_OMSCHRIJVING, INS_SRTDEEL_VERWIJDER ) AS SELECT sd.ins_srtdeel_key, ins_srtdeel_omschrijving, ins_srtdeel_verwijder FROM ins_srtdeel sd, ins_srtgroep gr WHERE sd.ins_srtgroep_key = gr.ins_srtgroep_key AND gr.ins_srtgroep_key = 81; CREATE OR REPLACE VIEW AKZO_V_RAP_AANVR_BADGE ( PERSONTYPE, DISPLAYTYPE_CODE, DISPLAYTYPE_NAAM, PERSONEELSNUMMER, ROEPNAAM, VOORLETTERS, TUSSENVOEGSEL, ACHTERNAAM, DATUM_IN_DIENST, DATUM_UIT_DIENST, KOSTENPLAATS_CODE, KOSTENPLAATS_NAAM, BUSINESS_UNIT_AN_CODE, BUSINESS_UNIT_AN_NAAM, AFDELING_AKZO_CODE, AFDELING_AKZO_NAAM, FIRMANAAM, NEVENFUNCTIE_CODE, NEVENFUNCTIE_NAAM, WERKPLEK_CODE, WERKPLEK_NAAM, RUIMTE_CODE, RUIMTE_NAAM ) AS SELECT UPPER (sd.ins_srtdeel_eenheid) persontype, ins_srtdeel_nr displaytype_code, ins_srtdeel_omschrijving displaytype_naam, d.ins_deel_omschrijving personeelsnummer, p.prs_perslid_voornaam roepnaam, p.prs_perslid_voorletters voorletters, p.prs_perslid_tussenvoegsel tussenvoegsel, p.prs_perslid_naam achternaam, d.ins_deel_aanmaak datum_in_dienst, d.ins_deel_vervaldatum datum_uit_dienst, a.prs_afdeling_naam kostenplaats_code, a.prs_afdeling_omschrijving kostenplaats_naam, '' business_unit_an_code, ru.reporting_unit business_unit_an_naam, '' afdeling_akzo_code, '' afdeling_akzo_naam, bedrijf.ins_kenmerkdeel_waarde firmanaam, nevenfunctie_new.nevenf_code nevenfunctie_code, COALESCE (nevenfunctie_new.nevenf_omschr, nevenfunctie.prs_kenmerklink_waarde) nevenfunctie_naam, werkplek_new.werkplek_code werkplek_code, werkplek_new.werkplek_omschr werkplek_naam, werkplek.ruimte_nr ruimte_code, werkplek.alg_ruimte_omschrijving ruimte_naam FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, prs_perslid p, prs_afdeling a, (SELECT kl.prs_kenmerklink_waarde, kl.prs_link_key prs_perslid_key FROM prs_kenmerklink kl WHERE kl.prs_kenmerk_key = 1040 AND kl.prs_kenmerklink_verwijder IS NULL) nevenfunctie, (SELECT ud.fac_usrdata_code nevenf_code, ud.fac_usrdata_omschr nevenf_omschr, kl.prs_link_key prs_perslid_key FROM prs_kenmerklink kl, fac_usrdata ud WHERE kl.prs_kenmerk_key = 1060 AND kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key AND ud.fac_usrtab_key = 241) nevenfunctie_new, (SELECT ud.fac_usrdata_code werkplek_code, ud.fac_usrdata_omschr werkplek_omschr, kl.prs_link_key prs_perslid_key FROM prs_kenmerklink kl, fac_usrdata ud WHERE kl.prs_kenmerk_key = 1080 AND kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key AND ud.fac_usrtab_key = 261) werkplek_new, (SELECT kd.ins_deel_key, kd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE kd.ins_kenmerk_key = 41 AND kd.ins_kenmerkdeel_verwijder IS NULL) bedrijf, (SELECT min_pw.prs_perslid_key, min_pw.prs_werkplek_key, w.prs_werkplek_omschrijving, g.alg_gebouw_code || '-' || r.alg_ruimte_nr ruimte_nr, r.alg_ruimte_omschrijving FROM prs_werkplek w, alg_ruimte r, alg_verdieping v, alg_gebouw g, ( SELECT prs_perslid_key, MIN (prs_werkplek_key) prs_werkplek_key FROM prs_perslidwerkplek GROUP BY prs_perslid_key) min_pw WHERE w.prs_alg_ruimte_key = r.alg_ruimte_key AND v.alg_verdieping_key = r.alg_verdieping_key AND g.alg_gebouw_key = v.alg_gebouw_key AND min_pw.prs_werkplek_key = w.prs_werkplek_key) werkplek, (SELECT kl.prs_link_key prs_perslid_key, ud.fac_usrdata_omschr reporting_unit FROM prs_kenmerklink kl, prs_kenmerk k, fac_usrtab ut, fac_usrdata ud WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1100 AND kl.prs_kenmerklink_niveau = 'P' AND ud.fac_usrtab_key = ut.fac_usrtab_key AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key) ru WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_srtgroep_key = 1 --- alleen passen Sassenheim AND d.ins_alg_ruimte_type = 'P' AND d.ins_alg_ruimte_key = p.prs_perslid_key AND d.ins_deel_actief = 1 AND d.ins_deel_verwijder IS NULL AND p.prs_perslid_key = nevenfunctie.prs_perslid_key(+) AND p.prs_perslid_key = nevenfunctie_new.prs_perslid_key(+) AND p.prs_perslid_key = werkplek_new.prs_perslid_key(+) AND d.ins_deel_key = bedrijf.ins_deel_key(+) AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_perslid_key = werkplek.prs_perslid_key(+) AND p.prs_perslid_key = ru.prs_perslid_key(+); CREATE OR REPLACE PROCEDURE AKZO_SELECT_EXP_BADGE (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); CURSOR c_badges IS SELECT * FROM AKZO_V_RAP_AANVR_BADGE; v_teller NUMBER; v_rap_count NUMBER; v_kenmerk_key_laatste NUMBER; BEGIN v_teller := 0; v_rap_count := 0; v_aanduiding := 'Init'; v_errormsg := 'Header'; DELETE imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = p_applname; -- Genereer headerregel INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel, fac_rapport_soort) VALUES ( p_applname, v_rap_count, 'PersonType;Displaytype_Code;Displaytype_Naam;Personeelsnummer;Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Datum_in_dienst;Datum_uit_dienst;Kostenplaats_Code;Kostenplaats_Naam;Business_Unit_AN_Code;Business_Unit_AN_Naam;Afdeling_Akzo_Code;Afdeling_Akzo_Naam;Firmanaam;Nevenfunctie_Code;Nevenfunctie_Naam;Werkplek_Code;Werkplek_Naam;Ruimte_Code;Ruimte_Naam', 0); -- Genereer sommatie-, specificatie- en creditregels voor debiteuren FOR rec IN c_badges LOOP v_errormsg := 'Per badge aanvraag een regel toevoegen'; v_teller := v_teller + 1; v_aanduiding := v_teller || ': ' || rec.personeelsnummer; v_rap_count := v_rap_count + 1; -- Sommatieregel INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel, fac_rapport_soort) VALUES ( p_applname, v_rap_count, rec.persontype || ';' || rec.displaytype_code || ';' || rec.displaytype_naam || ';' || rec.personeelsnummer || ';' || rec.roepnaam || ';' || rec.voorletters || ';' || rec.tussenvoegsel || ';' || rec.achternaam || ';' || rec.datum_in_dienst || ';' || rec.datum_uit_dienst || ';' || rec.kostenplaats_code || ';' || rec.kostenplaats_naam || ';' || rec.business_unit_an_code || ';' || rec.business_unit_an_naam || ';' || rec.afdeling_akzo_code || ';' || rec.afdeling_akzo_naam || ';' || rec.firmanaam || ';' || rec.nevenfunctie_code || ';' || rec.nevenfunctie_naam || ';' || rec.werkplek_code || ';' || rec.werkplek_naam || ';' || rec.ruimte_code || ';' || rec.ruimte_naam, 0); END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Onbekende fout!'); COMMIT; END akzo_select_exp_badge; / CREATE OR REPLACE VIEW AKZO_V_EXPORT_EXP_BADGE ( RESULT, RESULT_ORDER ) AS SELECT fac_rapport_regel result, fac_rapport_volgnr result_order FROM fac_rapport WHERE fac_rapport_node = 'EXP_BADGE' ORDER BY fac_rapport_volgnr; CREATE OR REPLACE VIEW AKZO_V_RAP_CATERING_DAGLIJST ( DATUM, HIDE_F_RSV_RUIMTE, LOCATIE, RESNR, HOST, DAG, RUIMTE, VAN, TOT, TIJD_CATERING, AANTAL, ARTIKELOMSCHRIJVING, ARTIKELOPMERKING, CATERING_LOCATIE, BIJZONDERHEDEN, RES_OPMERKINGEN, RES_OMSCHRIJVING ) AS SELECT res_rsv_artikel_levering, r.res_rsv_ruimte_key, locatie.alg_locatie_omschrijving, r.res_reservering_key || '/' || r.res_rsv_ruimte_volgnr, prs_perslid_naam_full, TO_CHAR (res_rsv_ruimte_van, 'DAY') dag, r2a.ruimte_nr ruimte, res_rsv_ruimte_van ruimte_van, res_rsv_ruimte_tot ruimte_tot, TO_CHAR (res_rsv_artikel_levering, 'HH24:MI') levering_catering, aantal, DECODE (UPPER (artikeloms), 'SPECIAL', artikeloms || ': ' || specialomschr, artikeloms) artikeloms, artikelopm, r2a.ruimte_nr catering_locatie, bijzonderheden, r2a.ruimte_opmerking, r2a.ruimte_omschrijving FROM (SELECT rr.res_reservering_key, rr.res_rsv_ruimte_volgnr, rr.res_rsv_ruimte_key, rr.res_rsv_ruimte_van, rr.res_rsv_ruimte_tot, ra.res_rsv_artikel_key, ra.res_rsv_artikel_levering, act.res_srtactiviteit_key, a.res_artikel_key, a.res_artikel_nr artikelnr, a.res_artikel_omschrijving artikeloms, a.res_artikel_opmerking artikelopm, d.ins_discipline_key, d.ins_discipline_omschrijving catalogus, ra.res_status_bo_key status, ra.res_rsv_artikel_aantal aantal, a.res_artikel_eenheid eenheid, pf.prs_perslid_key, pf.prs_perslid_naam_full, opmerking.bijzonderheden bijzonderheden, special.specialomschr FROM res_rsv_artikel ra, res_artikel a, res_discipline d, res_rsv_ruimte rr, res_activiteit act, prs_v_perslid_fullnames pf, (SELECT kw.res_rsv_ruimte_key, res_kenmerkreservering_waarde bijzonderheden FROM res_kenmerk k, res_srtkenmerk sk, res_kenmerkwaarde kw WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key AND res_srtkenmerk_upper = 'BIJZONDERHEDEN' AND kw.res_kenmerk_key = k.res_kenmerk_key) opmerking, (SELECT ka.res_rsv_artikel_key, res_kenmerkartikel_waarde specialomschr FROM res_kenmerkartikel ka, res_kenmerk k, res_srtkenmerk sk WHERE k.res_kenmerk_key = ka.res_kenmerk_key AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key AND ka.res_kenmerkartikel_verwijder IS NULL AND sk.res_srtkenmerk_upper = 'OMSCHRIJVING ARTIKEL') special WHERE ra.res_rsv_artikel_verwijder IS NULL AND ra.res_rsv_ruimte_key = opmerking.res_rsv_ruimte_key(+) AND ra.res_rsv_artikel_key = special.res_rsv_artikel_key(+) AND a.res_artikel_key = ra.res_artikel_key AND d.ins_discipline_key = a.res_discipline_key AND d.ins_discipline_min_level = 2 AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key AND act.res_activiteit_key = rr.res_activiteit_key AND pf.prs_perslid_key = rr.res_rsv_ruimte_host_key) r, ( SELECT res_rsv_ruimte_key, MAX (r.res_rsv_ruimte_omschrijving) ruimte_omschrijving, MAX (r.res_rsv_ruimte_opmerking) ruimte_opmerking, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ro.res_ruimte_opstel_bezoekers) capaciteit, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+) AND ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key(+) AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, rrr.res_rsv_ruimte_omschrijving ruimte_omschrijving, rrr.res_rsv_ruimte_opmerking ruimte_opmerking, '' opstelling, NULL capaciteit, rrr.alg_ruimte_key, r.alg_ruimte_nr FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a, (SELECT l.alg_locatie_key, alg_locatie_code, alg_locatie_omschrijving, r.alg_ruimte_key FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key) locatie WHERE locatie.alg_ruimte_key = r2a.alg_ruimte_key AND r.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+); CREATE OR REPLACE VIEW AKZO_V_RAP_CATERING_LABELS AS SELECT datum hide_f_datum, hide_f_rsv_ruimte, resnr, HOST, van, TO_CHAR (van, 'dd-mm-yyyy') datum, tijd_catering, catering_locatie, res_omschrijving, bijzonderheden, LISTAGG (aantal || 'x ' || artikelomschrijving, CHR (10)) WITHIN GROUP (ORDER BY hide_f_rsv_ruimte, tijd_catering) catering FROM AKZO_V_RAP_CATERING_DAGLIJST WHERE locatie = 'Sassenheim' GROUP BY datum, hide_f_rsv_ruimte, resnr, van, TO_CHAR (van, 'dd-mm-yyyy'), HOST, ruimte, tijd_catering, catering_locatie, res_omschrijving, bijzonderheden; CREATE OR REPLACE PROCEDURE akzo_daily AS BEGIN -- mandaat voor alle AN medewerkers akzo.prs_mandaten (); -- medewerkers zonder AN mailadres of login verwijderen uit _default akzo.prs_autorisaties (); END; / CREATE OR REPLACE PROCEDURE akzo_import_perslid (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_aantal_in_FCLT NUMBER; BEGIN v_errorhint := 'Generieke update'; -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc prs.import_perslid ( p_import_key, '1;2;3;4;5;6;7;8;9;11;' || '10;0;0;0;0;13;14;15;0;17;' || '16;0;0;12;0;0;0;0;0;0;' || '0;0;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', 'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Werkplekvolgnummer;Omschrijving;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password'); 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; / CREATE OR REPLACE PROCEDURE akzo_update_perslid (p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_sleutelkolom VARCHAR2 (200); v_count NUMBER (10); v_ongeldig NUMBER (1); v_count_update NUMBER (10); v_count_error NUMBER (10); v_count_tot NUMBER (10); v_wpcount_error NUMBER (10); -- v_perslid_key NUMBER (10); v_perslid_nr VARCHAR2 (100); v_afdeling_key NUMBER (10); v_srtperslid_key NUMBER (10); v_prs_perslid_naam VARCHAR2 (200); v_prs_perslid_tussenvoegsel VARCHAR2 (200); v_kostenplaats_nr VARCHAR2 (100); v_locatie_key NUMBER (10); v_gebouw_key NUMBER (10); v_verdieping_key NUMBER (10); v_ruimte_key NUMBER (10); v_space VARCHAR2 (1); --- import van perslid CURSOR c_imp_perslid IS SELECT * FROM fac_imp_perslid ip; BEGIN v_count_update := 0; v_count_tot := 0; v_count_error := 0; v_wpcount_error := 0; SELECT COUNT (*) INTO v_count FROM fac_imp_perslid; IF v_count < 500 THEN fac.imp_writelog ( p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', 'Zie Specificatie'); RETURN; END IF; ---------------------------------------------------- --- BEGIN STANDAARD IMPORT ------------------------- ---------------------------------------------------- FOR rec IN c_imp_perslid LOOP BEGIN v_aanduiding := ''; v_errormsg := ''; v_errorhint := ''; v_count_tot := v_count_tot + 1; v_aanduiding := rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '| '; v_errormsg := ''; v_errorhint := 'Fout bij bepalen functie'; SELECT prs_srtperslid_key INTO v_srtperslid_key FROM prs_srtperslid WHERE prs_srtperslid_verwijder IS NULL AND UPPER (prs_srtperslid_omschrijving) = UPPER (rec.prs_srtperslid_omschrijving); IF rec.prs_perslid_email IS NOT NULL THEN v_sleutelkolom := 'EMAIL'; ELSE v_sleutelkolom := 'NR'; END IF; v_errorhint := 'Afdeling niet gevonden [' || rec.prs_afdeling_naam || ']'; SELECT a.prs_afdeling_key INTO v_afdeling_key FROM prs_v_aanwezigafdeling_boom b, prs_afdeling a WHERE UPPER (a.prs_afdeling_naam) = UPPER (rec.prs_afdeling_naam) AND a.prs_afdeling_verwijder IS NULL AND a.prs_afdeling_key = b.prs_afdeling_key; v_space := ''; -- kijk hoe we met partnernamen moeten omgaan: IF rec.prs_perslid_naamgebruik_code = 0 THEN -- normaal gebruik van naam. Eigen naam wordt gebruikt v_prs_perslid_naam := rec.prs_perslid_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel; ELSIF rec.prs_perslid_naamgebruik_code = 1 THEN -- personen die de geboortenaam van de partner icm de eigen naam willen gebruiken IF rec.prs_perslid_tussenvoegsel IS NOT NULL THEN v_space := ' '; END IF; v_prs_perslid_naam := rec.prs_perslid_partner_naam || ' - ' || rec.prs_perslid_tussenvoegsel || v_space || rec.prs_perslid_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_partner_tussenv; ELSIF rec.prs_perslid_naamgebruik_code = 2 THEN -- personen die de geboortenaam van de partner willen gebruiken v_prs_perslid_naam := rec.prs_perslid_partner_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_partner_tussenv; ELSIF rec.prs_perslid_naamgebruik_code = 3 THEN -- personen die de eigen naam icm de geboortenaam van de partner willen gebruiken IF rec.prs_perslid_partner_tussenv IS NOT NULL THEN v_space := ' '; END IF; v_prs_perslid_naam := rec.prs_perslid_naam || ' - ' || rec.prs_perslid_partner_tussenv || v_space || rec.prs_perslid_partner_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel; END IF; IF LENGTH (v_prs_perslid_naam) > 60 THEN v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60); fac.imp_writelog ( p_import_key, 'W', rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '| ' || 'Samengestelde achternaam is te lang', 'Aanduiding wordt afgebroken tot [' || v_prs_perslid_naam || ']'); END IF; -- v_sleutelkolom -- NR = prs_perslid_nr -- LOGIN = prs_perslid_oslogin v_errorhint := 'Kijken of de persoon al bestaat'; SELECT MAX (prs_perslid_key), COUNT (*) INTO v_perslid_key, v_count FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND ( ( UPPER (v_sleutelkolom) = 'NR' AND UPPER (prs_perslid_nr) = UPPER (rec.prs_perslid_nr)) OR ( UPPER (v_sleutelkolom) = 'EMAIL' AND UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email))); IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen persoon'; INSERT INTO prs_perslid (prs_perslid_module, prs_srtperslid_key, prs_afdeling_key, prs_perslid_naam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_perslid_nr, prs_perslid_geslacht, prs_perslid_titel, prs_perslid_dienstverband, prs_perslid_oslogin, prs_perslid_apikey) VALUES ('PRS', v_srtperslid_key, v_afdeling_key, v_prs_perslid_naam, rec.prs_perslid_voorletters, v_prs_perslid_tussenvoegsel, rec.prs_perslid_voornaam, rec.prs_perslid_telefoonnr, rec.prs_perslid_mobiel, rec.prs_perslid_email, rec.prs_perslid_nr, rec.prs_perslid_geslacht, rec.prs_perslid_titel, rec.prs_perslid_dienstverband, rec.prs_perslid_oslogin, rec.prs_perslid_apikey) RETURNING prs_perslid_key INTO v_perslid_key; prs.setpassword (v_perslid_key, rec.prs_perslid_wachtwoord); COMMIT; v_count_update := v_count_update + 1; ELSIF v_count = 1 THEN UPDATE prs_perslid SET prs_srtperslid_key = v_srtperslid_key, prs_afdeling_key = v_afdeling_key, prs_perslid_naam = v_prs_perslid_naam, prs_perslid_voorletters = rec.prs_perslid_voorletters, prs_perslid_tussenvoegsel = v_prs_perslid_tussenvoegsel, prs_perslid_voornaam = rec.prs_perslid_voornaam, prs_perslid_nr = rec.prs_perslid_nr, prs_perslid_dienstverband = rec.prs_perslid_dienstverband, prs_perslid_geslacht = rec.prs_perslid_geslacht, prs_perslid_titel = rec.prs_perslid_titel, prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr, prs_perslid_mobiel = rec.prs_perslid_mobiel, prs_perslid_email = rec.prs_perslid_email, prs_perslid_oslogin = rec.prs_perslid_oslogin, prs_perslid_apikey = rec.prs_perslid_apikey WHERE prs_perslid_key = v_perslid_key; IF rec.prs_perslid_wachtwoord IS NOT NULL THEN prs.setpassword (v_perslid_key, rec.prs_perslid_wachtwoord); END IF; END IF; -- Voor CUST-postprocessing (van de kenmerken) is het handig te onthouden: UPDATE fac_imp_perslid SET prs_perslid_key = v_perslid_key WHERE fac_import_key = rec.fac_import_key AND fac_imp_file_index = rec.fac_imp_file_index; COMMIT; -- persoon in ieder geval toegevoegd. v_aanduiding := rec.prs_perslid_nr || '|' || rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '|' || rec.alg_locatie_code || '|' || rec.alg_gebouw_code || '|' || rec.alg_verdieping_volgnr || '|' || rec.alg_ruimte_nr || ' - '; v_locatie_key := NULL; v_gebouw_key := NULL; v_verdieping_key := NULL; v_ruimte_key := NULL; v_errorhint := 'Fout bij bepalen locatie'; SELECT MAX (alg_locatie_key) INTO v_locatie_key FROM alg_v_aanweziglocatie WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code); v_errorhint := 'Fout bij bepalen gebouw'; SELECT MAX (alg_gebouw_key) INTO v_gebouw_key FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_code) = UPPER (rec.alg_gebouw_code) AND alg_locatie_key = v_locatie_key; v_errorhint := 'Fout bij bepalen verdieping'; SELECT MAX (alg_verdieping_key) INTO v_verdieping_key FROM alg_v_aanwezigverdieping WHERE UPPER (alg_verdieping_volgnr) = UPPER (rec.alg_verdieping_volgnr) AND alg_gebouw_key = v_gebouw_key; v_errorhint := 'Fout bij bepalen beoogde ruimte'; SELECT MAX (alg_ruimte_key) INTO v_ruimte_key FROM alg_v_aanwezigruimte r WHERE r.alg_ruimte_upper_nr = UPPER (rec.alg_ruimte_nr) AND r.alg_verdieping_key = v_verdieping_key; -- standaard ruimte moet door cust gedeelte van deFout bij bepalen beoogde ruimte import ingevuld worden. -- als er een locatie ingevuld is willen we ook een ruimte vinden. IF v_ruimte_key IS NULL AND rec.alg_locatie_code IS NOT NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding || ' Ruimte kan niet gevonden worden', 'Controleer locatie,gebouw en verdieping'); END IF; -- fouten bij het bepalen van de werkplek worden als waarschuwing weergegeven. BEGIN v_errorhint := 'Fout bij het aanpassen van de werkplek'; PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'A'); EXCEPTION WHEN OTHERS THEN v_wpcount_error := v_wpcount_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, v_errorhint); END; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; -- tbv logging END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'Persoon: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Persoon: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Werkplek: verwerkte regels met foutmelding: ' || TO_CHAR (v_wpcount_error), ''); END; / CREATE OR REPLACE VIEW AKZO_V_NOTI_INS_TBADGE ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY ) AS SELECT 'CUST01', NULL, aanvrager, 'Tijdelijke badge verloopt: ' || vervaldatum || ' (badgenummer: ' || pasnr || ', pashouder: ' || pashouder_naam || ')', pashouder, NULL FROM (SELECT d.ins_deel_key, d.ins_deel_omschrijving pasnr, d.ins_deel_vervaldatum vervaldatum, d.ins_alg_ruimte_key pashouder, aanvr.prs_perslid_key aanvrager, ph.prs_perslid_naam_friendly pashouder_naam FROM ins_deel d, ins_srtdeel sd, (SELECT kd.ins_deel_key, ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_kenmerk_key = kd.ins_kenmerk_key AND sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND sk.ins_srtkenmerk_upper = 'PAS AANGEVRAAGD DOOR') kd, prs_perslid aanvr, prs_v_perslid_fullnames_all ph WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND d.ins_deel_key = kd.ins_deel_key AND d.ins_alg_ruimte_key = ph.prs_perslid_key AND kd.ins_kenmerkdeel_waarde = aanvr.prs_perslid_key AND d.ins_alg_ruimte_type = 'P' AND sd.ins_srtdeel_code_upper NOT LIKE 'AN%' AND sd.ins_srtgroep_key IN (1, 181) AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 AND TRUNC (d.ins_deel_vervaldatum) = TRUNC (SYSDATE + 14)) PAS; CREATE OR REPLACE VIEW AKZO_V_THEMA_VLOERAFWERKING ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT r.alg_ruimte_key, va.fac_usrdata_omschr FROM alg_ruimte r, (SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr FROM alg_onrgoedkenmerk ok, fac_usrdata ud, fac_kenmerkdomein rk, alg_kenmerk k, alg_v_aanwezigruimte rr WHERE rk.fac_usrtab_key = ud.fac_usrtab_key AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde AND k.alg_kenmerk_key = 1001 AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va WHERE va.alg_ruimte_key = r.alg_ruimte_key; CREATE OR REPLACE VIEW AKZO_V_NOTI_BADGE_SSH ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT DISTINCT NULL sender, NULL receiver, sm.mld_stdmelding_omschrijving, fac_srtnotificatie_code, n.fac_srtnotificatie_key, m.mld_melding_key, NULL xkey, 'BeveiligingSassenheim@akzonobel.com' xemail, NULL xmobile FROM fac_tracking t, mld_melding m, mld_stdmelding sm, fac_srtnotificatie n WHERE t.fac_tracking_refkey = m.mld_melding_key AND t.fac_srtnotificatie_key = 50 AND n.fac_srtnotificatie_code = 'CUST02' AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_stdmelding_key IN (41, 42) -- Aanvraag/ Verlengen badge AND t.fac_tracking_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE UPPER (fac_notificatie_job_view) = 'AKZO_V_NOTI_BADGE_SSH') AND t.fac_tracking_datum < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE UPPER (fac_notificatie_job_view) = 'AKZO_V_NOTI_BADGE_SSH'); CREATE OR REPLACE VIEW AKZO_V_RUIMTE ( ALG_RUIMTE_KEY, ALG_RUIMTE_OMSCHRIJVING, ALG_RUIMTE_VERWIJDER ) AS SELECT r.alg_ruimte_key, g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr || ' ' || r.alg_ruimte_omschrijving, r.alg_ruimte_verwijder FROM alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE g.alg_locatie_key = 1 AND v.alg_gebouw_key = g.alg_gebouw_key AND r.alg_verdieping_key = v.alg_verdieping_key; CREATE OR REPLACE VIEW AKZO_V_KOSTENPLAATS ( PRS_KOSTENPLAATS_KEY, PRS_KOSTENPLAATS_OMSCHRIJVING, PRS_KOSTENPLAATS_VERWIJDER ) AS SELECT prs_kostenplaats_key, prs_kostenplaats_upper || ' - ' || prs_kostenplaats_omschrijving, prs_kostenplaats_verwijder FROM prs_kostenplaats kp; ---------- Rittenadministratie ---------- ----------------------------------------- CREATE OR REPLACE VIEW AKZO_V_RIT_TARIEFGROEP AS SELECT fac_usrdata_key akzo_v_rit_tariefgroep_key, fac_usrdata_code akzo_v_rit_tariefgroep_naam, fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr, 1, INSTR (fac_usrdata_omschr, '-', 1, 1) - 1))) c_tarief, fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr, INSTR (fac_usrdata_omschr, '-', 1, 1) + 1, INSTR (fac_usrdata_omschr, '-', 1, 2) - 1 - INSTR (fac_usrdata_omschr, '-', 1, 1)))) km_tarief, fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr, INSTR (fac_usrdata_omschr, '-', 1, 2) + 1))) uur_tarief FROM fac_usrdata WHERE fac_usrtab_key = 81 AND fac_usrdata_volgnr > 0 AND fac_usrdata_verwijder IS NULL; CREATE OR REPLACE VIEW AKZO_V_RIT_ADRES ( MLD_ADRES_KEY, MLD_ADRES_NAAM, MLD_ADRES_UPPER, MLD_ADRES_BEZOEK_ADRES, MLD_ADRES_BEZOEK_PLAATS, MLD_ADRES_PLAATS_ADRES_NAAM ) AS SELECT mld_adres_key, mld_adres_naam, mld_adres_upper, mld_adres_bezoek_adres, mld_adres_bezoek_plaats, mld_adres_bezoek_plaats || ', ' || mld_adres_bezoek_adres || DECODE (SUBSTR (mld_adres_naam, 1, 5), SUBSTR (mld_adres_bezoek_plaats, 1, 5), '', ', ' || mld_adres_naam) mld_adres_plaats_adres_naam FROM mld_adres WHERE mld_adres_verwijder IS NULL; CREATE OR REPLACE VIEW AKZO_V_RITTEN_RESERVERING_GEG ( RES_RESERVERING_KEY, RES_RSV_RUIMTE_KEY, RES_RSV_RUIMTE_VOLGNR, CHAUFFEUR, OMSCHRIJVING, OPMERKING, AUTO, DATUM_VAN, TIJD_VAN, DATUM_TOT, TIJD_TOT, GASTHEERVROUW, PRS_PERSLID_KEY, PRS_AFDELING_NAAM, PRS_KOSTENPLAATS_NR, PRS_KOSTENPLAATS_OMSCHRIJVING ) AS SELECT res.res_reservering_key, ruim.res_rsv_ruimte_key, ruim.res_rsv_ruimte_volgnr, chauf.res_ruimte_nr AS chauffeur, ruim.res_rsv_ruimte_omschrijving AS omschrijving, ruim.res_rsv_ruimte_opmerking AS opmerking, auto.ins_deel_omschrijving AS auto, ruim.res_rsv_ruimte_van datum_van, TO_CHAR (ruim.res_rsv_ruimte_van, 'HH24:MI') tijd_van, ruim.res_rsv_ruimte_tot datum_tot, TO_CHAR (ruim.res_rsv_ruimte_tot, 'HH24:MI') tijd_tot, p.prs_perslid_naam || DECODE (COALESCE (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (COALESCE (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') gastheervrouw, p.prs_perslid_key, afd.prs_afdeling_naam, kpl.prs_kostenplaats_nr, kpl.prs_kostenplaats_omschrijving FROM res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte ruim, res_v_aanwezigrsv_deel deel, (SELECT INS_DI.ins_discipline_key, INS_SG.ins_srtgroep_key, INS_SD.ins_srtdeel_key, INS_SD.ins_srtdeel_code || ' - ' || INS_SD.ins_srtdeel_omschrijving, INS_DE.ins_alg_locatie_key, INS_AO.alg_gebouw_key, INS_AO.alg_verdieping_key, INS_AO.alg_ruimte_key, INS_AO.prs_werkplek_key, INS_AO.alg_terreinsector_key, INS_AO.alg_plaatsaanduiding, INS_DE.ins_deel_key, INS_DE.ins_deel_omschrijving, RES_DE.res_deel_key, RES_DE.res_deel_eenheid, RES_DE.res_deel_prijs, DECODE (RES_DE.res_deel_key, NULL, 0, 1) FROM ins_v_aanwezigdeel INS_DE, ins_tab_discipline INS_DI, ins_v_alg_overzicht INS_AO, ins_srtdeel INS_SD, ins_srtgroep INS_SG, res_v_aanwezigdeel RES_DE WHERE INS_DE.ins_deel_key = RES_DE.res_ins_deel_key(+) AND INS_DE.ins_deel_module = 'INS' AND INS_DE.ins_deel_parent_key IS NULL AND INS_AO.alg_onroerendgoed_keys = INS_DE.ins_alg_ruimte_key AND INS_AO.alg_onroerendgoed_type = INS_DE.ins_alg_ruimte_type AND INS_AO.alg_locatie_key = INS_DE.ins_alg_locatie_key AND INS_SD.ins_srtdeel_key = INS_DE.ins_srtdeel_key AND INS_SG.ins_srtgroep_key = INS_SD.ins_srtgroep_key AND INS_DI.ins_discipline_key = INS_DE.ins_discipline_key AND INS_DE.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline)) auto, res_ruimte_opstelling opstel, res_ruimte chauf, prs_perslid p, prs_afdeling afd, prs_kostenplaats kpl WHERE res.res_reservering_key = ruim.res_reservering_key AND ruim.res_rsv_ruimte_key = deel.res_rsv_ruimte_key(+) AND deel.res_deel_key = auto.res_deel_key(+) AND ruim.res_ruimte_opstel_key = opstel.res_ruimte_opstel_key AND opstel.res_ruimte_key = chauf.res_ruimte_key AND p.prs_perslid_key = ruim.res_rsv_ruimte_host_key AND p.prs_afdeling_key = afd.prs_afdeling_key AND ruim.prs_kostenplaats_key = kpl.prs_kostenplaats_key(+) -- activiteit Rit AND ruim.res_activiteit_key = 210; CREATE OR REPLACE VIEW AKZO_V_RITTEN_RAPPORTAGE ( RES_RESERVERING_KEY, RES_RSV_RUIMTE_VOLGNR, RES_RSV_RUIMTE_KEY, CHAUFFEUR, OMSCHRIJVING, OPMERKING, AUTO, DATUM_VAN, TIJD_VAN, DATUM_TOT, TIJD_TOT, PRS_PERSLID_KEY, GASTHEERVROUW, PRS_AFDELING_NAAM, PRS_KOSTENPLAATS_NR, PRS_KOSTENPLAATS_OMSCHRIJVING, AFWIJKEND_VAN_TIJD, VIA_TIJD, AFWIJKEND_TOT_TIJD, STANDAARD_VAN, STANDAARD_VAN_PLAATSNAAM, AFWIJKEND_VAN_PLAATS, AFWIJKEND_VAN_ADRES, STANDAARD_VIA, STANDAARD_VIA_PLAATSNAAM, AFWIJKEND_VIA_PLAATS, AFWIJKEND_VIA_ADRES, STANDAARD_NAAR, STANDAARD_NAAR_PLAATSNAAM, AFWIJKEND_NAAR_PLAATS, AFWIJKEND_NAAR_ADRES, CHAUFF_VAN_TIJD, CHAUFF_TOT_TIJD, CHAUFF_KM, DOORBELAST_UREN, DOORBELAST_KM ) AS SELECT ritres.res_reservering_key, ritres.res_rsv_ruimte_volgnr, ritres.res_rsv_ruimte_key, ritres.chauffeur, ritres.omschrijving, ritres.opmerking, ritres.auto, ritres.datum_van, ritres.tijd_van, ritres.datum_tot, ritres.tijd_tot, ritres.prs_perslid_key, ritres.gastheervrouw, ritres.prs_afdeling_naam, ritres.prs_kostenplaats_nr, ritres.prs_kostenplaats_omschrijving, -- 'Vertrektijd (afwijkend)' (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 88 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key) afwijkend_van_tijd, -- 'Via-tijd' (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 94 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key) via_tijd, -- 'Aankomsttijd (afwijkend)' (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 100 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key) afwijkend_tot_tijd, -- 'Standaard vertrekplaats' (SELECT van.mld_adres_plaats_adres_naam FROM res_kenmerkwaarde k, akzo_v_rit_adres van WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 83 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key) standaard_van, -- 'Standaard vertrekplaats' (SELECT van.mld_adres_bezoek_plaats FROM res_kenmerkwaarde k, akzo_v_rit_adres van WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 83 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key) standaard_van_plaatsnaam, -- 'Vertrekplaatsnaam (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 86) afwijkend_van_plaats, -- 'Vertrekadres (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 87) afwijkend_van_adres, -- 'Standaard via-adres' (SELECT van.mld_adres_plaats_adres_naam FROM res_kenmerkwaarde k, akzo_v_rit_adres van WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 90 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key) standaard_via, -- 'Standaard via-adres' (SELECT van.mld_adres_bezoek_plaats FROM res_kenmerkwaarde k, akzo_v_rit_adres van WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 90 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key) standaard_via_plaatsnaam, -- 'Via-plaatsnaam (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 92) afwijkend_via_plaats, -- 'Via-adres (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 93) afwijkend_via_adres, -- 'Standaard aankomstplaats' (SELECT naar.mld_adres_plaats_adres_naam FROM akzo_v_rit_adres naar, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 96 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = naar.mld_adres_key) standaard_naar, -- 'Standaard aankomstplaats' (SELECT naar.mld_adres_bezoek_plaats FROM akzo_v_rit_adres naar, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 96 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = naar.mld_adres_key) standaard_naar_plaatsnaam, -- 'Aankomstplaatsnaam (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 98) afwijkend_naar_plaats, -- 'Aankomstadres (afwijkend)' (SELECT k.res_kenmerkreservering_waarde FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 99) afwijkend_naar_adres, -- 'Vertrektijd (werkelijk)' (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 103 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key) chauff_van_tijd, -- 'Aankomsttijd (werkelijk)' (SELECT fd.fac_usrdata_omschr FROM fac_usrdata fd, res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 104 AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key) chauff_tot_tijd, -- 'Gereden km' (SELECT fac.safe_to_number ( REPLACE (k.res_kenmerkreservering_waarde, ',', '.')) FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 105) chauff_km, -- 'Aantal uren' (SELECT fac.safe_to_number ( REPLACE (k.res_kenmerkreservering_waarde, ',', '.')) FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 108) doorbelast_uren, -- 'Aantal km' (SELECT fac.safe_to_number ( REPLACE (k.res_kenmerkreservering_waarde, ',', '.')) FROM res_kenmerkwaarde k WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key AND k.res_kenmerk_key = 107) doorbelast_km FROM akzo_v_ritten_reservering_geg ritres; CREATE OR REPLACE VIEW AKZO_V_RIT_GEPLANDE_RITTEN ( DATUM, DAG, STARTTIJD, VIATIJD, TOTTIJD, VAN, VIA, NAAR, FCLT_F_OPDRACHTGEVER, FCLT_F_CHAUFFEUR, FCLT_F_AUTO, TOELICHTINGEN, HIDE_F_RESERVERINGKEY, HIDE_F_RESERVERINGVOLGNR, HIDE_F_GASTHEERVROUW, FCLT_F_KOSTENPLAATS, HIDE_F_AFDELING ) AS SELECT datum_van datum, DECODE (TO_CHAR (datum_van, 'D'), 1, 'Zondag', 2, 'Maandag', 3, 'Dinsdag', 4, 'Woensdag', 5, 'Donderdag', 6, 'Vrijdag', 7, 'Zaterdag', '') AS Dag, COALESCE (chauff_van_tijd, afwijkend_van_tijd, tijd_van) AS Starttijd, via_tijd AS Viatijd, COALESCE (chauff_tot_tijd, afwijkend_tot_tijd, tijd_tot) AS Tottijd, DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres, ', ', standaard_van, afwijkend_van_plaats || ', ' || afwijkend_van_adres) AS Van, DECODE (afwijkend_via_plaats || ', ' || afwijkend_via_adres, ', ', standaard_via, afwijkend_via_plaats || ', ' || afwijkend_via_adres) AS Via, DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres, ', ', standaard_naar, afwijkend_naar_plaats || ', ' || afwijkend_naar_adres) AS Naar, prs_afdeling_naam AS fclt_f_Opdrachtgever, chauffeur AS fclt_f_chauffeur, auto AS fclt_f_auto, opmerking AS Toelichtingen, res_reservering_key AS hide_f_reserveringkey, res_rsv_ruimte_volgnr AS hide_f_reserveringvolgnr, gastheervrouw AS hide_f_gastheervrouw, prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving AS fclt_f_kostenplaats, prs_afdeling_naam AS hide_f_afdeling FROM akzo_v_ritten_rapportage; CREATE OR REPLACE VIEW AKZO_V_RIT_GEPLANDE_RITTEN ( DATUM, DAG, STARTTIJD, VIATIJD, TOTTIJD, VAN, VIA, NAAR, FCLT_F_OPDRACHTGEVER, FCLT_F_CHAUFFEUR, FCLT_F_AUTO, TOELICHTINGEN, HIDE_F_RESERVERINGKEY, HIDE_F_RESERVERINGVOLGNR, HIDE_F_GASTHEERVROUW, FCLT_F_KOSTENPLAATS, HIDE_F_AFDELING ) AS SELECT datum_van datum, DECODE (TO_CHAR (datum_van, 'D'), 1, 'Zondag', 2, 'Maandag', 3, 'Dinsdag', 4, 'Woensdag', 5, 'Donderdag', 6, 'Vrijdag', 7, 'Zaterdag', '') AS Dag, COALESCE (chauff_van_tijd, afwijkend_van_tijd, tijd_van) AS Starttijd, via_tijd AS Viatijd, COALESCE (chauff_tot_tijd, afwijkend_tot_tijd, tijd_tot) AS Tottijd, DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres, ', ', standaard_van, afwijkend_van_plaats || ', ' || afwijkend_van_adres) AS Van, DECODE (afwijkend_via_plaats || ', ' || afwijkend_via_adres, ', ', standaard_via, afwijkend_via_plaats || ', ' || afwijkend_via_adres) AS Via, DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres, ', ', standaard_naar, afwijkend_naar_plaats || ', ' || afwijkend_naar_adres) AS Naar, prs_afdeling_naam AS fclt_f_Opdrachtgever, chauffeur AS fclt_f_chauffeur, auto AS fclt_f_auto, opmerking AS Toelichtingen, res_reservering_key AS hide_f_reserveringkey, res_rsv_ruimte_volgnr AS hide_f_reserveringvolgnr, gastheervrouw AS hide_f_gastheervrouw, prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving AS fclt_f_kostenplaats, prs_afdeling_naam AS hide_f_afdeling FROM akzo_v_ritten_rapportage; CREATE OR REPLACE VIEW AKZO_V_RIT_KM_SPEC ( FCLT_F_CHAUFFEUR, FCLT_F_VOERTUIG, DAG, DATUM, VERTREK, AANKOMST, FCLT_F_OPDRACHTGEVER, VAN, NAAR, KILOMETERS ) AS SELECT chauffeur AS fclt_f_chauffeur, auto AS fclt_f_voertuig, DECODE (TO_CHAR (datum_van, 'D'), 1, 'Zondag', 2, 'Maandag', 3, 'Dinsdag', 4, 'Woensdag', 5, 'Donderdag', 6, 'Vrijdag', 7, 'Zaterdag', '') AS Dag, datum_van datum, chauff_van_tijd AS Vertrek, chauff_tot_tijd AS Aankomst, prs_afdeling_naam AS fclt_f_Opdrachtgever, DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres, ', ', standaard_van, afwijkend_van_plaats || ', ' || afwijkend_van_adres) AS Van, DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres, ', ', standaard_naar, afwijkend_naar_plaats || ', ' || afwijkend_naar_adres) AS Naar, TO_NUMBER (chauff_km) AS Kilometers FROM akzo_v_ritten_rapportage; CREATE OR REPLACE VIEW AKZO_V_RITTEN_DOORBELASTING ( RES_RESERVERING_KEY, RES_RSV_RUIMTE_VOLGNR, RES_RSV_RUIMTE_KEY, STATUS, TARIEFGROEP, C_TARIEF, KM_TARIEF, UUR_TARIEF ) AS SELECT res.res_reservering_key, ruim.res_rsv_ruimte_volgnr, ruim.res_rsv_ruimte_key, stat.res_status_bo_omschrijving status, tariefgrp.akzo_v_rit_tariefgroep_naam tariefgroep, tariefgrp.c_tarief, tariefgrp.km_tarief, tariefgrp.uur_tarief FROM res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte ruim, res_status_bo stat, akzo_v_rit_tariefgroep tariefgrp, res_kenmerkwaarde k_tariefgrp WHERE res.res_reservering_key = ruim.res_reservering_key AND ruim.res_status_bo_key = stat.res_status_bo_key -- key van kenmerk Tariefgroep AND k_tariefgrp.res_kenmerk_key = 109 AND fac.safe_to_number (k_tariefgrp.res_kenmerkreservering_waarde) = tariefgrp.akzo_v_rit_tariefgroep_key AND ruim.res_rsv_ruimte_key = k_tariefgrp.res_rsv_ruimte_key -- key van activiteit Rit AND ruim.res_activiteit_key = 210; CREATE OR REPLACE VIEW AKZO_V_RITTEN_ALL_DOORBELAST ( RES_RESERVERING_KEY, RES_RSV_RUIMTE_VOLGNR, RES_RSV_RUIMTE_KEY, CHAUFFEUR, OMSCHRIJVING, OPMERKING, AUTO, DATUM_VAN, TIJD_VAN, DATUM_TOT, TIJD_TOT, PRS_PERSLID_KEY, GASTHEERVROUW, PRS_AFDELING_NAAM, PRS_KOSTENPLAATS_NR, PRS_KOSTENPLAATS_OMSCHRIJVING, AFWIJKEND_VAN_TIJD, VIA_TIJD, AFWIJKEND_TOT_TIJD, STANDAARD_VAN, STANDAARD_VAN_PLAATSNAAM, AFWIJKEND_VAN_PLAATS, AFWIJKEND_VAN_ADRES, STANDAARD_VIA, STANDAARD_VIA_PLAATSNAAM, AFWIJKEND_VIA_PLAATS, AFWIJKEND_VIA_ADRES, STANDAARD_NAAR, STANDAARD_NAAR_PLAATSNAAM, AFWIJKEND_NAAR_PLAATS, AFWIJKEND_NAAR_ADRES, CHAUFF_VAN_TIJD, CHAUFF_TOT_TIJD, CHAUFF_KM, DOORBELAST_UREN, DOORBELAST_KM, STATUS, TARIEFGROEP, C_TARIEF, KM_TARIEF, UUR_TARIEF, TOTAAL ) AS SELECT rit_rap."RES_RESERVERING_KEY", rit_rap."RES_RSV_RUIMTE_VOLGNR", rit_rap."RES_RSV_RUIMTE_KEY", rit_rap."CHAUFFEUR", rit_rap."OMSCHRIJVING", rit_rap."OPMERKING", rit_rap."AUTO", rit_rap."DATUM_VAN", rit_rap."TIJD_VAN", rit_rap."DATUM_TOT", rit_rap."TIJD_TOT", rit_rap."PRS_PERSLID_KEY", rit_rap."GASTHEERVROUW", rit_rap."PRS_AFDELING_NAAM", rit_rap."PRS_KOSTENPLAATS_NR", rit_rap."PRS_KOSTENPLAATS_OMSCHRIJVING", rit_rap."AFWIJKEND_VAN_TIJD", rit_rap."VIA_TIJD", rit_rap."AFWIJKEND_TOT_TIJD", rit_rap."STANDAARD_VAN", rit_rap."STANDAARD_VAN_PLAATSNAAM", rit_rap."AFWIJKEND_VAN_PLAATS", rit_rap."AFWIJKEND_VAN_ADRES", rit_rap."STANDAARD_VIA", rit_rap."STANDAARD_VIA_PLAATSNAAM", rit_rap."AFWIJKEND_VIA_PLAATS", rit_rap."AFWIJKEND_VIA_ADRES", rit_rap."STANDAARD_NAAR", rit_rap."STANDAARD_NAAR_PLAATSNAAM", rit_rap."AFWIJKEND_NAAR_PLAATS", rit_rap."AFWIJKEND_NAAR_ADRES", rit_rap."CHAUFF_VAN_TIJD", rit_rap."CHAUFF_TOT_TIJD", rit_rap."CHAUFF_KM", rit_rap."DOORBELAST_UREN", rit_rap."DOORBELAST_KM", rit_doorb.status, rit_doorb.tariefgroep, rit_doorb.c_tarief, rit_doorb.km_tarief, rit_doorb.uur_tarief, ROUND ( ( rit_doorb.c_tarief + ( rit_doorb.km_tarief * COALESCE (fac.safe_to_number (rit_rap.doorbelast_km), 0)) + ( rit_doorb.uur_tarief * COALESCE (fac.safe_to_number (rit_rap.doorbelast_uren), 0))), 2) AS totaal FROM akzo_v_ritten_rapportage rit_rap, akzo_v_ritten_doorbelasting rit_doorb WHERE rit_rap.res_rsv_ruimte_key = rit_doorb.res_rsv_ruimte_key(+); CREATE OR REPLACE VIEW AKZO_V_RIT_KOSTENOVERZICHT ( CODE, DATUM, VAN, NAAR, FCLT_F_CHAUFFEUR, FCLT_F_VOERTUIG, FCLT_F_OPDRACHTGEVER, KM, UREN, STATUS, TARIEFGROEP, TOTAAL ) AS SELECT TO_CHAR (res_reservering_key) AS Code, datum_van datum, COALESCE (afwijkend_van_plaats, standaard_van_plaatsnaam) AS Van, COALESCE (afwijkend_naar_plaats, standaard_naar_plaatsnaam) AS Naar, chauffeur AS fclt_f_chauffeur, auto AS fclt_f_voertuig, prs_afdeling_naam AS fclt_f_Opdrachtgever, fac.safe_to_number (doorbelast_km) AS Km, fac.safe_to_number (doorbelast_uren) AS Uren, status, tariefgroep, totaal FROM akzo_v_ritten_all_doorbelast; ----- Einde rittenadministratie --------- ----------------------------------------- CREATE OR REPLACE VIEW AKZO_V_RAP_MIJN_WP_RESERVERING ( RES_RSV_RUIMTE_HOST_KEY, RES_RSV_RUIMTE_VAN, RES_RSV_RUIMTE_TOT, ALG_LOCATIE_OMSCHRIJVING, ALG_GEBOUW_OMSCHRIJVING, ALG_VERDIEPING_OMSCHRIJVING, ALG_RUIMTE_NR, RES_DEEL_OMSCHRIJVING, ALG_RUIMTE_AANDUIDING, RES_RSV_RUIMTE_KEY ) AS SELECT rrr.res_rsv_ruimte_host_key, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rg.alg_locatie_omschrijving, rg.alg_gebouw_omschrijving, rg.alg_verdieping_omschrijving, rg.alg_ruimte_nr, rd.res_deel_omschrijving, rg.alg_ruimte_aanduiding, rrr.res_rsv_ruimte_key FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd, alg_v_ruimte_gegevens rg WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rrr.alg_ruimte_key = rg.alg_ruimte_key AND rrr.res_activiteit_key = 230 AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrd.res_rsv_deel_verwijder IS NULL AND rrr.res_rsv_ruimte_van > = TRUNC (SYSDATE); CREATE OR REPLACE VIEW AKZO_V_AFD_AMSTERDAM ( prs_afdeling_key, prs_afdeling_omschrijving, prs_afdeling_verwijder ) AS SELECT prs_afdeling_key, prs_afdeling_omschrijving, prs_afdeling_verwijder FROM prs_afdeling a, prs_kostenplaats kp WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key AND kp.prs_kostenplaats_nr = '00000'; CREATE OR REPLACE VIEW akzo_v_perslid_names ( prs_perslid_key, prs_afdeling_naam, prs_afdeling_omschrijving, prs_perslid_functie, prs_perslid_naam_full, prs_perslid_naam_friendly ) AS SELECT p.prs_perslid_key, prs_a.prs_afdeling_naam, prs_a.prs_afdeling_omschrijving, prs_s.prs_srtperslid_omschrijving, prs_perslid_naam || DECODE (p.prs_perslid_voorletters, NULL, '', ', ' || p.prs_perslid_voorletters) || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (p.prs_perslid_voornaam, NULL, '', ' (' || p.prs_perslid_voornaam || ')') prs_perslid_naam_full, DECODE (p.prs_perslid_voornaam, NULL, '', p.prs_perslid_voornaam || ' ') || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', p.prs_perslid_tussenvoegsel || ' ') || prs_perslid_naam || ' - ' || prs_a.prs_afdeling_omschrijving || ' (' || prs_a.prs_afdeling_naam || ')' prs_perslid_naam_friendly FROM prs_v_aanwezigperslid p, prs_afdeling prs_a, prs_srtperslid prs_s WHERE p.prs_afdeling_key = prs_a.prs_afdeling_key AND p.prs_srtperslid_key = prs_s.prs_srtperslid_key; CREATE OR REPLACE VIEW AKZO_V_NOTI_AANVR_CAT ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT sn.fac_srtnotificatie_code, 3, --- Facilitor NULL receiver, 'Reservering ' || res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || ' bevat een aanvraag voor een buffetlunch' text, res.res_reservering_key key, rra.res_rsv_ruimte_key xkey, 'rest.sassenheim@akzonobel.com' xemail, NULL xmobile FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, ins_tab_discipline c, fac_srtnotificatie sn, res_reservering res, res_v_aanwezigrsv_ruimte rrr, fac_notificatie_job nj WHERE rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = c.ins_discipline_key AND c.ins_discipline_key = 264 AND sn.fac_srtnotificatie_code = 'CUST03' AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key(+) AND rrr.res_reservering_key = res.res_reservering_key AND UPPER (fac_notificatie_job_view) = 'AKZO_V_NOTI_AANVR_CAT' AND ( ( rra.res_rsv_artikel_aanmaak > nj.fac_notificatie_job_lastrun AND rra.res_rsv_artikel_aanmaak < nj.fac_notificatie_job_nextrun) OR nj.fac_notificatie_job_lastrun IS NULL); ------ 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