Files
Customer/onces/AA/ALLR/ALLR#78879_1_leeuwarden.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