YKPN#44728 -- Toevoegen import toegang

svn path=/Customer/trunk/; revision=35845
This commit is contained in:
Arthur Egberink
2017-10-30 07:27:12 +00:00
parent 3dc7142d3a
commit 0bddf00511

View File

@@ -26,7 +26,7 @@ AS
p_link_key IN NUMBER,
p_kenmerk_waarde IN VARCHAR2,
p_history IN NUMBER);
PROCEDURE set_nedap_status(p_bezoekers_key IN NUMBER,
p_nedap_id IN VARCHAR2);
@@ -54,13 +54,13 @@ AS
BEGIN
v_count := 0;
v_found := 0;
SELECT TRUNC (bez_afspraak_datum), kw.bez_kenmerkwaarde_waarde, kw.bez_kenmerkwaarde_key, a.bez_actie_key
INTO v_date, v_code, v_kenmerkwaarde_key, v_actie_key
FROM bez_afspraak a,
bez_bezoekers b,
res_rsv_deel rrd,
res_deel rd,
res_deel rd,
ins_v_deel_gegevens d,
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
@@ -71,13 +71,13 @@ AS
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key;
--DBMS_OUTPUT.put_line ('Bestaande code:' || v_code);
WHILE v_found = 0 AND v_count < 1000
LOOP
--DBMS_OUTPUT.put_line (COALESCE (v_code, '-1'));
SELECT COUNT ( * )
INTO v_exists
FROM bez_bezoekers b, bez_kenmerkwaarde kw, bez_afspraak a
@@ -86,31 +86,31 @@ AS
AND b.bez_bezoekers_key <> p_bezoekers_key
AND kw.bez_kenmerkwaarde_waarde = COALESCE (v_code, '-1')
AND bez_afspraak_datum BETWEEN v_date -1 AND v_date + 2;
IF v_exists > 0 OR v_code IS NULL
THEN
v_code := TRUNC (DBMS_RANDOM.VALUE (9999, 100000));
--DBMS_OUTPUT.put_line ('Nieuwe code:' || v_code);
ELSE
v_found := 1;
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, v_code, 0);
END IF;
v_count := v_count + 1;
END LOOP;
IF v_actie_key = 1 THEN
ykpn.set_kenmerk('BEZ', 1140, p_bezoekers_key, 'Let op: Een parkeerplaats op eigen standplaats reserveren is niet toegestaan, dit i.v.m. het tekort aan bezoekersparkeerplaatsen wat dan ontstaat.', 0);
END IF;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL;
-- Bezoeker heeft geen parkeerplaats
END;
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER,
@@ -129,14 +129,14 @@ AS
INTO v_niveau
FROM prs_kenmerk
WHERE prs_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -165,7 +165,7 @@ AS
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'ALG'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
@@ -174,14 +174,14 @@ AS
INTO v_niveau
FROM alg_kenmerk
WHERE alg_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -213,14 +213,14 @@ AS
WHEN 'BEZ'
THEN
SELECT COUNT ( * )
INTO v_count
FROM bez_kenmerkwaarde
WHERE bez_bezoekers_key = p_link_key
AND bez_kenmerk_key = p_kenmerk_key
AND bez_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -247,7 +247,7 @@ AS
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'MLD'
THEN
-- melding- of opdrachtkenmerk?
@@ -255,7 +255,7 @@ AS
INTO v_niveau
FROM mld_kenmerk
WHERE mld_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'O'
THEN
@@ -265,7 +265,7 @@ AS
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -300,7 +300,7 @@ AS
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -338,7 +338,7 @@ AS
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
@@ -379,10 +379,10 @@ AS
FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1060 -- nedap resultaat
AND bez_bezoekers_key = p_bezoekers_key;
UPDATE bez_kenmerkwaarde
SET bez_kenmerkwaarde_waarde = p_nedap_id
WHERE bez_kenmerkwaarde_key = v_kenmerkwaarde_key;
UPDATE bez_kenmerkwaarde
SET bez_kenmerkwaarde_waarde = p_nedap_id
WHERE bez_kenmerkwaarde_key = v_kenmerkwaarde_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key, bez_bezoekers_key, bez_kenmerkwaarde_waarde)
@@ -394,27 +394,27 @@ AS
PROCEDURE set_vc_status(p_reservering_key IN NUMBER,
p_vc_id IN VARCHAR2)
AS
CURSOR c IS
SELECT *
FROM res_rsv_ruimte
SELECT *
FROM res_rsv_ruimte
WHERE res_reservering_key = p_reservering_key;
BEGIN
FOR rec IN c LOOP
FOR rec IN c LOOP
-- Update kenmerk
YKPN.set_kenmerk('RES', 2, rec.res_rsv_ruimte_key, p_vc_id, 0);
-- Track update
FAC.trackaction ('#CUST01', rec.res_rsv_ruimte_key, NULL, NULL, 'Code ontvangen van Talk and Vision: ' || p_vc_id);
-- Track update
FAC.trackaction ('#CUST01', rec.res_rsv_ruimte_key, NULL, NULL, 'Code ontvangen van Talk and Vision: ' || p_vc_id);
END LOOP;
END;
END;
@@ -538,7 +538,7 @@ CREATE OR REPLACE PROCEDURE ykpn_update_organisatie (p_import_key IN NUMBER)
AS
BEGIN
NULL;
-- update wordt door scheduled taak uitgevoerd.
-- update wordt door scheduled taak uitgevoerd.
END;
/
@@ -729,11 +729,11 @@ AS
FROM fac_imp_perslid i
GROUP BY prs_perslid_oslogin
HAVING COUNT (prs_perslid_oslogin) > 1;
v_seq_of_columns VARCHAR(255);
BEGIN
-- we plaaten de functie in kenmerkx
-- de functie wordt tijdelijk gevuld met de key van het record. Puur om een waarde
-- de functie wordt tijdelijk gevuld met de key van het record. Puur om een waarde
-- erin te hebben staan.
UPDATE fac_imp_file SET fac_imp_file_line = REPLACE(fac_imp_file_line, 'NULL') WHERE fac_import_key = p_import_key;
v_seq_of_columns := '14;14;0;0;0;0;8;6;5;24;4;17;16;20;0;11;0;9;0;2;1;3;0;0;0;0;1;0;23;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0';
@@ -744,8 +744,8 @@ BEGIN
SELECT alg_gebouw_key, '_', 99, 'Dummy'
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND NOT EXISTS (SELECT v.alg_gebouw_key
FROM alg_verdieping v
AND NOT EXISTS (SELECT v.alg_gebouw_key
FROM alg_verdieping v
WHERE v.alg_gebouw_key = g.alg_gebouw_key
AND v.alg_verdieping_code = '_');
@@ -754,36 +754,36 @@ BEGIN
SELECT v.alg_verdieping_key, '_', 1
FROM alg_verdieping v
WHERE alg_verdieping_verwijder IS NULL
AND NOT EXISTS (SELECT r.alg_verdieping_key
FROM alg_ruimte r
AND NOT EXISTS (SELECT r.alg_verdieping_key
FROM alg_ruimte r
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_');
AND r.alg_ruimte_nr = '_');
UPDATE fac_imp_perslid SET alg_verdieping_volgnr = '99',
alg_ruimte_nr = '_'
WHERE alg_locatie_code IS NOT NULL;
WHERE alg_locatie_code IS NOT NULL;
UPDATE fac_imp_perslid i
SET alg_locatie_code = ( SELECT alg_locatie_code
FROM alg_locatie l, alg_gebouw g
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_code = i.alg_gebouw_code);
UPDATE fac_imp_perslid
SET prs_perslid_nr = TO_CHAR (prs_perslid_nr, 'fm000000')
WHERE fac.safe_to_number (prs_perslid_nr) IS NOT NULL;
UPDATE fac_imp_perslid
UPDATE fac_imp_perslid
SET prs_srtperslid_omschrijving = COALESCE(prs_kenmerk3, 'Extern');
-- Verwijder dubbele records (personen met <20><>n login en meerdere personeelsnummers
-- Anders krijgen we allemaal onnodige logging
FOR rec IN c
LOOP
DELETE fac_imp_perslid
WHERE prs_perslid_oslogin = rec.prs_perslid_oslogin AND prs_perslid_nr <> rec.prs_perslid_nr;
END LOOP;
END LOOP;
END ykpn_import_perslid;
/
@@ -792,7 +792,7 @@ AS
v_seq_of_columns VARCHAR(255);
BEGIN
NULL;
-- de daadwerkelijke update wordt door een scheduled task (ykpn_update_perslid_sched) in de nacht uitgevoerd.
-- de daadwerkelijke update wordt door een scheduled task (ykpn_update_perslid_sched) in de nacht uitgevoerd.
END ykpn_update_perslid;
/
@@ -805,7 +805,7 @@ END;
CREATE OR REPLACE PROCEDURE ykpn_update_perslid_sched (p_import_key IN NUMBER)
AS
CURSOR c_del IS
CURSOR c_del 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
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
@@ -818,8 +818,8 @@ AS
v_errormsg VARCHAR2 (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
BEGIN
-- De afdelingscode uit het persoonsbestand komt overeen met de kostenplaats. Dus zoeken we a.d.h.v.
@@ -833,19 +833,19 @@ BEGIN
AND k.prs_kostenplaats_nr = i.prs_afdeling_naam);
-- KPN gebruikt een andere codering voor het gebruik van de partnernaam daarom gaan we deze even omzetten
-- KPN code 1 eigennaam wordt 0
-- KPN code 2 partnernaam wordt 2
-- KPN code 3 partner - eigen naam wordt 1
-- KPN code 4 eigen - partner naam wordt 3
-- KPN code 1 eigennaam wordt 0
-- KPN code 2 partnernaam wordt 2
-- KPN code 3 partner - eigen naam wordt 1
-- KPN code 4 eigen - partner naam wordt 3
UPDATE fac_imp_perslid i
SET prs_perslid_naamgebruik_code = DECODE(prs_perslid_naamgebruik_code,1,0,2,2,3,1,4,3,0);
-- Controleer of er wel genoeg mensen in de database staan
-- Controleer of er wel genoeg mensen in de database staan
-- Veilige check is 10000 medewerkers
SELECT COUNT(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 10000
THEN
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
@@ -855,17 +855,17 @@ BEGIN
FOR rec IN c_del LOOP
BEGIN
v_hint := 'Zoek naar bestaande logincode: ' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
SELECT MIN(prs_perslid_nr)
INTO v_perslid_nr
FROM fac_imp_perslid i
SELECT MIN(prs_perslid_nr)
INTO v_perslid_nr
FROM fac_imp_perslid i
WHERE UPPER(i.prs_perslid_oslogin) = rec.prs_perslid_oslogin
AND NOT EXISTS (SELECT prs_perslid_key FROM prs_perslid p WHERE p.prs_perslid_nr = i.prs_perslid_nr);
IF v_perslid_nr IS NOT NULL
THEN
THEN
v_hint := 'Pas login van te verwijderen persoon aan: ' || rec.prs_perslid_nr || '->' || v_perslid_nr || '-' || rec.prs_perslid_oslogin;
fac.imp_writelog (p_import_key, 'I', 'Te verwijderen persoon op login gevonden: ' || rec.prs_perslid_nr || '->' || v_perslid_nr || '-' || rec.prs_perslid_oslogin, '');
UPDATE prs_perslid p SET prs_perslid_nr = v_perslid_nr WHERE p.prs_perslid_key = rec.prs_perslid_key;
UPDATE prs_perslid p SET prs_perslid_nr = v_perslid_nr WHERE p.prs_perslid_key = rec.prs_perslid_key;
ELSE
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END IF;
@@ -876,13 +876,13 @@ BEGIN
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END;
END LOOP;
END LOOP;
ELSE
fac.imp_writelog (p_import_key, 'E', 'Te weinig personen in de database om te verwijderen: ' || v_count, '');
END IF;
END IF;
prs.update_perslid (p_import_key, 'NR', 'A');
-- Iedereen mag op elke kostenplaats boeken.
INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_perslidkostenplaats_boeken)
SELECT prs_perslid_key, 1
@@ -893,10 +893,10 @@ BEGIN
WHERE pk.prs_perslid_key = p.prs_perslid_key);
-- Vul het mobiele nummer in als mensen een telefoonnummer hebben dat begint met +316
UPDATE prs_perslid
UPDATE prs_perslid
SET prs_perslid_mobiel = prs_perslid_telefoonnr
WHERE prs_perslid_telefoonnr LIKE '+316%';
END ykpn_update_perslid_sched;
/
@@ -1138,13 +1138,13 @@ BEGIN
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
IF v_field LIKE '%-->%'
THEN
THEN
fac.imp_writelog (p_import_key,
'W',
'Lege ruimtesoort',
v_gebouw_code || '-' || v_errorhint || v_aanduiding);
v_srtruimte_omschrijving := 'ONBEKEND!!!!';
ELSE
ELSE
v_srtruimte_omschrijving := v_field;
END IF;
@@ -1156,7 +1156,7 @@ BEGIN
v_errorhint := 'Inlezen toepassing: ';
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
IF v_field LIKE '%-->%'
THEN
THEN
v_ruimte_toepassing := 'onbekend';
ELSE
v_ruimte_toepassing := REPLACE (v_field, ' ');
@@ -1183,7 +1183,7 @@ BEGIN
END IF;
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
v_errorhint := 'Inlezen wo: ';
--v_wo_txt := REPLACE (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1), ',', '.');
v_wo := my_to_number (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1));
@@ -1344,7 +1344,7 @@ AS
AND a.bez_afspraak_datum > SYSDATE + 2 / 24;
CURSOR cs
IS
IS
SELECT a.bez_afspraak_key,
b.bez_bezoekers_key,
kwm.bez_kenmerkwaarde_waarde mobiel,
@@ -1374,8 +1374,8 @@ AS
AND NOT EXISTS (SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kws
WHERE bez_kenmerk_key = 1043 -- sms verzonden
AND kws.bez_bezoekers_key = b.bez_bezoekers_key);
AND kws.bez_bezoekers_key = b.bez_bezoekers_key);
BEGIN
FOR rec IN c
LOOP
@@ -1406,14 +1406,14 @@ BEGIN
|| rec.alg_gebouw_key
|| '/1040/'
|| rec.bijlage);
YKPN.set_kenmerk('BEZ', 1042, rec.bez_bezoekers_key, TO_CHAR (rec.bez_afspraak_datum, 'yyyy-mm-dd hh24:mi:ss')
|| ';' || COALESCE (rec.res_deel_key, -1) || ';' || rec.xemail, 0);
END LOOP;
-- en nu de SMS berichten versturen
FOR rec IN cs
LOOP
@@ -1432,7 +1432,7 @@ BEGIN
rec.bez_afspraak_key,
rec.bez_bezoekers_key,
2);
YKPN.set_kenmerk('BEZ', 1043, rec.bez_bezoekers_key, TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'),0);
END LOOP;
END;
@@ -2056,7 +2056,7 @@ AS
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '11' niveau,
a1.prs_bedrijf_key,
@@ -2112,7 +2112,7 @@ AS
bez_kenmerkwaarde_aanmaak,
bez_kenmerk_omschrijving
FROM bez_kenmerkwaarde kw, bez_kenmerk k, bez_bezoekers b
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key
AND kw.bez_bezoekers_key = b.bez_bezoekers_key;
@@ -2181,7 +2181,7 @@ AS
WHERE on1.mld_opdr_key = on2.mld_opdr_key
AND SUBSTR (on2.mld_opdr_note_omschrijving, 1, 1) = '#'
AND on2.mld_opdr_note_key > on1.mld_opdr_note_key))
actie
actie
FROM mld_melding m,
mld_stdmelding sm,
mld_opdr op,
@@ -2330,7 +2330,7 @@ AS
AND p.prs_afdeling_key = b.prs_afdeling_key
AND op.mld_statusopdr_key = so.mld_statusopdr_key
AND op.mld_uitvoerende_keys = 42702;
-- Rapport om misbruik van parkeerplaatsen op eigen locatie te rapporteren.
CREATE OR REPLACE VIEW ykpn_v_rap_pp_eigen_gebruik
(
@@ -2384,7 +2384,7 @@ AS
SELECT *
FROM mld_opdr
-- Arnoud Pleij en bedrijf KPN RES services
WHERE mld_uitvoerende_keys IN (7676, 42702)
WHERE mld_uitvoerende_keys IN (7676, 42702)
-- status geaccepteerd
AND mld_statusopdr_key = 8;
BEGIN
@@ -2396,6 +2396,313 @@ BEGIN
END;
/
-----------------------------------------
-- Import toegangscontrole bestanden
-----------------------------------------
CREATE OR REPLACE VIEW ykpn_v_toegang
(
alg_gebouw_code,
alg_gebouw_naam,
datum,
soort_lezer,
tijd, aantal
)
AS
SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '00', h00 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '01', h01 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '02', h02 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '03', h03 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '04', h04 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '05', h05 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '06', h06 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '07', h07 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '08', h08 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '09', h09 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '10', h10 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '11', h11 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '12', h12 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '13', h13 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '14', h14 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '15', h15 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '16', h16 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '17', h17 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '18', h18 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '19', h19 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '20', h20 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '21', h21 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '22', h22 FROM ykpn_imp_toegang
UNION ALL SELECT alg_gebouw_code, alg_gebouw_naam, datum, soort_lezer, '23', h23 FROM ykpn_imp_toegang;
CREATE OR REPLACE PROCEDURE ykpn_import_toegang (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
header_found BOOLEAN;
v_alg_gebouw_code VARCHAR2 (12);
v_alg_gebouw_soort VARCHAR2 (10);
v_alg_gebouw_naam VARCHAR2 (60);
v_soort_lezer VARCHAR2 (10);
v_datum_txt VARCHAR2 (10);
v_lezer VARCHAR2 (500);
v_h00 NUMBER;
v_h01 NUMBER;
v_h02 NUMBER;
v_h03 NUMBER;
v_h04 NUMBER;
v_h05 NUMBER;
v_h06 NUMBER;
v_h07 NUMBER;
v_h08 NUMBER;
v_h09 NUMBER;
v_h10 NUMBER;
v_h11 NUMBER;
v_h12 NUMBER;
v_h13 NUMBER;
v_h14 NUMBER;
v_h15 NUMBER;
v_h16 NUMBER;
v_h17 NUMBER;
v_h18 NUMBER;
v_h19 NUMBER;
v_h20 NUMBER;
v_h21 NUMBER;
v_h22 NUMBER;
v_h23 NUMBER;
v_datum DATE;
v_first NUMBER;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM ykpn_imp_toegang;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
-- Skip until a valid header is found
IF UPPER (rec.fac_imp_file_line) LIKE
'GEBCODE;GEBSOORT;GEBOUWNAW;SOORTLEZER;YYYYMMDD;LEZER;H0;H1;H2;H3;H4;H5;H6;H7;H8;H9;H10;H11;H12;H13;H14;H15;H16;H17;H18;H19;H20;H21;H22;H23;TOTAAL%'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
fac.imp_getfield (v_newline, v_fielddelimitor, v_alg_gebouw_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_alg_gebouw_soort);
fac.imp_getfield (v_newline, v_fielddelimitor, v_alg_gebouw_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_soort_lezer);
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_lezer);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h00);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h01);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h02);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h03);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h04);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h05);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h06);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h07);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h08);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h09);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h10);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h11);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h12);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h13);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h14);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h15);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h16);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h17);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h18);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h19);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h20);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h21);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h22);
fac.imp_getfield (v_newline, v_fielddelimitor, v_h23);
v_datum := TO_DATE (v_datum_txt, 'yyyymmdd');
INSERT INTO ykpn_imp_toegang (alg_gebouw_code,
alg_gebouw_soort,
alg_gebouw_naam,
soort_lezer,
datum_txt,
lezer,
h00,
h01,
h02,
h03,
h04,
h05,
h06,
h07,
h08,
h09,
h10,
h11,
h12,
h13,
h14,
h15,
h16,
h17,
h18,
h19,
h20,
h21,
h22,
h23,
datum)
VALUES (v_alg_gebouw_code,
v_alg_gebouw_soort,
v_alg_gebouw_naam,
v_soort_lezer,
v_datum_txt,
SUBSTR(v_lezer,1,50),
v_h00,
v_h01,
v_h02,
v_h03,
v_h04,
v_h05,
v_h06,
v_h07,
v_h08,
v_h09,
v_h10,
v_h11,
v_h12,
v_h13,
v_h14,
v_h15,
v_h16,
v_h17,
v_h18,
v_h19,
v_h20,
v_h21,
v_h22,
v_h23,
v_datum);
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig toegang importbestand.');
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',
SUBSTR (v_errormsg, 1, 1000),
v_aanduiding);
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM ykpn_imp_toegang;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_toegang (p_import_key IN NUMBER)
AS
v_datum DATE;
BEGIN
-- haal de eerste dag van de ingelezen maand op.
SELECT DISTINCT TRUNC(datum, 'MON')
INTO v_datum
FROM ykpn_imp_toegang;
-- verwijder oude records als we deze maand al eerder ingelezen hebben.
DELETE ykpn_toegang_saldo WHERE TRUNC(datum, 'MON') = v_datum;
-- de data in de ykpn_imp_toegang tabel bevat delta's per uur voor een specifieke lezer
-- deze data gaan we nu zo opslaan dat we per uur het aantal aanwezige persoonen kunnen rapporteren.
INSERT INTO ykpn_toegang_saldo (alg_gebouw_code,
alg_gebouw_naam,
datum,
tijd,
saldo)
SELECT t.alg_gebouw_code,
t.alg_gebouw_naam,
t.datum,
t.tijd,
(SELECT SUM (DECODE (soort_lezer, 'IN', 1, -1) * aantal)
FROM ykpn_v_toegang ts
WHERE ts.alg_gebouw_code = t.alg_gebouw_code
AND ts.datum = t.datum
AND TO_NUMBER (ts.tijd) <= TO_NUMBER (t.tijd))
saldo
FROM ykpn_v_toegang t
GROUP BY alg_gebouw_code,
alg_gebouw_naam,
datum,
tijd;
-- voor de rapportages is het ook wenselijk om andere notaties van de datum erbij te hebben.
-- verder voegen we ook het aantal werkplekken van het gebouw en de bezetting toe.
UPDATE ykpn_toegang_saldo s
SET dag = DECODE(to_char(datum, 'D'), 1, 'Zondag', 2, 'Maandag', 3, 'Dinsdag', 4, 'Woensdag', 5, 'Donderdag', 6, 'Vrijdag', 7, 'Zaterdag'),
dag_nummer = to_char(datum, 'D'),
weekend = DECODE(to_char(datum, 'D'), 1, 'Ja', 7, 'Ja', 'Nee'),
(bezetting, aantal_wp) = ( SELECT ROUND( (saldo * 100) / fac.safe_to_number(alg_onrgoedkenmerk_waarde)),
fac.safe_to_number(alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_gebouw g
WHERE alg_kenmerk_key = 1100
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
AND g.alg_gebouw_code = s.alg_gebouw_code)
WHERE TRUNC(datum, 'MON') = v_datum;
END;
/
-----------------------------------------
-- Koppeling met Strukton
-----------------------------------------
@@ -2458,9 +2765,9 @@ BEGIN
fac.imp_getfield (v_newline, c_delim, v_opmerking);
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
v_totaal := fac.safe_to_number(v_totaal_str);
fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),'');
v_opmerking := substr(v_opmerking, 1, 1000);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := replace(v_opmerking, '@@',CHR (13) || CHR (10));
@@ -2546,7 +2853,7 @@ BEGIN
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- YKPN#32991
-- YKPN#32991
-- WHEN v_status_code = '40' -- uitgeprijst
-- THEN
-- v_status := 9; -- afgerond
@@ -3183,13 +3490,13 @@ SELECT m.mld_melding_key,
NULL procuratiebedrag,
NULL opdrachtbedrag,
(select fac.safe_to_number(mld_kenmerkmelding_waarde) from mld_kenmerkmelding km, mld_kenmerk k where km.mld_melding_key = m.mld_melding_key and km.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = 221) factuurbedrag
FROM mld_melding m, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di,
FROM mld_melding m, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di,
mld_statuses ms
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_melding_status = ms.mld_statuses_key
order by mld_melding_key, mld_opdr_bedrijfopdr_volgnr;
------ payload end ------