-- $Id$ -- -- Script containing customer specific db-configuration for PCHD. DEFINE thisfile = 'PCHD.SQL' DEFINE dbuser = '^PCHD' DEFINE custid = 'PCHD' 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 PCHD AS PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2); END; / -- Procedure om een mld_adres node aan de xml toe te voegen voor de het afwijkende adres. -- xmlnode bij het kenmerkdomein moet dan mld_adres heten. CREATE OR REPLACE PACKAGE BODY PCHD AS PROCEDURE create_mld_adres_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2) AS BEGIN XML.create_mld_adres_node (p_key, 'afw_mld_adres' , false); END; END; / CREATE OR REPLACE VIEW pchd_v_imp_prs_perslid_sync ( prs_afdeling_naam, prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voorletters, prs_perslid_voornaam, prs_perslid_titel, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_perslid_apikey, prs_srtperslid_omschrijving, prs_perslid_nr, prs_perslid_oslogin, prs_perslid_oslogin2, prs_perslid_geslacht, prs_perslid_dienstverband ) AS SELECT pg.prs_afdeling_naam, p.prs_perslid_naam, p.prs_perslid_tussenvoegsel, p.prs_perslid_voorletters, p.prs_perslid_voornaam, p.prs_perslid_titel, p.prs_perslid_telefoonnr, p.prs_perslid_mobiel, p.prs_perslid_email, p.prs_perslid_apikey, pg.prs_srtperslid_omschrijving, p.prs_perslid_nr, p.prs_perslid_oslogin, p.prs_perslid_oslogin2, p.prs_perslid_geslacht, p.prs_perslid_dienstverband FROM prs_v_perslid_gegevens pg, prs_perslid p, prs_v_afdeling a WHERE p.prs_perslid_key = pg.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = fac.getsetting ('xd_primary_bedrijfkey'); CREATE OR REPLACE VIEW pchd_v_opdrachtenfacturatie ( maand, district, locatie, vakgroeptype, vakgroep, aantal_opdrachten, totale_kosten_opdrachten, reeds_gefactureerd, nog_te_verwachten_kosten ) AS SELECT TO_CHAR (mo.mld_opdr_datumbegin, 'YYYY-MM'), d.alg_district_omschrijving, l.alg_locatie_omschrijving, insr.ins_srtdiscipline_omschrijving, md.ins_discipline_omschrijving, COUNT (mo.mld_opdr_key), SUM (mo.mld_opdr_kosten), SUM (ff.fin_factuur_totaal), SUM (mo.mld_opdr_kosten) - SUM (ff.fin_factuur_totaal) FROM ins_srtdiscipline insr, mld_discipline md, mld_opdr mo, mld_melding mm, mld_stdmelding mstd, fin_factuur ff, alg_locatie l, alg_district d WHERE insr.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = mstd.mld_ins_discipline_key AND mm.mld_stdmelding_key = mstd.mld_stdmelding_key AND mm.mld_melding_key = mo.mld_melding_key AND mo.mld_opdr_key = ff.mld_opdr_key AND l.alg_locatie_key = mm.mld_alg_locatie_key and d.alg_district_key = l.alg_district_key AND ff.fin_factuur_verwijder IS NULL AND ff.fin_factuur_statuses_key IN (6, 7) -- Ingevoerd, Incompleet, Akkoord, Verwerkt AND mo.mld_statusopdr_key NOT IN (1, 2) GROUP BY TO_CHAR (mo.mld_opdr_datumbegin, 'YYYY-MM'), l.alg_locatie_omschrijving, insr.ins_srtdiscipline_omschrijving, md.ins_discipline_omschrijving, d.alg_district_omschrijving; --View om te zien welke kostenplaatsen er aan een locatie gekoppeld zijn. --PCHD#55359 CREATE OR REPLACE VIEW PCHD_V_RAP_KOSTENPLAATS_LOC ( locatie_omschrijving, kostenplaats_key, kostenplaats_omschrijving ) AS SELECT DISTINCT l.alg_locatie_omschrijving , prsa.prs_kostenplaats_key, kost.prs_kostenplaats_omschrijving FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r, prs_ruimteafdeling ra, prs_afdeling prsa, prs_kostenplaats kost WHERE g.alg_locatie_key = l.alg_locatie_key(+) AND v.alg_gebouw_key (+) = g.alg_gebouw_key AND r.alg_verdieping_key(+) = v.alg_verdieping_key AND r.ALG_RUIMTE_KEY = ra.ALG_RUIMTE_KEY (+) AND prsa.PRS_AFDELING_KEY = ra.PRS_AFDELING_KEY AND prsa.prs_kostenplaats_key = kost.prs_kostenplaats_key; -- draft versie van PPI rapportage voor truckparking CREATE OR REPLACE VIEW pchd_v_rap_mld_truckparking ( hide_f_ts, fclt_d_datum, tijd, fclt_f_locatie, vakgroep, melding, melder, omschrijving, afhandeling, datum_tijd_tht, datum_tijd_afgemeld, telaat ) AS SELECT TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'), TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'), TO_CHAR (mld_melding_datum, 'hh24:mi'), alg_locatie_omschrijving, ins_discipline_omschrijving, mld_stdmelding_omschrijving, pf.prs_perslid_naam_full, mld_melding_omschrijving, mld_melding_opmerking, TO_CHAR (mld_melding_einddatum_std, 'dd-mm-yyyy hh24:mi'), TO_CHAR ( COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1), NULL), 'dd-mm-yyyy hh24:mi'), DECODE ( SIGN(mld_melding_einddatum_std - COALESCE ( COALESCE ( mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)), -1, 'Ja') FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, prs_v_perslid_fullnames_all pf, alg_locatie l WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND d.ins_srtdiscipline_key = 61; --PCHD#53705 - Import personen vanuit AD VolkerWessels CREATE OR REPLACE PROCEDURE pchd_import_perslid (p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER := 0; v_ongeldig NUMBER (1); v_count_tot NUMBER (10); v_count_import NUMBER (10); v_count NUMBER; -- De importvelden: v_prs_perslid_voornaam VARCHAR2 (256); v_prs_perslid_naam VARCHAR2 (256); v_prs_perslid_tussenvoegsel VARCHAR2 (256); v_prs_perslid_oslogin VARCHAR2 (256); v_prs_perslid_oslogin2 VARCHAR2 (256); v_prs_perslid_wm VARCHAR2 (256); v_prs_perslid_organisation VARCHAR2 (256); v_prs_perslid_companycode VARCHAR2 (256); v_prs_afdeling_naam VARCHAR2 (256); v_prs_perslid_costcarrier VARCHAR2 (256); v_prs_srtperslid_omschrijving VARCHAR2 (256); v_prs_perslid_managedby VARCHAR2 (256); v_prs_perslid_email VARCHAR2 (256); v_prs_perslid_telefoonnr VARCHAR2 (256); v_prs_perslid_mobiel VARCHAR2 (256); v_prs_perslid_vestigingsnaam VARCHAR2 (256); v_prs_perslid_vestigingsnummer VARCHAR2 (256); -- Overig: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM pchd_imp_prs; COMMIT; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := ''; v_errorhint := 'Fout bij opvragen te importeren rij'; v_ongeldig := 0; -- Lees alle veldwaarden -- 01 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam); -- 02 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); -- 03 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel); -- 04 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin); -- 05 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_wm); -- 06 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_organisation); -- 07 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_companycode); -- 08 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam); -- 09 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_costcarrier); -- 10 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving); -- 11 --fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_managedby); -- 12 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); -- 13 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr); -- 14 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); -- 15 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_vestigingsnaam); -- 16 fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_vestigingsnummer); -- v_aanduiding := '[' || v_prs_perslid_oslogin || '|' || v_prs_perslid_naam || '|' || v_prs_perslid_tussenvoegsel || '|' || v_prs_perslid_voornaam || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_prs_perslid_voornaam) = 'FIRSTNAME' AND UPPER (v_prs_perslid_naam) = 'LASTNAME' AND UPPER (v_prs_perslid_tussenvoegsel) = 'MIDDLENAME' AND UPPER (v_prs_perslid_oslogin) = 'USERNAME' AND UPPER (v_prs_perslid_wm) = 'WM' AND UPPER (v_prs_perslid_organisation) = 'ORGANISATION' AND UPPER (v_prs_perslid_companycode) = 'COMPANYCODE' AND UPPER (v_prs_afdeling_naam) = 'DEPARTMENT' AND UPPER (v_prs_perslid_costcarrier) = 'COSTCARRIER' AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTION' --AND UPPER (v_prs_perslid_managedby) = 'MANAGEDBY' AND UPPER (v_prs_perslid_email) = 'EMAIL' AND UPPER (v_prs_perslid_telefoonnr) = 'PHONENUMBER' AND UPPER (v_prs_perslid_mobiel) = 'MOBILENUMBER' AND UPPER (v_prs_perslid_vestigingsnaam) = 'VESTIGINGSNAAM' AND UPPER (v_prs_perslid_vestigingsnummer) = 'VESTIGINGSNUMMER' THEN header_is_valid := 1; END IF; ELSE -- v_errorhint := 'Ongeldige naam'; v_prs_perslid_naam := TRIM (v_prs_perslid_naam); IF LENGTH (v_prs_perslid_naam) > 30 THEN v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Naam te lang', 'Naam wordt afgebroken tot [' || v_prs_perslid_naam || ']' ); ELSE IF (v_prs_perslid_naam IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Naam onbekend', 'Naam is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldig tussenvoegsel'; v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel); IF LENGTH (v_prs_perslid_tussenvoegsel) > 10 THEN v_prs_perslid_tussenvoegsel := SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Tussenvoegsel te lang', 'Tussenvoegsel wordt afgebroken tot [' || v_prs_perslid_tussenvoegsel || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige voornaam'; v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam); IF LENGTH (v_prs_perslid_voornaam) > 30 THEN v_prs_perslid_voornaam := SUBSTR (v_prs_perslid_voornaam, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voornaam is te lang', 'Voornaam wordt afgebroken tot [' || v_prs_perslid_voornaam || ']' ); ELSE IF (v_prs_perslid_voornaam IS NULL) THEN v_prs_perslid_voornaam := '-'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voornaam onbekend', 'Voornaam wordt gezet op [-]' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige bedrijfsnaam'; v_prs_perslid_wm := TRIM (v_prs_perslid_wm); IF LENGTH (v_prs_perslid_wm) > 60 THEN v_prs_perslid_wm := SUBSTR (v_prs_perslid_wm, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Bedrijfsnaam te lang', 'Bedrijfsnaam wordt afgebroken tot [' || v_prs_perslid_wm || ']' ); v_ongeldig :=1; ELSE IF (v_prs_perslid_wm IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Bedrijfsnaam onbekend', 'Bedrijfsnaam is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige organisatienaam'; v_prs_perslid_organisation := TRIM (v_prs_perslid_organisation); IF LENGTH (v_prs_perslid_organisation) > 60 THEN v_prs_perslid_organisation := SUBSTR (v_prs_perslid_organisation, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Organisatienaam te lang', 'Organisatienaam wordt afgebroken tot [' || v_prs_perslid_organisation || ']' ); v_ongeldig :=1; ELSE IF (v_prs_afdeling_naam IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Organisatienaam onbekend', 'Organisatienaam is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige afdelingsnaam '; v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam); IF LENGTH (v_prs_afdeling_naam) > 60 THEN v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdelingsnaam te lang', 'Afdelingsnaam wordt afgebroken tot [' || v_prs_afdeling_naam || ']' ); v_ongeldig :=1; ELSE IF (v_prs_afdeling_naam IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdelingsnaam onbekend', 'Afdelingsnaam is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige functie'; -- PCHD#83490 functie op "onbekend" zetten bij pers_import Infra v_prs_srtperslid_omschrijving := 'Onbekend'; COMMIT; -- v_errorhint := 'Ongeldig telefoonnummer'; v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr); IF LENGTH (REPLACE(v_prs_perslid_telefoonnr,' ','')) > 15 THEN v_prs_perslid_telefoonnr := SUBSTR (REPLACE(v_prs_perslid_telefoonnr,' ',''), 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Telefoonnummer te lang', 'Telefoonnummer wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig mobiel nr'; v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel); IF LENGTH (REPLACE(v_prs_perslid_mobiel,' ','')) > 15 THEN v_prs_perslid_telefoonnr := SUBSTR (REPLACE(v_prs_perslid_mobiel,' ',''), 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Mobiel te lang', 'Mobiel wordt afgebroken tot [' || v_prs_perslid_mobiel || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig e-mailadres'; v_prs_perslid_email := TRIM (v_prs_perslid_email); IF LENGTH (v_prs_perslid_email) > 50 THEN v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'E-mailadres te lang', 'E-mailadres wordt afgebroken tot [' || v_prs_perslid_email || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig loginnaam'; v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin); IF LENGTH (v_prs_perslid_oslogin) > 30 THEN v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Loginnaam te lang', 'Loginnaam wordt afgebroken tot [' || v_prs_perslid_oslogin || ']' ); v_ongeldig :=1; COMMIT; END IF; -- IF LENGTH (v_prs_perslid_managedby) > 256 -- THEN -- v_prs_perslid_managedby := -- SUBSTR (v_prs_perslid_managedby, 1, 256); -- fac.imp_writelog (p_import_key, -- 'W', -- v_aanduiding || 'Managed by is te lang', -- 'Managed by wordt afgebroken tot [' -- || v_prs_perslid_managedby -- || ']' -- ); -- COMMIT; -- END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errorhint := 'Fout bij toevoegen regel aan importtabel pchd_imp_prs'; INSERT INTO pchd_imp_prs (prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_afdeling_naam, prs_srtperslid_omschrijving, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_oslogin, prs_perslid_email, prs_perslid_wm, prs_perslid_organisation, prs_perslid_companycode, prs_perslid_costcarrier, --prs_perslid_managedby, prs_perslid_vestigingsnaam, prs_perslid_vestigingsnummer ) VALUES (v_prs_perslid_naam, v_prs_perslid_tussenvoegsel, v_prs_perslid_voornaam, v_prs_afdeling_naam, v_prs_srtperslid_omschrijving, REPLACE(v_prs_perslid_telefoonnr,' ',''), REPLACE(v_prs_perslid_mobiel,' ',''), v_prs_perslid_oslogin, v_prs_perslid_email, v_prs_perslid_wm, v_prs_perslid_organisation, v_prs_perslid_companycode, v_prs_perslid_costcarrier, v_prs_perslid_vestigingsnaam, v_prs_perslid_vestigingsnummer ); COMMIT; v_count_import := v_count_import + 1; 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.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Ingelezen regel kan niet worden weggeschreven!' ); COMMIT; END; END IF; END IF; END; 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.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END pchd_import_perslid; / CREATE OR REPLACE PROCEDURE pchd_update_perslid (p_import_key IN NUMBER) IS -- LET OP: moet idem zijn als declaratie bij pchd_IMPORT_PERSLID c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: '; -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer c_max_delta_percentage NUMBER (10) := 1000; -- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw) c_ruimte_nr VARCHAR2 (10) := '000'; -- Groep waar personen in geplaatst worden (indien nog geen groep) c_groep_upper VARCHAR2 (30) := '_default VWInfra'; c_key_default_rol NUMBER (10) := 661; v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_prs_actual NUMBER (10); v_count_prs_import NUMBER (10); -- Matching actual persons! v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); -- v_perslid_key NUMBER (10); v_afdeling_key NUMBER (10); v_afdeling_parentkey NUMBER (10); v_bedrijf_key NUMBER (10); v_kostenplaats_key NUMBER (10); v_srtperslid_key NUMBER (10); v_locatie_key NUMBER (10); v_gebouw_key NUMBER (10); v_verdieping_key NUMBER (10); v_ruimte_key NUMBER (10); v_wp_key NUMBER (10); v_wp_volgnr NUMBER (3); v_wp_oms VARCHAR2 (30); v_groep_defaultnaam VARCHAR2 (30); v_fac_groep_key NUMBER (10); v_prs_bedrijf_key VARCHAR2 (30); v_prs_afdeling_key VARCHAR2 (30); v_prs_company_key VARCHAR2 (30); v_prs_perslid_costcarrier VARCHAR2 (30); v_prs_perslid_managedby VARCHAR2 (30); v_prs_perslid_oslogin VARCHAR2 (30); v_prs_perslid_oslogin2 VARCHAR2 (30); -- Bepalen alle personen die in aanmerking komen om verwijderd te worden (INACTIEF)! CURSOR cdelprs IS SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam, p.prs_perslid_voornaam FROM prs_v_aanwezigperslid p WHERE p.prs_perslid_oslogin IS NOT NULL AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_' AND EXISTS (SELECT 1 FROM prs_kenmerklink km WHERE km.prs_link_key = p.prs_perslid_key AND km.prs_kenmerk_key = 1041 -- Key voor Kenmerk 'Import personen uit AD'. In ACCEPTATIEOMGEVING BRANCH: 1040 / In PRODUCTIEOMGEVING: 1041 AND km.prs_kenmerklink_waarde = '1461') -- Key voor waarde "Ja" bij kenmerk 'Import personen uit AD'.) AND NOT EXISTS (SELECT 1 FROM pchd_imp_prs ip WHERE UPPER (ip.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin)); --Bepalen alle functie omschrijvingen in het import bestand. CURSOR csperslid IS SELECT UPPER (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving FROM pchd_imp_prs GROUP BY UPPER (prs_srtperslid_omschrijving); --Bepalen alle wm (werkmaatschappijen) in het import bestand. CURSOR cwm IS SELECT UPPER (prs_perslid_wm) prs_perslid_wm FROM pchd_imp_prs WHERE prs_perslid_wm IS NOT NULL GROUP BY UPPER (prs_perslid_wm); --Bepalen alle organisaties in het import bestand (Business Units) CURSOR corg IS SELECT UPPER (prs_perslid_organisation) prs_perslid_organisation, UPPER (prs_perslid_wm) prs_perslid_wm FROM pchd_imp_prs WHERE prs_perslid_organisation IS NOT NULL AND prs_perslid_wm IS NOT NULL GROUP BY UPPER (prs_perslid_organisation), UPPER (prs_perslid_wm); CURSOR cperslid IS SELECT * FROM pchd_imp_prs; CURSOR cwerkplek IS SELECT p.prs_perslid_key, i.prs_perslid_oslogin, MIN (rg_nvt.alg_ruimte_key) alg_ruimte_key, alg_gebouw_key FROM prs_ruimteafdeling ra, pchd_imp_prs i, prs_perslid p, prs_afdeling a, --prs_afdeling bu, alg_v_ruimte_gegevens rg_nvt WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_key = ra.prs_afdeling_key AND rg_nvt.alg_ruimte_key = ra.alg_ruimte_key AND UPPER (rg_nvt.alg_ruimte_nr) = 'N.V.T.' --AND (ra.prs_ruimteafdeling_einddatum IS NULL OR TRUNC(ra.prs_ruimteafdeling_einddatum) < TRUNC(SYSDATE)) --AND bu.prs_afdeling_key = a.prs_afdeling_parentkey AND NOT EXISTS (SELECT prs_perslidwerkplek_key FROM prs_v_perslidwerkplek_gegevens pwpg WHERE pwpg.prs_perslid_key = p.prs_perslid_key AND pwpg.alg_gebouw_key = rg_nvt.alg_gebouw_key) GROUP BY p.prs_perslid_key, i.prs_perslid_oslogin, rg_nvt.alg_gebouw_key; --Bepalen autorisatiegroep CURSOR cgroep IS SELECT prs_perslid_oslogin, prs_perslid_wm, bedrijf_key, groep FROM (SELECT prs_perslid_wm, prs_perslid_oslogin, bedrijf_key, (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_link_key = bedrijf_key AND prs_kenmerk_key = 1140 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL) AS groep FROM (SELECT UPPER (prs_perslid_wm) prs_perslid_wm, prs_perslid_oslogin, (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_perslid_wm = prs_kenmerklink_waarde AND prs_kenmerk_key = 1120 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL) AS bedrijf_key FROM pchd_imp_prs WHERE prs_perslid_wm IS NOT NULL)) WHERE bedrijf_key IS NOT NULL AND groep IS NOT NULL; BEGIN SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * )) INTO v_count_prs_actual FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND prs_perslid_oslogin IS NOT NULL; SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * )) INTO v_count_prs_import FROM prs_perslid p, pchd_imp_prs ip WHERE p.prs_perslid_oslogin IS NOT NULL AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_oslogin = ip.prs_perslid_oslogin; IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >= (100 - c_max_delta_percentage))) THEN -- Geldig importbestand wat betreft aantal personen -- Personen verwijderen/inactiefmaken FOR recdelprs IN cdelprs LOOP BEGIN prs.delete_perslid (p_import_key, recdelprs.prs_perslid_key); END; END LOOP; v_count_tot := 0; v_count_error := 0; -- Toevoegen functies FOR recsperslid IN csperslid LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - '; v_errorhint := 'Fout bij bepalen functie'; SELECT COUNT ( * ) INTO v_count FROM prs_srtperslid WHERE UPPER (prs_srtperslid_omschrijving) = UPPER (recsperslid.prs_srtperslid_omschrijving) AND prs_srtperslid_verwijder IS NULL; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen functie'; INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) VALUES (recsperslid.prs_srtperslid_omschrijving); COMMIT; END IF; 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 || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; v_count_tot := 0; v_count_error := 0; -- Toevoegen bedrijf (wm: werkmaatschappij) FOR recwm IN cwm LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recwm.prs_perslid_wm || ' - '; v_errorhint := 'Fout bij bepalen bedrijf (wm)'; SELECT COUNT ( * ) INTO v_count FROM prs_bedrijf b, prs_kenmerklink bkm WHERE b.prs_bedrijf_key = bkm.prs_link_key AND bkm.prs_kenmerk_key = 1120 -- Kenmerk WM-code Active Directory bij de bedrijven. AND UPPER (bkm.prs_kenmerklink_waarde) = UPPER (recwm.prs_perslid_wm) AND b.prs_bedrijf_verwijder IS NULL; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen bedrijf (wm)'; v_prs_bedrijf_key := NULL; INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern) VALUES (recwm.prs_perslid_wm, 1) RETURNING prs_bedrijf_key INTO v_prs_bedrijf_key; INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerk_key, prs_kenmerklink_waarde) VALUES (v_prs_bedrijf_key, 1120, recwm.prs_perslid_wm); fac.imp_writelog ( p_import_key, 'I', 'Er is een nieuwe werkmaatschappij aangemaakt als bedrijf: ' || recwm.prs_perslid_wm, 'Mogelijk moeten nog aanvullende acties gedaan worden door applicatiebeheer'); COMMIT; END IF; 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 || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), ''); COMMIT; v_count_tot := 0; v_count_error := 0; -- Toevoegen Organisatie (Business Unit) FOR recorg IN corg LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recorg.prs_perslid_organisation || ' - ' || recorg.prs_perslid_wm || ' - '; v_errorhint := 'Fout bij bepalen organisatie'; -- Zoek bedrijf v_errorhint := 'Zoek werkmaatschappij'; SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_bedrijf b, prs_kenmerklink bkm WHERE b.prs_bedrijf_key = bkm.prs_link_key AND bkm.prs_kenmerk_key = 1120 -- Kenmerk WM-code Active Directory AND UPPER (bkm.prs_kenmerklink_waarde) = UPPER (recorg.prs_perslid_wm) AND b.prs_bedrijf_verwijder IS NULL AND b.prs_bedrijf_intern = 1; SELECT COUNT ( * ) INTO v_count FROM prs_afdeling WHERE UPPER (prs_afdeling_omschrijving) = UPPER (recorg.prs_perslid_organisation) AND prs_bedrijf_key = v_bedrijf_key AND prs_afdeling_verwijder IS NULL; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen organisatie'; -- Business Unit SELECT prs_s_prs_afdeling_key.NEXTVAL INTO v_afdeling_key FROM DUAL; INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_key, prs_afdeling_naam, prs_afdeling_omschrijving) VALUES (v_bedrijf_key, v_afdeling_key, recorg.prs_perslid_wm || v_afdeling_key, recorg.prs_perslid_organisation); fac.imp_writelog ( p_import_key, 'I', 'Er is een nieuwe business unit aangemaakt: ' || recorg.prs_perslid_organisation || ' met key ' || v_afdeling_key, 'Mogelijk moeten nog aanvullende acties gedaan worden door applicatiebeheer'); COMMIT; END IF; 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 || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'Organisatie: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Organisatie: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), ''); COMMIT; v_count_tot := 0; v_count_error := 0; -- Toevoegen personen FOR recperslid IN cperslid LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recperslid.prs_perslid_oslogin || '|' || recperslid.prs_perslid_naam || '|' || recperslid.prs_perslid_voornaam || ' - '; v_errorhint := 'Fout bij bepalen functie [' || recperslid.prs_srtperslid_omschrijving || ']'; -- Zoek functie-KEY behorend bij de functie van de persoon SELECT prs_srtperslid_key INTO v_srtperslid_key FROM prs_srtperslid WHERE prs_srtperslid_verwijder IS NULL AND UPPER (prs_srtperslid_omschrijving) = UPPER (recperslid.prs_srtperslid_omschrijving); v_errorhint := 'Fout bij bepalen afdeling persoon [' || recperslid.prs_afdeling_naam || '-' || recperslid.prs_perslid_organisation || '-' || recperslid.prs_perslid_wm || ']'; -- Zoek afdeling-KEY behorend bij de afdeling van de persoon SELECT a.prs_afdeling_key INTO v_afdeling_key FROM prs_bedrijf b, prs_afdeling a, prs_kenmerklink bkm WHERE b.prs_bedrijf_key = bkm.prs_link_key AND bkm.prs_kenmerk_key = 1120 -- Kenmerk WM-code Active Directory bij de bedrijven. AND UPPER (bkm.prs_kenmerklink_waarde) = UPPER (recperslid.prs_perslid_wm) AND UPPER (a.prs_afdeling_omschrijving) = UPPER (recperslid.prs_perslid_organisation) AND b.prs_bedrijf_key = a.prs_bedrijf_key AND a.prs_afdeling_verwijder IS NULL AND a.prs_afdeling_parentkey IS NULL AND b.prs_bedrijf_verwijder IS NULL; v_errorhint := 'Fout bij bepalen persoon'; -- Zoek perslid-KEY, behorend bij bestaand persoon, voor het updaten van de juiste persoon SELECT COUNT ( * ), MAX (prs_perslid_key) INTO v_count, v_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin); 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_voornaam, prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_oslogin, prs_perslid_email, prs_perslid_telefoonnr, prs_perslid_mobiel) VALUES ('PRS', v_srtperslid_key, v_afdeling_key, recperslid.prs_perslid_voornaam, recperslid.prs_perslid_naam, recperslid.prs_perslid_tussenvoegsel, recperslid.prs_perslid_oslogin, recperslid.prs_perslid_email, recperslid.prs_perslid_telefoonnr, recperslid.prs_perslid_mobiel) RETURNING prs_perslid_key INTO v_perslid_key; v_errorhint := 'Fout bij bepalen loginnaam'; ELSIF v_count = 1 THEN v_errorhint := 'Fout bij wijzigen persoon'; BEGIN UPDATE prs_perslid p SET p.prs_srtperslid_key = v_srtperslid_key, p.prs_afdeling_key = v_afdeling_key, p.prs_perslid_voornaam = recperslid.prs_perslid_voornaam, p.prs_perslid_naam = recperslid.prs_perslid_naam, p.prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel, p.prs_perslid_oslogin = recperslid.prs_perslid_oslogin, p.prs_perslid_telefoonnr = recperslid.prs_perslid_telefoonnr, p.prs_perslid_mobiel = recperslid.prs_perslid_mobiel, p.prs_perslid_email = recperslid.prs_perslid_email WHERE p.prs_perslid_key = v_perslid_key; END; ELSIF v_count > 1 THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || ' kan persoon niet 1-duidig bepalen', v_errorhint); END IF; IF v_count < 2 THEN v_errorhint := 'Fout bij toevoegen kenmerk import personen uit AD'; -- Toevoegen kenmerk "Import personen uit AD' -- Key voor Kenmerk 'Import personen uit AD': 1041 -- Waarde "Ja" voor Kenmerk 'Import personen uit AD'. prs.upsertkenmerk (1041, v_perslid_key, '1461'); v_errorhint := 'Fout bij toevoegen kenmerk Costcarrier'; -- Toevoegen kenmerk "Costcarrier' -- Key voor Kenmerk 'Costcarrier': 1060 prs.upsertkenmerk (1060, v_perslid_key, recperslid.prs_perslid_costcarrier); -- Toevoegen kenmerk "Company code' -- Key voor Kenmerk 'Costcarrier': 1080 prs.upsertkenmerk (1080, v_perslid_key, recperslid.prs_perslid_companycode); END IF; 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 || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; 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), ''); COMMIT; v_count_tot := 0; v_count_error := 0; -- Toevoegen autorisatiegroepen FOR recgroep IN cgroep LOOP BEGIN v_aanduiding := recgroep.prs_perslid_oslogin; v_errorhint := 'Fout bij bepalen perslid_key tbv toevoegen autorisatiegroep'; SELECT MAX (prs_perslid_key) INTO v_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_oslogin) = UPPER (recgroep.prs_perslid_oslogin); v_errorhint := 'Fout bij bepalen aantal gebruikersgroepen bij perslid'; SELECT COUNT ( * ) INTO v_count FROM fac_gebruikersgroep WHERE prs_perslid_key = v_perslid_key AND fac_groep_key = recgroep.groep; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen autorisatiegroep'; INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) VALUES (v_perslid_key, recgroep.groep); COMMIT; END IF; -- iedereen wordt toegevoegd aan de Generiek: Klant groep met key 2781 INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) SELECT v_perslid_key, 2781 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE prs_perslid_key = v_perslid_key AND fac_groep_key = 2781); 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 || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; ELSE fac.imp_writelog ( p_import_key, 'E', 'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!', '- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]
' || '- #personen importbestand = [' || TO_CHAR (v_count_prs_import) || ']
' || '- #personen Facilitor = [' || TO_CHAR (v_count_prs_actual) || ']'); COMMIT; END IF; -- Geldig importbestand wat betreft aantal inserts COMMIT; -- Eerst werkplekken verwijderen die niet voldoen aan de conventie Ruimte-Afdeling. -- Daarbij dit enkel doen bij de personen waarvan de login naam in de import wordt aangeboden. -- Daarbij enkel de werkplekken met als omschrijving n.v.t' verwijderen, eventuele andere ruimtes die als werkplek zijn gekoppeld blijven dan wel in tact. DELETE FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_key IN (SELECT pwp.prs_perslidwerkplek_key FROM prs_werkplek wp, prs_perslidwerkplek pwp, prs_perslid p, pchd_imp_prs i, alg_v_ruimte_gegevens r WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key AND r.alg_ruimte_key = wp.prs_alg_ruimte_key AND p.prs_perslid_key = pwp.prs_perslid_key AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) AND wp.prs_werkplek_virtueel = 0 -- Alleen niet virtuele werkplekken worden verwijderd. AND UPPER (wp.prs_werkplek_omschrijving) LIKE '%N.V.T.%' AND wp.prs_alg_ruimte_key NOT IN (SELECT (rg_nvt.alg_ruimte_key) alg_ruimte_key FROM prs_ruimteafdeling ra, pchd_imp_prs i, prs_perslid pp, prs_afdeling a, alg_v_ruimte_gegevens rg_nvt WHERE UPPER (pp.prs_perslid_oslogin) = UPPER ( i.prs_perslid_oslogin) AND pp.prs_perslid_key = p.prs_perslid_key AND pp.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_key = ra.prs_afdeling_key AND rg_nvt.alg_ruimte_key = ra.alg_ruimte_key --AND (ra.prs_ruimteafdeling_einddatum IS NULL -- OR TRUNC(ra.prs_ruimteafdeling_einddatum) < TRUNC(SYSDATE)) AND UPPER ( rg_nvt.alg_ruimte_nr) = 'N.V.T.')); FOR recwerkplek IN cwerkplek LOOP BEGIN -- Maximaal een werkplek per gebouw prs.movetoruimte (recwerkplek.prs_perslid_key, recwerkplek.alg_ruimte_key, 'G', 0); END; END LOOP; COMMIT; END pchd_update_perslid; / CREATE OR REPLACE VIEW pchd_v_rap_catresbasis ( resnr, locatie, gebouw, ruimte, contactp, kostenpl, datum, van, tot, artikel_nr, artikel, aantal, levering, dieet, wensen, kosten_klant, kostenplaats_klant ) AS SELECT resnr_volgnr, alg_locatie_omschrijving, alg_gebouw_omschrijving, res_ruimte_nr, prs_perslid_naam_full, kostenplaats, datum, van, tot, artikel_nr, soort_catering, aantal, res_rsv_artikel_levering, kmdieet, kmwens, kosten_klant, kostenplaats_klant FROM (SELECT rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr AS resnr_volgnr, rg.alg_locatie_omschrijving, rg.alg_gebouw_omschrijving, COALESCE ( (SELECT rru.res_ruimte_nr FROM res_ruimte rru WHERE r2a.res_ruimte_key = rru.res_ruimte_key), rg.alg_ruimte_nr || ' ' || rg.alg_ruimte_omschrijving) AS res_ruimte_nr, pf.prs_perslid_naam_full, (SELECT MAX (kmw.res_kenmerkreservering_waarde) FROM res_kenmerkwaarde kmw, res_kenmerk km, res_srtkenmerk sk WHERE kmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND km.res_kenmerk_key = kmw.res_kenmerk_key AND sk.res_srtkenmerk_key = km.res_srtkenmerk_key AND sk.res_srtkenmerk_key = 2) kostenplaats, -- Kenmerksoort: Kostenplaats binnen werkmaatschappij' TRUNC (rr.res_rsv_ruimte_van) datum, TO_CHAR (ra.res_rsv_artikel_levering, 'HH24:MI') van, TO_CHAR (rr.res_rsv_ruimte_tot, 'HH24:MI') tot, rart.res_artikel_nr artikel_nr, rart.res_artikel_omschrijving soort_catering, ra.res_rsv_artikel_aantal aantal, ra.res_rsv_artikel_levering, (SELECT MAX (rkmw.res_kenmerkreservering_waarde) FROM res_kenmerkwaarde rkmw, res_kenmerk rkm, res_srtkenmerk rsk WHERE rsk.res_srtkenmerk_key = rkm.res_srtkenmerk_key AND rkm.res_kenmerk_key = rkmw.res_kenmerk_key AND rkmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rsk.res_srtkenmerk_key = 21) -- Kenmerksoort 'Dieetwensen / allergieen' kmdieet, (SELECT MAX (rkmw.res_kenmerkreservering_waarde) FROM res_kenmerkwaarde rkmw, res_kenmerk rkm, res_srtkenmerk rsk WHERE rsk.res_srtkenmerk_key = rkm.res_srtkenmerk_key AND rkm.res_kenmerk_key = rkmw.res_kenmerk_key AND rkmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rsk.res_srtkenmerk_key = 41) -- Kenmerksoort 'Aanvullende wensen lunch' kmwens, DECODE (rr.RES_RSV_RUIMTE_KOSTEN_KLANT, 1, 'Ja') kosten_klant, (SELECT prs_kostenplaats_omschrijving FROM prs_kostenplaats WHERE rr.prs_kostenplaats_key = prs_kostenplaats_key) kostenplaats_klant FROM res_rsv_ruimte rr, res_rsv_artikel ra, res_artikel rart, alg_v_ruimte_gegevens rg, prs_v_perslid_fullnames_all pf, (SELECT rr2.res_rsv_ruimte_key, rr2.res_reservering_key, COALESCE (rr2.alg_ruimte_key, r2r.alg_ruimte_key) alg_ruimte_key, res_ruimte_key FROM res_v_rsv_ruimte_2_alg_ruimte r2r, res_rsv_ruimte rr2 WHERE r2r.res_rsv_ruimte_key(+) = rr2.res_rsv_ruimte_key AND res_alg_ruimte_verwijder IS NULL) r2a WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key AND rr.res_rsv_ruimte_verwijder IS NULL AND r2a.alg_ruimte_key = rg.alg_ruimte_key AND r2a.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rr.res_rsv_ruimte_contact_key = pf.prs_perslid_key AND ra.res_artikel_key = rart.res_artikel_key AND ra.res_rsv_artikel_verwijder IS NULL --AND rart.res_discipline_key IN (1001, 1002, 1003, 1004, 1005) -- Discipline / Catalogus "Lunch" weghalen voor productie!! AND rart.res_discipline_key = 3021 -- PCHD#87364: Lunch FSP AND rr.res_status_fo_key <= 5) GROUP BY resnr_volgnr, alg_locatie_omschrijving, alg_gebouw_omschrijving, res_ruimte_nr, prs_perslid_naam_full, kostenplaats, datum, van, tot, artikel_nr, soort_catering, aantal, res_rsv_artikel_levering, kmdieet, kmwens, kosten_klant, kostenplaats_klant; -- Levert de catering lijst voor morgen CREATE OR REPLACE VIEW pchd_v_rap_catres1 AS SELECT resnr, locatie, gebouw, ruimte, contactp, kostenpl, datum, van, tot, artikel_nr, artikel, aantal, dieet, wensen, kosten_klant, kostenplaats_klant FROM pchd_v_rap_catresbasis WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND TRUNC (levering) = TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 1, 'D', 0, 24, 1)); -- Levert de catering lijst voor vandaag CREATE OR REPLACE VIEW pchd_v_rap_catres2 AS SELECT resnr, locatie, gebouw, ruimte, contactp, kostenpl, datum, van, tot, artikel_nr, artikel, aantal, dieet, wensen, kosten_klant, kostenplaats_klant FROM pchd_v_rap_catresbasis WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND TRUNC (levering) = TRUNC (SYSDATE); /* -- Levert de catering lijst voor over 3 werkdagen CREATE OR REPLACE VIEW pchd_v_rap_catres3 AS SELECT resnr, locatie, gebouw, ruimte, contactp, kostenpl, datum, van, tot, artikel_nr, artikel, aantal, dieet, wensen, kosten_klant, kostenplaats_klant FROM pchd_v_rap_catresbasis WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND TRUNC (levering) = TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 3, 'D', 0, 24, 1)); */ CREATE OR REPLACE VIEW pchd_v_noti_catres1 ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT DISTINCT 'CUST01' AS code, NULL, NULL, 'Cateringreserveringen', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'PCHD_V_RAP_CATRES1') rapportnr, NULL, 'receptievwicc@vwinfra.nl', NULL FROM DUAL WHERE fac.iswerkdag (SYSDATE) = 1; CREATE OR REPLACE VIEW pchd_v_noti_catres2 ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT DISTINCT 'CUST02' AS code, NULL, NULL, 'Cateringreserveringen', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'PCHD_V_RAP_CATRES2') rapportnr, NULL, 'receptievwicc@vwinfra.nl', NULL FROM DUAL WHERE fac.iswerkdag (SYSDATE) = 1; /* CREATE OR REPLACE VIEW pchd_v_noti_catres3 ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT DISTINCT 'CUST05' AS code, NULL, NULL, 'Cateringreserveringen', (SELECT MAX (fac_usrrap_key) FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'PCHD_V_RAP_CATRES3') rapportnr, NULL, 'receptievwicc@vwinfra.nl', NULL FROM DUAL WHERE fac.iswerkdag (SYSDATE) = 1; */ -- Notificatie om de besteller te herrinneren dat een bestelling al langer dan het aantal notificatie dagen -- dat geconfigureerd kan worden bij de catalogus open staat CREATE OR REPLACE VIEW pchd_v_noti_bes_delivery AS SELECT DISTINCT 'CUST15' code, NULL sender, b.prs_perslid_key_voor receiver, 'Is jouw bestelling ' || b.bes_bestelling_key || ' al geleverd?' text, b.bes_bestelling_key key, NULL xkey FROM bes_disc_params dp, bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg WHERE sg.ins_discipline_key = dp.bes_ins_discipline_key AND sg.bes_srtgroep_key = sd.bes_srtgroep_key AND sd.bes_srtdeel_key = bi.bes_srtdeel_key AND bi.bes_bestelling_key = b.bes_bestelling_key AND bes_disc_params_deliver_fe = 1 AND b.bes_bestelling_status = 5 -- besteld AND dp.bes_disc_params_noti_dagen IS NOT NULL AND b.bes_bestelling_leverdatum + dp.bes_disc_params_noti_dagen = TRUNC (SYSDATE) GROUP BY b.bes_bestelling_key, b.prs_perslid_key_voor; CREATE OR REPLACE VIEW pchd_v_rap_schoonm_basis ( resnr, ruimte, locatie, van, tot, status, personen, gastheer_gastvrouw, aanvrager, omschrijving ) AS SELECT r.nummer, r.ruimte, r.locatie, r.van, r.tot, r.status, r.bezoekers, r.gastheer, r.contact, r.res_omschrijving FROM res_v_udr_reservering r WHERE r.reserveerbare_ruimte = 'Ja' AND r.locatie = 'VIA01' ORDER BY r.tot ASC; CREATE OR REPLACE VIEW pchd_v_rap_schoonm_today ( resnr, ruimte, locatie, van, tot, status, personen, gastheer_gastvrouw, aanvrager, omschrijving ) AS SELECT resnr, ruimte, locatie, van, tot, status, personen, gastheer_gastvrouw, aanvrager, omschrijving FROM pchd_v_rap_schoonm_basis WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND TRUNC (van) = TRUNC (SYSDATE); CREATE OR REPLACE VIEW pchd_v_noti_schoonmaak ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST03' AS code, NULL, 16161, -- Persoon "_Schoonmaak_Van_Vliet", voor de emailadressen 'Schoonmaken gereserveerde ruimte', (SELECT fac_usrrap_key FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'PCHD_V_RAP_SCHOONM_TODAY') rapportnr, NULL FROM DUAL WHERE fac.iswerkdag (SYSDATE) = 1; CREATE OR REPLACE VIEW PCHD_V_CNTR_CNTRREF ( CONTRACT_KEY, CONTRACT_NUMMER, VERWIJDER_DATUM ) AS SELECT cnt.cnt_contract_key, cnt.cnt_contract_nummer_intern || case when cnt.cnt_contract_versie IS NULL OR cnt.cnt_contract_versie = ''THEN '' ELSE '.'||cnt.cnt_contract_versie END || ' - ' || cdisc.INS_DISCIPLINE_OMSCHRIJVING , cnt.CNT_CONTRACT_VERWIJDER FROM cnt_contract cnt, cnt_discipline cdisc WHERE cnt.INS_DISCIPLINE_KEY = cdisc.INS_DISCIPLINE_KEY; -- PCHD#55492 VIEW om referentievelden naar meldingen te kunnen maken. CREATE OR REPLACE VIEW pchd_v_mld_mldref ( MELDING_KEY, MELDING_NUMMER ) AS SELECT m.mld_melding_key, srt.INS_SRTDISCIPLINE_PREFIX || m.mld_melding_key || ' - ' || sm.MLD_STDMELDING_OMSCHRIJVING FROM mld_melding m, ins_srtdiscipline srt, mld_stdmelding sm, mld_discipline d WHERE m.MLD_STDMELDING_KEY = sm.MLD_STDMELDING_KEY AND sm.MLD_INS_DISCIPLINE_KEY = d.INS_DISCIPLINE_KEY AND d.INS_SRTDISCIPLINE_KEY = srt.INS_SRTDISCIPLINE_KEY; --Rapport tbv controle welke werkplekken extra zijn aangemaakt tav cursor in import. --Deze werkplekken kunnen mogelijk verwijderd worden. --De select in de NOT EXIST is de cursor van de import, met filter op prs_key en ruimte_key tav de werkplekken. Bovendien controle op omschrijving van bu en wm tov de import-gegevens. CREATE OR REPLACE VIEW pchd_v_rap_extrawerkplekken AS SELECT pwp.prs_perslidwerkplek_key, p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_oslogin, og.alg_plaatsaanduiding, d.alg_district_omschrijving, l.alg_locatie_omschrijving, og.alg_verdieping_omschrijving, og.alg_gebouw_naam, og.alg_ruimte_nr FROM prs_perslidwerkplek pwp, prs_werkplek wp, prs_perslid p, pchd_imp_prs i, alg_v_allonrgoed_gegevens og, alg_locatie l, alg_district d WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key AND pwp.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin) AND wp.prs_alg_ruimte_key = og.alg_ruimte_key AND og.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND NOT EXISTS (SELECT p.prs_perslid_key, i.prs_perslid_oslogin, ra.alg_ruimte_key, g.alg_gebouw_omschrijving FROM alg_ruimte ir, alg_verdieping v, alg_gebouw g, alg_locatie l, pchd_imp_prs ii, prs_perslid ip, prs_afdeling a, prs_ruimteafdeling ra WHERE ir.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND UPPER (a.prs_afdeling_omschrijving) = UPPER (ii.prs_perslid_organisation) AND UPPER (ii.prs_perslid_wm) = (SELECT b.prs_bedrijf_naam_upper FROM prs_bedrijf b, prs_v_afdeling ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_afdeling_key = a.prs_afdeling_key) AND UPPER (ip.prs_perslid_oslogin) = UPPER (ii.prs_perslid_oslogin) AND ra.prs_afdeling_key = a.prs_afdeling_key AND ra.prs_ruimteafdeling_verwijder IS NULL AND ra.alg_ruimte_key = ir.alg_ruimte_key AND UPPER (ir.alg_ruimte_nr) = 'N.V.T.' AND ip.prs_perslid_key = p.prs_perslid_key AND ir.alg_ruimte_key = wp.prs_alg_ruimte_key); -- Koppeling om crediteurgegevens vanuit PCHD te verspreiden over de andere PCH omgevingen. CREATE OR REPLACE VIEW pchd_v_export_bedrijf_gegevens AS SELECT 'prs_bedrijf_key;prs_bedrijf_naam;prs_bedrijf_post_adres;prs_bedrijf_post_postcode;prs_bedrijf_post_plaats;prs_bedrijf_post_land;prs_bedrijf_bezoek_adres;prs_bedrijf_bezoek_postcode;prs_bedrijf_bezoek_plaats;prs_bedrijf_bezoek_land;prs_bedrijf_telefoon;prs_bedrijf_fax;prs_bedrijf_telefoon2;prs_bedrijf_contact_persoon;prs_bedrijf_contact_telefoon;prs_bedrijf_contact_fax;prs_bedrijf_opmerking;prs_bedrijf_opmerking2;prs_bedrijf_uurloon;prs_leverancier_nr;prs_overeenkomst_nr;prs_overeenkomst_datum;prs_bedrijf_email;prs_bedrijf_order_confirm;prs_bedrijf_image_loc;prs_bedrijf_details_loc;prs_bedrijf_xmldetails_loc;prs_bedrijf_xmlcatalogus_loc;prs_bedrijf_bes_limiet;prs_bedrijf_bes_kosten;prs_bedrijf_aanmaak;prs_bedrijf_verwijder;prs_bedrijf_leverancier;prs_bedrijf_uitvoerende;prs_bedrijf_contract;prs_bedrijf_intern;prs_bedrijf_huurder;prs_bedrijf_bezoeker;prs_bedrijf_ingids;prs_bedrijf_bes_factor;prs_relatietype_omschrijving;prs_bedrijfadres_key;prs_bedrijfadres_type;mld_typeopdr_omschrijving;prs_bedrijfadres_url;prs_bedrijfadres_ordermode;prs_bedrijfadres_certificate;prs_bedrijfadres_xsl;prs_bedrijfadres_ext;prs_bedrijfadres_username;prs_bedrijfadres_password;prs_bedrijfadres_attachfile;prs_bedrijfadres_flexfiles;prs_bedrijfadres_encoding;prs_bedrijfadres_authmethod;prs_bedrijfadres_soapversion;prs_bedrijfadres_soapaction;bedrijfadres_lockuser_naam;prs_bedrijfadres_locksecret;prs_bedrijfadres_lockexpire' result, -1 result_order FROM DUAL UNION ALL SELECT '"' || b.prs_bedrijf_key || '";"' || REPLACE(b.prs_bedrijf_naam, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_post_adres, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_post_postcode, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_post_plaats, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_post_land, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_bezoek_adres, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_bezoek_postcode, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_bezoek_plaats, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_bezoek_land, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_telefoon, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_fax, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_telefoon2, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_contact_persoon, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_contact_telefoon, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_contact_fax, '"', CHR(39)) || '";"' || REPLACE(REPLACE(b.prs_bedrijf_opmerking, '"', CHR(39)), CHR(10)) || '";"' || REPLACE(REPLACE(b.prs_bedrijf_opmerking2, '"', CHR(39)), CHR(10)) || '";"' || b.prs_bedrijf_uurloon || '";"' || REPLACE(b.prs_leverancier_nr, '"', CHR(39)) || '";"' || REPLACE(b.prs_overeenkomst_nr, '"', CHR(39)) || '";"' || TO_CHAR(b.prs_overeenkomst_datum, 'yyyy-mm-dd hh24:mi:ss') || '";"' || REPLACE(b.prs_bedrijf_email, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_order_confirm, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_image_loc, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_details_loc, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_xmldetails_loc, '"', CHR(39)) || '";"' || REPLACE(b.prs_bedrijf_xmlcatalogus_loc, '"', CHR(39)) || '";"' || b.prs_bedrijf_bes_limiet || '";"' || b.prs_bedrijf_bes_kosten || '";"' || TO_CHAR(b.prs_bedrijf_aanmaak, 'yyyy-mm-dd hh24:mi:ss') || '";"' || TO_CHAR(b.prs_bedrijf_verwijder, 'yyyy-mm-dd hh24:mi:ss') || '";"' || b.prs_bedrijf_leverancier || '";"' || b.prs_bedrijf_uitvoerende || '";"' || b.prs_bedrijf_contract || '";"' || b.prs_bedrijf_intern || '";"' || b.prs_bedrijf_huurder || '";"' || b.prs_bedrijf_bezoeker || '";"' || b.prs_bedrijf_ingids || '";"' || b.prs_bedrijf_bes_factor || '";"' || REPLACE(rt.prs_relatietype_omschrijving, '"', CHR(39)) || '";"' || ba.prs_bedrijfadres_key || '";"' || ba.prs_bedrijfadres_type || '";"' || REPLACE(ot.mld_typeopdr_omschrijving, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_url, '"', CHR(39)) || '";"' || ba.prs_bedrijfadres_ordermode || '";"' || REPLACE(ba.prs_bedrijfadres_certificate, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_xsl, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_ext, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_username, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_password, '"', CHR(39)) || '";"' || ba.prs_bedrijfadres_attachfile || '";"' || ba.prs_bedrijfadres_flexfiles || '";"' || ba.prs_bedrijfadres_encoding || '";"' || ba.prs_bedrijfadres_authmethod || '";"' || ba.prs_bedrijfadres_soapversion || '";"' || REPLACE(ba.prs_bedrijfadres_soapaction, '"', CHR(39)) || '";"' || REPLACE(lu.prs_perslid_naam, '"', CHR(39)) || '";"' || REPLACE(ba.prs_bedrijfadres_locksecret, '"', CHR(39)) || '";"' || ba.prs_bedrijfadres_lockexpire || '";' result, b.prs_bedrijf_key result_order FROM prs_bedrijf b, prs_relatietype rt, prs_bedrijfadres ba, prs_kenmerklink kl, prs_perslid lu, mld_typeopdr ot WHERE b.prs_bedrijf_key = ba.prs_bedrijf_key(+) AND b.prs_relatietype_key = rt.prs_relatietype_key(+) AND ba.prs_bedrijfadres_lockuser_key = lu.prs_perslid_key(+) AND ba.mld_typeopdr_key = ot.mld_typeopdr_key(+) AND kl.prs_kenmerk_key = 1020 AND kl.prs_link_key = b.prs_bedrijf_key AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = 1 AND b.prs_bedrijf_verwijder IS NULL; CREATE OR REPLACE VIEW pchd_v_export_contactpersoon AS SELECT 'prs_contactpersoon_key;prs_contactpersoon_naam;prs_contactpersoon_tussenv;prs_contactpersoon_voorletters;' || 'prs_contactpersoon_voornaam;prs_contactpersoon_aanhef;prs_contactpersoon_titel;prs_contactpersoon_telefoon_1;' || 'prs_contactpersoon_telefoon_2;prs_contactpersoon_fax;prs_contactpersoon_email;prs_contactpersoon_functie;' || 'prs_contactpersoon_opmerking;prs_bedrijf_key;prs_bedrijf_naam' result, -1 result_order FROM DUAL UNION ALL SELECT '"' || cp.prs_contactpersoon_key || '";"' || REPLACE(cp.prs_contactpersoon_naam, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_tussenv, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_voorletters, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_voornaam, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_aanhef, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_titel, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_telefoon_1, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_telefoon_2, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_fax, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_email, '"', CHR(39)) || '";"' || REPLACE(cp.prs_contactpersoon_functie, '"', CHR(39)) || '";"' || REPLACE(REPLACE(cp.prs_contactpersoon_opmerking, '"', CHR(39)), CHR(10)) || '";"' || cp.prs_bedrijf_key || '";"' || REPLACE(b.prs_bedrijf_naam, '"', CHR(39)) || '"', b.prs_bedrijf_key result_order FROM prs_contactpersoon cp, prs_bedrijf b, prs_kenmerklink kl WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key AND kl.prs_link_key = b.prs_bedrijf_key AND kl.prs_kenmerk_key = 1020 AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = 1 AND b.prs_bedrijf_verwijder IS NULL AND cp.prs_contactpersoon_verwijder IS NULL; CREATE OR REPLACE VIEW pchd_v_rap_offerteopdr ( melding_key, vakgroep, melding, opdracht_type, opdracht_nummer, opdracht_status, opdracht_locatie_code, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_datum, opdracht_verstrektdatum, opdracht_afgemeld, opdracht_omschrijving, opdracht_opmerking, opdracht_kosten, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, bijlage, opdracht_na_offerte ) AS SELECT mo.melding_key, mo.productgroep, mo.subproductgroep, mo.opdracht_type, mo.opdracht_nummer, mo.opdracht_status, mo.opdracht_locatie_code, mo.opdracht_gebouw, mo.opdracht_verdieping, mo.opdracht_ruimtenr, TRUNC (mo.opdracht_datum) AS opdracht_datum, TRUNC (mo.opdracht_verstrektdatum) AS opdracht_verstrektdatum, mo.opdracht_afgemeld, mo.opdracht_omschrijving, mo.opdracht_opmerking, mo.opdracht_kosten, mo.opdracht_uitvoerende, mo.opdracht_uitvoerende_contact, mo.opdracht_behandelaar, (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr kmo WHERE kmo.mld_opdr_key = mo.opdracht_key AND mld_kenmerk_key = 82) AS bijlage, CASE WHEN (SELECT COUNT (opdracht_key) FROM mld_v_udr_opdracht o WHERE o.melding_key = mo.melding_key AND SUBSTR (opdracht_type, 1, 7) = 'Offerte') > 0 THEN 'Opdracht_na_offerte' ELSE '' END AS opdracht_na_offerte FROM mld_v_udr_meldingopdracht mo; CREATE OR REPLACE VIEW prs_v_contactpersoon_fullnames ( prs_contactpersoon_key, prs_cp_naam_full, prs_cp_naam_friendly, prs_cp_naam_full_comp, prs_cp_naam_friendly_comp, prs_perslid_key ) AS SELECT p.prs_contactpersoon_key, p.prs_contactpersoon_naam || DECODE (p.prs_contactpersoon_voorletters, NULL, '', ', ' || p.prs_contactpersoon_voorletters) || DECODE (p.prs_contactpersoon_tussenv, NULL, '', ' ' || p.prs_contactpersoon_tussenv) || DECODE (p.prs_contactpersoon_voornaam, NULL, '', ' (' || p.prs_contactpersoon_voornaam || ')') prs_cp_naam_full, DECODE (p.prs_contactpersoon_voornaam, NULL, '', p.prs_contactpersoon_voornaam || ' ') || DECODE (p.prs_contactpersoon_tussenv, NULL, '', p.prs_contactpersoon_tussenv || ' ') || p.prs_contactpersoon_naam prs_cp_naam_friendly, p.prs_contactpersoon_naam || DECODE (p.prs_contactpersoon_voorletters, NULL, '', ', ' || p.prs_contactpersoon_voorletters) || DECODE (p.prs_contactpersoon_tussenv, NULL, '', ' ' || p.prs_contactpersoon_tussenv) || DECODE (p.prs_contactpersoon_voornaam, NULL, '', ' (' || p.prs_contactpersoon_voornaam || ')') || DECODE (b.prs_bedrijf_naam, NULL, '', ' [' || b.prs_bedrijf_naam || ']') prs_cp_naam_full_comp, DECODE (p.prs_contactpersoon_voornaam, NULL, '', p.prs_contactpersoon_voornaam || ' ') || DECODE (p.prs_contactpersoon_tussenv, NULL, '', p.prs_contactpersoon_tussenv || ' ') || p.prs_contactpersoon_naam || DECODE (b.prs_bedrijf_naam, NULL, '', ' [' || b.prs_bedrijf_naam || ']') prs_cp_naam_friendly_comp, p.prs_perslid_key FROM prs_contactpersoon p, prs_bedrijf b WHERE b.prs_bedrijf_key = p.prs_bedrijf_key; CREATE OR REPLACE FORCE VIEW pchd_v_rap_afdeling_nieuw ( afdeling, afdeling_omschrijving, aanmaakdatum, verwijderdatum, onderdeel_van, bu_omschrijving, bedrijf ) AS SELECT a.prs_afdeling_naam, a.prs_afdeling_omschrijving, a.prs_afdeling_aanmaak, a.prs_afdeling_verwijder, (SELECT o.prs_afdeling_naam FROM prs_afdeling o WHERE o.prs_afdeling_key = a.prs_afdeling_parentkey) AS onderdeel_van, (SELECT o.prs_afdeling_omschrijving FROM prs_afdeling o WHERE o.prs_afdeling_key = a.prs_afdeling_parentkey) AS bu_omschrijving, (SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = a.prs_bedrijf_key) AS bedrijf FROM prs_afdeling a WHERE TRUNC (a.prs_afdeling_aanmaak) = TRUNC (SYSDATE) - 1 AND (SELECT o.prs_afdeling_omschrijving -- Bij nader inzicht toch enkel de BU's ipv alle afdelingen FROM prs_afdeling o WHERE o.prs_afdeling_key = a.prs_afdeling_parentkey) IS NULL AND prs_afdeling_verwijder IS NULL; CREATE OR REPLACE VIEW pchd_v_noti_afdeling_nieuw ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST04' AS code, NULL, 781, -- Callan Stinkens 'Nieuwe afdelingen aangemaakt', (SELECT fac_usrrap_key FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'PCHD_V_RAP_AFDELING_NIEUW') rapportnr, NULL FROM DUAL WHERE (SELECT COUNT ( * ) FROM pchd_v_rap_afdeling_nieuw) > 0; CREATE OR REPLACE VIEW pchd_v_rap_catresscherm AS SELECT x.row_num, r.* FROM ( SELECT ROW_NUMBER () OVER (ORDER BY datum DESC, voorziening_van ASC, ruimte, nummer) row_num, datum, voorziening_van, nummer, locatie, gebouw, verdieping, ruimte FROM res_v_udr_reserveringincl WHERE voorziening_van IS NOT NULL GROUP BY datum, voorziening_van, nummer, locatie, gebouw, verdieping, ruimte) x, res_v_udr_reserveringincl r WHERE r.nummer = x.nummer AND r.locatie = x.locatie AND r.gebouw = x.gebouw AND r.verdieping = x.verdieping AND r.ruimte = x.ruimte AND r.voorziening_van = x.voorziening_van AND r.voorziening_van IS NOT NULL --AND r.datum = SYSDATE AND r.bostatus = 'Geregistreerd' ORDER BY x.row_num; --PCHD#61367: Rapportage met taken, ook niet geplande taken tonen CREATE OR REPLACE FORCE VIEW pchd_v_rap_deelinspect ( deel_key, discipline, soort, groep, soortcode, omschrijving, plaatseigenaar, plaatseigenaartype, plaatsaanduiding, eigenaar, eigenaar_key, opmerking, regio, district, locatie_code, locatie_omschrijving, locatie_plaats, gebouwcode, gebouw, terreinsectorcode, terreinsector, verdiepingcode, ruimtenr, werkplekvolgnr, werkplek, uitleenbaar, uitgeleend, res_opmerking, beheerder, vervaldatum, actief, aantal, state, statedate, fclt_3d_discipline_key, fclt_3d_afdeling_key, fclt_3d_locatie_key, ins_deelsrtcontrole_key, ins_srtcontrole_key, srtcontrole_omschrijving, ins_deelsrtcontrole_datum, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_datum_org, ins_deelsrtcontrole_plandatum, deelsrtcontrole_status ) AS SELECT deel_key, discipline, soort, groep, soortcode, omschrijving, plaatseigenaar, plaatseigenaartype, plaatsaanduiding, eigenaar, eigenaar_key, opmerking, regio, district, locatie_code, locatie_omschrijving, locatie_plaats, gebouwcode, gebouw, terreinsectorcode, terreinsector, verdiepingcode, ruimtenr, werkplekvolgnr, werkplek, uitleenbaar, uitgeleend, res_opmerking, beheerder, vervaldatum, actief, aantal, state, statedate, fclt_3d_discipline_key, fclt_3d_afdeling_key, fclt_3d_locatie_key, ins_deelsrtcontrole_key, ins_srtcontrole_key, srtcontrole_omschrijving, ins_deelsrtcontrole_datum, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_datum_org, ins_deelsrtcontrole_plandatum, deelsrtcontrole_status FROM ins_v_udr_deelinspect UNION ALL SELECT ud.deel_key, ud.discipline, ud.soort, ud.groep, ud.soortcode, ud.omschrijving, ud.plaatseigenaar, ud.plaatseigenaartype, ud.plaatsaanduiding, ud.eigenaar, ud.eigenaar_key, ud.opmerking, ud.regio, ud.district, ud.locatie_code, ud.locatie_omschrijving, ud.locatie_plaats, ud.gebouwcode, ud.gebouw, ud.terreinsectorcode, ud.terreinsector, ud.verdiepingcode, ud.ruimtenr, ud.werkplekvolgnr, ud.werkplek, ud.uitleenbaar, ud.uitgeleend, ud.res_opmerking, ud.beheerder, ud.vervaldatum, ud.actief, ud.aantal, ud.state, ud.statedate, ud.fclt_3d_discipline_key, ud.fclt_3d_afdeling_key, ud.fclt_3d_locatie_key, NULL, sc.ins_srtcontrole_key, sc.ins_srtcontrole_omschrijving, NULL, 'Nog niet gepland', NULL, NULL, NULL, fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key), NULL FROM ins_v_udr_deel ud, ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline disc, ins_srtcontrole sc WHERE d.ins_deel_key = ud.deel_key AND sd.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key AND disc.ins_discipline_key = sg.ins_discipline_key AND ( (sd.ins_srtdeel_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'S') OR (sg.ins_srtgroep_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'G') OR (disc.ins_discipline_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'D')); -- AND d.ins_deel_key || '-' || sc.ins_srtcontrole_key NOT IN --Hiermee selecteren we hier de objecten die nog niet zijn ingepland. -- (SELECT ins_deel_key || '-' || ins_srtcontrole_key -- FROM ins_deelsrtcontrole); CREATE OR REPLACE VIEW PCHD_V_NOTI_RESBHV ( CODE, SENDER, RECEIVER, TEXT, KEY, PAR1, PAR2, XKEY ) AS SELECT 'CUST14', NULL, rr.res_rsv_ruimte_contact_key, 'De vergadering (' ||rr.res_reservering_key ||'/' ||rr.res_rsv_ruimte_volgnr ||') kent een doorlooptijd tot na 17u00. Graag zorgdragen voor minimaal één BHV gediplomeerde bij deze vergadering', rr.res_reservering_key, NULL, NULL, rr.res_rsv_ruimte_key FROM res_rsv_ruimte rr, alg_v_ruimte_gegevens rg, prs_v_perslid_fullnames_all pf, (SELECT rr2.res_rsv_ruimte_key, rr2.res_reservering_key, COALESCE (rr2.alg_ruimte_key, r2r.alg_ruimte_key) alg_ruimte_key, res_ruimte_key FROM res_v_rsv_ruimte_2_alg_ruimte r2r, res_rsv_ruimte rr2 WHERE r2r.res_rsv_ruimte_key(+) = rr2.res_rsv_ruimte_key AND res_alg_ruimte_verwijder IS NULL) r2a WHERE rr.res_rsv_ruimte_verwijder IS NULL AND r2a.alg_ruimte_key = rg.alg_ruimte_key AND r2a.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rr.res_rsv_ruimte_contact_key = pf.prs_perslid_key AND TRUNC (rr.res_rsv_ruimte_van) BETWEEN TRUNC (SYSDATE) AND TRUNC ( ADD_MONTHS (SYSDATE, 3)) AND TO_NUMBER (TO_CHAR (rr.res_rsv_ruimte_tot, 'HH24MI')) > 1700 AND rr.res_status_fo_key = 2 -- Definitief AND rr.res_status_bo_key = 2 -- Geregistreerd AND rr.res_rsv_ruimte_key NOT IN (SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND (sn.fac_srtnotificatie_code = 'CUST14' OR UPPER(t.fac_tracking_oms) LIKE '%CUST14%')); -- Overzicht van locatiegegevens om goed onderscheid te kunnen maken tussen hoofdlocaties en -- projectlocaties (tijdelijke locaties) die als ruimte onder een hoofdlocatie hangen. CREATE OR REPLACE VIEW pchd_v_locatie_gegevens AS SELECT 'Hoofdlocatie' locatietype, alg_locatie_code, alg_locatie_omschrijving, alg_locatie_code hoofd_locatie_code, alg_locatie_omschrijving hoofd_locatie_omschrijving, alg_locatie_vervaldatum, alg_locatie_adres, alg_locatie_postcode, alg_locatie_plaats, alg_locatie_key, NULL alg_ruimte_key, (SELECT LISTAGG (DISTINCT prs_kostenplaats_nr, ',') WITHIN GROUP (ORDER BY prs_kostenplaats_nr ASC) AS wmen FROM alg_kenmerk k, alg_onrgoedkenmerk aogk, prs_bedrijf b, (SELECT prs_link_key, prs_kostenplaats_nr, kp.prs_kostenplaats_key FROM prs_kostenplaats kp, prs_kenmerklink kl WHERE fac.safe_to_number (kl.prs_kenmerklink_waarde) = kp.prs_kostenplaats_key AND kl.prs_kenmerk_key = 1260) wm WHERE fac.safe_to_number (alg_onrgoedkenmerk_waarde) = b.prs_bedrijf_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key AND alg_kenmerk_omschrijving LIKE 'Werkmaatschappij%' AND alg_kenmerk_kenmerktype = 'S' AND alg_onrgoedkenmerk_verwijder IS NULL AND alg_onrgoed_key = l.alg_locatie_key AND b.prs_bedrijf_key = wm.prs_link_key(+) AND b.prs_bedrijf_intern = 1) wmen FROM alg_locatie l WHERE alg_locatie_verwijder IS NULL AND COALESCE (alg_locatie_vervaldatum, SYSDATE + 1) > SYSDATE UNION ALL SELECT 'Projectlocatie', rg.alg_ruimte_nr, rg.alg_ruimte_omschrijving, l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_vervaldatum, flx.getflex ('ALG', 2101, alg_ruimte_key, 'R') adres, flx.getflex ('ALG', 2102, alg_ruimte_key, 'R') postcode, flx.getflex ('ALG', 2103, alg_ruimte_key, 'R') plaats, l.alg_locatie_key, alg_ruimte_key, (SELECT LISTAGG (DISTINCT prs_kostenplaats_nr, ',') WITHIN GROUP (ORDER BY prs_kostenplaats_nr ASC) AS wmen FROM alg_kenmerk k, alg_onrgoedkenmerk aogk, prs_bedrijf b, (SELECT prs_link_key, prs_kostenplaats_nr, kp.prs_kostenplaats_key FROM prs_kostenplaats kp, prs_kenmerklink kl WHERE fac.safe_to_number (kl.prs_kenmerklink_waarde) = kp.prs_kostenplaats_key AND kl.prs_kenmerk_key = 1260) wm WHERE fac.safe_to_number (alg_onrgoedkenmerk_waarde) = b.prs_bedrijf_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key AND alg_kenmerk_omschrijving LIKE 'Werkmaatschappij%' AND alg_kenmerk_kenmerktype = 'S' AND alg_onrgoedkenmerk_verwijder IS NULL AND alg_onrgoed_key = rg.alg_locatie_key AND b.prs_bedrijf_key = wm.prs_link_key(+) AND b.prs_bedrijf_intern = 1) wmen FROM alg_v_ruimte_gegevens rg, alg_locatie l WHERE rg.alg_locatie_key = l.alg_locatie_key AND alg_srtruimte_key = 241; -- detailrapportage als je klikt op een regel in bovenstaande rapport. CREATE OR REPLACE VIEW pchd_v_locatie_gegevens_mldcnt AS SELECT mld_melding_key, ins_srtdiscipline_prefix || mld_melding_key melding_nr, mld_melding_datum, ins_srtdiscipline_prefix, d.ins_discipline_omschrijving, std.mld_stdmelding_omschrijving, mld_melding_onderwerp, mld_alg_locatie_key alg_locatie_key, mld_alg_onroerendgoed_keys alg_ruimte_key FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, alg_locatie l, alg_v_allonroerendgoed aog WHERE mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Bij Frontoffice, Nieuw, Te accepteren, In behandeling, Uitgegeven, Niet opgelost AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys UNION ALL SELECT c.cnt_contract_key, 'C' || cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') contract_nr, cnt_contract_looptijd_van, 'C', d.ins_discipline_omschrijving, prs_bedrijf_naam, c.cnt_contract_omschrijving, l.alg_locatie_key, r.alg_ruimte_key FROM cnt_contract c, ins_tab_discipline d, alg_locatie l, alg_ruimte r, prs_bedrijf b, (SELECT cnt_contract_key, cnt_alg_plaats_key alg_locatie_key FROM cnt_contract_plaats cp WHERE cp.cnt_alg_plaats_code = 'L' AND cp.cnt_contract_plaats_verwijder IS NULL) cpl, (SELECT cnt_contract_key, cnt_alg_plaats_key alg_ruimte_key FROM cnt_contract_plaats cp WHERE cp.cnt_alg_plaats_code = 'R' AND cp.cnt_contract_plaats_verwijder IS NULL) cpr WHERE cnt_contract_status IN (0, 2, 3) -- /* 0=actief, 1=inactief, 2=nieuw, 3=ter goedkeuring */ AND c.cnt_contract_verwijder IS NULL AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND c.cnt_contract_key = cpl.cnt_contract_key(+) AND cpl.alg_locatie_key = l.alg_locatie_key(+) AND c.cnt_contract_key = cpr.cnt_contract_key(+) AND cpr.alg_ruimte_key = r.alg_ruimte_key(+); -- View om de relatie tussen werkmaatschappij en locatie weer te geven. Deze relatie loopt -- via de kenmerken werkmaatschij(n) bij een locatie. Deze kenmerken wijzen naar een intern -- bedrijf. Deze interne bedrijven hebben vervolgens een kenmerk dat naar de kostenplaats wijst. -- De combinatie prs_kostenplaat_nr en locatiecode is uiteindelijke de projectcode die naar -- Exact gecommuniceerd wordt. CREATE OR REPLACE VIEW pchd_v_wm_loc AS SELECT DISTINCT prs_bedrijf_key, prs_bedrijf_naam, wm.prs_kostenplaats_key, wm.prs_kostenplaats_nr, b.prs_bedrijf_intern, l.alg_locatie_code, l.alg_locatie_omschrijving, COUNT (*) aantal, wm.prs_kostenplaats_nr || alg_locatie_code projectcode FROM alg_kenmerk k, alg_onrgoedkenmerk aogk, prs_bedrijf b, alg_locatie l, (SELECT prs_link_key, prs_kostenplaats_nr, kp.prs_kostenplaats_key FROM prs_kostenplaats kp, prs_kenmerklink kl WHERE fac.safe_to_number (kl.prs_kenmerklink_waarde) = kp.prs_kostenplaats_key AND kl.prs_kenmerk_key = 1260) wm WHERE fac.safe_to_number (alg_onrgoedkenmerk_waarde) = b.prs_bedrijf_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key AND alg_kenmerk_omschrijving LIKE 'Werkmaatschappij%' AND alg_kenmerk_kenmerktype = 'S' AND alg_onrgoedkenmerk_verwijder IS NULL AND alg_onrgoed_key = l.alg_locatie_key AND l.alg_locatie_verwijder IS NULL AND b.prs_bedrijf_key = wm.prs_link_key(+) AND b.prs_bedrijf_intern = 1 AND COALESCE (alg_locatie_vervaldatum, SYSDATE + 1) > SYSDATE GROUP BY prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_intern, l.alg_locatie_code, l.alg_locatie_omschrijving, wm.prs_kostenplaats_nr, wm.prs_kostenplaats_key ORDER BY 2; CREATE OR REPLACE VIEW PCHD_V_AANWEZIGBEDRIJF ( PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM, PRS_BEDRIJF_VERWIJDER, PRS_BEDRIJF_LEVERANCIER, PRS_BEDRIJF_UITVOERENDE, PRS_BEDRIJF_CONTRACT, PRS_BEDRIJF_INTERN, PRS_BEDRIJF_HUURDER ) AS SELECT PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM, PRS_BEDRIJF_VERWIJDER, PRS_BEDRIJF_LEVERANCIER, PRS_BEDRIJF_UITVOERENDE, PRS_BEDRIJF_CONTRACT, PRS_BEDRIJF_INTERN, PRS_BEDRIJF_HUURDER FROM prs_bedrijf WHERE prs_bedrijf_verwijder IS NULL AND ( prs_bedrijf_uitvoerende = 1 OR prs_bedrijf_leverancier = 1 OR prs_bedrijf_contract = 1 OR prs_bedrijf_huurder = 1); ------ 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