Files
Customer/AKZO/AKZO.sql
2021-06-08 14:11:34 +00:00

1159 lines
45 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_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
(
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 FORCE 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,
'' business_unit_an_naam,
'' afdeling_akzo_code,
'' afdeling_akzo_naam,
bedrijf.ins_kenmerkdeel_waarde firmanaam,
'' nevenfunctie_code,
nevenfunctie.prs_kenmerklink_waarde nevenfunctie_naam,
werkplek.prs_werkplek_omschrijving werkplek_code,
werkplek.alg_ruimte_omschrijving 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 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
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 d.ins_deel_verwijder IS NULL
AND p.prs_perslid_key = nevenfunctie.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(+);
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
(
HIDE_F_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,
artikeloms,
artikelopm,
r2a.ruimte_nr
catering_locatie,
opmerking,
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.res_kenmerkartikel_waarde opmerking
FROM res_rsv_artikel ra,
res_artikel a,
res_discipline d,
res_rsv_ruimte rr,
res_activiteit act,
prs_v_perslid_fullnames pf,
(SELECT ka.res_rsv_artikel_key, res_kenmerkartikel_waarde
FROM res_kenmerkartikel ka,
res_kenmerk k,
res_srtkenmerk sk
WHERE ka.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND res_srtkenmerk_upper = 'BIJZONDERHEDEN')
opmerking
WHERE ra.res_rsv_artikel_verwijder IS NULL
AND ra.res_rsv_artikel_key =
opmerking.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 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 hide_f_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 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
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 VIEW AKZO_V_NOTI_INS_TBADGE
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST01',
NULL,
aanvrager,
'Tijdelijke badge verloopt: '
|| vervaldatum
|| ' (badgenummer: '
|| pasnr
|| ')',
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
FROM ins_deel d,
ins_srtdeel sd,
ins_kenmerkdeel kd,
prs_perslid aanvr
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.ins_deel_key = kd.ins_deel_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 = 1
AND kd.ins_kenmerk_key = 21
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 FORCE 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;
CREATE OR REPLACE VIEW AKZA_V_RIT_ADRES
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 AKZA_V_RIT_TARIEFGROEP
AS
SELECT fac_usrdata_key akza_v_rit_tariefgroep_key,
fac_usrdata_code akza_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;
------ 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