Files
Customer/AKZO/AKZO.sql
Suzan Wiegerinck e9e3d773a2 AKZO#79192 Buffetlunch
svn path=/Customer/trunk/; revision=61619
2023-08-29 08:54:09 +00:00

2485 lines
96 KiB
SQL

--
-- $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