273 lines
9.0 KiB
SQL
273 lines
9.0 KiB
SQL
/* Formatted on 19-4-2019 13:56:13 (QP5 v5.336) */
|
|
--
|
|
-- $Id$
|
|
--
|
|
-- Importeren bezoekers
|
|
|
|
DEFINE thisfile = 'FCLT#56045_4.SQL'
|
|
DEFINE dbuser = '^VOLK'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
|
|
SELECT adm.scriptspoolfile ('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
DECLARE
|
|
c_park_disc_key NUMBER
|
|
:= fac.safe_to_number (fac.getsetting ('vis_parking_key'));
|
|
v_resnr VARCHAR2 (100);
|
|
v_errorhint VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
v_res_rsv_ruimte_key NUMBER (10);
|
|
v_bez_afspraak_key NUMBER (10);
|
|
v_aanvrager_key NUMBER (10);
|
|
v_gastheer_key NUMBER (10);
|
|
v_gastheer_naam VARCHAR2 (100);
|
|
v_van DATE;
|
|
v_tot DATE;
|
|
v_alg_locatie_key NUMBER (10);
|
|
v_alg_gebouw_key NUMBER (10);
|
|
v_alg_gebouw_code VARCHAR (20);
|
|
v_facilitor NUMBER (10);
|
|
v_bez_bezoekers_key NUMBER (10);
|
|
|
|
CURSOR c_afspr IS
|
|
SELECT DISTINCT
|
|
aanvr.prs_perslid_key aanvrager_key,
|
|
voor.prs_perslid_key voor_key,
|
|
ib.nummer,
|
|
aanvr.prs_perslid_naam_full aanvrager_naam,
|
|
voor.prs_perslid_naam_full voor_naam,
|
|
ib.gebouw,
|
|
DECODE (ib.gebouw,
|
|
'UTRCR1', 'CR1',
|
|
'DENPE0', 'PE0',
|
|
'GELJO1', 'JO1') res_gebouw,
|
|
g.alg_gebouw_key,
|
|
g.alg_locatie_key,
|
|
IB.DATUM || ' ' || IB.START_TIJD AS start_datum_tijd,
|
|
IB.DATUM || ' ' || IB.EIND_TIJD AS eind_datum_tijd
|
|
FROM volk_import_bezoekers IB,
|
|
alg_gebouw g,
|
|
(SELECT p.prs_perslid_key,
|
|
p.prs_perslid_nr,
|
|
pn.prs_perslid_naam_full
|
|
FROM prs_perslid p, prs_v_perslid_fullnames_all pn
|
|
WHERE p.prs_perslid_key = pn.prs_perslid_key) aanvr,
|
|
(SELECT p.prs_perslid_key,
|
|
p.prs_perslid_nr,
|
|
pn.prs_perslid_naam_full
|
|
FROM prs_perslid p, prs_v_perslid_fullnames_all pn
|
|
WHERE p.prs_perslid_key = pn.prs_perslid_key) voor
|
|
WHERE voor.prs_perslid_nr =
|
|
TO_CHAR (ib.persnr_voor, 'FM0000000')
|
|
AND aanvr.prs_perslid_nr =
|
|
TO_CHAR (ib.persnr_aanvrager, 'FM0000000')
|
|
AND g.alg_gebouw_verwijder IS NULL
|
|
AND g.mld_dienstniveau_key = 2
|
|
AND DECODE (ib.gebouw,
|
|
'UTRCR1', 'CR1',
|
|
'DENPE0', 'PE0',
|
|
'GELJO1', 'JO1') =
|
|
g.alg_gebouw_code;
|
|
|
|
CURSOR c_bez IS
|
|
SELECT nummer,
|
|
bezoeker,
|
|
bedrijf,
|
|
DECODE (
|
|
(DECODE (bez.gebouw,
|
|
'UTRCR1', 'CR1',
|
|
'DENPE0', 'PE0',
|
|
'GELJO1', 'JO1')), --- we kennen in Facilitor alleen parkeerplaatsen in Utrecht en Den Bosch
|
|
'CR1', COALESCE (park_gewenst, 'Nee'),
|
|
'PE0', COALESCE (park_gewenst, 'Nee'),
|
|
'Nee') res_park,
|
|
kenteken,
|
|
bez_afspraak_key,
|
|
DECODE (bez.gebouw,
|
|
'UTRCR1', 'CR1',
|
|
'DENPE0', 'PE0',
|
|
'GELJO1', 'JO1') res_gebouw,
|
|
g.alg_gebouw_key,
|
|
g.alg_locatie_key
|
|
FROM volk_import_bezoekers bez,
|
|
alg_gebouw g,
|
|
prs_perslid a,
|
|
prs_perslid v
|
|
WHERE DECODE (bez.gebouw,
|
|
'UTRCR1', 'CR1',
|
|
'DENPE0', 'PE0',
|
|
'GELJO1', 'JO1') =
|
|
g.alg_gebouw_code
|
|
AND g.mld_dienstniveau_key = 2
|
|
AND bez.persnr_aanvrager = a.prs_perslid_nr
|
|
AND bez.persnr_voor = v.prs_perslid_nr;
|
|
BEGIN
|
|
-- met een schone lei beginnen
|
|
DELETE imp_log
|
|
WHERE imp_log_applicatie = 'IMP_BEZ';
|
|
|
|
DELETE bez_bezoekers;
|
|
|
|
DELETE bez_afspraak;
|
|
|
|
DELETE bez_kenmerkwaarde
|
|
WHERE bez_kenmerk_key = 1000;
|
|
|
|
DELETE res_rsv_deel
|
|
WHERE res_rsv_deel_key IN
|
|
(SELECT res_rsv_deel_key
|
|
FROM res_rsv_deel rd, res_deel d
|
|
WHERE rd.res_deel_key = d.res_deel_key
|
|
AND d.res_discipline_key = c_park_disc_key);
|
|
|
|
UPDATE volk_import_bezoekers
|
|
SET bez_afspraak_key = ''
|
|
WHERE bez_afspraak_key IS NOT NULL;
|
|
|
|
COMMIT;
|
|
|
|
v_facilitor := 3;
|
|
|
|
|
|
--- Stap 1: eerste de afspraken aanmaken
|
|
FOR rec IN c_afspr
|
|
LOOP
|
|
v_errorhint := 'Bepalen begintijd';
|
|
v_van :=
|
|
TO_DATE (rec.start_datum_tijd,
|
|
'dd-mm-yyyy hh24:mi');
|
|
|
|
v_errorhint := 'Bepalen eindtijd';
|
|
v_tot :=
|
|
TO_DATE (rec.eind_datum_tijd,
|
|
'dd-mm-yyyy hh24:mi');
|
|
|
|
v_errorhint := 'Bepalen contactpersoon';
|
|
v_aanvrager_key := rec.aanvrager_key;
|
|
|
|
v_errorhint := 'Bepalen gastheer';
|
|
v_gastheer_key := rec.voor_key;
|
|
|
|
|
|
v_errorhint := 'Naam gastheer/vrouw';
|
|
v_gastheer_naam := rec.voor_naam;
|
|
|
|
v_errorhint := 'Bepalen gebouw';
|
|
v_alg_gebouw_key := rec.alg_gebouw_key;
|
|
v_alg_gebouw_code := rec.res_gebouw;
|
|
|
|
v_errorhint := 'Bepalen locatie';
|
|
v_alg_locatie_key := rec.alg_locatie_key;
|
|
|
|
|
|
INSERT INTO bez_afspraak (prs_perslid_key,
|
|
bez_afspraak_host_key,
|
|
bez_afspraak_contact_key,
|
|
bez_afspraak_gastheer,
|
|
bez_afspraak_datum,
|
|
bez_actie_key,
|
|
alg_locatie_key,
|
|
res_rsv_ruimte_key,
|
|
bez_afspraak_ruimte,
|
|
bez_afspraak_opmerking,
|
|
bez_afspraak_eind)
|
|
VALUES (v_facilitor,
|
|
v_gastheer_key,
|
|
v_aanvrager_key,
|
|
v_gastheer_naam,
|
|
v_van,
|
|
2,
|
|
v_alg_locatie_key,
|
|
NULL,
|
|
v_alg_gebouw_code,
|
|
'Import vanuit Prequest',
|
|
v_tot)
|
|
RETURNING bez_afspraak_key
|
|
INTO v_bez_afspraak_key;
|
|
|
|
UPDATE volk_import_bezoekers ib
|
|
SET ib.bez_afspraak_key = v_bez_afspraak_key
|
|
WHERE ib.nummer = rec.nummer;
|
|
END LOOP;
|
|
|
|
-- Stap 2: bij de zojuist geregistreerde afspraken alle bezoekers aanmaken
|
|
FOR rec IN c_bez
|
|
LOOP
|
|
v_errorhint := 'Toevoegen bezoeker';
|
|
|
|
|
|
INSERT INTO bez_bezoekers (bez_afspraak_key,
|
|
bez_afspraak_naam,
|
|
bez_afspraak_bedrijf)
|
|
VALUES (rec.bez_afspraak_key,
|
|
SUBSTR (rec.bezoeker, 1, 30),
|
|
SUBSTR (rec.bedrijf, 1, 60))
|
|
RETURNING bez_bezoekers_key
|
|
INTO v_bez_bezoekers_key;
|
|
|
|
|
|
--Kenmerk kenteken vullen
|
|
IF rec.kenteken IS NOT NULL
|
|
THEN
|
|
INSERT INTO bez_kenmerkwaarde (bez_bezoekers_key,
|
|
bez_kenmerk_key,
|
|
bez_kenmerkwaarde_waarde)
|
|
VALUES (v_bez_bezoekers_key, 1000, rec.kenteken);
|
|
END IF;
|
|
|
|
|
|
-- Parkeerplaats reserveren
|
|
IF UPPER (rec.res_park) = 'JA'
|
|
THEN
|
|
v_errorhint := 'Claimen parkeerplaats';
|
|
bez.claim_parking (v_bez_bezoekers_key, rec.alg_gebouw_key);
|
|
|
|
v_errorhint := 'Checken parkeerplaats';
|
|
|
|
SELECT bez.hasparking (v_bez_bezoekers_key)
|
|
INTO v_count
|
|
FROM DUAL;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
fac.writelog (
|
|
'IMP_BEZ',
|
|
'W',
|
|
'Geen parkeerplaats geclaimd ('
|
|
|| v_bez_bezoekers_key
|
|
|| ')',
|
|
v_errorhint);
|
|
END IF;
|
|
END IF;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
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 |