1621 lines
72 KiB
SQL
1621 lines
72 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database
|
|
|
|
DEFINE thisfile = 'ALLR.SQL'
|
|
DEFINE dbuser = '^ALLR'
|
|
|
|
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 ALLR
|
|
AS
|
|
FUNCTION change_delimitor (p_string VARCHAR2,
|
|
p_delimitor VARCHAR2)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE upsert_aeos_bezoeker (p_bezoekers_key NUMBER,
|
|
p_status VARCHAR2,
|
|
p_response VARCHAR2);
|
|
|
|
PROCEDURE upsert_wifi_bezoeker (p_bezoekers_key NUMBER,
|
|
p_id VARCHAR2);
|
|
|
|
PROCEDURE upsert_wifi_melding (p_melding_key NUMBER,
|
|
p_id VARCHAR2,
|
|
p_result_kenm_key NUMBER);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY ALLR
|
|
AS
|
|
|
|
FUNCTION change_delimitor (p_string VARCHAR2,
|
|
p_delimitor VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_field VARCHAR2 (1000) := 'QueQuLeQue';
|
|
v_result VARCHAR2 (2000);
|
|
v_line VARCHAR2 (2000);
|
|
BEGIN
|
|
v_line := p_string;
|
|
|
|
WHILE v_line IS NOT NULL
|
|
LOOP
|
|
fac.imp_getfield (v_line, p_delimitor, v_field);
|
|
v_result := v_result || '"' || v_field || '";';
|
|
END LOOP;
|
|
|
|
RETURN v_result;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
RETURN NULL;
|
|
END;
|
|
|
|
-- Procedure om de status van de bezoekers vast te houden die naar AEOS gestuurd worden.
|
|
-- Hiermee zorgen we er voor dat de koppeling zich automatisch hersteld als er een tijd uitval is.
|
|
-- fac_usrdata_vervaldatum bevat de datum/tijd van de laatste actie
|
|
PROCEDURE upsert_aeos_bezoeker (p_bezoekers_key NUMBER,
|
|
p_status VARCHAR2,
|
|
p_response VARCHAR2)
|
|
AS
|
|
c_fac_usrtab_key NUMBER := 81; -- Sync tabel AEOS
|
|
v_fac_usrdata_key NUMBER;
|
|
BEGIN
|
|
BEGIN
|
|
SELECT fac_usrdata_key
|
|
INTO v_fac_usrdata_key
|
|
FROM fac_usrdata
|
|
WHERE fac_usrtab_key = c_fac_usrtab_key
|
|
AND fac_usrdata_code = TO_CHAR(p_bezoekers_key);
|
|
|
|
UPDATE fac_usrdata
|
|
SET fac_usrdata_omschr = p_status,
|
|
fac_usrdata_omschr2 = p_response,
|
|
fac_usrdata_vervaldatum = SYSDATE
|
|
WHERE fac_usrdata_key = v_fac_usrdata_key;
|
|
|
|
IF p_status = 'SENT'
|
|
THEN
|
|
FAC.trackaction ('CUST19', p_bezoekers_key, NULL, NULL, NULL);
|
|
FLX.setflex('BEZ', 1000, p_bezoekers_key, 1);
|
|
END IF;
|
|
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
INSERT INTO fac_usrdata (fac_usrdata_omschr, fac_usrdata_code, fac_usrdata_omschr2, fac_usrtab_key, fac_usrdata_vervaldatum)
|
|
VALUES (p_status, p_bezoekers_key, p_response, c_fac_usrtab_key, SYSDATE);
|
|
END;
|
|
|
|
END;
|
|
|
|
-- Procedure om de status van de bezoekers vast te houden die naar ClearPass/ExtremeNetworks gestuurd worden.
|
|
-- Het vinkje wordt gezet dat de bezoekers is aangemeld en de id in ClearPass wordt geregistreerd.
|
|
PROCEDURE upsert_wifi_bezoeker (p_bezoekers_key NUMBER,
|
|
p_id VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
IF p_id IS NULL
|
|
THEN
|
|
FLX.setflex('BEZ', 1001, p_bezoekers_key, NULL);
|
|
ELSE
|
|
FLX.setflex('BEZ', 1001, p_bezoekers_key, 1);
|
|
END IF;
|
|
FLX.setflex('BEZ', 1002, p_bezoekers_key, p_id);
|
|
END;
|
|
|
|
-- Procedure om de status van de wifi aanvraag vast te houden die naar ClearPass/ExtremeNetworks gestuurd worden.
|
|
-- Het vinkje wordt gezet dat de wifi aanvraag is aangemeld en de id in ClearPass/ExtremeNetworks wordt geregistreerd bij de melding.
|
|
PROCEDURE upsert_wifi_melding (p_melding_key NUMBER, p_id VARCHAR2, p_result_kenm_key NUMBER)
|
|
AS
|
|
BEGIN
|
|
IF p_id IS NULL
|
|
THEN
|
|
FLX.setflex('MLD', p_result_kenm_key, p_melding_key, NULL);
|
|
ELSE
|
|
FLX.setflex('MLD', p_result_kenm_key, p_melding_key, 1);
|
|
END IF;
|
|
FLX.setflex('MLD', p_result_kenm_key, p_melding_key, p_id);
|
|
END;
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE allr_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
v_seq_of_columns VARCHAR (255);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
BEGIN
|
|
-- Import formaat:
|
|
-- Group 1
|
|
-- Peildatum 2
|
|
-- Aanstellingsdatum 3
|
|
-- WerknemersID 4
|
|
-- Medewerkerstype 5
|
|
-- Roepnaam 6
|
|
-- Achternaam 7
|
|
-- PrimaryWorkPhone 8
|
|
-- PrimaryWorkEmail 9
|
|
-- AfdelingID 10
|
|
-- Afdelingnaam 11
|
|
-- Lvl3ID 12
|
|
-- Lvl3naam 13
|
|
-- Lvl4ID 14
|
|
-- Lvl4naam 15
|
|
-- IsManager 16
|
|
-- LocatieID 17
|
|
-- LocatieNaam 18
|
|
-- BusinessTitle 19
|
|
-- ManagerID 20
|
|
-- Tussenvoegsel 21
|
|
|
|
v_seq_of_columns := '0;0;0;0;0;0;4;7;21;6;'
|
|
-- v_alg_locatie_code 1
|
|
-- v_alg_gebouw_code 2
|
|
-- v_alg_verdieping_volgnr 3
|
|
-- v_alg_ruimte_nr 4
|
|
-- v_prs_werkplek_volgnr 5
|
|
-- v_prs_werkplek_omschrijving 6
|
|
-- v_prs_afdeling_naam 7
|
|
-- v_prs_perslid_naam 8
|
|
-- v_prs_perslid_tussenvoegsel 9
|
|
-- v_prs_perslid_voornaam 10
|
|
|| '0;0;0;0;0;0;0;9;0;4;'
|
|
-- v_prs_perslid_voorletters 11
|
|
-- v_prs_perslid_partner_naam 12
|
|
-- v_prs_perslid_partner_tussenv 13
|
|
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
|
|
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
|
|
-- 2 personen die de geboortenaam van de partner willen gebruiken
|
|
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
|
|
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
|
|
-- v_prs_perslid_telefoonnr 16
|
|
-- v_prs_perslid_mobiel 17
|
|
-- v_prs_perslid_email 18
|
|
-- v_prs_perslid_dienstverband 19
|
|
-- v_prs_perslid_nr 20
|
|
|| '4;0;0;0;0;0;11;12;13;14;'
|
|
-- v_prs_srtperslid_omschrijving 21
|
|
-- v_prs_perslid_oslogin 22
|
|
-- v_prs_perslid_wachtwoord 23
|
|
-- v_prs_perslid_titel 24
|
|
-- v_prs_perslid_apikey 25
|
|
-- v_dummy 26
|
|
-- v_prs_kenmerk1 27
|
|
-- v_prs_kenmerk2 28
|
|
-- v_prs_kenmerk3 29
|
|
-- v_prs_kenmerk4 30
|
|
|| '15;17;18;20;8;1;5;16;22;10;'
|
|
|| '19;0;0;0;0;0';
|
|
|
|
prs.import_perslid(p_import_key, v_seq_of_columns, 'Group;Peildatum;Aanstellingsdatum;WerknemersID;Medewerkerstype;Roepnaam;Achternaam;PrimaryWorkPhone;PrimaryWorkEmail;AfdelingID;Afdelingnaam;Lvl3ID;Lvl3naam;Lvl4ID;Lvl4naam;IsManager;LocatieID;LocatieNaam;BusinessTitle;ManagerID;Tussenvoegsel;WorkMobilePhone%');
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_oslogin = prs_perslid_nr,
|
|
prs_perslid_telefoonnr = SUBSTR(REPLACE(prs_kenmerk9, ' '),1,15),
|
|
prs_perslid_mobiel = SUBSTR(REPLACE(prs_kenmerk13, ' '),1,15);
|
|
|
|
-- De afdelingscode slaan we tijdelijk op in kenmerk14 omdat deze bij toekomstige medewerkers leeg is.
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = COALESCE(prs_kenmerk14, '_FH'),
|
|
prs_kenmerk1 = COALESCE(prs_kenmerk1, 'Future Hires'),
|
|
prs_srtperslid_omschrijving = SUBSTR(COALESCE(prs_kenmerk15, 'Future Hire'),1,60);
|
|
|
|
-- We gaan de medewerkers koppelen aan een werkplek. Dat gaan we doen door de code van de standplaats (kenmerk6) te matchen
|
|
-- met het kenmerk bij het gebouw (kenmerk 1200). Verder moet er dan bij dat gebouw een ruimte zijn met ruimtenummer _WP
|
|
UPDATE fac_imp_perslid p
|
|
SET (alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr) =
|
|
(SELECT alg_locatie_code,
|
|
alg_gebouw_upper,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr
|
|
FROM alg_v_ruimte_gegevens rg, alg_onrgoedkenmerk aogk
|
|
WHERE aogk.alg_onrgoed_key = rg.alg_gebouw_key
|
|
AND aogk.alg_kenmerk_key = 1200
|
|
AND alg_ruimte_nr = '_WP'
|
|
AND aogk.alg_onrgoedkenmerk_waarde = prs_kenmerk6
|
|
AND ROWNUM = 1);
|
|
|
|
-- Medewerkers van Kenter worden vanaf 6 november buiten de koppeling gehouden
|
|
DELETE fac_imp_perslid WHERE LOWER(prs_perslid_email) LIKE '%kenter.nu';
|
|
|
|
DELETE fac_imp_perslid WHERE LOWER(prs_perslid_email) LIKE '%@alliander.onmicrosoft.com';
|
|
|
|
END allr_import_perslid;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE allr_update_perslid (p_import_key IN NUMBER)
|
|
IS
|
|
CURSOR c IS SELECT * FROM fac_imp_perslid;
|
|
|
|
CURSOR c_del (c_bedrijf_key IN NUMBER)
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_nr,
|
|
pf.prs_perslid_naam_full,
|
|
p.prs_perslid_oslogin
|
|
FROM fac_imp_perslid i,
|
|
prs_perslid p,
|
|
prs_v_perslid_fullnames_all pf,
|
|
prs_v_afdeling_boom ab
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
|
|
AND pf.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_nr IS NOT NULL
|
|
AND i.prs_perslid_nr IS NULL
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_bedrijf_key;
|
|
|
|
-- Cursor om de afdelingsstructuur aan te maken.
|
|
CURSOR c_afd_mut
|
|
IS
|
|
SELECT DISTINCT prs_afdeling_naam,
|
|
prs_kenmerk1,
|
|
prs_kenmerk2,
|
|
prs_kenmerk3,
|
|
prs_kenmerk4,
|
|
prs_kenmerk5
|
|
FROM fac_imp_perslid;
|
|
|
|
-- Cursor om afdelingen te verwijderen
|
|
CURSOR c_afd_del (c_bedrijf_key IN NUMBER)
|
|
IS
|
|
SELECT ab.prs_afdeling_key,
|
|
a.prs_afdeling_naam,
|
|
a.prs_afdeling_omschrijving,
|
|
ab.niveau
|
|
FROM prs_v_afdeling_boom ab, prs_afdeling a
|
|
WHERE ab.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_afdeling_verwijder IS NULL
|
|
AND ab.prs_bedrijf_key = c_bedrijf_key
|
|
AND a.prs_afdeling_naam <> '_FH'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_perslid i
|
|
WHERE ab.niveau = 1 AND a.prs_afdeling_naam = i.prs_kenmerk2)
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_perslid i, prs_afdeling a1
|
|
WHERE ab.niveau = 2
|
|
AND a.prs_afdeling_parentkey = a1.prs_afdeling_key
|
|
AND a1.prs_afdeling_naam = i.prs_kenmerk2
|
|
AND a.prs_afdeling_naam = i.prs_kenmerk4)
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_perslid i, prs_afdeling a1, prs_afdeling a2
|
|
WHERE ab.niveau = 3
|
|
AND a.prs_afdeling_parentkey = a2.prs_afdeling_key
|
|
AND a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
|
AND a1.prs_afdeling_naam = i.prs_kenmerk2
|
|
AND a2.prs_afdeling_naam = i.prs_kenmerk4
|
|
AND a.prs_afdeling_naam = i.prs_afdeling_naam)
|
|
ORDER BY ab.niveau DESC;
|
|
|
|
-- Cursor om alle prs_perslid_visibility op ja te zetten
|
|
CURSOR c_vis
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_visibility,
|
|
(SELECT MAX(ft.fac_tracking_refkey) FROM fac_tracking ft WHERE ft.fac_srtnotificatie_key = 57 AND INSTR(ft.fac_tracking_oms, 'Naamzichtbaarheid:')>0 AND ft.fac_tracking_refkey = p.prs_perslid_key AND ft.prs_perslid_key NOT IN (4) )
|
|
mutatie_self
|
|
FROM prs_perslid p, prs_v_afdeling a
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_bedrijf_key = 321
|
|
AND p.prs_perslid_visibility = 0
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_perslid_inactief IS NULL ;
|
|
|
|
v_count_imp NUMBER;
|
|
v_count_allr NUMBER;
|
|
|
|
v_aanduiding VARCHAR2(100);
|
|
v_errorhint VARCHAR2(1000);
|
|
v_errormsg VARCHAR2(1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2(200);
|
|
|
|
v_prs_afdeling_key1 NUMBER;
|
|
v_prs_afdeling_key2 NUMBER;
|
|
v_prs_afdeling_key3 NUMBER;
|
|
v_prs_afdeling_verwijder DATE;
|
|
c_prs_bedrijf_key NUMBER := 321; -- Intern bedrijf Alliander
|
|
v_prs_bedrijf_key NUMBER;
|
|
v_prs_perslid_key NUMBER;
|
|
BEGIN
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count_imp
|
|
FROM fac_imp_perslid
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count_allr
|
|
FROM prs_perslid p, prs_v_afdeling_boom ab
|
|
WHERE p.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_bedrijf_key = c_prs_bedrijf_key;
|
|
|
|
-- We gaan alleen de import uitvoeren als de aangeboden populatie groter is dan de helft van de huidige populatie.
|
|
IF v_count_imp > v_count_allr / 2
|
|
THEN
|
|
|
|
FOR rec IN c_afd_mut
|
|
LOOP
|
|
v_prs_afdeling_key1 := NULL;
|
|
v_prs_afdeling_key2 := NULL;
|
|
v_prs_bedrijf_key := NULL;
|
|
IF rec.prs_kenmerk2 IS NOT NULL
|
|
THEN
|
|
v_aanduiding := rec.prs_kenmerk2 || '-' || rec.prs_kenmerk4 || '-' || rec.prs_afdeling_naam;
|
|
BEGIN
|
|
v_errorhint := 'Controle afdeling niveau 1';
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_afdeling_key1
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND a.prs_afdeling_naam = rec.prs_kenmerk2;
|
|
|
|
UPDATE prs_afdeling
|
|
SET prs_bedrijf_key = c_prs_bedrijf_key,
|
|
prs_afdeling_parentkey = NULL,
|
|
prs_afdeling_omschrijving = SUBSTR (rec.prs_kenmerk3, 1, 60)
|
|
WHERE prs_afdeling_key = v_prs_afdeling_key1;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Aanmaken afdeling niveau 1';
|
|
INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_naam, prs_afdeling_omschrijving)
|
|
VALUES (c_prs_bedrijf_key, SUBSTR (rec.prs_kenmerk2, 1, 15), SUBSTR (rec.prs_kenmerk3, 1, 60))
|
|
RETURNING prs_afdeling_key
|
|
INTO v_prs_afdeling_key1;
|
|
END;
|
|
END IF;
|
|
|
|
-- Afdeling niveau2
|
|
IF rec.prs_kenmerk4 IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
v_errorhint := 'Controle afdeling niveau 2';
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_afdeling_key2
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND a.prs_afdeling_naam = rec.prs_kenmerk4;
|
|
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_parentkey = v_prs_afdeling_key1,
|
|
prs_bedrijf_key = NULL,
|
|
prs_afdeling_omschrijving = SUBSTR (rec.prs_kenmerk5, 1, 60)
|
|
WHERE prs_afdeling_key = v_prs_afdeling_key2;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Aanmaken afdeling niveau 2: ' || v_prs_afdeling_key1;
|
|
INSERT INTO prs_afdeling (prs_afdeling_parentkey, prs_afdeling_naam, prs_afdeling_omschrijving)
|
|
VALUES (v_prs_afdeling_key1, SUBSTR (rec.prs_kenmerk4, 1, 15), SUBSTR (rec.prs_kenmerk5, 1, 60))
|
|
RETURNING prs_afdeling_key
|
|
INTO v_prs_afdeling_key2;
|
|
v_errorhint := 'Einde aanmaken afdeling niveau 2';
|
|
END;
|
|
END IF;
|
|
|
|
-- Afdeling niveau3
|
|
-- Als de persoon gekoppeld is aan de afdeling Future Hires dan wordt deze op afdelingsniveau 1 gekoppeld aan de afdeling _FH
|
|
-- Als de afdeling al op niveau 2 voorkomt hoeven we deze hier niet meer aan te maken.
|
|
IF COALESCE(rec.prs_kenmerk4, 'QueQeLeQue') <> rec.prs_afdeling_naam AND COALESCE(rec.prs_kenmerk2, 'QueQeLeQue') <> rec.prs_afdeling_naam
|
|
THEN
|
|
BEGIN
|
|
v_errorhint := 'Controle afdeling niveau 3';
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_afdeling_key3
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND a.prs_afdeling_naam = rec.prs_afdeling_naam;
|
|
|
|
IF v_prs_afdeling_key2 IS NULL
|
|
THEN
|
|
v_prs_bedrijf_key := c_prs_bedrijf_key;
|
|
END IF;
|
|
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_parentkey = v_prs_afdeling_key2,
|
|
prs_bedrijf_key = v_prs_bedrijf_key,
|
|
prs_afdeling_omschrijving = SUBSTR (rec.prs_kenmerk1, 1, 60)
|
|
WHERE prs_afdeling_key = v_prs_afdeling_key3;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Aanmaken afdeling niveau 3 [' || v_prs_afdeling_key2 || ']';
|
|
|
|
IF v_prs_afdeling_key2 IS NULL
|
|
THEN
|
|
v_prs_bedrijf_key := c_prs_bedrijf_key;
|
|
END IF;
|
|
|
|
INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_parentkey, prs_afdeling_naam, prs_afdeling_omschrijving)
|
|
VALUES (v_prs_bedrijf_key,
|
|
v_prs_afdeling_key2,
|
|
SUBSTR (rec.prs_afdeling_naam, 1, 15),
|
|
SUBSTR (rec.prs_kenmerk1, 1, 60))
|
|
RETURNING prs_afdeling_key
|
|
INTO v_prs_afdeling_key3;
|
|
END;
|
|
END IF;
|
|
END LOOP;
|
|
|
|
|
|
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
|
|
FOR rec IN c_del (c_prs_bedrijf_key)
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint :=
|
|
'Verwijderen persoon: '
|
|
|| rec.prs_perslid_key
|
|
|| '-'
|
|
|| rec.prs_perslid_nr
|
|
|| '-'
|
|
|| rec.prs_perslid_oslogin;
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END LOOP;
|
|
|
|
-- Nu kunnen we de standaard facilitor-update doorvoeren
|
|
prs.update_perslid (p_import_key, 'NR', 'A');
|
|
|
|
-- En dan gaan we als laatste de kenmmerken bijwerken
|
|
FOR rec IN c
|
|
LOOP
|
|
-- We kunnen alleen maar kenmerken toevoegen/aanpassen als de persoon ook is aangemaakt zonder foutmelding.
|
|
IF rec.prs_perslid_key IS NOT NULL
|
|
THEN
|
|
v_errorhint := 'Bijwerken leidinggevende in personenkaart';
|
|
v_aanduiding := rec.prs_perslid_voornaam || ' ' || rec.prs_perslid_naam;
|
|
IF rec.prs_kenmerk8 IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
-- op zoek naar de leidinggevende binnen bedrijf Alliander
|
|
SELECT p.prs_perslid_key
|
|
INTO v_prs_perslid_key
|
|
FROM prs_perslid p, prs_v_afdeling v
|
|
WHERE p.prs_afdeling_key = v.prs_afdeling_key
|
|
AND v.prs_afdeling_verwijder IS NULL
|
|
AND v.prs_bedrijf_key = c_prs_bedrijf_key
|
|
AND p.prs_perslid_nr = rec.prs_kenmerk8
|
|
AND p.prs_perslid_verwijder IS NULL ;
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_key_verantw = v_prs_perslid_key
|
|
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Leidinggevende niet gevonden',
|
|
rec.prs_kenmerk8);
|
|
|
|
END;
|
|
END IF;
|
|
|
|
-- Status
|
|
v_errorhint := 'Bijwerken kenmerk status';
|
|
FLX.setflex('PRS', 1022, rec.prs_perslid_key, 'P', rec.prs_kenmerk10);
|
|
-- Type medewerker
|
|
v_errorhint := 'Bijwerken kenmerk type medewerker';
|
|
FLX.setflex('PRS', 1020, rec.prs_perslid_key, 'P', rec.prs_kenmerk11);
|
|
-- Leidinggevendenr. uit workday
|
|
v_errorhint := 'Bijwerken kenmerk leidinggevende';
|
|
FLX.setflex('PRS', 1080, rec.prs_perslid_key, 'P', COALESCE(rec.prs_kenmerk8, 'onbekend in workday'));
|
|
-- Is manager
|
|
v_errorhint := 'Bijwerken kenmerk is manager';
|
|
IF rec.prs_kenmerk12 = 1
|
|
THEN
|
|
FLX.setflex('PRS', 1040, rec.prs_perslid_key, 'P', 1);
|
|
ELSE
|
|
FLX.setflex('PRS', 1040, rec.prs_perslid_key, 'P', NULL);
|
|
END IF;
|
|
END IF;
|
|
END LOOP;
|
|
|
|
-- En dan de afdelingen verwijderen die niet meer voorkomen.
|
|
FOR rec IN c_afd_del(c_prs_bedrijf_key)
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint := 'Verwijderen afdeling ';
|
|
v_aanduiding := rec.prs_afdeling_naam || '-' || rec.prs_afdeling_omschrijving || ' Niveau: ' || rec.niveau;
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_verwijder = SYSDATE,
|
|
prs_afdeling_naam = REPLACE(prs_afdeling_naam, '_vv')
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key
|
|
-- we gaan geen afdelingen verwijderen als er nog onderliggende niet verwijderde afdelingen bestaan
|
|
AND NOT EXISTS (SELECT 1 FROM prs_afdeling a WHERE a.prs_afdeling_verwijder IS NULL AND a.prs_afdeling_parentkey = rec.prs_afdeling_key)
|
|
-- we gaan geen afdelingen verwijderen als er nog onderliggende niet verwijderde personen bestaan
|
|
AND NOT EXISTS (SELECT 1 FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = rec.prs_afdeling_key);
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
-- Markeer de afdeling. Hiervoor gaan we de afdelingcode voorzien van '_vv' van vervallen
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_naam = prs_afdeling_naam || '_vv'
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key
|
|
AND prs_afdeling_naam NOT LIKE '%vv';
|
|
|
|
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,
|
|
'');
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
-- en tot slot de personen op visible JA zetten (zie ticket ALLR#80708)
|
|
FOR rec IN c_vis
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint := 'Personen op visible JA zetten ';
|
|
v_aanduiding := rec.prs_perslid_key || '-' || rec.prs_perslid_naam;
|
|
|
|
|
|
-- alleen voor die personen die niet buiten koppeling om de setting zelf in personenkaart hebben laten omzetten
|
|
IF rec.mutatie_self IS NULL
|
|
THEN
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_visibility = 1
|
|
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
-- tracking
|
|
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 4, NULL, 'Naamzichtbaarheid: 0 --> 1 (uit workday-koppeling)'); END;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Verschil tussen huidige populatie personen (' || v_count_allr || ') en aangeboden populatie (' || v_count_imp || ') is te groot' ,
|
|
'');
|
|
END IF;
|
|
|
|
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);
|
|
END;
|
|
/
|
|
|
|
-- functie om de Kenter-medewerkers de werkplek-koppelingen te geven op de Kenter-gerelateerde gebouwen (zie AAXX#87553)
|
|
CREATE OR REPLACE VIEW allr_v_export_kenter_wp
|
|
(
|
|
result,
|
|
result_order
|
|
)
|
|
AS
|
|
SELECT '"SYNC - Werkplekkoppelingen Kenter medewerkers"'
|
|
|| ';"Uitgevoerd"',
|
|
0
|
|
FROM DUAL
|
|
UNION
|
|
SELECT 'ERROR: Datum '|| TO_CHAR(imp_log_datum) || ' - ' || imp_log_omschrijving || ' - ' || imp_log_hint,
|
|
1
|
|
FROM imp_log
|
|
WHERE imp_log_applicatie = 'KENTER_WP' ;
|
|
|
|
CREATE OR REPLACE PROCEDURE allr_select_kenter_wp (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
|
|
-- specifiek
|
|
c_alg_bedrijf_key NUMBER (10) := 22421 ; -- bedrijf Kenter B.V.
|
|
c_alg_kenmerk_key NUMBER (10) := 1500 ; -- Kenmerk_key Kenter-gerelateerd-gebouw
|
|
c_prs_kenmerk_key NUMBER (10) := 1060 ; -- Kenmerk_key op personenkaart om de laatste sync-datum op weg te schrijven
|
|
v_upsert_sync NUMBER (1) ;
|
|
|
|
-- Werkplekkoppelingen toevoegen of verwijder
|
|
CURSOR c
|
|
IS
|
|
SELECT km.prs_perslid_key,
|
|
km.prs_perslid_email,
|
|
kw.alg_ruimte_key,
|
|
kw.alg_gebouw_key,
|
|
kw.alg_gebouw_naam,
|
|
kw.alg_locatie_key,
|
|
(SELECT w.prs_werkplek_key
|
|
FROM prs_werkplek w, prs_perslidwerkplek wp
|
|
WHERE wp.prs_werkplek_key = w.prs_werkplek_key
|
|
AND w.prs_alg_ruimte_key = kw.alg_ruimte_key
|
|
AND wp.prs_perslid_key = km.prs_perslid_key)
|
|
prs_werkplek_key,
|
|
CASE
|
|
WHEN kw.alg_ruimte_key IN
|
|
(SELECT r.alg_ruimte_key
|
|
FROM prs_perslid p,
|
|
prs_srtperslid sp,
|
|
prs_perslidwerkplek wp,
|
|
prs_werkplek w,
|
|
alg_ruimte r,
|
|
alg_v_onrgoed_boom onr,
|
|
alg_locatie l
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND p.prs_perslid_key = wp.prs_perslid_key
|
|
AND wp.prs_werkplek_key = w.prs_werkplek_key
|
|
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_ruimte_key = onr.alg_ruimte_key
|
|
AND onr.alg_locatie_key = l.alg_locatie_key
|
|
AND p.prs_perslid_key = km.prs_perslid_key
|
|
)
|
|
THEN
|
|
'OK'
|
|
ELSE
|
|
'TOEVOEGEN WP'
|
|
END actie
|
|
FROM (SELECT p.prs_perslid_key, p.prs_perslid_email
|
|
FROM prs_perslid p, prs_v_afdeling_boom ab
|
|
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_alg_bedrijf_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
) km, -- alle kentermedewerkers
|
|
(SELECT k.alg_kenmerk_omschrijving,
|
|
v.alg_gebouw_key,
|
|
g.alg_gebouw_naam,
|
|
v.alg_ruimte_key,
|
|
g.alg_locatie_key
|
|
FROM alg_gebouw g,
|
|
alg_onrgoedkenmerk kw,
|
|
alg_kenmerk k,
|
|
( SELECT alg_gebouw_key, MIN (alg_ruimte_key) alg_ruimte_key
|
|
FROM alg_v_allonrgoed_gegevens
|
|
WHERE alg_ruimte_nr = '_WP'
|
|
GROUP BY alg_gebouw_key) v
|
|
WHERE g.alg_gebouw_key = kw.alg_onrgoed_key
|
|
AND kw.alg_onrgoed_niveau = 'G'
|
|
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
|
|
AND k.alg_kenmerk_key = c_alg_kenmerk_key
|
|
AND g.alg_gebouw_key = v.alg_gebouw_key) kw -- alle kenter werkplekken
|
|
UNION
|
|
SELECT km.prs_perslid_key,
|
|
km.prs_perslid_email,
|
|
wp.alg_ruimte_key,
|
|
wp.alg_gebouw_key,
|
|
wp.alg_gebouw_naam,
|
|
wp.alg_locatie_key,
|
|
wp.prs_werkplek_key,
|
|
CASE
|
|
WHEN wp.alg_ruimte_key IN
|
|
(SELECT v.alg_ruimte_key
|
|
FROM alg_gebouw g,
|
|
alg_onrgoedkenmerk kw,
|
|
alg_kenmerk k,
|
|
( SELECT alg_gebouw_key,
|
|
MIN (alg_ruimte_key) alg_ruimte_key
|
|
FROM alg_v_allonrgoed_gegevens
|
|
WHERE alg_ruimte_nr = '_WP'
|
|
GROUP BY alg_gebouw_key) v
|
|
WHERE g.alg_gebouw_key = kw.alg_onrgoed_key
|
|
AND kw.alg_onrgoed_niveau = 'G'
|
|
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
|
|
AND k.alg_kenmerk_key = c_alg_kenmerk_key
|
|
AND g.alg_gebouw_key = v.alg_gebouw_key) -- kw -- alle kenter werkplekken
|
|
THEN
|
|
'OK'
|
|
ELSE
|
|
'VERWIJDEREN WP'
|
|
END actie
|
|
FROM (SELECT p.prs_perslid_key, p.prs_perslid_email
|
|
FROM prs_perslid p, prs_v_afdeling_boom ab
|
|
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_alg_bedrijf_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
) km, -- alle kentermedewerkers
|
|
( SELECT p.prs_perslid_key,
|
|
l.alg_locatie_key,
|
|
r.alg_ruimte_key,
|
|
g.alg_gebouw_key,
|
|
g.alg_gebouw_naam,
|
|
w.prs_werkplek_key
|
|
FROM prs_perslid p,
|
|
prs_srtperslid sp,
|
|
prs_perslidwerkplek wp,
|
|
prs_werkplek w,
|
|
alg_ruimte r,
|
|
alg_v_onrgoed_boom onr,
|
|
alg_locatie l,
|
|
alg_gebouw g
|
|
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
AND p.prs_perslid_key = wp.prs_perslid_key
|
|
AND wp.prs_werkplek_key = w.prs_werkplek_key
|
|
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_ruimte_key = onr.alg_ruimte_key
|
|
AND onr.alg_locatie_key = l.alg_locatie_key
|
|
AND onr.alg_gebouw_key = g.alg_gebouw_key
|
|
ORDER BY wp.prs_perslid_key) wp
|
|
WHERE km.prs_perslid_key = wp.prs_perslid_key
|
|
ORDER BY 1, 3, 4;
|
|
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_mes VARCHAR2 (200);
|
|
oracle_err_num NUMBER;
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR2 (1000);
|
|
v_count NUMBER;
|
|
|
|
|
|
|
|
BEGIN
|
|
v_count := 0;
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
-- Werkplekkoppelingen van de Kentergebouwen
|
|
v_aanduiding :=
|
|
'bijwerken werkplekkoppelingen kenter-medewerker - perslid_key:'
|
|
|| TO_CHAR (rec.prs_perslid_key);
|
|
|
|
v_upsert_sync := 0 ;
|
|
|
|
IF rec.actie = 'TOEVOEGEN WP'
|
|
THEN
|
|
v_errorhint :=
|
|
'actie toevoegen werkplek - gebouw_key: '
|
|
|| TO_CHAR (rec.alg_gebouw_key);
|
|
|
|
-- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0);
|
|
BEGIN
|
|
PRS.movetoruimte (rec.prs_perslid_key,
|
|
rec.alg_ruimte_key,
|
|
'G',
|
|
1);
|
|
|
|
v_upsert_sync := 1 ;
|
|
END;
|
|
|
|
END IF;
|
|
|
|
IF rec.actie = 'VERWIJDEREN WP'
|
|
THEN
|
|
v_errorhint :=
|
|
'actie verwijderen werkplek - gebouw_key: '
|
|
|| TO_CHAR (rec.alg_gebouw_key);
|
|
|
|
DELETE prs_werkplek
|
|
WHERE prs_werkplek_key = rec.prs_werkplek_key;
|
|
|
|
v_upsert_sync := 1 ;
|
|
|
|
END IF;
|
|
|
|
-- In personenkaart nog even vermelden wanneer deze vanuit de WP-sync voor het laatst zijn gemuteerd
|
|
IF v_upsert_sync = 1
|
|
THEN
|
|
|
|
PRS.upsertkenmerk (c_prs_kenmerk_key, rec.prs_perslid_key, TO_CHAR(sysdate, 'dd-mm-yyyy HH24:MI'));
|
|
|
|
END IF;
|
|
|
|
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 (p_applname,
|
|
'E',
|
|
v_aanduiding || ' - ' || v_errormsg,
|
|
v_errorhint);
|
|
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
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 (p_applname,
|
|
'E',
|
|
v_errormsg,
|
|
v_aanduiding || ' - HINT: ' || v_errorhint);
|
|
END;
|
|
/
|
|
|
|
|
|
-------------------
|
|
-- Rapportages --
|
|
-------------------
|
|
|
|
-- View om te laten zien welke standplaatsen uit de personenimport te mappen zijn aan het kenmerk met key 1200.
|
|
-- Dit kenmerk bevat de standplaatscode uit Workday
|
|
CREATE OR REPLACE VIEW allr_v_rap_standplaats
|
|
AS
|
|
SELECT prs_kenmerk6, prs_kenmerk7,
|
|
(SELECT COUNT (*)
|
|
FROM alg_onrgoedkenmerk
|
|
WHERE alg_onrgoedkenmerk_waarde = prs_kenmerk6
|
|
AND alg_kenmerk_key = 1200) match,
|
|
aantal_p
|
|
FROM ( SELECT prs_kenmerk6, prs_kenmerk7, COUNT (*) aantal_p
|
|
FROM fac_imp_perslid
|
|
GROUP BY prs_kenmerk6, prs_kenmerk7) i;
|
|
|
|
-- View - zie ticket ALLR#87273
|
|
-- annuleren = status_fo = vervallen = 4
|
|
-- status FO
|
|
--- 1 Optie
|
|
--- 2 Definitief
|
|
--- 3 Geblokkeerd
|
|
--- 4 Vervallen
|
|
-- status BO
|
|
--- 2 Geregistreerd
|
|
--- 5 Afgemeld
|
|
--- 6 Verwerkt
|
|
|
|
-- Vanuit Facilitor vervallen en/of verwijderen
|
|
--- handmatig op VERVALLEN (fo_status) dan GEEN VERWIJDERDATUM, MAAR WEL RESDEL
|
|
--- handmatig op VERWIJDEREN en WEL VERWIJDERDATUM + RESDEL + fo op 1
|
|
--- handmatig op VERWIJDEREN + NO_SHOW_KOSTEN dan WEL VERWIJDERDATUM + RESDEL + maar ook fo op 4
|
|
-- Vanuit Outlook verwijderd
|
|
---- RESDEL wordt gezet, door systeem (in fac_tracking geen prs_perslid_key) + fo_status wordt op vervallen gezet - (niet direct logisch, beter op 1...)
|
|
---- Dit kan voor ALLR automatisch via de schermpjes (als men na 10 minuten geen show aangeeft wordt deze verwijderd naar outlook/exchange -> facilitor)
|
|
---- Dit kan voor ALLR ook vanuit outlook-agenda door gebruiker echter ook dan is het de ruimte_resource die annuleert en dus is ook dan in facilitor de RESDEL door systeem...
|
|
CREATE OR REPLACE VIEW allr_v_rap_res_annuleringen
|
|
AS
|
|
SELECT v.res_rsv_ruimte_key,
|
|
v.reserveringsnummer,
|
|
v.res_rsv_ruimte_aanmaak,
|
|
v.reeks,
|
|
v.res_rsv_ruimte_omschrijving,
|
|
v.alg_locatie_omschrijving,
|
|
v.res_ruimte_nr,
|
|
v.res_ruimte_key,
|
|
v.ruimte_gekoppeld_outlook,
|
|
v.ruimte_gekoppeld,
|
|
v.bron_aanmaak,
|
|
v.prs_perslid_naam_friendly
|
|
aanvrager,
|
|
v.prs_perslid_email
|
|
aanvrager_email,
|
|
v.res_rsv_ruimte_van,
|
|
v.res_rsv_ruimte_tot,
|
|
v.duur_afspraak_minuten,
|
|
CASE WHEN UPPER(v.res_status_fo_omschrijving) IN ('VERVALLEN', 'OPTIE') AND v.res_rsv_ruimte_verwijder IS NOT NULL
|
|
THEN 'Vervallen (geannuleerd)'
|
|
ELSE v.res_status_fo_omschrijving
|
|
END
|
|
res_status_fo,
|
|
CASE WHEN UPPER(v.res_status_fo_omschrijving) IN ('VERVALLEN', 'OPTIE') AND v.res_rsv_ruimte_verwijder IS NOT NULL
|
|
THEN v.res_rsv_ruimte_verwijder
|
|
ELSE NULL
|
|
END
|
|
geannuleerd_op,
|
|
v.geannuleerd_vanuit,
|
|
v.geannuleerd_door,
|
|
v.no_show,
|
|
ROUND(v.no_show_binnen_minuten)
|
|
no_show_binnen_minuten
|
|
FROM (SELECT rrr.res_rsv_ruimte_key,
|
|
rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr
|
|
reserveringsnummer,
|
|
rrr.res_rsv_ruimte_aanmaak,
|
|
rrr.res_rsv_ruimte_bezoekers,
|
|
rr.res_ruimte_nr,
|
|
rar.res_ruimte_key,
|
|
CASE
|
|
WHEN rr.res_ruimte_extern_id IS NOT NULL AND rr.res_ruimte_graphhooksecret IS NOT NULL
|
|
THEN 'is gekoppeld'
|
|
WHEN rr.res_ruimte_extern_id IS NOT NULL AND rr.res_ruimte_graphhooksecret IS NULL
|
|
THEN 'is gekoppeld (zonder subscription?)'
|
|
WHEN rr.res_ruimte_extern_id IS NULL AND rr.res_ruimte_graphhooksecret IS NOT NULL
|
|
THEN 'was gekoppeld (nog met subscription?)'
|
|
ELSE
|
|
'niet gekoppeld'
|
|
END
|
|
ruimte_gekoppeld_outlook,
|
|
CASE
|
|
WHEN rr.res_ruimte_extern_id IS NOT NULL THEN rr.res_ruimte_extern_id
|
|
ELSE NULL
|
|
END
|
|
ruimte_gekoppeld,
|
|
p.prs_perslid_naam_friendly,
|
|
CASE
|
|
WHEN pp.prs_perslid_key = 11402 THEN new.prs_perslid_email_fallback
|
|
ELSE pp.prs_perslid_email
|
|
END
|
|
prs_perslid_email,
|
|
rrr.res_rsv_ruimte_omschrijving,
|
|
rrr.res_rsv_ruimte_van,
|
|
rrr.res_rsv_ruimte_tot,
|
|
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) *24*60
|
|
duur_afspraak_minuten,
|
|
rrr.res_rsv_ruimte_externnr,
|
|
rrr.res_rsv_ruimte_externnr2,
|
|
rrr.res_rsv_ruimte_externsyncdate,
|
|
CASE -- als er een resnew uitgaat door een facilitor-gebruiker dan is de reservering ook vanuit die kant aangemaakt...
|
|
WHEN new.prs_perslid_email IS NOT NULL THEN 'facilitor'
|
|
ELSE 'outlook'
|
|
END
|
|
bron_aanmaak,
|
|
CASE
|
|
WHEN rrr.res_rsv_ruimte_externnr2 IS NOT NULL
|
|
AND rrr.res_rsv_ruimte_externsyncdate IS NOT NULL
|
|
THEN
|
|
TO_CHAR (rrr.res_rsv_ruimte_externsyncdate,
|
|
'dd-mm-yyyy hh24:mi:ss')
|
|
WHEN rrr.res_rsv_ruimte_externnr IS NULL
|
|
AND rrr.res_rsv_ruimte_externnr2 IS NULL
|
|
THEN
|
|
'nvt' -- deze reservering loopt niet mee in outlookkoppeling
|
|
ELSE
|
|
''
|
|
END
|
|
export_outlook_lastdate,
|
|
CASE
|
|
WHEN ( SELECT COUNT (*)
|
|
FROM res_rsv_ruimte
|
|
WHERE res_reservering_key = rrr.res_reservering_key
|
|
GROUP BY res_reservering_key) > 1
|
|
THEN
|
|
'reeks'
|
|
ELSE
|
|
'enkelvoudig'
|
|
END
|
|
reeks,
|
|
CASE
|
|
WHEN rrr.res_rsv_ruimte_dirtlevel > 0
|
|
THEN
|
|
'ongeldige reservering in Facilitor'
|
|
ELSE
|
|
NULL
|
|
END
|
|
status_dirty,
|
|
v.alg_gebouw_code,
|
|
l.alg_locatie_omschrijving,
|
|
rrr.res_status_bo_key,
|
|
(select res_status_bo_omschrijving from res_status_bo where res_status_bo_key = rrr.res_status_bo_key)
|
|
res_status_bo_omschrijving,
|
|
rrr.res_status_fo_key,
|
|
(select res_status_fo_omschrijving from res_status_fo where res_status_fo_key = rrr.res_status_fo_key)
|
|
res_status_fo_omschrijving,
|
|
rrr.res_rsv_ruimte_verwijder,
|
|
ann.max_verwijderdatum,
|
|
ann.teller_del,
|
|
ann.max_prs_perslid_key,
|
|
-- als VANUIT OUTLOOK en de verwijder_datum gezet, maar de Reservering is toch weer lopend, dan is het een ruimte-switch in outlook (van de ene naar de andere spreekkamer..)
|
|
------ Waar dus eerst verwijdering op wordt gedaan en daarna op de nieuwe ruimte_resource dezelfde res_rsv_ruimte_key weer opengezet wordt S(res_allow_undelete)..
|
|
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND ann.max_prs_perslid_key IS NULL AND rrr.res_rsv_ruimte_verwijder IS NULL THEN 'ja' ELSE '' END
|
|
ruimte_switch_outlook,
|
|
-- als ann_max_prs_perslid IS NULL dan vanuit outlook via system de delete...
|
|
CASE WHEN rrr.res_rsv_ruimte_verwijder IS NOT NULL AND ann.max_prs_perslid_key IS NULL
|
|
THEN 'vanuit outlook - gebruiker onbekend'
|
|
WHEN ann.max_prs_perslid_key IS NOT NULL
|
|
THEN 'vanuit facilitor'
|
|
ELSE ''
|
|
END
|
|
geannuleerd_vanuit,
|
|
CASE WHEN ann.max_prs_perslid_key IS NOT NULL
|
|
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = ann.max_prs_perslid_key)
|
|
END
|
|
geannuleerd_door,
|
|
-- Is de reservering-delete binnen de afspraak - dan kan dit dus door een automatische no-show vanuit het roompanel na 10/11 minuten zijn gebeurd..
|
|
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
|
|
AND ann.max_verwijderdatum BETWEEN rrr.res_rsv_ruimte_van AND rrr.res_rsv_ruimte_tot
|
|
THEN 'no_show binnen afspraak'
|
|
WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
|
|
AND ann.max_verwijderdatum < rrr.res_rsv_ruimte_van
|
|
THEN 'no_show voor afspraak'
|
|
WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
|
|
AND ann.max_verwijderdatum >= rrr.res_rsv_ruimte_van
|
|
THEN 'no_show na afspraak'
|
|
ELSE ''
|
|
END
|
|
no_show,
|
|
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
|
|
AND ann.max_verwijderdatum BETWEEN rrr.res_rsv_ruimte_van AND rrr.res_rsv_ruimte_tot
|
|
THEN (ann.max_verwijderdatum - rrr.res_rsv_ruimte_van)*24*60
|
|
ELSE NULL
|
|
END
|
|
no_show_binnen_minuten
|
|
FROM res_rsv_ruimte rrr,
|
|
prs_v_perslid_fullnames p,
|
|
prs_perslid pp,
|
|
res_ruimte_opstelling ro,
|
|
res_ruimte rr,
|
|
res_reservering r,
|
|
( SELECT res_ruimte_key,
|
|
COUNT (*),
|
|
MAX (alg_ruimte_key) alg_ruimte_key
|
|
FROM res_alg_ruimte
|
|
WHERE res_alg_ruimte_verwijder IS NULL
|
|
GROUP BY res_ruimte_key) rar,
|
|
alg_v_onroerendgoed_gegevens v,
|
|
alg_locatie l,
|
|
( SELECT ft.fac_tracking_refkey,
|
|
MAX (ft.fac_tracking_datum) max_verwijderdatum,
|
|
MAX (ft.prs_perslid_key) max_prs_perslid_key,
|
|
COUNT (*) teller_del
|
|
FROM fac_tracking ft, fac_srtnotificatie sn
|
|
WHERE ft.fac_srtnotificatie_key =
|
|
sn.fac_srtnotificatie_key
|
|
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
|
|
AND sn.fac_srtnotificatie_code = 'RESDEL'
|
|
GROUP BY ft.fac_tracking_refkey
|
|
) ann,
|
|
( SELECT ft.fac_tracking_refkey,
|
|
p.prs_perslid_email,
|
|
CASE WHEN rrr.res_rsv_ruimte_host_key = 11402 -- organisator outlook - fallback - om emailadres 'organisator outlook - fallback' uit de tracking te halen (bijv: 'Reservering is geregistreerd door [data.office@alliander.com]')
|
|
THEN substr(fac_tracking_oms, instr(fac_tracking_oms, '[') + 1, instr(fac_tracking_oms, ']') - instr(fac_tracking_oms, '[') -1 )
|
|
END
|
|
prs_perslid_email_fallback
|
|
FROM fac_tracking ft, res_rsv_ruimte rrr, prs_perslid p
|
|
WHERE ft.fac_srtnotificatie_key = 59 -- RESNEW
|
|
AND ft.fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
|
AND ft.prs_perslid_key = p.prs_perslid_key (+)
|
|
) new
|
|
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
|
AND p.prs_perslid_key = pp.prs_perslid_key
|
|
AND rrr.res_reservering_key = r.res_reservering_key
|
|
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
|
AND ro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rr.res_ruimtE_key = rar.res_ruimte_key
|
|
AND rar.alg_ruimte_key = v.alg_ruimte_key
|
|
AND v.alg_locatie_key = l.alg_locatie_key
|
|
AND rrr.res_rsv_ruimte_key = ann.fac_tracking_refkey (+)
|
|
AND rrr.res_rsv_ruimte_key = new.fac_tracking_refkey (+)
|
|
) v
|
|
;
|
|
|
|
------------------------------------------------------
|
|
-- Notificatiejobs rondom Reserveringen en Catering --
|
|
------------------------------------------------------
|
|
|
|
-- 1. ALLR_V_RAP_CATERING
|
|
----- reserveringen met catering (incl. laatste mutatiedatum)
|
|
-- 2. ALLR_V_RAP_CATERING_RGL
|
|
----- catering artikelen die besteld mogen worden conform de gestelde catalogus instellingen
|
|
-- 3. ALLR_V_RAP_CATERING_ALL
|
|
----- combinatie van reservering en bestelregels
|
|
-- 4. ALLR_V_RAP_CATERING_MUT (voor Cateraar) + ALLR_V_RAP_CATERING_MUT_0 (voor Backoffice)
|
|
----- gestyld rapport voor meesturen bij notijob allr_v_noti_resupd
|
|
-- 5. ALLR_V_NOTI_RESUPD
|
|
----- notificatiejob mutaties op reserveringen (resupd) per cateraar
|
|
-------- Cateraars zijn: leverancier op de catalogi verbruiksartikelen met emailadressen op kanaal 'Catering'
|
|
-------- flag 1, op CUST02 (node rapport) om in beeld te krijgen welke UPD's er zijn geweest dat afgelopen uur..
|
|
-- 6. ALLR_V_RAP_CATERING_MUT_P (voor Cateraar) om te kunnen zien welke mutaties er voor hun in een zelf gekozen periode(dag/tijd) zijn geweest. (zie ticket AAXX#84860)
|
|
|
|
|
|
-- reserveringen met catering
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING
|
|
AS
|
|
SELECT DISTINCT
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_reservering_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
|
|
reservering,
|
|
(SELECT st.res_status_fo_omschrijving
|
|
FROM res_status_fo st
|
|
WHERE st.res_status_fo_key = rrr.res_status_fo_key)
|
|
status_fo,
|
|
(SELECT st.res_status_bo_omschrijving
|
|
FROM res_status_bo st
|
|
WHERE st.res_status_bo_key = rrr.res_status_bo_key)
|
|
status_bo,
|
|
(SELECT MAX (fac_tracking_datum)
|
|
FROM fac_tracking
|
|
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
|
AND fac_srtnotificatie_key = 60 --- resupd
|
|
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE
|
|
'%ERROR%')
|
|
laatste_upd,
|
|
rrr.res_rsv_ruimte_externsyncdate
|
|
datum_export,
|
|
rrr.res_rsv_ruimte_verwijder
|
|
datum_verwijderd,
|
|
cat.ins_discipline_key
|
|
ruimte_catalogus_key,
|
|
cat.ins_discipline_omschrijving
|
|
ruimte_catalogus,
|
|
rer.res_ruimte_key,
|
|
rer.res_ruimte_nr
|
|
ruimte,
|
|
alg.alg_gebouw_upper
|
|
gebouw,
|
|
alg.alg_locatie_upper
|
|
locatie,
|
|
alg.alg_locatie_key,
|
|
rrr.res_rsv_ruimte_van
|
|
datum_van,
|
|
rrr.res_rsv_ruimte_tot
|
|
datum_tot,
|
|
rrr.res_rsv_ruimte_omschrijving
|
|
oms,
|
|
(SELECT prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames
|
|
WHERE prs_perslid_key = rrr.res_rsv_ruimte_host_key)
|
|
gastheer,
|
|
(SELECT prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames
|
|
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
|
|
contact,
|
|
kstp.prs_kostenplaats_nr
|
|
kostenplaats_nr,
|
|
(SELECT res_kenmerkreservering_waarde
|
|
FROM res_kenmerkwaarde kw, res_kenmerk k, res_srtkenmerk sk
|
|
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
|
AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key
|
|
AND sk.res_srtkenmerk_key = 1) --- interne notitie
|
|
interne_notitie
|
|
FROM res_rsv_ruimte rrr,
|
|
res_rsv_artikel rar,
|
|
res_ruimte_opstelling rop,
|
|
res_ruimte rer,
|
|
ins_tab_discipline cat,
|
|
res_alg_ruimte rarm,
|
|
alg_v_ruimte_gegevens_all alg,
|
|
prs_kostenplaats kstp
|
|
WHERE cat.ins_discipline_key = rer.res_discipline_key
|
|
AND rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
|
|
AND rer.res_ruimte_key = rop.res_ruimte_key
|
|
AND rarm.res_ruimte_key = rer.res_ruimte_key
|
|
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
|
|
AND rrr.prs_kostenplaats_key = kstp.prs_kostenplaats_key (+)
|
|
UNION ALL
|
|
SELECT DISTINCT
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_reservering_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
|
|
reservering,
|
|
(SELECT st.res_status_fo_omschrijving
|
|
FROM res_status_fo st
|
|
WHERE st.res_status_fo_key = rrr.res_status_fo_key)
|
|
status_fo,
|
|
NULL
|
|
status_bo,
|
|
(SELECT MAX (fac_tracking_datum)
|
|
FROM fac_tracking
|
|
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
|
AND fac_srtnotificatie_key = 60 --- resupd
|
|
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE
|
|
'%ERROR%')
|
|
laatste_upd,
|
|
rrr.res_rsv_ruimte_externsyncdate
|
|
last_export,
|
|
rrr.res_rsv_ruimte_verwijder
|
|
datum_verwijderd,
|
|
0
|
|
ruimte_catalogus_key,
|
|
'Losse catering'
|
|
ruimte_catalogus,
|
|
alg.alg_ruimte_key,
|
|
alg.alg_ruimte_nr || ' ' || alg.alg_ruimte_omschrijving
|
|
ruimte,
|
|
alg.alg_gebouw_upper
|
|
gebouw,
|
|
alg.alg_locatie_upper
|
|
locatie,
|
|
alg.alg_locatie_key,
|
|
rrr.res_rsv_ruimte_van
|
|
datum_van,
|
|
rrr.res_rsv_ruimte_tot
|
|
datum_tot,
|
|
COALESCE (rrr.res_rsv_ruimte_omschrijving, 'Catering ')
|
|
oms,
|
|
(SELECT prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames
|
|
WHERE prs_perslid_key = rrr.res_rsv_ruimte_host_key)
|
|
gastheer,
|
|
(SELECT prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames
|
|
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
|
|
contact,
|
|
kstp.prs_kostenplaats_nr
|
|
kostenplaats_nr,
|
|
(SELECT res_kenmerkreservering_waarde
|
|
FROM res_kenmerkwaarde kw, res_kenmerk k, res_srtkenmerk sk
|
|
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
|
AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key
|
|
AND sk.res_srtkenmerk_key = 1) --- interne notitie op reservering
|
|
interne_notitie
|
|
FROM res_rsv_ruimte rrr,
|
|
res_rsv_artikel rar,
|
|
alg_v_ruimte_gegevens_all alg,
|
|
prs_kostenplaats kstp
|
|
WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND alg.alg_ruimte_key = rrr.alg_ruimte_key
|
|
AND rrr.prs_kostenplaats_key = kstp.prs_kostenplaats_key (+)
|
|
ORDER BY res_rsv_ruimte_key;
|
|
|
|
-- catering artikelen die besteld mogen worden conform de gestelde catalogus instellingen
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_RGL
|
|
AS
|
|
SELECT b.prs_bedrijf_key || rar.res_rsv_ruimte_key extra_key,
|
|
rar.res_rsv_ruimte_key,
|
|
b.prs_bedrijf_key bedrijfs_key,
|
|
b.prs_bedrijf_naam leverancier,
|
|
rar.res_artikel_key,
|
|
rar.res_rsv_artikel_key,
|
|
CASE WHEN rar.res_rsv_artikel_omschrijving IS NULL THEN art.res_artikel_omschrijving ELSE 'Vrij artikel: ' || rar.res_rsv_artikel_omschrijving END
|
|
res_artikel_omschrijving,
|
|
rar.res_rsv_artikel_aantal,
|
|
rar.res_rsv_artikel_levering,
|
|
art.res_discipline_key,
|
|
rar.res_rsv_artikel_externsyncdate,
|
|
cat.ins_discipline_omschrijving,
|
|
cat_s.res_disc_params_expire_dagen,
|
|
cat_s.res_disc_params_expire_tijd,
|
|
t1.t1,
|
|
TRUNC (fac.datumtijdplusuitvoertijd (
|
|
SYSDATE,
|
|
res_disc_params_expire_dagen - 1,
|
|
'DAGEN',
|
|
t1,
|
|
res_disc_params_expire_tijd,
|
|
1)) bestelling_voor, --- we bestellen na de wijzigingshorizon! Dus trekken we er weer een dag vanaf
|
|
rar.res_rsv_artikel_verwijder
|
|
FROM res_rsv_artikel rar,
|
|
res_artikel art,
|
|
ins_tab_discipline cat,
|
|
res_disc_params cat_s,
|
|
prs_bedrijf b,
|
|
(SELECT COALESCE (cat_t1, res_t1) t1
|
|
FROM (SELECT (SELECT fac_setting_pvalue
|
|
FROM fac_setting
|
|
WHERE fac_setting_name = 'res_cat_t1')
|
|
cat_t1,
|
|
(SELECT fac_setting_pvalue
|
|
FROM fac_setting
|
|
WHERE fac_setting_name = 'res_t1')
|
|
res_t1
|
|
FROM DUAL)) t1
|
|
WHERE art.res_artikel_key = rar.res_artikel_key
|
|
AND cat.ins_discipline_key = art.res_discipline_key
|
|
-- AND rar.res_rsv_artikel_verwijder IS NULL
|
|
AND cat_s.res_ins_discipline_key = cat.ins_discipline_key
|
|
AND cat_s.prs_bedrijf_key = b.prs_bedrijf_key (+);
|
|
|
|
-- combinatie van reservering en bestelregels
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_ALL
|
|
AS
|
|
SELECT cr.bedrijfs_key,
|
|
cr.leverancier,
|
|
(SELECT SUBSTR (ba.prs_bedrijfadres_url,
|
|
INSTR (ba.prs_bedrijfadres_url, ':') + 1)
|
|
FROM prs_bedrijfadres ba
|
|
WHERE ba.prs_bedrijf_key = cr.bedrijfs_key
|
|
-- AND ba.alg_locatie_key = c.alg_locatie_key
|
|
AND ba.prs_bedrijfadres_type = 'O'
|
|
AND ba.mld_typeopdr_key IS NULL) mailadres, -- halen we op vanuit opdrachtkanaal locatie
|
|
c.res_rsv_ruimte_key,
|
|
cr.bedrijfs_key extra_key, -- filterveld vanuit noti-job
|
|
c.reservering,
|
|
c.oms omschrijving,
|
|
c.status_fo,
|
|
ruimte_catalogus,
|
|
cr.res_disc_params_expire_dagen,
|
|
cr.res_disc_params_expire_tijd,
|
|
NULL afleverlocatie, -- voor alliander wat mee doen?
|
|
c.locatie,
|
|
c.gebouw,
|
|
c.ruimte,
|
|
c.kostenplaats_nr kostenplaats_nr,
|
|
c.interne_notitie interne_notitie,
|
|
cr.ins_discipline_omschrijving catalogus,
|
|
cr.res_artikel_omschrijving artikel,
|
|
cr.res_rsv_artikel_aantal aantal,
|
|
CASE
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 1
|
|
THEN
|
|
'Zondag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 2
|
|
THEN
|
|
'Maandag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 3
|
|
THEN
|
|
'Dinsdag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 4
|
|
THEN
|
|
'Woensdag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 5
|
|
THEN
|
|
'Donderdag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 6
|
|
THEN
|
|
'Vrijdag'
|
|
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 7
|
|
THEN
|
|
'Zaterdag'
|
|
END leverdag, --- zondag is dag 1 van de week
|
|
cr.res_rsv_artikel_levering artikel_levering,
|
|
TO_CHAR (cr.res_rsv_artikel_levering, 'dd-mm-yyyy') leverdatum,
|
|
TO_CHAR (cr.res_rsv_artikel_levering, 'hh24:mi') levertijd,
|
|
c.datum_verwijderd,
|
|
c.datum_van
|
|
FROM allr_v_rap_catering c, allr_v_rap_catering_rgl cr
|
|
WHERE c.res_rsv_ruimte_key = cr.res_rsv_ruimte_key;
|
|
|
|
-- View voor gestyld rapport met alle cateringsmutaties - tbv backoffice
|
|
---- Getoond worden alle mutaties vanaf de vorige uitgestuurde run (zie job allr_v_noti_resupd)
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_MUT_0
|
|
AS
|
|
SELECT v.*,
|
|
tr.mutaties,
|
|
TO_CHAR (tr.laatste_datum_job, 'dd-mm-yyyy hh24:mi:ss')
|
|
datum_vanaf,
|
|
tr.laatste_datum_job
|
|
datum_vanaf_date,
|
|
CASE WHEN tr.fac_srtnotificatie_code = 'RESDEL' AND v.datum_verwijderd IS NOT NULL THEN 'RESDEL' ELSE 'RESUPD' END
|
|
fac_srtnotificatie_code
|
|
FROM allr_v_rap_catering_all v,
|
|
(SELECT f.fac_tracking_refkey,
|
|
LISTAGG (
|
|
TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss') || ': ' || f.fac_tracking_oms,
|
|
CHR(10) || CHR(13) ON OVERFLOW TRUNCATE
|
|
)
|
|
WITHIN GROUP (ORDER BY f.fac_tracking_datum)
|
|
AS mutaties,
|
|
j.laatste_datum_job,
|
|
sn.fac_srtnotificatie_code
|
|
FROM fac_tracking f, fac_srtnotificatie sn,
|
|
(SELECT max(fac_notificatie_job_lastrun) laatste_datum_job, max(fac_notificatie_job_lastrun - fac_notificatie_job_interval/24) vorige_datum_job
|
|
FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD') j
|
|
WHERE f.fac_srtnotificatie_key IN (60, 63) -- resupd en resdel
|
|
AND f.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND f.fac_tracking_datum > COALESCE(j.laatste_datum_job, SYSDATE)
|
|
GROUP BY f.fac_tracking_refkey, sn.fac_srtnotificatie_code, j.laatste_datum_job
|
|
)tr
|
|
WHERE v.res_rsv_ruimte_key = tr.fac_tracking_refkey
|
|
AND v.bedrijfs_key IS NOT NULL
|
|
;
|
|
|
|
-- View voor gestyld rapport met alle cateringsmutaties - tbv Cateraar
|
|
---- Dit rapport wordt meegestuurd met de cateraar (zie job allr_v_noti_resupd)
|
|
------ Omdat de gen_notify 's avonds/ 's nachts niet loopt, wordt om de resultaten goed te tonen de DATUM_VANAF bepaald op basis van de laatste CUST02-tracking.
|
|
--------- Voorbeeld: Stel laatste jobrun DO om 19:00 en er zijn mutaties om DO 21:00
|
|
---------- Dan wil je bij de volgende gen_notify van VR 07:00 dat de mutaties voor dit rapport getoond worden van DO 19:00 t/m VR 07:00 en niet van VR 06:00 - VR 07:00
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_MUT
|
|
AS
|
|
SELECT v.*,
|
|
tr.mutaties,
|
|
TO_CHAR (tr.datum_vanaf, 'dd-mm-yyyy hh24:mi:ss')
|
|
datum_vanaf,
|
|
TO_CHAR (tr.datum_tm, 'dd-mm-yyyy hh24:mi:ss')
|
|
datum_tm,
|
|
tr.datum_vanaf
|
|
datum_vanaf_date,
|
|
tr.datum_tm
|
|
datum_tm_date,
|
|
CASE WHEN tr.fac_srtnotificatie_code = 'RESDEL' AND v.datum_verwijderd IS NOT NULL THEN 'RESDEL' ELSE 'RESUPD' END
|
|
fac_srtnotificatie_code
|
|
FROM allr_v_rap_catering_all v,
|
|
(SELECT f.fac_tracking_refkey,
|
|
LISTAGG (
|
|
TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss') || ': ' || f.fac_tracking_oms,
|
|
CHR(10) || CHR(13) ON OVERFLOW TRUNCATE
|
|
)
|
|
WITHIN GROUP (ORDER BY f.fac_tracking_datum)
|
|
AS mutaties,
|
|
COALESCE(c.vorige_datum_cust02, j.vorige_datum_job, SYSDATE)
|
|
datum_vanaf,
|
|
j.laatste_datum_job
|
|
datum_tm,
|
|
sn.fac_srtnotificatie_code
|
|
FROM fac_tracking f, fac_srtnotificatie sn,
|
|
(SELECT max (x.fac_tracking_datum_cust02) vorige_datum_cust02
|
|
FROM (SELECT w.fac_tracking_datum_cust02, ROWNUM volgnr
|
|
FROM ( SELECT v.fac_tracking_datum_cust02
|
|
FROM ( SELECT TO_DATE (TO_CHAR (ft.fac_tracking_datum, 'yyyy-mm-dd HH24:MI'), 'yyyy-mm-dd HH24:MI') fac_tracking_datum_cust02
|
|
FROM fac_tracking ft, fac_srtnotificatie sn
|
|
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND sn.fac_srtnotificatie_xmlnode = 'rapport'
|
|
AND sn.fac_srtnotificatie_code = 'CUST02'
|
|
GROUP BY TO_DATE (TO_CHAR (ft.fac_tracking_datum, 'yyyy-mm-dd HH24:MI'), 'yyyy-mm-dd HH24:MI')) v
|
|
ORDER BY v.fac_tracking_datum_cust02 DESC) w) x
|
|
WHERE x.volgnr = 2) c,
|
|
(SELECT max(fac_notificatie_job_lastrun) laatste_datum_job, max(fac_notificatie_job_lastrun - fac_notificatie_job_interval/24) vorige_datum_job
|
|
FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD') j
|
|
WHERE f.fac_srtnotificatie_key IN (60, 63) -- resupd en resdel
|
|
AND f.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND f.fac_tracking_datum BETWEEN COALESCE(c.vorige_datum_cust02, j.vorige_datum_job, SYSDATE) AND COALESCE(j.laatste_datum_job, SYSDATE)
|
|
GROUP BY f.fac_tracking_refkey, sn.fac_srtnotificatie_code, c.vorige_datum_cust02, j.vorige_datum_job, j.laatste_datum_job
|
|
)tr
|
|
WHERE v.res_rsv_ruimte_key = tr.fac_tracking_refkey
|
|
AND v.bedrijfs_key IS NOT NULL ;
|
|
|
|
----- notificatiejob mutaties op reserveringen (resupd) per cateraar
|
|
-------- Cateraars zijn: leverancier op de catalogi verbruiksartikelen met emailadressen op kanaal 'Catering'
|
|
-------- flag 1, op CUST02 (node rapport) om in beeld te krijgen welke UPD's er zijn geweest dat afgelopen uur..
|
|
CREATE OR REPLACE VIEW ALLR_V_NOTI_RESUPD
|
|
(
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
CODE,
|
|
KEY,
|
|
XKEY,
|
|
XSENDER,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
AS
|
|
SELECT 4
|
|
sender,
|
|
NULL
|
|
receiver,
|
|
'Cateraar ' || v.leverancier || ' - mutatie/annulerings-lijst'
|
|
tekst,
|
|
v.fac_srtnotificatie_code
|
|
code,
|
|
1402
|
|
key, -- Rapport met daarin de specificatie van de mutaties opgenomen
|
|
v.bedrijfs_key
|
|
xkey, -- extra filter-key voor rapport opnemen in rapport-kolom extra_key - alle reserveringen van die leverancier tonen..
|
|
NULL
|
|
xsender,
|
|
v.mailadres
|
|
xemail,
|
|
NULL
|
|
xmobile
|
|
FROM (SELECT lev.leverancier,
|
|
lev.bedrijfs_key,
|
|
lev.mailadres,
|
|
r.res_rsv_ruimte_key,
|
|
r.reservering,
|
|
r.datum_van,
|
|
COALESCE (r.datum_verwijderd, r.laatste_upd)
|
|
laatste_upd,
|
|
sn.fac_srtnotificatie_code
|
|
FROM allr_v_rap_catering r, -- basisview van alle catering-reserveringen met laatste_upd
|
|
( SELECT res_rsv_ruimte_key,
|
|
bedrijfs_key,
|
|
leverancier,
|
|
mailadres
|
|
FROM allr_v_rap_catering_all
|
|
GROUP BY res_rsv_ruimte_key,
|
|
bedrijfs_key,
|
|
leverancier,
|
|
mailadres) lev,
|
|
fac_srtnotificatie sn
|
|
WHERE sn.fac_srtnotificatie_code = 'CUST02' -- node rapport
|
|
AND r.res_rsv_ruimte_key = lev.res_rsv_ruimte_key
|
|
AND lev.bedrijfs_key IS NOT NULL
|
|
AND lev.mailadres IS NOT NULL
|
|
AND r.datum_van >= SYSDATE -- actuele reserveringen
|
|
AND (
|
|
(r.status_fo = 'Definitief' AND r.datum_verwijderd IS NULL)
|
|
OR
|
|
(r.status_fo = 'Optie' AND r.datum_verwijderd IS NOT NULL)
|
|
OR
|
|
(r.status_fo = 'Vervallen' AND r.datum_verwijderd IS NOT NULL)
|
|
)
|
|
AND COALESCE (r.datum_verwijderd, r.laatste_upd) >=
|
|
(SELECT COALESCE (fac_notificatie_job_lastrun,
|
|
TRUNC (SYSDATE))
|
|
FROM fac_notificatie_job
|
|
WHERE fac_notificatie_job_view =
|
|
'ALLR_V_NOTI_RESUPD')) v
|
|
GROUP BY v.leverancier,
|
|
v.bedrijfs_key,
|
|
v.mailadres,
|
|
v.fac_srtnotificatie_code;
|
|
|
|
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_MUT_P
|
|
AS
|
|
SELECT v.*,
|
|
tr.mutaties,
|
|
tr.mutatie_datum
|
|
datum_vanaf,
|
|
TO_DATE(tr.mutatie_datum, 'dd-mm-yyyy')
|
|
datum_vanaf_date,
|
|
CASE WHEN tr.fac_srtnotificatie_code = 'RESDEL' AND v.datum_verwijderd IS NOT NULL THEN 'RESDEL' ELSE 'RESUPD' END
|
|
fac_srtnotificatie_code,
|
|
TO_DATE(tr.mutatie_datum, 'dd-mm-yyyy')
|
|
datum_mutatie_filter,
|
|
TO_NUMBER(tr.mutatie_uur)
|
|
uur_filter
|
|
FROM allr_v_rap_catering_all v,
|
|
(SELECT f.fac_tracking_refkey,
|
|
LISTAGG (
|
|
TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss') || ': ' || f.fac_tracking_oms,
|
|
CHR(10) || CHR(13)
|
|
)
|
|
WITHIN GROUP (ORDER BY f.fac_tracking_datum)
|
|
AS mutaties,
|
|
TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy') mutatie_datum,
|
|
TO_CHAR(f.fac_tracking_datum, 'hh24') mutatie_uur,
|
|
sn.fac_srtnotificatie_code
|
|
FROM fac_tracking f, fac_srtnotificatie sn
|
|
WHERE f.fac_srtnotificatie_key IN (60, 63) -- resupd en resdel
|
|
AND f.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
GROUP BY f.fac_tracking_refkey, sn.fac_srtnotificatie_code, TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy') , TO_CHAR(f.fac_tracking_datum, 'hh24')
|
|
)tr
|
|
WHERE v.res_rsv_ruimte_key = tr.fac_tracking_refkey
|
|
AND v.bedrijfs_key IS NOT NULL ;
|
|
|
|
|
|
-- script om dagelijks terugkerende scripts aan te roepen.
|
|
CREATE OR REPLACE PROCEDURE allr_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
aaxx_daily_task (p_applname, p_applrun);
|
|
|
|
-- kenter - toevoegen gebouw-werkplekken
|
|
allr_select_kenter_wp ('KENTER_WP', SYSDATE) ;
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
------ 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
|
|
|