613 lines
28 KiB
SQL
613 lines
28 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Migratie topdesk-data naar facilitor alliander - DEEL AANVULLING LEEUWARDEN
|
|
--- Er wordt 1 bestand RESERVERING.XLS aangeleverd door klant die we via generic_csv-import gaan inlezen en verwerken.
|
|
--- Vorige week is toen aangegeven dat alles van LEEUWARDEN daar niet in meegenomen moest worden.
|
|
--- WO 2-8 blijkt dat LEEUWARDEN toch wel in Facilitor haar reserveringen moet terugzien. Dit zijn zo'n 950 reserveringen...
|
|
--- Daarin zijn onderstaande zaken opgenomen:
|
|
---- 1A RES_RUIMTES - VOOR LEEUWARDEN ALLEEN
|
|
---- 1B RES_WERKPLEKKEN = TEAMAREA'S - NIET VAN TOEPASSING VOOR LEEUWARDEN
|
|
---- 1C RES_OBJECTEN - AUTO, FIETS, SCRUMBOX, VEILIGHEIDSKLEDING - NIET VAN TOEPASSING VOOR LEEUWARDEN
|
|
--
|
|
-- OUTPUT-verslag:
|
|
--- De fac_imp_csv gaan we aanvullen met informatie en dient daarmee tevens als outputverslag voor Alliander.
|
|
--- Daarin dus opgenomen/zichtbaar welke reserveringsregels we niet hebben kunnen verwerken + waarom niet..
|
|
|
|
DEFINE thisfile = 'ALLR#78879_1_leeuwarden.SQL'
|
|
DEFINE dbuser = 'ALLR'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
DECLARE
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (150);
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR (200);
|
|
v_count NUMBER;
|
|
v_teller_verwerkt NUMBER := 0 ;
|
|
p_import_key NUMBER;
|
|
|
|
v_prs_perslid_key NUMBER;
|
|
v_prs_perslid_aantal NUMBER;
|
|
v_prs_perslid_fallback NUMBER := 11301 ; -- fallback-aanvrager in PROD aangemaakt
|
|
v_prs_perslid_email VARCHAR (200);
|
|
v_prs_perslid_naam VARCHAR (1000);
|
|
|
|
v_res_deel_key NUMBER;
|
|
v_res_deel_aantal NUMBER;
|
|
v_alg_ruimte_key NUMBER;
|
|
|
|
v_alg_gebouw_key NUMBER;
|
|
v_alg_gebouw_aantal NUMBER;
|
|
|
|
v_res_ruimte_meervoudig VARCHAR (60);
|
|
v_res_teamarea_meervoudig VARCHAR (60);
|
|
|
|
v_res_ruimte_nr VARCHAR (120);
|
|
v_res_ruimte_key NUMBER;
|
|
v_res_ruimte_aantal NUMBER;
|
|
v_res_ruimte_outlook VARCHAR (60);
|
|
|
|
v_res_ruimte_opstel_key NUMBER ;
|
|
v_res_rsv_ruimte_bezoekers NUMBER :=1 ; -- staat in res_ruimte overal op 0 en verder niet in topdesk..
|
|
v_res_activiteit_key NUMBER;
|
|
v_res_activiteit_omschrijving VARCHAR(50);
|
|
|
|
v_check_gedekt_identiek VARCHAR (60);
|
|
v_check_gedekt VARCHAR (60);
|
|
v_check_gedekt_aantal NUMBER;
|
|
v_check_gedekt_prefix VARCHAR (60);
|
|
|
|
v_res_rsv_ruimte_key_b NUMBER; -- _b is bestaande reservering...
|
|
v_res_reservering_nr_b VARCHAR (60);
|
|
v_res_rsv_ruimte_omschrijving_b VARCHAR(2000) ;
|
|
v_res_host_b VARCHAR (200);
|
|
|
|
v_reservering_key NUMBER;
|
|
v_res_rsv_ruimte_key NUMBER;
|
|
|
|
v_reserveringnr_td VARCHAR (60);
|
|
|
|
|
|
-- Alle records die we willen meenemen, gaan we verder langs om aan te vullen en te kijken of res overgezet kan worden..
|
|
CURSOR C
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_csv
|
|
WHERE fac_import_key = (SELECT max(fac_import_key) FROM fac_import WHERE fac_import_app_key = 301 AND fac_import_datum_verwerkt IS NULL) -- GENREICCSV - FIP: Generieke CSV import
|
|
AND fac_imp_csv_index > 1
|
|
AND fac_imp_csv_col29 IS NULL
|
|
ORDER BY fac_imp_csv_index;
|
|
|
|
CURSOR C_R -- ruimtereserveringen
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_csv
|
|
WHERE fac_import_key = (SELECT max(fac_import_key) FROM fac_import WHERE fac_import_app_key = 301 AND fac_import_datum_verwerkt IS NULL) -- GENREICCSV - FIP: Generieke CSV import
|
|
AND fac_imp_csv_index > 1
|
|
AND fac_imp_csv_col29 = 'ruimte_reservering'
|
|
-- TEST
|
|
-- AND fac_imp_csv_col20 IN ('R2207 13255', 'R2207 13914', 'R2208 1002')
|
|
ORDER BY fac_imp_csv_index;
|
|
|
|
BEGIN
|
|
|
|
SELECT MAX (fac_import_key)
|
|
INTO p_import_key
|
|
FROM fac_import
|
|
WHERE fac_import_app_key = 301 AND fac_import_datum_verwerkt IS NULL ;
|
|
|
|
-- alle records uit verleden nemen we niet mee..
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'nvt - historie'
|
|
WHERE fac_imp_csv_index > 1
|
|
AND (
|
|
fac_imp_csv_col02 = 'Gehaalde reservering'
|
|
OR
|
|
TRUNC(to_date(fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi')) <= TRUNC(SYSDATE)
|
|
) ;
|
|
|
|
-- alle records uit toekomst > 1 jaar nemen we niet mee.. - OF wel t/m 2030 OF x-jaar?
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'nvt - toekomst > 180 dagen'
|
|
WHERE fac_imp_csv_index > 1
|
|
AND TRUNC(to_date(fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi')) > TRUNC(SYSDATE) + 180 ;
|
|
|
|
-- alle records die meerdaagse-afspraken bevatten voor ruimte-reserveringen kunnen we niet meenemen in Facilitor
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'nvt - meerdaagse ruimte-reservering'
|
|
WHERE fac_imp_csv_index > 1
|
|
AND fac_imp_csv_col08 IS NULL AND fac_imp_csv_col03 IS NOT NULL AND INSTR(LOWER(fac_imp_csv_col03), 'teamgebied') = 0
|
|
AND TRUNC(to_date(fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi')) - TRUNC(to_date(fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi')) > 0 ;
|
|
|
|
-- alle records die verder niet meegenomen hoeven te worden
|
|
---- Leeuwarden, amsterdam-spaklerweg, .....
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'nvt - oude locatie'
|
|
WHERE fac_imp_csv_index > 1
|
|
AND (
|
|
fac_imp_csv_col04 IN ('Amsterdam Spaklerweg 20-32')
|
|
OR
|
|
(
|
|
fac_imp_csv_col04 IN ('Amsterdam Basisweg 10') AND INSTR(fac_imp_csv_col03, 'Homebase') > 0
|
|
)
|
|
);
|
|
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
|
|
-- Starten met aanvullen records....
|
|
|
|
v_aanduiding := 'Record ' || rec.fac_imp_csv_key || ' - ' ;
|
|
v_errorhint := 'Records in fac_imp_csv aanvullen';
|
|
|
|
-- 1. soort reservering in fac_imp_csv_col29
|
|
IF rec.fac_imp_csv_col08 IS NULL AND rec.fac_imp_csv_col03 IS NOT NULL AND INSTR(LOWER(rec.fac_imp_csv_col03), 'teamgebied') = 0 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'ruimte_reservering'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
IF rec.fac_imp_csv_col08 IS NULL AND INSTR(LOWER(rec.fac_imp_csv_col03), 'teamgebied') > 0 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'teamarea_reservering'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
IF rec.fac_imp_csv_col08 IS NOT NULL AND LOWER(rec.fac_imp_csv_col08) IN ('fiets', 'auto', 'scrumbox', 'veiligheidskleding', 'tribunes', 'vlogset', 'mobiel tv scherm') THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'object_reservering_' || LOWER(rec.fac_imp_csv_col08)
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
IF rec.fac_imp_csv_col08 IS NOT NULL AND LOWER(rec.fac_imp_csv_col08) NOT IN ('fiets', 'auto', 'scrumbox', 'veiligheidskleding', 'tribunes', 'vlogset', 'mobiel tv scherm') THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col29 = 'nvt - geen facilitor object'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
-- 2. aanvrager matchen met prs_perslid_key in Facilitor
|
|
SELECT max(p.prs_perslid_key), count(*)
|
|
INTO v_prs_perslid_key, v_prs_perslid_aantal
|
|
FROM prs_perslid p
|
|
WHERE CONVERT(replace(p.prs_perslid_naam || ',' || p.prs_perslid_voornaam || p.prs_perslid_tussenvoegsel, ' '), 'US7ASCII') = CONVERT(replace(COALESCE(rec.fac_imp_csv_col12, rec.fac_imp_csv_col11), ' '), 'US7ASCII')
|
|
AND prs_perslid_verwijder IS NULL ;
|
|
|
|
IF v_prs_perslid_aantal = 0 OR v_prs_perslid_aantal > 1 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col30 = 'fallback-aanvrager - ' || TO_CHAR(v_prs_perslid_aantal) || 'x',
|
|
fac_imp_csv_col31 = v_prs_perslid_fallback
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
IF v_prs_perslid_aantal = 1 THEN
|
|
|
|
SELECT prs_perslid_email, prs_perslid_naam || ', ' || DECODE(prs_perslid_tussenvoegsel, NULL, prs_perslid_voornaam, prs_perslid_voornaam || ' ' || prs_perslid_tussenvoegsel)
|
|
INTO v_prs_perslid_email, v_prs_perslid_naam
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = v_prs_perslid_key ;
|
|
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col30 = 'ok',
|
|
fac_imp_csv_col31 = v_prs_perslid_key,
|
|
fac_imp_csv_col46 = v_prs_perslid_email,
|
|
fac_imp_csv_col47 = v_prs_perslid_naam
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
-- 3. alg_gebouw_key toevoegen op basis meegegeven locatie voor de res_ruimte en res_teamgebieden
|
|
SELECT max(alg_gebouw_key), count(*)
|
|
INTO v_alg_gebouw_key, v_alg_gebouw_aantal
|
|
FROM alg_gebouw g, alg_locatie l
|
|
WHERE g.alg_locatie_key = l.alg_locatie_key
|
|
AND rec.fac_imp_csv_col04 = l.alg_locatie_omschrijving || ' ' || alg_gebouw_naam
|
|
AND rec.fac_imp_csv_col04 IS NOT NULL;
|
|
|
|
IF v_alg_gebouw_aantal = 1 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col32 = v_alg_gebouw_key
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
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;
|
|
END LOOP;
|
|
|
|
FOR rec IN c_r
|
|
LOOP
|
|
BEGIN
|
|
|
|
-- Ruimtereservering aanvullen + Importeren
|
|
|
|
v_aanduiding := 'Record ' || rec.fac_imp_csv_key || ' - ' ;
|
|
v_errorhint := 'Ruimte-reserveringen aanvullen en importeren';
|
|
|
|
-- 0. bepalen of het een enkelvoudige topdeskreservering betreft of een meervoudige
|
|
----- Meervoudig wil zeggen dat het topdesk-reserveringsnummer vaker voorkomt en dat men op zelfde dag/tijdstip ook een andere ruimte heeft mee-gereserveerd
|
|
----- Bij de verdere import/migratie naar Facilitor heeft dit geen invloed, dwz we gaan record voor record importeren en dus ook in Facilitor levert dit meerdere reserveringen op..
|
|
|
|
SELECT max(TO_CHAR(aantal))
|
|
INTO v_res_ruimte_meervoudig
|
|
FROM (SELECT fac_imp_csv_col20 , count(*) aantal FROM fac_imp_csv where fac_imp_csv_col29 = 'ruimte_reservering' GROUP BY fac_imp_csv_col20) v
|
|
WHERE v.fac_imp_csv_col20 = rec.fac_imp_csv_col20 AND v.aantal > 1 ;
|
|
|
|
IF v_res_ruimte_meervoudig IS NOT NULL THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col38 = 'meervoudig (' || v_res_ruimte_meervoudig || 'x)'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
-- 0. hoe om te gaan met deel/reeks-reserveringen? - NEE, gaan we niet af-checken en onder facilitor-deel-reserveringen zetten. Alle Topdesk-reservering worden enkelvoudige facilitor-reserveringen
|
|
|
|
-- 1. ruimtenr en res_ruimte_key achtehalen op basis van de meegegeven ruimte
|
|
SELECT TRIM(UPPER(substr(rec.fac_imp_csv_col03, 1, DECODE(instr(rec.fac_imp_csv_col03, '*'), 0, 300, instr(rec.fac_imp_csv_col03, '*')) -1)))
|
|
INTO v_res_ruimte_nr
|
|
FROM fac_imp_csv
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key
|
|
AND rec.fac_imp_csv_col03 IS NOT NULL ;
|
|
|
|
v_res_ruimte_nr := SUBSTR(REPLACE(TRIM(v_res_ruimte_nr), CHR(160), ''),1, 40) ;
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col37 = v_res_ruimte_nr
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
SELECT max(rr.res_ruimte_key), count(*)
|
|
INTO v_res_ruimte_key, v_res_ruimte_aantal
|
|
FROM res_ruimte rr, res_alg_ruimte rar, alg_ruimte r, alg_verdieping v, alg_gebouw g
|
|
WHERE rr.res_ruimte_key = rar.res_ruimte_key
|
|
AND rar.alg_ruimte_key = r.alg_ruimte_key
|
|
AND r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = g.alg_gebouw_key
|
|
AND rr.res_ruimte_verwijder IS NULL
|
|
AND rar.res_alg_ruimte_verwijder IS NULL
|
|
AND r.alg_ruimte_verwijder IS NULL
|
|
AND g.alg_gebouw_key = fac.safe_to_number(rec.fac_imp_csv_col32)
|
|
AND
|
|
(
|
|
UPPER(rr.res_ruimte_nr) = UPPER(v_res_ruimte_nr)
|
|
OR
|
|
UPPER(r.alg_ruimte_omschrijving) = UPPER(v_res_ruimte_nr)
|
|
OR
|
|
UPPER(r.alg_ruimte_nr) = UPPER(v_res_ruimte_nr)
|
|
) ;
|
|
|
|
IF v_res_ruimte_aantal = 0 OR v_res_ruimte_aantal > 1 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col35 = 'NIET OK - ' || TO_CHAR(v_res_ruimte_aantal) || 'x',
|
|
fac_imp_csv_col34 = v_res_ruimte_key,
|
|
fac_imp_csv_col29 = rec.fac_imp_csv_col29 || ' - NIET VERWERKT - CHECK - geen (uniek) res_ruimtenr gevonden'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
IF v_res_ruimte_aantal = 1 THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col35 = 'OK',
|
|
fac_imp_csv_col34 = v_res_ruimte_key
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
-- 2. overige gegevens erbij zoeken: opstel_key + activiteit_key + wel/geen outlook-sync-ruimte
|
|
|
|
v_errorhint := 'Opzoeken opstelling: ' || v_res_ruimte_nr;
|
|
|
|
SELECT res_ruimte_opstel_key
|
|
INTO v_res_ruimte_opstel_key
|
|
FROM res_ruimte_opstelling
|
|
WHERE res_ruimte_opstel_verwijder IS NULL
|
|
AND res_opstelling_key = 10 -- bij alle reserveerbare ruimtes is deze standaard opstelling aanwezig..
|
|
AND res_ruimte_key = v_res_ruimte_key;
|
|
|
|
v_errorhint := 'Opzoeken activiteit: ' || v_res_ruimte_nr;
|
|
|
|
SELECT min(rad.res_activiteit_key) -- zijn catalogi met meer activiteiten echter uit Topdesk-export niet eenduidig te bepalen, dus kiezen de eerste...
|
|
INTO v_res_activiteit_key
|
|
FROM res_ruimte rr, res_activiteitdiscipline rad
|
|
WHERE rr.res_ruimte_key = v_res_ruimte_key
|
|
AND rr.res_discipline_key = rad.res_discipline_key ;
|
|
|
|
SELECT res_activiteit_omschrijving
|
|
INTO v_res_activiteit_omschrijving
|
|
FROM res_activiteit
|
|
WHERE res_activiteit_key = v_res_activiteit_key ;
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col39 = v_res_activiteit_omschrijving
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
v_errorhint := 'Opzoeken wel/geen sync-outlook-ruimte: ' || v_res_ruimte_nr;
|
|
|
|
SELECT res_ruimte_extern_id
|
|
INTO v_res_ruimte_outlook
|
|
FROM res_ruimte
|
|
WHERE res_ruimte_key = v_res_ruimte_key ;
|
|
|
|
IF v_res_ruimte_outlook IS NOT NULL THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col40 = 'outlook-sync'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
|
|
-- 3. check of er op die ruimte voor die contactpersoon al een overlappende reservering op dat tijdstip is. Twee smaken: ja, identiek + ja, NIET identiek
|
|
|
|
-- Doen we dus voor de topdesk-reserveringen die we op een res_ruimte zouden kunnen boeken..
|
|
IF v_res_ruimte_aantal = 1 THEN
|
|
|
|
BEGIN
|
|
-- init
|
|
v_check_gedekt_identiek := 'onbekend' ;
|
|
v_check_gedekt := 'onbekend' ;
|
|
v_res_rsv_ruimte_key_b := '';
|
|
v_res_reservering_nr_b := '';
|
|
v_res_rsv_ruimte_omschrijving_b := '';
|
|
v_res_host_b := '';
|
|
|
|
v_errorhint := 'Check identiek gedekte reservering: ' || TO_CHAR(rec.fac_imp_csv_key);
|
|
|
|
SELECT 'ja', rrr.res_rsv_ruimte_key, TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) res_reservering_nr, rrr.res_rsv_ruimte_omschrijving
|
|
INTO v_check_gedekt_identiek, v_res_rsv_ruimte_key_b, v_res_reservering_nr_b, v_res_rsv_ruimte_omschrijving_b
|
|
FROM res_rsv_ruimte rrr
|
|
WHERE rrr.res_ruimte_opstel_key = v_res_ruimte_opstel_key
|
|
AND rrr.res_activiteit_key = v_res_activiteit_key
|
|
AND rrr.res_rsv_ruimte_host_key = rec.fac_imp_csv_col31
|
|
AND rrr.res_rsv_ruimte_van = (SELECT TO_DATE (fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- startdatum
|
|
AND rrr.res_rsv_ruimte_tot = (SELECT TO_DATE (fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- einddatum
|
|
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_rsv_ruimte_dirtlevel = 0 ;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN v_check_gedekt_identiek := 'nee' ;
|
|
|
|
END;
|
|
|
|
IF v_check_gedekt_identiek = 'ja' THEN
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col41 = v_res_reservering_nr_b,
|
|
fac_imp_csv_col42 = v_res_rsv_ruimte_omschrijving_b,
|
|
fac_imp_csv_col29 = rec.fac_imp_csv_col29 || ' - NIET VERWERKT - want al door identieke outlook-reservering gedekt'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
-- Gaan vervoigens checken of er wellicht nog andere reserveringen zijn die deze topdesk-reservering blokkeren
|
|
IF v_check_gedekt_identiek = 'nee' THEN
|
|
|
|
BEGIN
|
|
v_errorhint := 'Check deels gedekte reservering: ' || TO_CHAR(rec.fac_imp_csv_key);
|
|
|
|
SELECT count(*)
|
|
INTO v_check_gedekt_aantal
|
|
FROM
|
|
(
|
|
SELECT rrr.res_rsv_ruimte_key
|
|
FROM res_rsv_ruimte rrr
|
|
WHERE rrr.res_ruimte_opstel_key = v_res_ruimte_opstel_key
|
|
AND
|
|
(
|
|
(SELECT TO_DATE (fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- startdatum
|
|
BETWEEN rrr.res_rsv_ruimte_van + 1/(3600*24) AND rrr.res_rsv_ruimte_tot - 1/(3600*24)
|
|
OR
|
|
(SELECT TO_DATE (fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- einddatum
|
|
BETWEEN rrr.res_rsv_ruimte_van + 1/(3600*24) AND rrr.res_rsv_ruimte_tot - 1/(3600*24)
|
|
OR
|
|
rrr.res_rsv_ruimte_van
|
|
BETWEEN (SELECT TO_DATE (fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- startdatum
|
|
AND (SELECT TO_DATE (fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- einddatum
|
|
)
|
|
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_rsv_ruimte_dirtlevel = 0
|
|
) ;
|
|
|
|
IF v_check_gedekt_aantal = 0 THEN
|
|
v_check_gedekt := 'nee' ;
|
|
END IF;
|
|
|
|
IF v_check_gedekt_aantal > 0 THEN
|
|
|
|
SELECT v.check_gedekt, v.res_rsv_ruimte_key, v.res_reservering_nr, v.res_rsv_ruimte_omschrijving, v.prs_perslid_email
|
|
INTO v_check_gedekt, v_res_rsv_ruimte_key_b, v_res_reservering_nr_b, v_res_rsv_ruimte_omschrijving_b, v_res_host_b
|
|
FROM
|
|
(
|
|
SELECT rownum first_res, 'ja' check_gedekt, rrr.res_rsv_ruimte_key, TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) res_reservering_nr, rrr.res_rsv_ruimte_omschrijving, (SELECT p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_key = rrr.res_rsv_ruimte_host_key) prs_perslid_email
|
|
FROM res_rsv_ruimte rrr
|
|
WHERE rrr.res_ruimte_opstel_key = v_res_ruimte_opstel_key
|
|
AND
|
|
(
|
|
(SELECT TO_DATE (fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- startdatum
|
|
BETWEEN rrr.res_rsv_ruimte_van + 1/(3600*24) AND rrr.res_rsv_ruimte_tot - 1/(3600*24)
|
|
OR
|
|
(SELECT TO_DATE (fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- einddatum
|
|
BETWEEN rrr.res_rsv_ruimte_van + 1/(3600*24) AND rrr.res_rsv_ruimte_tot - 1/(3600*24)
|
|
OR
|
|
rrr.res_rsv_ruimte_van
|
|
BETWEEN (SELECT TO_DATE (fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- startdatum
|
|
AND (SELECT TO_DATE (fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi') FROM fac_imp_csv WHERE fac_imp_csv_key = rec.fac_imp_csv_key) -- einddatum
|
|
)
|
|
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_rsv_ruimte_dirtlevel = 0
|
|
) v
|
|
WHERE v.first_res =1 ;
|
|
|
|
|
|
IF v_check_gedekt_aantal > 1 THEN
|
|
v_check_gedekt_prefix := '(*)' ;
|
|
ELSE
|
|
v_check_gedekt_prefix := '' ;
|
|
END IF;
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col41 = v_res_reservering_nr_b || v_check_gedekt_prefix,
|
|
fac_imp_csv_col42 = v_res_rsv_ruimte_omschrijving_b,
|
|
fac_imp_csv_col43 = v_res_host_b,
|
|
fac_imp_csv_col29 = rec.fac_imp_csv_col29 || ' - NIET VERWERKT - CHECK - ruimte al door andere reservering bezet'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
|
|
-- De records die niet gedekt worden en die een reserveerbare_ruimte in Facilitor hebben, gaan we verwerken/importeren
|
|
IF v_check_gedekt_identiek = 'nee' AND v_check_gedekt = 'nee' AND v_res_ruimte_aantal = 1 THEN
|
|
|
|
BEGIN
|
|
v_errorhint := 'Reservering Topdesk inlezen in Facilitor: ' || TO_CHAR(rec.fac_imp_csv_key);
|
|
|
|
-- hier gaan we de reservering inserten.....
|
|
|
|
v_errormsg := 'Fout toevoegen reservering';
|
|
|
|
INSERT INTO res_reservering (res_reservering_verwijder)
|
|
VALUES (NULL)
|
|
RETURNING res_reservering_key
|
|
INTO v_reservering_key;
|
|
|
|
v_errormsg := 'Fout toevoegen rsv_ruimte';
|
|
|
|
INSERT INTO res_rsv_ruimte (res_reservering_key,
|
|
res_rsv_ruimte_volgnr,
|
|
res_rsv_ruimte_opmerking,
|
|
res_rsv_ruimte_omschrijving,
|
|
prs_kostenplaats_key,
|
|
res_rsv_ruimte_contact_key,
|
|
res_rsv_ruimte_host_key,
|
|
res_ruimte_opstel_key,
|
|
res_activiteit_key,
|
|
res_rsv_ruimte_van,
|
|
res_rsv_ruimte_tot,
|
|
res_rsv_ruimte_bezoekers,
|
|
res_status_fo_key,
|
|
res_status_bo_key)
|
|
VALUES (v_reservering_key,
|
|
1,
|
|
'Uit topdesk: ' || rec.fac_imp_csv_col20,
|
|
SUBSTR(rec.fac_imp_csv_col16, 1, 60),
|
|
NULL,
|
|
TO_NUMBER(rec.fac_imp_csv_col31),
|
|
TO_NUMBER(rec.fac_imp_csv_col31),
|
|
v_res_ruimte_opstel_key,
|
|
v_res_activiteit_key,
|
|
TO_DATE (rec.fac_imp_csv_col14, 'yyyy-mm-dd hh24:mi'),
|
|
TO_DATE (rec.fac_imp_csv_col15, 'yyyy-mm-dd hh24:mi'),
|
|
1,
|
|
2,
|
|
2)
|
|
RETURNING res_rsv_ruimte_key
|
|
INTO v_res_rsv_ruimte_key;
|
|
|
|
FAC.trackaction ('RESNEW',
|
|
v_res_rsv_ruimte_key,
|
|
4,
|
|
SYSDATE,
|
|
'Ruimtereservering aangemaakt door migratie uit Topdesk');
|
|
|
|
-- RES.set_ruimte_dirty (v_res_rsv_ruimte_key);
|
|
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col44 = TO_CHAR(v_reservering_key) || '/1'
|
|
WHERE fac_imp_csv_key = rec.fac_imp_csv_key ;
|
|
|
|
|
|
END;
|
|
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;
|
|
END LOOP;
|
|
|
|
|
|
|
|
-- kunnen/moeten we buiten de loop om nog zaken doen?
|
|
|
|
-- eventueel logging wegschrijven op import generic_csv
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Totaal aantal verwerkte records: ' || TO_CHAR(v_teller_verwerkt),
|
|
'');
|
|
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |