4827 lines
193 KiB
SQL
4827 lines
193 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific configuration sql statements for aads: Arcadis Aqumen Facility Management
|
||
|
||
DEFINE thisfile = 'YKPN.SQL'
|
||
DEFINE dbuser = '^YKPN'
|
||
|
||
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 ------
|
||
|
||
CREATE OR REPLACE PACKAGE YKPN
|
||
AS
|
||
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER);
|
||
|
||
PROCEDURE update_bezoeker (p_bezoekers_key IN NUMBER);
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER);
|
||
|
||
PROCEDURE set_nedap_status(p_bezoekers_key IN NUMBER,
|
||
p_type IN VARCHAR2,
|
||
p_nedap_id IN VARCHAR2);
|
||
|
||
PROCEDURE set_vc_status(p_reservering_key IN NUMBER,
|
||
p_vc_id IN VARCHAR2);
|
||
|
||
PROCEDURE add_xml_row (p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2);
|
||
|
||
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2);
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY YKPN
|
||
AS
|
||
|
||
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_found NUMBER;
|
||
v_code VARCHAR2 (5);
|
||
v_exists NUMBER;
|
||
v_date DATE;
|
||
v_aanmaak DATE;
|
||
v_kenmerkwaarde_key NUMBER;
|
||
v_actie_key NUMBER;
|
||
|
||
BEGIN
|
||
v_count := 0;
|
||
v_found := 0;
|
||
|
||
SELECT TRUNC (bez_afspraak_datum), kw.bez_kenmerkwaarde_aanmaak, kw.bez_kenmerkwaarde_waarde, a.bez_actie_key
|
||
INTO v_date, v_aanmaak, v_code, v_actie_key
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
res_rsv_deel rrd,
|
||
res_deel rd,
|
||
ins_v_deel_gegevens d,
|
||
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE bez_kenmerk_key = 1020) kw
|
||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND b.bez_bezoekers_key = p_bezoekers_key
|
||
AND b.bez_bezoekers_key = kw.bez_bezoekers_key(+)
|
||
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;
|
||
|
||
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
|
||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND b.bez_bezoekers_key <> p_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1020 -- Pincode
|
||
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;
|
||
|
||
COMMIT;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Verwijder de pincode
|
||
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0);
|
||
-- Bezoeker heeft geen parkeerplaats
|
||
END;
|
||
|
||
-- Deze procedure wordt aangeroepen via de hook functie.
|
||
PROCEDURE update_bezoeker (p_bezoekers_key IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_found NUMBER;
|
||
v_code VARCHAR2 (5);
|
||
v_exists NUMBER;
|
||
v_date DATE;
|
||
v_aanmaak DATE;
|
||
v_kenmerkwaarde_key NUMBER;
|
||
v_actie_key NUMBER;
|
||
|
||
BEGIN
|
||
v_count := 0;
|
||
v_found := 0;
|
||
|
||
SELECT bez_afspraak_datum, kw.bez_kenmerkwaarde_aanmaak, a.bez_actie_key, kp.bez_kenmerkwaarde_waarde
|
||
INTO v_date, v_aanmaak, v_actie_key, v_code
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE bez_kenmerk_key = 1002) kw, -- Aanmaak, kenmerk wordt door hook functie bij iedere bezoeker gezet
|
||
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE bez_kenmerk_key = 1020) kp -- Pincode
|
||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND b.bez_bezoekers_key = p_bezoekers_key
|
||
AND b.bez_bezoekers_key = kw.bez_bezoekers_key(+)
|
||
AND b.bez_bezoekers_key = kp.bez_bezoekers_key(+);
|
||
|
||
--DBMS_OUTPUT.put_line ('Bestaande code:' || v_code);
|
||
IF v_aanmaak IS NULL
|
||
THEN
|
||
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
|
||
ELSIF v_aanmaak > sysdate - 5/(24*60*60) -- kenmerk is de afgelopen 5 seconden aangemaakt. Het betreft dan een herhaal actie.
|
||
THEN
|
||
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
|
||
ykpn.set_kenmerk('BEZ', 1004, p_bezoekers_key, NULL, 0); -- Reden afwijzing
|
||
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0); -- Pincode
|
||
ykpn.set_kenmerk('BEZ', 1120, p_bezoekers_key, NULL, 0); -- Geldig ID
|
||
ykpn.set_kenmerk('BEZ', 1060, p_bezoekers_key, NULL, 0); -- Nedap ID
|
||
ykpn.set_kenmerk('BEZ', 1042, p_bezoekers_key, NULL, 0); -- Nedap Verzonden
|
||
ykpn.set_kenmerk('BEZ', 1160, p_bezoekers_key, NULL, 0); -- Kenteken respons
|
||
ykpn.set_kenmerk('BEZ', 1161, p_bezoekers_key, NULL, 0); -- Kenteken Verzonden
|
||
ykpn.set_kenmerk('BEZ', 1043, p_bezoekers_key, NULL, 0); -- SMS Verzonden
|
||
v_code := NULL;
|
||
END IF;
|
||
|
||
-- Als de parkeerplaats goedgekeurd was gaan we de pincode nog even checken
|
||
-- Deze kan aangepast moeten worden als de afspraak in tijd verplaatst wordt en
|
||
-- er een andere afspraak staat met dezelfde pincode
|
||
-- Voor de historie kijken we ook naar records die al een pincode hebben.
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE fac_tracking_refkey = p_bezoekers_key
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'CUST04';
|
||
|
||
IF v_count > 1 OR v_code IS NOT NULL THEN
|
||
set_bez_pincode (p_bezoekers_key);
|
||
END IF;
|
||
|
||
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
|
||
-- Verwijder de pincode
|
||
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0);
|
||
-- Bezoeker heeft geen parkeerplaats
|
||
END;
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_niveau VARCHAR2 (1);
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'PRS'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT prs_kenmerk_niveau
|
||
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
|
||
THEN
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
|
||
prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'ALG'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT alg_kenmerk_niveau
|
||
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
|
||
THEN
|
||
DELETE alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE alg_onrgoedkenmerk
|
||
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
|
||
alg_onrgoed_key,
|
||
alg_onrgoed_niveau,
|
||
alg_onrgoedkenmerk_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
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
|
||
THEN
|
||
DELETE bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE bez_kenmerkwaarde
|
||
SET bez_kenmerkwaarde_waarde = p_kenmerk_waarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
|
||
bez_bezoekers_key,
|
||
bez_kenmerkwaarde_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'MLD'
|
||
THEN
|
||
-- melding- of opdrachtkenmerk?
|
||
SELECT mld_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM mld_kenmerk
|
||
WHERE mld_kenmerk_key = p_kenmerk_key;
|
||
|
||
CASE v_niveau
|
||
WHEN 'O'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkopdr
|
||
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
|
||
THEN
|
||
DELETE mld_kenmerkopdr
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkopdr
|
||
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||
mld_opdr_key,
|
||
mld_kenmerkopdr_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
WHEN 'S'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkmelding
|
||
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
|
||
THEN
|
||
DELETE mld_kenmerkmelding
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkmelding
|
||
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
|
||
mld_melding_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
|
||
WHEN 'FIN'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT fin_kenmerk_type
|
||
INTO v_niveau
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_key = p_kenmerk_key;
|
||
|
||
|
||
IF v_niveau = 'F'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactuur
|
||
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
|
||
fin_factuur_key,
|
||
fin_kenmerkfactuur_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- Kenmerk bij factuurregel
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactregel
|
||
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
|
||
fin_factuurregel_key,
|
||
fin_kenmerkfactregel_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
WHEN 'RES'
|
||
THEN
|
||
-- res_rsv_ruimte kenmerk
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
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
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
END;
|
||
|
||
PROCEDURE set_nedap_status(p_bezoekers_key IN NUMBER,
|
||
p_type IN VARCHAR2,
|
||
p_nedap_id IN VARCHAR2)
|
||
AS
|
||
v_kenmerkwaarde_key NUMBER;
|
||
BEGIN
|
||
IF p_type = 'PINCODE'
|
||
THEN
|
||
ykpn.set_kenmerk('BEZ', 1060, p_bezoekers_key, p_nedap_id, 0); -- Nedap ID PINCODE
|
||
ELSIF p_type = 'KENTEKEN'
|
||
THEN
|
||
ykpn.set_kenmerk('BEZ', 1160, p_bezoekers_key, p_nedap_id, 0); -- Nedap ID KENTEKEN
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END;
|
||
|
||
PROCEDURE set_vc_status(p_reservering_key IN NUMBER,
|
||
p_vc_id IN VARCHAR2)
|
||
AS
|
||
|
||
CURSOR c IS
|
||
SELECT *
|
||
FROM res_rsv_ruimte
|
||
WHERE res_reservering_key = p_reservering_key;
|
||
|
||
|
||
BEGIN
|
||
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;
|
||
|
||
PROCEDURE add_xml_row (
|
||
p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2)
|
||
AS
|
||
v_index NUMBER;
|
||
BEGIN
|
||
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
|
||
INTO v_index
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_bestand;
|
||
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (p_bestand,
|
||
v_index,
|
||
p_regel);
|
||
END;
|
||
|
||
PROCEDURE add_xml_element (
|
||
p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
ykpn.add_xml_row(p_bestand,
|
||
'<' || p_tag || '>'
|
||
|| xml.char_to_html(p_value)
|
||
|| '</' || p_tag || '>');
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_organisatie (p_import_key IN NUMBER)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_mode NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_all_null BOOLEAN;
|
||
v_count_error NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
-- De importvelden:
|
||
v_dpt_name VARCHAR2 (100);
|
||
v_dpt_parent_dep_id VARCHAR2 (100);
|
||
v_dpt_id VARCHAR2 (100);
|
||
v_dpt_tree VARCHAR2 (100);
|
||
v_dpt_name_long VARCHAR2 (100);
|
||
v_dpt_code VARCHAR2 (100);
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
COMMIT;
|
||
v_count_error := 0;
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_name);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_parent_dep_id);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_id);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_tree);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_name_long);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_code);
|
||
|
||
v_aanduiding := v_dpt_id || '|' || v_dpt_name_long || '|' || v_dpt_code || '| ';
|
||
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF header_is_valid = 0
|
||
THEN
|
||
IF v_dpt_name = 'dpt_name'
|
||
AND v_dpt_name_long = 'dpt_name_long'
|
||
AND v_dpt_code = 'dpt_code'
|
||
THEN
|
||
header_is_valid := 1;
|
||
|
||
DELETE FROM ykpn_imp_organisatie;
|
||
ELSE
|
||
IF rec.fac_imp_file_index = 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Geen geldige header aangetroffen',
|
||
v_dpt_name || '-' || v_dpt_name_long || '-' || v_dpt_code);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
v_errormsg :=
|
||
'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_aanduiding || ']';
|
||
|
||
INSERT INTO ykpn_imp_organisatie (prs_bedrijf_naam,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_naam_parent,
|
||
prs_afdeling_omschrijving,
|
||
prs_kostenplaats_nr,
|
||
fac_imp_file_index)
|
||
VALUES ('KPN',
|
||
v_dpt_id,
|
||
v_dpt_parent_dep_id,
|
||
v_dpt_name_long,
|
||
v_dpt_code,
|
||
rec.fac_imp_file_index);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
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,
|
||
'');
|
||
END ykpn_import_organisatie;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_organisatie (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
-- update wordt door scheduled taak uitgevoerd.
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_organisatie_sched (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_organisatie_sched (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT i.*, a.prs_afdeling_key
|
||
FROM ykpn_imp_organisatie i, prs_afdeling a
|
||
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam(+)
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
oracle_err_mes VARCHAR2 (150);
|
||
v_maxvariation NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
v_aanduiding VARCHAR (100);
|
||
v_prs_bedrijf_key NUMBER;
|
||
v_prs_afd_parent_key NUMBER;
|
||
v_prs_kostenplaats_key NUMBER;
|
||
v_prs_afdeling_key NUMBER;
|
||
v_prs_afd_niveau_parent NUMBER;
|
||
v_count NUMBER;
|
||
v_newcount NUMBER;
|
||
v_oldcount NUMBER;
|
||
v_impcount NUMBER;
|
||
|
||
BEGIN
|
||
|
||
-- de topelementen mogen geen parent hebben.
|
||
UPDATE ykpn_imp_organisatie
|
||
SET prs_afdeling_naam_parent = NULL
|
||
WHERE prs_afdeling_naam_parent = 62206;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
v_aanduiding := rec.prs_afdeling_naam;
|
||
v_errorhint := 'Kijk of bedrijf al bestaat';
|
||
|
||
-- Bestaat het bedrijf al?
|
||
BEGIN
|
||
SELECT prs_bedrijf_key
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam)
|
||
AND prs_bedrijf_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Kijk of kostenplaats al bestaat';
|
||
IF rec.prs_kostenplaats_nr IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_prs_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_omschrijving =
|
||
rec.prs_afdeling_omschrijving
|
||
WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Nieuwe kostenplaats toevoegen';
|
||
|
||
INSERT INTO prs_kostenplaats
|
||
(
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module
|
||
)
|
||
VALUES (
|
||
rec.prs_kostenplaats_nr,
|
||
rec.prs_afdeling_omschrijving,
|
||
'PRS'
|
||
)
|
||
RETURNING prs_kostenplaats_key INTO v_prs_kostenplaats_key;
|
||
END;
|
||
ELSE
|
||
v_prs_kostenplaats_key := NULL;
|
||
END IF;
|
||
|
||
v_errorhint := 'Kijk of parent bestaat';
|
||
|
||
IF rec.prs_afdeling_naam_parent IS NOT NULL
|
||
THEN
|
||
SELECT prs_afdeling_key
|
||
INTO v_prs_afd_parent_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_naam = rec.prs_afdeling_naam_parent;
|
||
ELSE
|
||
v_prs_afd_parent_key := NULL;
|
||
END IF;
|
||
|
||
|
||
v_errorhint := 'Zoek het niveau van de parent';
|
||
IF v_prs_afd_parent_key IS NOT NULL
|
||
THEN
|
||
SELECT prs_kenmerklink_waarde
|
||
INTO v_prs_afd_niveau_parent
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 2 -- afdelingsniveau
|
||
AND prs_link_key = v_prs_afd_parent_key;
|
||
ELSE
|
||
v_prs_afd_niveau_parent := 0;
|
||
END IF;
|
||
v_prs_afd_niveau_parent := v_prs_afd_niveau_parent +1;
|
||
|
||
IF rec.prs_afdeling_key IS NULL
|
||
THEN
|
||
-- toevoegen afdeling
|
||
v_errorhint := 'Toevoegen afdeling';
|
||
|
||
INSERT INTO prs_afdeling
|
||
(
|
||
prs_bedrijf_key,
|
||
prs_afdeling_parentkey,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
prs_kostenplaats_key
|
||
)
|
||
VALUES (
|
||
v_prs_bedrijf_key,
|
||
NULL,
|
||
rec.prs_afdeling_naam,
|
||
rec.prs_afdeling_omschrijving,
|
||
v_prs_kostenplaats_key
|
||
)
|
||
RETURNING prs_afdeling_key INTO v_prs_afdeling_key;
|
||
ELSE
|
||
-- aanpassen afdeling
|
||
v_errorhint := 'Aanpassen afdeling';
|
||
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = v_prs_bedrijf_key,
|
||
prs_afdeling_parentkey = NULL,
|
||
prs_afdeling_naam = rec.prs_afdeling_naam,
|
||
prs_afdeling_omschrijving = rec.prs_afdeling_omschrijving,
|
||
prs_kostenplaats_key = v_prs_kostenplaats_key
|
||
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
||
v_prs_afdeling_key := rec.prs_afdeling_key;
|
||
END IF;
|
||
|
||
ykpn.set_kenmerk('PRS', 1, v_prs_afdeling_key, v_prs_afd_parent_key, 0);
|
||
ykpn.set_kenmerk('PRS', 2, v_prs_afdeling_key, v_prs_afd_niveau_parent, 0);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || SQLCODE || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || '-' || v_aanduiding
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- todo afdelingen verwijderen;
|
||
|
||
END ykpn_update_organisatie_sched;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT (SELECT prs_perslid_nr
|
||
FROM prs_perslid p
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin))
|
||
prs_perslid_nr,
|
||
prs_perslid_oslogin,
|
||
COUNT ( * )
|
||
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
|
||
-- 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';
|
||
prs.import_perslid(p_import_key, v_seq_of_columns, 'emp_cbl_number;emp_number;emp_ruis_id;prs_name_initials;prs_name_prefix;prs_name_last;emp_sup_name;emp_dep_code;emp_email;emp_active;emp_phone;emp_mobile;emp_sms_authentication;emp_loc_code;emp_date_termination;prs_name_partner_prefix;prs_name_partner_last;prs_umra_name_prefix;prs_umra_name_last;prs_name_last_pref;emp_dep_name;emp_fnc_code;emp_fnc_name;prs_name_call%');
|
||
|
||
-- Maak standaard verdieping aan voor de werkplek
|
||
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_code, alg_verdieping_volgnr, alg_verdieping_omschrijving)
|
||
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
|
||
WHERE v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND v.alg_verdieping_code = '_');
|
||
|
||
-- Maak standaard ruimte aan voor de werkplek
|
||
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_srtruimte_key)
|
||
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
|
||
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND r.alg_ruimte_nr = '_');
|
||
|
||
UPDATE fac_imp_perslid SET alg_verdieping_volgnr = '99',
|
||
alg_ruimte_nr = '_'
|
||
WHERE alg_locatie_code IS NOT NULL;
|
||
|
||
UPDATE fac_imp_perslid i
|
||
SET alg_locatie_code = ( SELECT alg_locatie_code
|
||
FROM alg_v_aanweziglocatie l, alg_v_aanweziggebouw 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
|
||
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;
|
||
|
||
-- Mensen zonder werkplek zetten we onder een standaard locatie zodat hierop gezocht kan worden.
|
||
UPDATE fac_imp_perslid
|
||
SET alg_locatie_code = '00000',
|
||
alg_gebouw_code = '00000',
|
||
alg_verdieping_volgnr = '99',
|
||
alg_ruimte_nr = '_'
|
||
WHERE alg_locatie_code IS NULL;
|
||
|
||
-- De afdelingscode uit het persoonsbestand komt overeen met de kostenplaats. Dus zoeken we a.d.h.v.
|
||
-- de kostenplaats de juiste afdelingscode op.
|
||
UPDATE fac_imp_perslid i
|
||
SET prs_kenmerk2 = prs_afdeling_naam,
|
||
prs_afdeling_naam =
|
||
(SELECT a.prs_afdeling_naam
|
||
FROM prs_afdeling a, prs_kostenplaats k
|
||
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
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
|
||
UPDATE fac_imp_perslid i
|
||
SET prs_perslid_naamgebruik_code = DECODE(prs_perslid_naamgebruik_code,1,0,2,2,3,1,4,3,0);
|
||
|
||
END ykpn_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_perslid (p_import_key IN NUMBER)
|
||
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.
|
||
END ykpn_update_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_perslid_sched (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_perslid_sched (p_import_key IN NUMBER)
|
||
AS
|
||
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(+)
|
||
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;
|
||
|
||
v_perslid_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_hint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
|
||
BEGIN
|
||
|
||
-- 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.
|
||
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
|
||
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
|
||
|
||
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
|
||
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
|
||
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;
|
||
ELSE
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END IF;
|
||
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_hint);
|
||
END;
|
||
END LOOP;
|
||
|
||
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
|
||
FROM prs_perslid p
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT prs_perslidkostenplaats_key
|
||
FROM prs_perslidkostenplaats pk
|
||
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
|
||
SET prs_perslid_mobiel = prs_perslid_telefoonnr
|
||
WHERE prs_perslid_telefoonnr LIKE '+316%';
|
||
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'Te weinig personen in de database om te verwijderen: ' || v_count, '');
|
||
END IF;
|
||
|
||
END ykpn_update_perslid_sched;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_onrgoed2 (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
|
||
|
||
header_found BOOLEAN;
|
||
v_newline VARCHAR2 (2000);
|
||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (1000); -- 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);
|
||
|
||
|
||
v_gebouw_code alg_gebouw.alg_gebouw_code%TYPE;
|
||
v_locatie_code alg_locatie.alg_locatie_code%TYPE;
|
||
v_verdieping_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
|
||
v_ruimte_nr alg_ruimte.alg_ruimte_nr%TYPE;
|
||
v_srtruimte_omschrijving alg_srtruimte.alg_srtruimte_omschrijving%TYPE;
|
||
v_ruimte_toepassing VARCHAR2 (100);
|
||
v_ruimte_tarief VARCHAR2 (100);
|
||
v_ruimte_gebruik VARCHAR2 (100);
|
||
v_wo_txt VARCHAR2 (100);
|
||
v_wo NUMBER (10, 2);
|
||
v_factor_txt VARCHAR2 (100);
|
||
v_factor NUMBER (10, 2);
|
||
v_vvo_txt VARCHAR2 (100);
|
||
v_vvo NUMBER (10, 2);
|
||
v_totaal_vvo NUMBER (10, 2);
|
||
|
||
-- topassing key 1023
|
||
-- vvo key 1024
|
||
-- factor key 1025
|
||
-- tarief key 1026
|
||
|
||
PROCEDURE imp_strip_cr (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cr
|
||
IS
|
||
SELECT INSTR (fac_imp_file_line, CHR (10)), i.*
|
||
FROM fac_imp_file i
|
||
WHERE fac_import_key = p_import_key
|
||
AND INSTR (fac_imp_file_line, CHR (10)) <> 0
|
||
AND fac_imp_file_line LIKE '"Eta%';
|
||
|
||
CURSOR c_upd
|
||
IS
|
||
SELECT fac_rapport_regel
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node LIKE 'IMPVG%';
|
||
|
||
v_newline VARCHAR2 (3000);
|
||
v_field VARCHAR2 (1000);
|
||
v_field2 VARCHAR2 (1000);
|
||
v_volgnr NUMBER;
|
||
v_count NUMBER;
|
||
v_delimitor VARCHAR2 (1);
|
||
BEGIN
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node LIKE 'IMPVG%';
|
||
|
||
FOR rec IN c_cr
|
||
LOOP
|
||
v_newline := rec.fac_imp_file_line;
|
||
|
||
WHILE v_newline IS NOT NULL
|
||
LOOP
|
||
fac.imp_getfield (v_newline, ',', v_field);
|
||
|
||
IF v_field IS NULL
|
||
THEN
|
||
-- comma toevoegen aan fac_rapport
|
||
UPDATE fac_rapport
|
||
SET fac_rapport_regel = fac_rapport_regel || ',';
|
||
ELSE
|
||
IF INSTR (v_field, CHR (10)) <> 0
|
||
THEN
|
||
v_delimitor := CHR (10);
|
||
ELSE
|
||
v_delimitor := ' ';
|
||
END IF;
|
||
|
||
v_volgnr := 1;
|
||
|
||
WHILE v_field IS NOT NULL
|
||
LOOP
|
||
fac.imp_getfield (v_field, v_delimitor, v_field2);
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'IMPVG-' || v_volgnr
|
||
AND fac_rapport_volgnr = rec.fac_imp_file_index;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_regel,
|
||
fac_rapport_volgnr)
|
||
VALUES ('IMPVG-' || v_volgnr,
|
||
'"' || v_field2 || '"',
|
||
rec.fac_imp_file_index);
|
||
ELSE
|
||
UPDATE fac_rapport
|
||
SET fac_rapport_regel = fac_rapport_regel || ',"' || v_field2 || '"'
|
||
WHERE fac_rapport_node = 'IMPVG-' || v_volgnr
|
||
AND fac_rapport_volgnr = rec.fac_imp_file_index;
|
||
END IF;
|
||
|
||
v_volgnr := v_volgnr + 1;
|
||
END LOOP;
|
||
END IF;
|
||
END LOOP;
|
||
END LOOP;
|
||
|
||
SELECT MAX (fac_imp_file_index)
|
||
INTO v_volgnr
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
FOR rec IN c_upd
|
||
LOOP
|
||
v_volgnr := v_volgnr + 1;
|
||
|
||
INSERT INTO fac_imp_file (fac_imp_file_line, fac_import_key, fac_imp_file_index)
|
||
VALUES (rec.fac_rapport_regel, p_import_key, v_volgnr);
|
||
END LOOP;
|
||
|
||
|
||
DELETE fac_imp_file
|
||
WHERE fac_imp_file_index IN (SELECT fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node LIKE 'IMPVG%');
|
||
END;
|
||
|
||
PROCEDURE imp_get_filled_field (p_parseline IN OUT VARCHAR2,
|
||
p_fielddelimitor IN VARCHAR2,
|
||
p_field OUT VARCHAR2)
|
||
AS
|
||
v_count NUMBER (10);
|
||
BEGIN
|
||
v_count := 0;
|
||
|
||
p_field := NULL;
|
||
|
||
WHILE p_field IS NULL AND v_count < 20
|
||
LOOP
|
||
fac.imp_getfield (p_parseline, p_fielddelimitor, p_field);
|
||
v_count := v_count + 1;
|
||
END LOOP;
|
||
END;
|
||
|
||
FUNCTION my_to_number (p_str IN VARCHAR2)
|
||
RETURN NUMBER
|
||
AS
|
||
BEGIN
|
||
RETURN TO_NUMBER (REPLACE (REPLACE (p_str, '.'), ',', '.'));
|
||
END;
|
||
BEGIN
|
||
header_found := FALSE;
|
||
v_fielddelimitor := ',';
|
||
v_errorhint := 'Strip de CR in de regels: ';
|
||
imp_strip_cr (p_import_key);
|
||
|
||
|
||
-- bepaal de gebouw code
|
||
v_errorhint := 'Bepaal het gebouw: ';
|
||
|
||
SELECT SUBSTR (fac_import_filenaam, 1, 5)
|
||
INTO v_gebouw_code
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
v_errorhint := 'Bepaal de locatie: ';
|
||
|
||
SELECT alg_locatie_code
|
||
INTO v_locatie_code
|
||
FROM alg_locatie l, alg_gebouw g
|
||
WHERE g.alg_locatie_key = l.alg_locatie_key AND g.alg_gebouw_code = v_gebouw_code;
|
||
|
||
DELETE FROM fac_imp_onrgoed2; -- WHERE alg_gebouw_code = 'v_gebouw_code';
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_aanduiding := SUBSTR (v_newline, 1, 200);
|
||
v_errorhint := 'Inlezen regel: ';
|
||
|
||
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;
|
||
|
||
v_errorhint := 'Inlezen Etage: ';
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
|
||
IF SUBSTR (v_field, 1, 7) = 'Etage: '
|
||
THEN
|
||
v_verdieping_volgnr :=
|
||
fac.safe_to_number(REPLACE (
|
||
REPLACE (REPLACE (SUBSTR (v_field, 8, 2), 'K', '9'), 'E', '8'),
|
||
'A',
|
||
'7'));
|
||
|
||
v_errorhint := 'Inlezen ruimtenummer: ';
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
|
||
IF LENGTH (v_field) > 10
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Veld is te lang',
|
||
v_gebouw_code || '-' || v_errorhint || v_aanduiding);
|
||
END IF;
|
||
|
||
v_ruimte_nr := SUBSTR (v_field, 1, 10);
|
||
|
||
|
||
-- Op zoek naar het ruimtesoort
|
||
v_errorhint := 'Inlezen ruimtesoort: ';
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
|
||
IF v_field LIKE '%-->%'
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Lege ruimtesoort',
|
||
v_gebouw_code || '-' || v_errorhint || v_aanduiding);
|
||
v_srtruimte_omschrijving := 'ONBEKEND!!!!';
|
||
ELSE
|
||
v_srtruimte_omschrijving := v_field;
|
||
END IF;
|
||
|
||
IF v_field LIKE '%-->%'
|
||
THEN
|
||
v_ruimte_toepassing := 'onbekend';
|
||
ELSE
|
||
-- Op zoek naar het ruimtetoepassing
|
||
v_errorhint := 'Inlezen toepassing: ';
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
IF v_field LIKE '%-->%'
|
||
THEN
|
||
v_ruimte_toepassing := 'onbekend';
|
||
ELSE
|
||
v_ruimte_toepassing := REPLACE (v_field, ' ');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Nu op zoek naar het volgende veld
|
||
-- Dit is het tarief of het gebruik. Gebruik bevat altijd '-->'
|
||
IF v_field NOT LIKE '%-->%'
|
||
THEN
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
END IF;
|
||
IF v_field LIKE '%-->%'
|
||
THEN
|
||
v_errorhint := 'Inlezen ruimtegebruik: ';
|
||
v_ruimte_gebruik := SUBSTR (v_field, INSTR (v_field, '--> ') + 4, 100);
|
||
v_ruimte_tarief := NULL;
|
||
ELSE
|
||
v_errorhint := 'Inlezen tarief: ';
|
||
v_ruimte_tarief := v_field;
|
||
v_errorhint := 'Inlezen ruimtegebruik2: ';
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
v_ruimte_gebruik := SUBSTR (v_field, INSTR (v_field, '--> ') + 4, 100);
|
||
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));
|
||
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
|
||
IF v_field LIKE '%m%'
|
||
THEN
|
||
v_errorhint := 'Inlezen vvo: ';
|
||
--v_vvo_txt := REPLACE (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1), ',', '.');
|
||
--v_errorhint := 'Inlezen vvo [' || v_vvo_txt || ']: ';
|
||
v_vvo := my_to_number (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1));
|
||
ELSE
|
||
v_errorhint := 'Inlezen factor: ';
|
||
v_factor_txt := REPLACE (v_field, ',', '.');
|
||
imp_get_filled_field (v_newline, v_fielddelimitor, v_field);
|
||
v_errorhint := 'Inlezen vvo2: ';
|
||
--v_vvo_txt := my_to_number (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1));
|
||
v_vvo := my_to_number (SUBSTR (v_field, 1, INSTR (v_field, 'm') - 1));
|
||
END IF;
|
||
|
||
INSERT INTO fac_imp_onrgoed2 (alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_srtruimte_omschrijving,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
prs_afdeling_naam,
|
||
prs_ruimteafdeling_bezetting,
|
||
alg_kenmerkwaarde1,
|
||
alg_kenmerkwaarde2,
|
||
alg_kenmerkwaarde3,
|
||
alg_kenmerkwaarde4,
|
||
alg_kenmerkwaarde5)
|
||
VALUES (v_locatie_code,
|
||
v_gebouw_code,
|
||
v_verdieping_volgnr,
|
||
v_srtruimte_omschrijving,
|
||
v_ruimte_nr,
|
||
LOWER (REPLACE (v_ruimte_toepassing, '_', ' ')),
|
||
v_wo,
|
||
NULL, --prs_afdeling_naam,
|
||
NULL, -- prs_ruimteafdeling_bezetting,
|
||
'1043=' || v_ruimte_toepassing, -- alg_kenmerkwaarde1,
|
||
'1044=' || v_vvo, -- alg_kenmerkwaarde2,
|
||
'1045=' || v_factor_txt, -- alg_kenmerkwaarde3,
|
||
'1046=' || v_ruimte_tarief, -- alg_kenmerkwaarde4,
|
||
'1047=' || v_ruimte_gebruik -- alg_kenmerkwaarde5
|
||
);
|
||
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_gebouw_code || '-' || v_errorhint || v_aanduiding);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT SUM (fac.safe_to_number (REPLACE (alg_kenmerkwaarde2, '1024=', '')))
|
||
INTO v_totaal_vvo
|
||
FROM fac_imp_onrgoed2;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Totaal VVO: ' || v_totaal_vvo,
|
||
v_gebouw_code);
|
||
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_gebouw_code || '-' || v_errorhint || v_aanduiding);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_onrgoed2 (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
fac_update_onrgoed2 (p_import_key);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_bezoekers_com (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT DECODE (pp.res_rsv_deel_key,
|
||
NULL, 'De afspraak is geregistreerd',
|
||
'De parkeerplaats is geregistreerd')
|
||
text,
|
||
'CUST02' code,
|
||
(SELECT fac_srtnotificatie_key
|
||
FROM fac_srtnotificatie
|
||
WHERE fac_srtnotificatie_code = 'CUST02')
|
||
fac_srtnotificatie_key,
|
||
b.bez_afspraak_key,
|
||
b.bez_bezoekers_key,
|
||
a.bez_afspraak_datum,
|
||
pp.res_deel_key,
|
||
kw.bez_kenmerkwaarde_waarde xemail,
|
||
COALESCE (d.alg_gebouw_key,
|
||
(SELECT alg_onrgoed_key
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_onrgoedkenmerk_key = g.alg_onrgoedkenmerk_key))
|
||
alg_gebouw_key,
|
||
COALESCE (
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_onrgoed_key = d.alg_gebouw_key AND alg_kenmerk_key = 1040),
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_onrgoedkenmerk_key = g.alg_onrgoedkenmerk_key))
|
||
bijlage
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kw,
|
||
res_rsv_deel pp,
|
||
res_v_ins_deel d,
|
||
( SELECT g.alg_locatie_key, MAX (alg_onrgoedkenmerk_key) alg_onrgoedkenmerk_key
|
||
FROM alg_gebouw g, alg_onrgoedkenmerk aogk
|
||
WHERE alg_kenmerk_key = 1040
|
||
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL
|
||
GROUP BY alg_locatie_key) g
|
||
WHERE COALESCE (
|
||
(SELECT bez_kenmerkwaarde_waarde
|
||
FROM bez_kenmerkwaarde kwlog
|
||
WHERE bez_kenmerk_key = 1042 AND kwlog.bez_bezoekers_key = b.bez_bezoekers_key),
|
||
'QueQueleQue') <>
|
||
TO_CHAR (bez_afspraak_datum, 'yyyy-mm-dd hh24:mi:ss')
|
||
|| ';'
|
||
|| COALESCE (pp.res_deel_key, -1)
|
||
|| ';'
|
||
|| kw.bez_kenmerkwaarde_waarde
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND b.bez_bezoekers_key = pp.bez_bezoekers_key(+)
|
||
AND pp.res_deel_key = d.res_deel_key(+)
|
||
AND b.bez_bezoekers_key = kw.bez_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1000
|
||
AND pp.res_deel_key IS NOT NULL -- voorlopig alleen parkeerplaatsen.
|
||
AND a.alg_locatie_key = g.alg_locatie_key
|
||
AND a.bez_afspraak_datum > SYSDATE + 2 / 24;
|
||
|
||
CURSOR cs
|
||
IS
|
||
SELECT a.bez_afspraak_key,
|
||
b.bez_bezoekers_key,
|
||
kwm.bez_kenmerkwaarde_waarde mobiel,
|
||
sn.fac_srtnotificatie_code,
|
||
sn.fac_srtnotificatie_key,
|
||
'De code voor uw parkeerplaats op ' || TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi') || '-' || TO_CHAR(a.bez_afspraak_eind, 'hh24:mi') || ' is ' ||
|
||
kwp.bez_kenmerkwaarde_waarde || '#, ' || COALESCE(afw.afw_adres, g.alg_gebouw_naam) || '. Bij KPN geldt legitimatieplicht.' text
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kwm, -- mobiel 1001
|
||
bez_kenmerkwaarde kwp, -- pincode 1020
|
||
fac_srtnotificatie sn,
|
||
res_rsv_deel rd,
|
||
res_v_ins_deel d,
|
||
alg_gebouw g,
|
||
(SELECT alg_onrgoedkenmerk_waarde afw_adres, alg_onrgoed_key alg_gebouw_key
|
||
FROM alg_onrgoedkenmerk afw
|
||
WHERE alg_kenmerk_key = 1180) afw -- afwijkend parkeeradres
|
||
WHERE sn.fac_srtnotificatie_code = 'CUST03'
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND kwm.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kwm.bez_kenmerk_key = 1001
|
||
AND kwp.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kwp.bez_kenmerk_key = 1020
|
||
AND b.bez_bezoekers_key = rd.bez_bezoekers_key
|
||
AND rd.res_deel_key = d.res_deel_key
|
||
AND d.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_gebouw_key = afw.alg_gebouw_key(+)
|
||
AND a.bez_afspraak_datum < SYSDATE + 2/24
|
||
AND a.bez_afspraak_datum > SYSDATE
|
||
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);
|
||
|
||
-- Verwijder kenmerken die gekopieerd zijn met de herhaal functie
|
||
CURSOR ckd
|
||
IS
|
||
SELECT kw.bez_kenmerkwaarde_key, b.bez_bezoekers_key
|
||
FROM bez_kenmerkwaarde kw, bez_bezoekers b, bez_afspraak a
|
||
WHERE TRUNC (bez_kenmerkwaarde_aanmaak) <> TRUNC (a.bez_afspraak_datum)
|
||
AND bez_kenmerk_key = 1043 -- SMS verzonden op yyyy-mm-dd hh-mi-ss
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND a.bez_afspraak_datum > SYSDATE;
|
||
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
|
||
-- hebben we meerdere wijzigingen dan is alleen de laatste interessant.
|
||
DELETE fac_notificatie WHERE fac_srtnotificatie_key = rec.fac_srtnotificatie_key
|
||
AND fac_notificatie_extrakey = rec.bez_bezoekers_key;
|
||
|
||
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
||
fac_notificatie_status,
|
||
fac_notificatie_receiver_email,
|
||
fac_notificatie_oms,
|
||
fac_notificatie_refkey,
|
||
fac_notificatie_extrakey,
|
||
fac_notificatie_prioriteit,
|
||
fac_notificatie_attachments)
|
||
VALUES (rec.fac_srtnotificatie_key,
|
||
2, -- mail
|
||
rec.xemail, -- email
|
||
rec.text,
|
||
rec.bez_afspraak_key,
|
||
rec.bez_bezoekers_key,
|
||
2,
|
||
'/ALG/A'
|
||
|| SUBSTR (TO_CHAR (rec.alg_gebouw_key, 'fm0000000'), 1, 4)
|
||
|| '___'
|
||
|| '/A'
|
||
|| 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;
|
||
|
||
-- Door bezoekers/afspraken te herhalen worden ook kenmerken gekopieerd. Dit heeft als gevolg dat er dan geen
|
||
-- SMS meer verzonden wordt. Onderstaande verwijdert gekopieerde kenmerken met daarin het tijdstip dat de SMS verzonden
|
||
-- is voor kenmerken waarvan de datum niet gelijk is aan de afspraakdatum.
|
||
FOR rec IN ckd
|
||
LOOP
|
||
ykpn.set_kenmerk('BEZ', 1120, rec.bez_bezoekers_key, NULL, 0); -- Geldig ID
|
||
ykpn.set_kenmerk('BEZ', 1060, rec.bez_bezoekers_key, NULL, 0); -- Nedap ID
|
||
ykpn.set_kenmerk('BEZ', 1042, rec.bez_bezoekers_key, NULL, 0); -- Nedap Verzonden
|
||
ykpn.set_kenmerk('BEZ', 1160, rec.bez_bezoekers_key, NULL, 0); -- Kenteken respons
|
||
ykpn.set_kenmerk('BEZ', 1161, rec.bez_bezoekers_key, NULL, 0); -- Kenteken Verzonden
|
||
ykpn.set_kenmerk('BEZ', 1043, rec.bez_bezoekers_key, NULL, 0); -- SMS Verzonden
|
||
END LOOP;
|
||
|
||
-- en nu de SMS berichten versturen
|
||
FOR rec IN cs
|
||
LOOP
|
||
|
||
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
||
fac_notificatie_status,
|
||
fac_notificatie_receiver_phone,
|
||
fac_notificatie_oms,
|
||
fac_notificatie_refkey,
|
||
fac_notificatie_extrakey,
|
||
fac_notificatie_prioriteit)
|
||
VALUES (rec.fac_srtnotificatie_key,
|
||
4, -- sms
|
||
rec.mobiel, -- email
|
||
rec.text, -- text
|
||
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;
|
||
/
|
||
|
||
-- meldt de parkeerplaats twee uur van te voren aan bij Nedap
|
||
CREATE OR REPLACE VIEW ykpn_v_parkeerplaats_nedap
|
||
(
|
||
naam,
|
||
pincode,
|
||
v_van,
|
||
v_tot,
|
||
template,
|
||
countergroup,
|
||
bez_bezoekers_key
|
||
)
|
||
AS
|
||
SELECT xml.char_to_html (bez_afspraak_naam),
|
||
pincode,
|
||
d_van,
|
||
v_tot,
|
||
template,
|
||
countergroup,
|
||
bez_bezoekers_key
|
||
FROM (SELECT b.bez_afspraak_naam,
|
||
kw_p.bez_kenmerkwaarde_waarde pincode,
|
||
TO_CHAR (a.bez_afspraak_datum, 'yyyy-mm-dd hh:mi:ss') d_van,
|
||
TO_CHAR (a.bez_afspraak_eind, 'yyyy-mm-dd hh:mi:ss') v_tot,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE alg_kenmerk_key = 1041 AND aogk.alg_onrgoed_key = d.alg_gebouw_key)
|
||
template,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE alg_kenmerk_key = 1042 AND aogk.alg_onrgoed_key = d.alg_gebouw_key)
|
||
countergroup,
|
||
b.bez_bezoekers_key
|
||
FROM bez_bezoekers b,
|
||
bez_afspraak a,
|
||
bez_kenmerkwaarde kw_p,
|
||
res_rsv_deel rrd,
|
||
res_deel rd,
|
||
ins_v_deel_gegevens d
|
||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND b.bez_bezoekers_key = kw_p.bez_bezoekers_key
|
||
AND kw_p.bez_kenmerk_key = 1020 -- pincode
|
||
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
|
||
AND NOT EXISTS
|
||
(SELECT bez_kenmerkwaarde_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE kw.bez_kenmerk_key = 1060 -- Nedap id
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
|
||
AND bez_afspraak_datum BETWEEN SYSDATE AND SYSDATE + (2 / 24))
|
||
WHERE template IS NOT NULL;
|
||
|
||
-- En vul de gegevens bij nedap aan met kenteken info
|
||
CREATE OR REPLACE VIEW ykpn_v_kenteken_nedap
|
||
(
|
||
kenteken,
|
||
pincode,
|
||
bez_bezoekers_key
|
||
)
|
||
AS
|
||
SELECT REGEXP_REPLACE (UPPER (kw_p.bez_kenmerkwaarde_waarde),
|
||
'[^A-Z0-9<>-<2D>]+',
|
||
'')
|
||
kenteken,
|
||
(SELECT kp.bez_kenmerkwaarde_waarde
|
||
FROM bez_kenmerkwaarde kp
|
||
WHERE b.bez_bezoekers_key = kp.bez_bezoekers_key
|
||
AND kp.bez_kenmerk_key = 1020), -- Pincode
|
||
b.bez_bezoekers_key
|
||
FROM bez_bezoekers b,
|
||
bez_afspraak a,
|
||
bez_kenmerkwaarde kw_p,
|
||
res_rsv_deel rrd,
|
||
res_deel rd,
|
||
ins_v_deel_gegevens d,
|
||
alg_onrgoedkenmerk aogkk
|
||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND b.bez_bezoekers_key = kw_p.bez_bezoekers_key
|
||
AND kw_p.bez_kenmerk_key = 1080 -- kenteken
|
||
AND aogkk.alg_kenmerk_key = 1160 -- kentekenherkenning aanwezig
|
||
AND aogkk.alg_onrgoed_key = d.alg_gebouw_key
|
||
AND aogkk.alg_onrgoedkenmerk_waarde = '1'
|
||
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
|
||
-- We hebben nog geen kenteken gegevens verstuurd
|
||
AND NOT EXISTS
|
||
(SELECT bez_kenmerkwaarde_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE kw.bez_kenmerk_key = 1160 -- Kenteken response
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
|
||
-- We hebben al wel een pincode id gestuurd zodat we nu een update met kenteken info kunnen doen.
|
||
AND EXISTS
|
||
(SELECT bez_kenmerkwaarde_key
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE kw.bez_kenmerk_key = 1060 -- Pincode response
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
|
||
-- we sturen de pincode en kenteken informatie 2 uur van te voren.
|
||
AND bez_afspraak_datum BETWEEN SYSDATE AND SYSDATE + (2 / 24);
|
||
|
||
-- Videoconferencing
|
||
CREATE OR REPLACE VIEW ykpn_v_vc_gegevens
|
||
(
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key,
|
||
res_rsv_ruimte_volgnr,
|
||
t_van,
|
||
t_tot,
|
||
omschrijving,
|
||
ruimte,
|
||
contact_naam,
|
||
contact_telefoon,
|
||
contact_email,
|
||
idnummertnf,
|
||
aantal,
|
||
vertrouwelijk,
|
||
vc_id,
|
||
externe_locatie,
|
||
sip_ip,
|
||
ipadres,
|
||
last_upd,
|
||
last_sync
|
||
)
|
||
AS
|
||
SELECT rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi:ss')
|
||
t_van,
|
||
TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi:ss')
|
||
t_tot,
|
||
xml.char_to_html (res_rsv_ruimte_omschrijving) omschrijving,
|
||
rr.res_ruimte_nr ruimte,
|
||
pf.prs_perslid_naam_friendly contact_naam,
|
||
p.prs_perslid_telefoonnr contact_telefoon,
|
||
p.prs_perslid_email contact_email,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND alg_onrgoed_key = rar.alg_ruimte_key
|
||
AND alg_kenmerk_key = 1003)
|
||
idnummertnf,
|
||
(SELECT COUNT ( * )
|
||
FROM res_rsv_ruimte rrr2
|
||
WHERE rrr.res_reservering_key = rrr2.res_reservering_key
|
||
AND rrr2.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr2.res_activiteit_key = 30) -- VC
|
||
+
|
||
(SELECT count(*)
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k, res_rsv_ruimte rrrk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5
|
||
AND rk.res_rsv_ruimte_key = rrrk.res_rsv_ruimte_key
|
||
AND rrr.res_reservering_key = rrrk.res_reservering_key
|
||
AND rrrk.res_rsv_ruimte_verwijder IS NULL)
|
||
aantal,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerk_key = 31 -- vertrouwelijk
|
||
AND res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
|
||
0)
|
||
vertrouwelijk,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerk_key = 2 -- vc id
|
||
AND res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
|
||
0)
|
||
vc_id,
|
||
NULL externe_locatie,
|
||
NULL sip_ip,
|
||
NULL ipadres,
|
||
COALESCE (
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
|
||
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
||
AND fac_srtnotificatie_code <> 'CUST01'),
|
||
SYSDATE - 100)
|
||
last_upd,
|
||
COALESCE (
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
|
||
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
||
AND fac_srtnotificatie_code = 'CUST01'),
|
||
SYSDATE - 100)
|
||
last_sync
|
||
FROM res_rsv_ruimte rrr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr,
|
||
prs_perslid p,
|
||
( SELECT res_ruimte_key, MIN (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = 73
|
||
AND rrr.res_activiteit_key = 30
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rar.res_ruimte_key = rr.res_ruimte_key
|
||
AND rrr.res_rsv_ruimte_van > SYSDATE
|
||
UNION ALL
|
||
SELECT rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi:ss')
|
||
t_van,
|
||
TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi:ss')
|
||
t_tot,
|
||
xml.char_to_html (res_rsv_ruimte_omschrijving) omschrijving,
|
||
rr.res_ruimte_nr ruimte,
|
||
pf.prs_perslid_naam_friendly contact_naam,
|
||
p.prs_perslid_telefoonnr contact_telefoon,
|
||
p.prs_perslid_email contact_email,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND alg_onrgoed_key = rar.alg_ruimte_key
|
||
AND alg_kenmerk_key = 1003)
|
||
idnummertnf,
|
||
(SELECT COUNT ( * )
|
||
FROM res_rsv_ruimte rrr2
|
||
WHERE rrr.res_reservering_key = rrr2.res_reservering_key
|
||
AND rrr2.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr2.res_activiteit_key = 30) -- VC
|
||
+
|
||
(SELECT count(*)
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k, res_rsv_ruimte rrrk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5
|
||
AND rk.res_rsv_ruimte_key = rrrk.res_rsv_ruimte_key
|
||
AND rrr.res_reservering_key = rrrk.res_reservering_key
|
||
AND rrrk.res_rsv_ruimte_verwijder IS NULL)
|
||
aantal,
|
||
0,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerk_key = 2 -- vc id
|
||
AND res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
|
||
0)
|
||
vc_id,
|
||
locatie externe_locatie,
|
||
sip_ip,
|
||
ipadres,
|
||
NULL,
|
||
NULL
|
||
FROM res_rsv_ruimte rrr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr,
|
||
prs_perslid p,
|
||
( SELECT res_ruimte_key, MIN (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT locatie,
|
||
sip_ip,
|
||
ipadres,
|
||
kl.res_rsv_ruimte_key
|
||
FROM (SELECT res_kenmerkreservering_waarde locatie,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerk_groep groep
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND res_srtkenmerk_key = 6) kl,
|
||
(SELECT DECODE (res_kenmerkreservering_waarde, 81, 'IP', 82, 'SIP', NULL) sip_ip,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerk_groep groep
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND res_srtkenmerk_key = 4) ks,
|
||
(SELECT res_kenmerkreservering_waarde ipadres,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerk_groep groep
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5) ki
|
||
WHERE kl.res_rsv_ruimte_key = ks.res_rsv_ruimte_key
|
||
AND ks.res_rsv_ruimte_key = ki.res_rsv_ruimte_key
|
||
AND kl.groep = ks.groep
|
||
AND ks.groep = ki.groep) ext
|
||
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = 73
|
||
AND rrr.res_activiteit_key = 30
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rar.res_ruimte_key = rr.res_ruimte_key
|
||
AND rrr.res_rsv_ruimte_key = ext.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_van > SYSDATE;
|
||
|
||
-- Verwijderde video conferenties.
|
||
CREATE OR REPLACE VIEW ykpn_v_cancel_vc
|
||
(
|
||
res_reservering_key,
|
||
vc_id
|
||
)
|
||
AS
|
||
SELECT r.res_reservering_key, res_kenmerkreservering_waarde
|
||
FROM res_reservering r, res_rsv_ruimte rrr, res_kenmerkwaarde kw
|
||
WHERE res_reservering_verwijder IS NOT NULL
|
||
AND r.res_reservering_key = rrr.res_reservering_key
|
||
AND rrr.res_activiteit_key = 30 -- video conferentie
|
||
AND kw.res_kenmerk_key = 2 -- vc_id
|
||
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND res_rsv_ruimte_van > SYSDATE
|
||
GROUP BY r.res_reservering_key, res_kenmerkreservering_waarde;
|
||
|
||
|
||
-- HUUR / Doorbelasting
|
||
CREATE OR REPLACE VIEW ykpn_v_ruimtegebruik
|
||
(
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_key,
|
||
fac_usrdata_vervaldatum
|
||
)
|
||
AS
|
||
SELECT fac_usrdata_code || ' (' || fac_usrdata_omschr || ')',
|
||
fac_usrdata_key,
|
||
COALESCE (fac_usrdata_verwijder, fac_usrdata_vervaldatum)
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_huur_gegevens
|
||
(
|
||
alg_gebouw_upper,
|
||
alg_gebouw_omschrijving,
|
||
alg_verdieping_code,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
alg_srtruimte_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
huurder,
|
||
vvo,
|
||
factor
|
||
)
|
||
AS
|
||
SELECT alg_gebouw_upper,
|
||
alg_gebouw_omschrijving,
|
||
alg_verdieping_code,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
alg_srtruimte_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1047)
|
||
huurder,
|
||
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1044)
|
||
vvo,
|
||
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1045)
|
||
factor
|
||
FROM alg_v_ruimte_gegevens r;
|
||
|
||
|
||
-- afdelingsboom views. KPN heeft te veel afdelingsniveaus. Daarom maar een platte structuur met een
|
||
-- view om de boom op te stellen.
|
||
CREATE OR REPLACE VIEW ykpn_v_afdeling
|
||
(
|
||
prs_bedrijf_key,
|
||
prs_afdeling_key,
|
||
prs_afdeling_parentkey
|
||
)
|
||
AS
|
||
SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey
|
||
FROM prs_afdeling a,
|
||
(SELECT prs_link_key prs_afdeling_key,
|
||
prs_kenmerklink_waarde prs_afdeling_parentkey
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1) kl
|
||
WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+);
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_afdeling_boom
|
||
(
|
||
niveau,
|
||
prs_bedrijf_key,
|
||
prs_afdeling_key,
|
||
prs_afdeling_key1,
|
||
prs_afdeling_key2,
|
||
prs_afdeling_key3,
|
||
prs_afdeling_key4,
|
||
prs_afdeling_key5,
|
||
prs_afdeling_key6,
|
||
prs_afdeling_key7,
|
||
prs_afdeling_key8,
|
||
prs_afdeling_key9,
|
||
prs_afdeling_key10,
|
||
prs_afdeling_key11
|
||
)
|
||
AS
|
||
SELECT '1' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a1.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1
|
||
WHERE a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '2' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a2.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1, ykpn_v_afdeling a2
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '3' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a3.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1, ykpn_v_afdeling a2, ykpn_v_afdeling a3
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '4' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a4.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '5' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a5.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '6' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a6.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '7' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a7.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
a7.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6,
|
||
ykpn_v_afdeling a7
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '8' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a8.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
a7.prs_afdeling_key,
|
||
a8.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6,
|
||
ykpn_v_afdeling a7,
|
||
ykpn_v_afdeling a8
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
|
||
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '9' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a9.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
a7.prs_afdeling_key,
|
||
a8.prs_afdeling_key,
|
||
a9.prs_afdeling_key,
|
||
TO_NUMBER (NULL),
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6,
|
||
ykpn_v_afdeling a7,
|
||
ykpn_v_afdeling a8,
|
||
ykpn_v_afdeling a9
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
|
||
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
|
||
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL
|
||
UNION
|
||
SELECT '10' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a10.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
a7.prs_afdeling_key,
|
||
a8.prs_afdeling_key,
|
||
a9.prs_afdeling_key,
|
||
a10.prs_afdeling_key,
|
||
TO_NUMBER (NULL)
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6,
|
||
ykpn_v_afdeling a7,
|
||
ykpn_v_afdeling a8,
|
||
ykpn_v_afdeling a9,
|
||
ykpn_v_afdeling a10
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
|
||
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
|
||
UNION
|
||
SELECT '11' niveau,
|
||
a1.prs_bedrijf_key,
|
||
a10.prs_afdeling_key,
|
||
a1.prs_afdeling_key,
|
||
a2.prs_afdeling_key,
|
||
a3.prs_afdeling_key,
|
||
a4.prs_afdeling_key,
|
||
a5.prs_afdeling_key,
|
||
a6.prs_afdeling_key,
|
||
a7.prs_afdeling_key,
|
||
a8.prs_afdeling_key,
|
||
a9.prs_afdeling_key,
|
||
a10.prs_afdeling_key,
|
||
a11.prs_afdeling_key
|
||
FROM ykpn_v_afdeling a1,
|
||
ykpn_v_afdeling a2,
|
||
ykpn_v_afdeling a3,
|
||
ykpn_v_afdeling a4,
|
||
ykpn_v_afdeling a5,
|
||
ykpn_v_afdeling a6,
|
||
ykpn_v_afdeling a7,
|
||
ykpn_v_afdeling a8,
|
||
ykpn_v_afdeling a9,
|
||
ykpn_v_afdeling a10,
|
||
ykpn_v_afdeling a11
|
||
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
|
||
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
|
||
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
|
||
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
|
||
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
|
||
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
|
||
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 a11.prs_afdeling_parentkey = a10.prs_afdeling_key
|
||
AND a1.prs_afdeling_parentkey IS NULL;
|
||
|
||
|
||
-- rapport om communicatie met Nedap opgeslagen in kenmerken inzichtelijk te maken.
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_bez_kenmerk
|
||
(
|
||
bez_afspraak_key,
|
||
bez_afspraak_naam,
|
||
bez_kenmerkwaarde_waarde,
|
||
bez_kenmerkwaarde_aanmaak,
|
||
bez_kenmerk_omschrijving
|
||
)
|
||
AS
|
||
SELECT bez_afspraak_key,
|
||
bez_afspraak_naam,
|
||
bez_kenmerkwaarde_waarde,
|
||
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
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key;
|
||
|
||
|
||
-- fiatteringsoverzicht inclusief afdeling.
|
||
CREATE OR REPLACE VIEW ykpn_v_fiat_huisvesting
|
||
(
|
||
mld_opdr_key,
|
||
vervanger_key,
|
||
aanvraagnummer,
|
||
datum,
|
||
prs_perslid_naam_full,
|
||
afdeling,
|
||
afdeling2,
|
||
kostenplaats_nr,
|
||
kostenplaats_oms,
|
||
bedrag,
|
||
module,
|
||
TYPE,
|
||
fiatstatus,
|
||
request_key,
|
||
statuskey,
|
||
categorie,
|
||
fiatteur,
|
||
locatie,
|
||
actie
|
||
)
|
||
AS
|
||
SELECT op.mld_opdr_key,
|
||
c.vervanger,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| op.mld_melding_key
|
||
|| '/'
|
||
|| op.mld_opdr_bedrijfopdr_volgnr
|
||
aanvraagnummer,
|
||
mld_opdr_datumbegin datum,
|
||
pf.prs_perslid_naam_full,
|
||
a.prs_afdeling_omschrijving,
|
||
a2.prs_afdeling_omschrijving prs_afdeling_omschrijving2,
|
||
km.prs_kostenplaats_nr,
|
||
km.prs_kostenplaats_omschrijving,
|
||
mld_opdr_kosten bedrag,
|
||
'MLD' module,
|
||
mld_typeopdr_omschrijving TYPE,
|
||
'open' fiatstatus,
|
||
op.mld_opdr_key request_key,
|
||
op.mld_statusopdr_key statuskey,
|
||
td.ins_discipline_omschrijving categorie,
|
||
p2.prs_perslid_naam_full fiatteur,
|
||
CASE
|
||
WHEN l.alg_locatie_key IS NULL THEN NULL
|
||
ELSE l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
|
||
END
|
||
locatie,
|
||
(SELECT SUBSTR (
|
||
on1.mld_opdr_note_omschrijving,
|
||
2,
|
||
DECODE (INSTR (on1.mld_opdr_note_omschrijving, ' '),
|
||
0, 15,
|
||
INSTR (on1.mld_opdr_note_omschrijving, ' ') - 2))
|
||
FROM mld_opdr_note on1
|
||
WHERE SUBSTR (mld_opdr_note_omschrijving, 1, 1) = '#'
|
||
AND on1.mld_opdr_key = op.mld_opdr_key
|
||
AND NOT EXISTS
|
||
(SELECT mld_opdr_note_key
|
||
FROM mld_opdr_note on2
|
||
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
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_opdr op,
|
||
mld_typeopdr ot,
|
||
prs_v_perslid_fullnames_all pf,
|
||
ykpn_v_afdeling_boom b,
|
||
prs_afdeling a,
|
||
prs_afdeling a2,
|
||
prs_perslid p,
|
||
prs_kostenplaats km,
|
||
prs_kostenplaats k,
|
||
ins_tab_discipline td,
|
||
ins_srtdiscipline sd,
|
||
fac_tracking ft,
|
||
fac_srtnotificatie fno,
|
||
( SELECT kg.prs_perslid_key, k2.prs_kostenplaats_key
|
||
FROM prs_kostenplaats k2, prs_kostenplaatsgrp kg
|
||
WHERE kg.prs_kostenplaatsgrp_key = k2.prs_kostenplaatsgrp_key
|
||
AND kg.prs_perslid_key IN (3)
|
||
GROUP BY kg.prs_perslid_key, k2.prs_kostenplaats_key) ver,
|
||
prs_v_perslid_fullnames_all p2,
|
||
alg_locatie l,
|
||
(SELECT prs_perslid_key fiatteur, prs_perslid_key vervanger FROM prs_perslid
|
||
UNION ALL
|
||
SELECT prs_perslid_key, prs_perslid_key_alt FROM prs_collega) c
|
||
WHERE op.mld_melding_key = m.mld_melding_key
|
||
AND m.prs_kostenplaats_key = km.prs_kostenplaats_key(+)
|
||
AND op.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND COALESCE (op.prs_kostenplaats_key, m.prs_kostenplaats_key) = k.prs_kostenplaats_key
|
||
AND k.prs_kostenplaats_key = ver.prs_kostenplaats_key(+)
|
||
AND pf.prs_perslid_key = m.prs_perslid_key
|
||
AND ft.fac_tracking_refkey = op.mld_opdr_key
|
||
AND ft.fac_srtnotificatie_key = fno.fac_srtnotificatie_key
|
||
AND op.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||
AND sd.ins_srtdiscipline_key = td.ins_srtdiscipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND fno.fac_srtnotificatie_code = 'ORDFIA'
|
||
AND op.mld_statusopdr_key = 3
|
||
AND c.fiatteur = p2.prs_perslid_key
|
||
AND p2.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = b.prs_afdeling_key
|
||
AND b.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.prs_afdeling_key2 = a2.prs_afdeling_key
|
||
AND p2.prs_perslid_key =
|
||
CASE
|
||
WHEN NOT EXISTS
|
||
(SELECT prs_perslid_key
|
||
FROM fac_tracking t, fac_srtnotificatie st
|
||
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
||
AND st.fac_srtnotificatie_code = 'ORDFOK'
|
||
AND fac_tracking_refkey = op.mld_opdr_key)
|
||
THEN
|
||
prs.getkpverantwoordelijke (op.prs_kostenplaats_key, 1, -1)
|
||
ELSE
|
||
ver.prs_perslid_key
|
||
END;
|
||
|
||
|
||
|
||
-- Opdrachten op naam van intern bedrijf KPN boordeling Res (42702) worden goedgekeurd
|
||
-- door ASA (Anita, Ada en Suzanne)
|
||
CREATE OR REPLACE VIEW ykpn_v_beoord_huisvesting
|
||
(
|
||
mld_opdr_key,
|
||
aanvraagnummer,
|
||
datum,
|
||
prs_perslid_naam_full,
|
||
afdeling,
|
||
afdeling2,
|
||
kostenplaats_nr,
|
||
kostenplaats_oms,
|
||
bedrag,
|
||
TYPE,
|
||
status,
|
||
categorie,
|
||
locatie,
|
||
actie
|
||
)
|
||
AS
|
||
SELECT op.mld_opdr_key,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| op.mld_melding_key
|
||
|| '/'
|
||
|| op.mld_opdr_bedrijfopdr_volgnr
|
||
aanvraagnummer,
|
||
mld_opdr_datumbegin datum,
|
||
pf.prs_perslid_naam_full,
|
||
a.prs_afdeling_omschrijving,
|
||
a2.prs_afdeling_omschrijving prs_afdeling_omschrijving2,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
mld_opdr_kosten bedrag,
|
||
mld_typeopdr_omschrijving TYPE,
|
||
so.mld_statusopdr_omschrijving,
|
||
td.ins_discipline_omschrijving categorie,
|
||
CASE
|
||
WHEN l.alg_locatie_key IS NULL THEN NULL
|
||
ELSE l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
|
||
END
|
||
locatie,
|
||
(SELECT SUBSTR (
|
||
on1.mld_opdr_note_omschrijving,
|
||
2,
|
||
DECODE (INSTR (on1.mld_opdr_note_omschrijving, ' '),
|
||
0, 15,
|
||
INSTR (on1.mld_opdr_note_omschrijving, ' ') - 2))
|
||
FROM mld_opdr_note on1
|
||
WHERE SUBSTR (mld_opdr_note_omschrijving, 1, 1) = '#'
|
||
AND on1.mld_opdr_key = op.mld_opdr_key
|
||
AND NOT EXISTS
|
||
(SELECT mld_opdr_note_key
|
||
FROM mld_opdr_note on2
|
||
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
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_opdr op,
|
||
mld_typeopdr ot,
|
||
prs_v_perslid_fullnames_all pf,
|
||
ykpn_v_afdeling_boom b,
|
||
prs_perslid p,
|
||
prs_afdeling a,
|
||
prs_afdeling a2,
|
||
prs_kostenplaats k,
|
||
ins_tab_discipline td,
|
||
ins_srtdiscipline sd,
|
||
alg_locatie l,
|
||
mld_statusopdr so
|
||
WHERE op.mld_melding_key = m.mld_melding_key
|
||
AND op.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND pf.prs_perslid_key = m.prs_perslid_key
|
||
AND p.prs_perslid_key = m.prs_perslid_key
|
||
AND op.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||
AND sd.ins_srtdiscipline_key = td.ins_srtdiscipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND op.mld_statusopdr_key IN (5, 8)
|
||
AND b.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.prs_afdeling_key2 = a2.prs_afdeling_key
|
||
AND p.prs_afdeling_key = b.prs_afdeling_key
|
||
AND op.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND op.mld_uitvoerende_keys = 42702;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_gebouw_parkeer_info
|
||
AS
|
||
SELECT alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_gebouw_key,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_kenmerk_key = 1140
|
||
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
|
||
betaald,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_kenmerk_key = 1141
|
||
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
|
||
gratis,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_kenmerk_key = 1142
|
||
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
|
||
opmerking
|
||
FROM alg_gebouw g
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND EXISTS
|
||
(SELECT alg_onrgoedkenmerk_key
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE aogk.alg_kenmerk_key IN (1140, 1141, 1142)
|
||
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
|
||
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL);
|
||
|
||
-- Rapport om misbruik van parkeerplaatsen op eigen locatie te rapporteren.
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_pp_eigen_gebruik
|
||
(
|
||
gebouw,
|
||
actie,
|
||
aangemeld_door,
|
||
bezoeker,
|
||
bedrijf,
|
||
email_bezoeker,
|
||
afspraak_datum
|
||
)
|
||
AS
|
||
SELECT d.alg_gebouw_upper,
|
||
ba.bez_actie_omschrijving,
|
||
pf.prs_perslid_naam_full,
|
||
bez_afspraak_naam,
|
||
bez_afspraak_bedrijf,
|
||
LOWER (prs_perslid_email),
|
||
bez_afspraak_datum
|
||
FROM bez_afspraak a,
|
||
bez_actie ba,
|
||
bez_bezoekers b,
|
||
res_rsv_deel rrd,
|
||
res_v_aanwezigdeel rd,
|
||
ins_v_deel_gegevens d,
|
||
bez_kenmerkwaarde em,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_werkplekperslid_gegevens pwp
|
||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND a.bez_actie_key = ba.bez_actie_key
|
||
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
|
||
AND em.bez_kenmerk_key = 1000
|
||
AND em.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND UPPER (em.bez_kenmerkwaarde_waarde) = UPPER (p.prs_perslid_email)
|
||
AND p.prs_perslid_key = pwp.prs_perslid_key
|
||
AND pwp.alg_locatie_key = d.alg_locatie_key
|
||
AND TRUNC (bez_afspraak_datum, 'mm') = ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1)
|
||
AND p.prs_perslid_key = pf.prs_perslid_key;
|
||
|
||
|
||
-- Taak om goedgekeuurde aanvragen die toegewezen zijn aan Arnoud Pleij en bedrijf KPN RES services
|
||
-- na acceptatie af te melden.
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_afmelden_opdracht (
|
||
p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM mld_opdr
|
||
-- Arnoud Pleij en bedrijf KPN RES services
|
||
WHERE mld_uitvoerende_keys IN (7676, 42702)
|
||
-- status geaccepteerd
|
||
AND mld_statusopdr_key = 8;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
mld.setopdrachtstatus (rec.mld_opdr_key, 6, 3); -- afgemeld door Facilitor
|
||
mld.updatemeldingstatusav (rec.mld_melding_key, 0, NULL, 0);
|
||
END LOOP;
|
||
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 VIEW ykpn_v_toegang_saldo
|
||
AS
|
||
SELECT * FROM ykpn_toegang_saldo;
|
||
|
||
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;
|
||
|
||
-- Om in de grafiek ook het aantal beschikbare werkplekken te tonen wordt dit toegevoegd aan de tabel.
|
||
INSERT INTO ykpn_toegang_saldo (alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
datum,
|
||
dag,
|
||
dag_nummer,
|
||
weekend,
|
||
tijd,
|
||
aantal_wp,
|
||
saldo,
|
||
bezetting)
|
||
SELECT g.alg_gebouw_code,
|
||
s.alg_gebouw_naam,
|
||
datum,
|
||
'wp',
|
||
dag_nummer,
|
||
'Nee',
|
||
tijd,
|
||
NULL,
|
||
aogk.alg_onrgoedkenmerk_waarde,
|
||
NULL
|
||
FROM ykpn_toegang_saldo s, alg_gebouw g, alg_onrgoedkenmerk aogk
|
||
WHERE s.alg_gebouw_code = g.alg_gebouw_code
|
||
AND g.alg_gebouw_key = aogk.alg_onrgoed_key
|
||
AND aogk.alg_kenmerk_key = 1100 -- Aantal werkplekken per gebouw
|
||
AND TRUNC(datum, 'MON') = v_datum
|
||
GROUP BY g.alg_gebouw_code,
|
||
s.alg_gebouw_naam,
|
||
aogk.alg_onrgoedkenmerk_waarde,
|
||
datum,
|
||
dag_nummer,
|
||
tijd;
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
-----------------------------------------
|
||
-- Parkeerplaats goedkeuring
|
||
-----------------------------------------
|
||
|
||
-- view voor lijstje met mensen die WEB_USER09 rechten hebben
|
||
-- dit zijn de mensen die parkeerplaatsen goed mogen keuren.
|
||
CREATE OR REPLACE VIEW ykpn_v_pp_goedkeurders
|
||
(
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_verwijder
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
pf.prs_perslid_key, prs_perslid_naam_full || '(' || kl.prs_kenmerklink_waarde || ')', prs_perslid_verwijder
|
||
FROM prs_v_perslid_fullnames_all pf,
|
||
fac_groeprechten gr,
|
||
fac_gebruikersgroep gg,
|
||
prs_kenmerklink kl
|
||
WHERE pf.prs_perslid_key = gg.prs_perslid_key
|
||
AND gg.fac_groep_key = gr.fac_groep_key
|
||
AND gr.fac_functie_key = 119 -- WEB_USER09
|
||
AND kl.prs_link_key = pf.prs_perslid_key
|
||
AND kl.prs_kenmerk_key = 1040;
|
||
|
||
|
||
-- view voor rapport pp goedkeurders
|
||
-- via de gebruikersgroep gaan we op zoek naar vervangers.
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_goedkeuring_pp
|
||
AS
|
||
SELECT gg2.prs_perslid_key FCLT_3D_USER_KEY,
|
||
b.bez_bezoekers_key,
|
||
bez_afspraak_datum,
|
||
bez_afspraak_eind,
|
||
bez_afspraak_gastheer,
|
||
bez_afspraak_naam,
|
||
bez_afspraak_bedrijf,
|
||
alg_locatie_omschrijving,
|
||
prs_perslid_naam_full goedkeurder,
|
||
(SELECT bez_kenmerkwaarde_waarde
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE bez_kenmerk_key = 1004
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key) reden
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
res_rsv_deel rrd,
|
||
bez_kenmerkwaarde kw,
|
||
prs_v_perslid_fullnames pg,
|
||
alg_locatie l,
|
||
fac_groep g,
|
||
fac_gebruikersgroep gg1,
|
||
fac_gebruikersgroep gg2
|
||
WHERE b.bez_bezoekers_key = rrd.bez_bezoekers_key
|
||
AND b.bez_bezoekers_key = kw.bez_bezoekers_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND kw.bez_kenmerk_key = 1003 -- moet goedgekeurd worden door
|
||
AND a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND fac.safe_to_number (kw.bez_kenmerkwaarde_waarde) =
|
||
pg.prs_perslid_key
|
||
AND pg.prs_perslid_key = gg1.prs_perslid_key
|
||
AND gg1.fac_groep_key = g.fac_groep_key
|
||
AND g.fac_groep_collega = 1
|
||
AND g.fac_groep_key = gg2.fac_groep_key
|
||
AND NOT EXISTS (SELECT t.fac_tracking_key
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE fac_tracking_refkey = b.bez_bezoekers_key
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'CUST04');
|
||
|
||
-- Rapport met goedgekeurde en afgewezen parkeerplaatsen
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_tracking_pp
|
||
AS
|
||
SELECT bez_afspraak_datum,
|
||
fac_tracking_datum,
|
||
DECODE(fac_srtnotificatie_code, 'CUST05', 'Afgekeurd'
|
||
, 'CUST04', 'Goedgekeurd') fac_srtnotificatie_oms,
|
||
a.bez_afspraak_key,
|
||
bez_afspraak_naam,
|
||
bez_afspraak_bedrijf,
|
||
l.alg_locatie_omschrijving,
|
||
pfg.prs_perslid_naam_full goedkeurder,
|
||
pfh.prs_perslid_naam_full gastheer,
|
||
(SELECT bez_kenmerkwaarde_waarde
|
||
FROM bez_kenmerkwaarde kw
|
||
WHERE bez_kenmerk_key = 1004
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key) reden
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie sn,
|
||
bez_bezoekers b,
|
||
bez_afspraak a,
|
||
alg_locatie l,
|
||
prs_v_perslid_fullnames pfg,
|
||
prs_v_perslid_fullnames pfh
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND ( fac_srtnotificatie_code = 'CUST05'
|
||
OR fac_srtnotificatie_code = 'CUST04')
|
||
AND t.fac_tracking_refkey = b.bez_bezoekers_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND t.prs_perslid_key = pfg.prs_perslid_key
|
||
AND a.bez_afspraak_host_key = pfh.prs_perslid_key;
|
||
|
||
-----------------------------------------
|
||
-- Koppeling met Strukton
|
||
-----------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_import_opdrstat_strukton (
|
||
p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1200);
|
||
v_dummy VARCHAR2 (200);
|
||
header_is_valid NUMBER := 0;
|
||
v_count NUMBER;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
-- De importvelden
|
||
v_mld_opdr_opmerking VARCHAR2 (4000);
|
||
v_mld_opdr_key NUMBER (10);
|
||
v_mld_opdr_key_tekst VARCHAR2 (100);
|
||
v_extern_nummer VARCHAR2 (100);
|
||
v_status NUMBER (10);
|
||
v_status_tekst VARCHAR2 (100);
|
||
v_status_code VARCHAR2 (100);
|
||
v_datumtijd DATE;
|
||
v_datumtijd_tekst VARCHAR2 (100);
|
||
v_opmerking VARCHAR2 (3000);
|
||
v_totaal NUMBER (8,2);
|
||
v_totaal_str VARCHAR2 (100);
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM ykpn_imp_opdrstat_strukton;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
||
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
||
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
||
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
||
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
||
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));
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_extern_nummer
|
||
|| '|'
|
||
|| v_mld_opdr_key_tekst
|
||
|| '|'
|
||
|| v_status_tekst
|
||
|| '|'
|
||
|| v_opmerking
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
|
||
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
||
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
||
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
||
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
||
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
|
||
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
||
|
||
BEGIN
|
||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||
BEGIN
|
||
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
|
||
|
||
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
|
||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 35
|
||
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_ongeldig := 1;
|
||
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
|
||
v_mld_opdr_key := NULL;
|
||
END;
|
||
END;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij bepalen status [' || v_aanduiding || ']';
|
||
|
||
CASE
|
||
WHEN v_status_code = '5'
|
||
THEN
|
||
v_status := 5; -- uitgegeven
|
||
WHEN v_status_code = '10'
|
||
THEN
|
||
v_status := 8; -- geaccepteerd
|
||
WHEN v_status_code = '20' -- monteur gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
WHEN v_status_code = '25' -- specialist gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
WHEN v_status_code = '30' -- technisch gereed
|
||
THEN
|
||
v_status := 6; -- afgemeld
|
||
-- YKPN#32991
|
||
-- WHEN v_status_code = '40' -- uitgeprijst
|
||
-- THEN
|
||
-- v_status := 9; -- afgerond
|
||
WHEN v_status_code = '70'
|
||
THEN
|
||
v_status := 1; -- geannuleerd
|
||
WHEN v_status_code = '80'
|
||
THEN
|
||
v_status := 1; -- afgewezen
|
||
ELSE
|
||
v_status := NULL;
|
||
v_ongeldig := 1; -- nog te bezien.
|
||
END CASE;
|
||
END IF;
|
||
|
||
-- Lees alle veldwaarden
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
|
||
v_datumtijd :=
|
||
fac.safe_to_date (
|
||
REPLACE (
|
||
SUBSTR (v_datumtijd_tekst,
|
||
1,
|
||
INSTR (v_datumtijd_tekst, '.') - 1),
|
||
'T',
|
||
' '),
|
||
'yyyy-mm-dd hh24:mi:ss');
|
||
|
||
IF v_datumtijd = NULL
|
||
THEN
|
||
v_ongeldig := 0;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
|
||
|
||
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
|
||
-- gemeld is.
|
||
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
|
||
THEN
|
||
v_opmerking :=
|
||
'['
|
||
|| v_datumtijd_tekst
|
||
|| '] - '
|
||
|| v_status_tekst
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v_opmerking;
|
||
ELSE
|
||
v_opmerking :=
|
||
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF (v_ongeldig = 0)
|
||
THEN
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout toevoegen opdracht status ['
|
||
|| v_aanduiding
|
||
|| ']';
|
||
|
||
INSERT INTO ykpn_imp_opdrstat_strukton (mld_opdr_key,
|
||
extern_nummer,
|
||
status,
|
||
datumtijd,
|
||
opmerking,
|
||
totaal)
|
||
VALUES (v_mld_opdr_key,
|
||
v_extern_nummer,
|
||
v_status,
|
||
v_datumtijd,
|
||
v_opmerking,
|
||
v_totaal);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel ykpn_imp_opdr_status_strukton.');
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'');
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| 'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Inleesproces opdrachtstatusberichten afgebroken!');
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_update_opdrstat_strukton (
|
||
p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
|
||
CURSOR c1
|
||
IS
|
||
SELECT mld_opdr_key,
|
||
extern_nummer,
|
||
datumtijd,
|
||
status,
|
||
opmerking,
|
||
totaal
|
||
FROM ykpn_imp_opdrstat_strukton
|
||
ORDER BY 1, 3;
|
||
|
||
CURSOR cp (
|
||
c_opdr_key IN NUMBER)
|
||
IS
|
||
SELECT pf.prs_perslid_key
|
||
FROM fac_tracking tr,
|
||
fac_srtnotificatie str,
|
||
prs_v_perslid_fullnames_all pf
|
||
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
|
||
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
|
||
AND (str.fac_srtnotificatie_code = 'ORDFOK'
|
||
AND tr.fac_tracking_refkey = c_opdr_key
|
||
AND str.fac_srtnotificatie_xmlnode IN ('opdracht'))
|
||
ORDER BY fac_tracking_datum DESC, fac_tracking_key DESC;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_mld_key NUMBER (10) := 0;
|
||
v_opdr_key NUMBER (10) := 0;
|
||
v_opdr_status NUMBER (10) := 0;
|
||
v_user_key NUMBER (10) := 0;
|
||
v_opdr_approved mld_opdr.mld_opdr_approved%TYPE;
|
||
v_approver_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
|
||
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
|
||
v_mld_srtkenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
|
||
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_typeopdr_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
|
||
v_mld_kk mld_melding.mld_kosten_klant%TYPE;
|
||
v_mld_kostenpl_key mld_melding.prs_kostenplaats_key%TYPE;
|
||
v_opdr_kostenpl_key mld_opdr.prs_kostenplaats_key%TYPE;
|
||
v_mld_perslid_key mld_melding.prs_perslid_key%TYPE;
|
||
v_mld_disc_key ins_tab_discipline.ins_discipline_key%TYPE;
|
||
v_refiat NUMBER (1);
|
||
v_reapprove NUMBER (1);
|
||
BEGIN
|
||
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
|
||
v_count_tot := 0;
|
||
|
||
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
|
||
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
|
||
v_mld_srtkenmerk_key := 18;
|
||
v_user_key := 32652; -- Strukton user
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.mld_opdr_key
|
||
|| '|'
|
||
|| SUBSTR (rec.opmerking, 1, 100)
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
v_count := 0;
|
||
|
||
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
|
||
IF (rec.mld_opdr_key IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen opdracht.';
|
||
|
||
SELECT mld_melding_key,
|
||
mld_opdr_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key
|
||
INTO v_mld_key,
|
||
v_opdr_key,
|
||
v_opdr_status,
|
||
v_mld_typeopdr_key
|
||
FROM mld_opdr
|
||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||
|
||
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
|
||
|
||
SELECT k.mld_kenmerk_key
|
||
INTO v_mld_kenmerk_key
|
||
FROM mld_kenmerk k
|
||
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
|
||
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
||
|
||
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
|
||
|
||
SELECT MAX (ko.mld_kenmerkopdr_key)
|
||
INTO v_mld_kenmerkopdr_key
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = v_opdr_key
|
||
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
||
|
||
v_errormsg := 'Fout bij aanpassen extern nummer.';
|
||
|
||
IF v_mld_kenmerkopdr_key IS NULL
|
||
THEN
|
||
-- kenmerk toevoegen
|
||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||
mld_opdr_key,
|
||
mld_kenmerkopdr_waarde)
|
||
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
||
ELSE
|
||
-- kenmerk aanpassen
|
||
UPDATE mld_kenmerkopdr
|
||
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
||
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
|
||
|
||
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
||
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_opmerking =
|
||
DECODE (
|
||
mld_opdr_opmerking,
|
||
NULL,
|
||
rec.opmerking,
|
||
rec.opmerking
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
IF v_opdr_status <> rec.status
|
||
THEN
|
||
IF rec.status = 8 AND v_opdr_status = 5
|
||
THEN
|
||
-- Accepteer opdracht als de opdracht uitgegeven was
|
||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 6 AND v_opdr_status = 5
|
||
THEN
|
||
-- Meld de opdracht af als deze uitgegeven was
|
||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 6 AND v_opdr_status = 8
|
||
THEN
|
||
-- Meld de opdracht af als deze geaccepteerd was
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
ELSIF rec.status = 1 AND v_opdr_status = 5
|
||
THEN
|
||
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
|
||
mld.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
||
mld.updatemeldingstatusav (v_mld_key,
|
||
0,
|
||
v_user_key,
|
||
0);
|
||
ELSIF rec.status = 1 AND v_opdr_status = 8
|
||
THEN
|
||
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
|
||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||
--MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||
ELSIF rec.status = 9 AND v_opdr_status = 6
|
||
THEN
|
||
-- Opdracht is afgerond en opdrachtstatus was afgemeld.
|
||
mld.setopdrachtstatus (v_opdr_key, 9, v_user_key); -- Facilitor
|
||
END IF;
|
||
|
||
IF rec.status = 6 AND v_opdr_status <> 6
|
||
THEN
|
||
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
|
||
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||
ELSE
|
||
IF rec.status = 9 AND v_opdr_status <> 9
|
||
THEN
|
||
-- Oorspronkelijke gegevens opdracht ophalen.
|
||
-- var opdr_info = mld.mld_opdr_info(opdr_key);
|
||
SELECT mld_opdr_kosten,
|
||
mld_typeopdr_gvs,
|
||
mld_kosten_klant,
|
||
m.prs_kostenplaats_key,
|
||
o.prs_kostenplaats_key,
|
||
m.prs_perslid_key,
|
||
std.mld_ins_discipline_key
|
||
INTO v_opdr_kosten,
|
||
v_typeopdr_gvs,
|
||
v_mld_kk,
|
||
v_mld_kostenpl_key,
|
||
v_opdr_kostenpl_key,
|
||
v_mld_perslid_key,
|
||
v_mld_disc_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr t,
|
||
mld_stdmelding std
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND o.mld_typeopdr_key = t.mld_typeopdr_key
|
||
AND o.mld_opdr_key = v_opdr_key;
|
||
|
||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||
-- en boven de GVS-grens uitkomt.
|
||
-- Hergoedkeuring en herfiattering kan alleen als het totaalbedrag van de opdracht is verhoogd en alleen in de statussen 5, 8, 6 en 9 (de uitvoeringsfase en de afhandelingsfase).
|
||
-- Hergoedkeuring en herfiattering kan leiden tot een tijdelijke terugkeer naar de voorfase status 3 of 10.
|
||
IF rec.totaal > v_opdr_kosten
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten, '');
|
||
|
||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||
IF rec.totaal > COALESCE (v_opdr_approved, 0) AND rec.totaal > v_typeopdr_gvs
|
||
THEN
|
||
v_reapprove := 1;
|
||
ELSE
|
||
v_reapprove := 0;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'hergoedkeuring: ' || v_reapprove || ' - ' || v_opdr_approved || ' - ' || v_typeopdr_gvs, '');
|
||
|
||
|
||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||
-- en boven de GVS-grens uitkomt.
|
||
-- Bepaal het mandaat van de oorspronkelijke (laatste) fiatteur.
|
||
-- Ook als er de vorige keer geen kosten waren dan moet pas worden geherfiatteerd als (tot_kosten > mandaat),
|
||
-- waarbij de mandaat van de Melder/aanvrager van melding of de user is.
|
||
v_perslid_key := NULL;
|
||
|
||
IF rec.totaal > v_opdr_kosten AND rec.totaal > 0 AND rec.totaal > v_typeopdr_gvs
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'F - rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten || ' - ' || v_typeopdr_gvs, '');
|
||
-- De totale kosten zijn verhoogd en het bedrag zit boven de GVS-grens.
|
||
-- Bepaling oorspronkelijke (laatste) fiatteur, als die er was.
|
||
v_perslid_key := NULL;
|
||
|
||
FOR rec2 IN cp (v_opdr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_perslid_key := rec2.prs_perslid_key;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'F - laatste fiatteur: ' || v_perslid_key, '');
|
||
|
||
IF v_perslid_key IS NULL
|
||
THEN
|
||
-- Dan waren de opdracht kosten onder het mandaat van mijzelf of de BO-medewerker.
|
||
-- Als de kostenplaats bij de opdracht overruled is dan wordt altijd tegen het profiel van de BO-medewerker getest.
|
||
IF v_mld_kk = 1
|
||
AND v_mld_kostenpl_key = v_opdr_kostenpl_key
|
||
THEN
|
||
v_perslid_key := v_mld_perslid_key; -- Melder/aanvrager van melding
|
||
END IF;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'F - indien onbekend terugvallen op melder: ' || v_perslid_key, '');
|
||
|
||
|
||
IF fac.getsetting ('mld_use_order_approval') = 1
|
||
AND (rec.totaal >
|
||
fac.getsetting ('can_selfapprove')
|
||
OR rec.totaal >
|
||
prs.getprofiellimiet (v_perslid_key, v_mld_disc_key))
|
||
THEN
|
||
-- Er moet (opnieuw) gefiatteerd worden. Is er wel iemand met voldoende mandaat? Indien er niemand gevonden kan worden mag de wijziging niet doorgaan.
|
||
-- Het mandaat is al te hoog voor de melder/aanvrager van de melding of mijzelf.
|
||
|
||
v_approver_key :=
|
||
prs.getkpverantwoordelijke (
|
||
v_opdr_kostenpl_key,
|
||
fac.getsetting ('prs_approvemethod'),
|
||
v_user_key);
|
||
v_refiat := 1;
|
||
-- er moet (her)fiattering plaatsvinden
|
||
fac.imp_writelog (p_import_key, 'I', 'F - (her)fiatteur: ' || v_approver_key, '');
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_reapprove = 1 OR v_refiat = 1
|
||
THEN
|
||
-- Zet de refiat waarden. Het hergoedkeurings- en/of herfiatteringstraject wordt opnieuw ingegaan. // Tracking hiervan is niet nodig.
|
||
IF v_opdr_kosten > 0
|
||
THEN
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_materiaal_refiat = mld_opdr_materiaal,
|
||
mld_opdr_kosten_refiat = mld_opdr_kosten
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
END IF;
|
||
|
||
-- Ook voor status 5 wordt refiatstatus gezet zodat bekend is dat het om een herfiattering gaat. De fiatteringsvoorwaarde is dan iets anders.
|
||
UPDATE mld_opdr
|
||
SET mld_statusopdr_key_refiat = mld_statusopdr_key
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
-- Goedkeuring opnieuw ingaan kan alleen als het approved bedrag leeg is.
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_approved_refiat = mld_opdr_approved
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_approved = NULL,
|
||
mld_opdr_materiaal = rec.totaal,
|
||
mld_opdr_kosten = rec.totaal
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
ELSE
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_materiaal = rec.totaal,
|
||
mld_opdr_kosten = rec.totaal
|
||
WHERE mld_opdr_key = v_opdr_key;
|
||
END IF;
|
||
|
||
-- geef in de tracking aan dat de kosten via de interface aangepast zijn.
|
||
IF v_opdr_kosten <> rec.totaal
|
||
THEN
|
||
fac.trackaction ('ORDUPD', v_opdr_key, v_user_key, SYSDATE,
|
||
'Gewijzigd' || CHR (13) || CHR (10)
|
||
|| 'Materiaal: ' || v_opdr_kosten || ' --> ' || rec.totaal || CHR (13) || CHR (10)
|
||
|| 'Totaal: ' || v_opdr_kosten || ' --> ' || rec.totaal);
|
||
END IF;
|
||
|
||
IF v_reapprove = 1
|
||
THEN
|
||
-- Zetten van de status van de gewijzigde opdracht op "Ter goedkeuring" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||
-- status = 10; Ter goedkeuring.
|
||
mld.setopdrachtstatus (v_opdr_key, 10, v_user_key);
|
||
ELSE
|
||
IF v_refiat = 1
|
||
THEN
|
||
-- Zetten van de status van de gewijzigde opdracht op "Ter fiattering" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||
-- status = 3; // Ter fiattering.
|
||
mld.setopdrachtstatus (v_opdr_key, 3, v_user_key);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij verwerken opdrachtstatusbericht.');
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_graph_servicedesk
|
||
(
|
||
discipline,
|
||
aantal
|
||
)
|
||
AS
|
||
SELECT d.ins_discipline_omschrijving, COUNT ( * )
|
||
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
AND std.mld_ins_discipline_key IN (34, 48, 38) -- compliment
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
GROUP BY ins_discipline_omschrijving
|
||
UNION ALL
|
||
SELECT 'Melding', COUNT ( * )
|
||
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
AND std.mld_ins_discipline_key NOT IN (34, 48, 38) -- compliment
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
UNION ALL
|
||
SELECT 'Reservering', COUNT ( * )
|
||
FROM res_rsv_ruimte
|
||
WHERE TRUNC (res_rsv_ruimte_van, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
AND res_rsv_ruimte_verwijder IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_graph_meldingen
|
||
(
|
||
discipline,
|
||
aantal
|
||
)
|
||
AS
|
||
SELECT d.ins_discipline_omschrijving, COUNT ( * )
|
||
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
AND std.mld_ins_discipline_key NOT IN (34, 48, 38) -- compliment
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
GROUP BY ins_discipline_omschrijving;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_graph_bezoekers
|
||
(
|
||
locatie,
|
||
aantal
|
||
)
|
||
AS
|
||
SELECT alg_locatie_omschrijving, COUNT ( * )
|
||
FROM bez_bezoekers b, bez_afspraak a, alg_locatie l
|
||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND TRUNC (bez_afspraak_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
GROUP BY alg_locatie_omschrijving;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_graph_parkeerplaats
|
||
(
|
||
locatie,
|
||
aantal
|
||
)
|
||
AS
|
||
SELECT alg_locatie_omschrijving, COUNT ( * )
|
||
FROM bez_bezoekers b,
|
||
bez_afspraak a,
|
||
alg_locatie l,
|
||
res_rsv_deel rrd
|
||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
|
||
AND TRUNC (bez_afspraak_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
|
||
GROUP BY alg_locatie_omschrijving;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
o.mld_opdr_bedrijfopdr_volgnr,
|
||
ot.mld_typeopdr_omschrijving,
|
||
m.mld_melding_datum,
|
||
o.mld_opdr_datumbegin,
|
||
d.alg_district_omschrijving,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
aog.alg_gebouw_code,
|
||
aog.alg_gebouw_naam,
|
||
ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
mld_melding_omschrijving,
|
||
ok.prs_kostenplaats_nr,
|
||
op.prs_perslid_naam_full,
|
||
uit.naam,
|
||
mld_statuses_omschrijving,
|
||
mld_statusopdr_omschrijving,
|
||
m.mld_melding_einddatum,
|
||
mld.getmeldingstatusdate(m.mld_melding_key, 5) mld_melding_afgemeld,
|
||
o.mld_opdr_omschrijving,
|
||
mld.getopdrachtstatusdate(o.mld_opdr_key, 6) mld_opdr_afgemeld,
|
||
DECODE (o.mld_typeopdr_key, 101, mld_opdr_kosten) procuratiebedrag,
|
||
mld_opdr_materiaal opdrachtbedrag,
|
||
(select mld_kenmerkopdr_aanmaak from mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key and ko.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = 221) factuuraanmaak,
|
||
(select fac.safe_to_number(mld_kenmerkopdr_waarde) from mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key and ko.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = 221) factuurbedrag,
|
||
(select fac.safe_to_number(mld_kenmerkopdr_waarde) from mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key and ko.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = 381) po_nummer,
|
||
(select fac.safe_to_number(mld_kenmerkopdr_waarde) from mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key and ko.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = 401) afdeling
|
||
FROM mld_melding m, mld_opdr o, mld_typeopdr ot, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di, prs_kostenplaats ok, prs_v_perslid_fullnames op, mld_v_uitvoerende uit, alg_v_allonrgoed_gegevens aog,
|
||
mld_statuses ms, mld_statusopdr os
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND 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 o.prs_kostenplaats_key = ok.prs_kostenplaats_key(+)
|
||
AND o.prs_perslid_key = op.prs_perslid_key(+)
|
||
AND o.mld_uitvoerende_keys = uit.mld_uitvoerende_key(+)
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
|
||
AND NOT EXISTS (select mld_kenmerkopdr_key from mld_kenmerkopdr ko where ko.mld_opdr_key = o.mld_opdr_key and ko.mld_kenmerk_key = 301 and mld_kenmerkopdr_waarde = 1)
|
||
UNION ALL
|
||
SELECT m.mld_melding_key,
|
||
0 mld_opdr_bedrijfopdr_volgnr,
|
||
NULL mld_typeopdr_omschrijving,
|
||
m.mld_melding_datum,
|
||
NULL mld_opdr_datumbegin,
|
||
d.alg_district_omschrijving,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
aog.alg_gebouw_code,
|
||
aog.alg_gebouw_naam,
|
||
ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
mld_melding_omschrijving,
|
||
NULL prs_kostenplaats_nr,
|
||
NULL prs_perslid_naam_full,
|
||
NULL naam,
|
||
mld_statuses_omschrijving,
|
||
NULL procuratiebedrag,
|
||
m.mld_melding_einddatum,
|
||
mld.getmeldingstatusdate(m.mld_melding_key, 5) mld_melding_afgemeld,
|
||
NULL mld_opdr_omschrijving,
|
||
NULL mld_opdr_afgemeld,
|
||
NULL procuratiebedrag,
|
||
NULL opdrachtbedrag,
|
||
(select mld_kenmerkmelding_aanmaak 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,
|
||
(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,
|
||
NULL po_nummer,
|
||
NULL afdeling
|
||
FROM mld_melding m, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di, alg_v_allonrgoed_gegevens aog,
|
||
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_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys;
|
||
|
||
|
||
-- Rapportage 1:
|
||
-- Alle hoofdmeldingen of onderliggende opdrachten waar het veld <20>bedrag gefactureerd<72> staat ingevuld.
|
||
-- Alle procuraties die zijn doorlopen (ongeacht de status open / afgemeld / etc)
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie1
|
||
AS
|
||
SELECT *
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE factuurbedrag IS NOT NULL OR procuratiebedrag IS NOT NULL
|
||
UNION
|
||
SELECT *
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE mld_opdr_bedrijfopdr_volgnr = 0
|
||
AND mld_melding_key IN
|
||
(SELECT mld_melding_key
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE factuurbedrag IS NOT NULL
|
||
OR procuratiebedrag IS NOT NULL);
|
||
|
||
-- Rapportage 2:
|
||
-- Alle opdrachten met opdrachttypes <20>uitvoer opdracht<68> en <20>bestelling<6E> waar het veld <20>bedrag gefactureerd<72> niet is ingevuld
|
||
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie2
|
||
AS
|
||
SELECT *
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE mld_typeopdr_omschrijving = 'Uitvoering opdracht'
|
||
OR mld_typeopdr_omschrijving = 'Bestelling'
|
||
UNION
|
||
SELECT *
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE mld_opdr_bedrijfopdr_volgnr = 0
|
||
AND mld_melding_key IN
|
||
(SELECT mld_melding_key
|
||
FROM YKPN_V_RAP_FACTURATIE
|
||
WHERE mld_typeopdr_omschrijving =
|
||
'Uitvoering opdracht'
|
||
OR mld_typeopdr_omschrijving = 'Bestelling');
|
||
|
||
-- YKPN#52215:
|
||
CREATE OR REPLACE FORCE VIEW YKPN_V_STANDPLTS_AANVR_RES
|
||
(
|
||
AANVRAGER,
|
||
EMAIL,
|
||
STANDPLAATS,
|
||
AFSPRAAKNR,
|
||
FSPRAAKDATUM,
|
||
GASTHEER,
|
||
BEZOEKER,
|
||
BEDRIJF,
|
||
ACTIE,
|
||
PINCODE,
|
||
AFSPRAAKLOC,
|
||
AFSPRAAKLOCATIE,
|
||
AANGEMELD,
|
||
AFGEMELD
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_naam_full AS aanvrager,
|
||
pp.prs_perslid_email as email,
|
||
wp.alg_locatie_code AS standplaats,
|
||
a.bez_afspraak_key AS afspraaknr,
|
||
a.bez_afspraak_datum AS afspraakdatum,
|
||
a.bez_afspraak_gastheer AS gastheer,
|
||
b.bez_afspraak_naam AS bezoeker,
|
||
b.bez_afspraak_bedrijf AS bedrijf,
|
||
ak.bez_actie_omschrijving AS actie,
|
||
bkw.bez_kenmerkwaarde_waarde AS pincode,
|
||
l.alg_locatie_code AS afspraakloc,
|
||
l.alg_locatie_omschrijving AS afspraaklocatie,
|
||
b.bez_bezoekers_done AS aangemeld,
|
||
b.bez_bezoekers_out AS afgemeld
|
||
FROM bez_bezoekers b,
|
||
bez_kenmerkwaarde bkw,
|
||
bez_afspraak a,
|
||
bez_actie ak,
|
||
prs_v_perslid_fullnames p,
|
||
prs_perslid pp,
|
||
alg_locatie l,
|
||
prs_v_werkplek_gegevens wp,
|
||
prs_v_werkplekperslid_gegevens wpp
|
||
WHERE a.prs_perslid_key = p.prs_perslid_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND ak.bez_actie_key = a.bez_actie_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND bkw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND wpp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND p.prs_perslid_key = wpp.prs_perslid_key
|
||
AND p.prs_perslid_key = pp.prs_perslid_key
|
||
AND bkw.bez_kenmerk_key = '1020'
|
||
AND wp.alg_locatie_code = l.alg_locatie_code
|
||
AND l.alg_locatie_code = wp.alg_locatie_code
|
||
--AND a.bez_afspraak_datum >= TO_DATE ('01-01-2018', 'DD-MM-YYYY')
|
||
;
|
||
|
||
--
|
||
-- Koppeling met Exact
|
||
--
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_aanwezigfactuur
|
||
(
|
||
FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
)
|
||
AS
|
||
SELECT FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
|
||
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_factuur_gegevens
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
dagboek,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
fin_factuurregel_nr,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
project_nummer,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_key,
|
||
prs_kostenplaats_nr,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
fin_factuur_statuses_key,
|
||
lev_kpn
|
||
)
|
||
AS
|
||
SELECT f.fin_factuur_key,
|
||
DECODE (
|
||
c.cnt_contract_key,
|
||
NULL, DECODE (
|
||
bo.bes_bestelopdr_key,
|
||
NULL, (SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key =
|
||
o.mld_melding_key
|
||
AND m.mld_stdmelding_key =
|
||
std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key =
|
||
d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key),
|
||
bo.bes_bestelopdr_id),
|
||
'C'
|
||
|| TO_CHAR (cnt_contract_nummer_intern)
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, NULL,
|
||
'.' || cnt_contract_versie))
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_nr,
|
||
COALESCE (b_c.prs_bedrijf_key,
|
||
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
|
||
prs_bedrijf_key,
|
||
DECODE (
|
||
(SELECT prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink kl
|
||
WHERE kl.prs_kenmerk_key = 1020
|
||
AND kl.prs_link_key =
|
||
COALESCE (
|
||
b_c.prs_bedrijf_key,
|
||
COALESCE (b_o.prs_bedrijf_key,
|
||
b_b.prs_bedrijf_key))),
|
||
'1', 63,
|
||
62)
|
||
dagboek,
|
||
fr.fin_factuurregel_totaal,
|
||
ROUND (
|
||
fr.fin_factuurregel_totaal
|
||
* DECODE (btw.fin_btwtabelwaarde_verlegd,
|
||
1, 0,
|
||
btw.fin_btwtabelwaarde_perc / 100),
|
||
2)
|
||
fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_code,
|
||
btw.fin_btwtabelwaarde_key,
|
||
fr.fin_factuurregel_nr,
|
||
f.fin_factuur_debiteur_nr,
|
||
f.fin_factuur_opmerking,
|
||
f.fin_factuur_boekmaand,
|
||
COALESCE (
|
||
o.mld_opdr_datumbegin,
|
||
COALESCE (c.cnt_contract_looptijd_tot,
|
||
bo.bes_bestelopdr_datum)),
|
||
(SELECT MAX (mld_kenmerkopdr_waarde)
|
||
FROM mld_kenmerkopdr ko, mld_opdr po
|
||
WHERE ko.mld_opdr_key = po.mld_opdr_key
|
||
AND o.mld_melding_key = po.mld_melding_key
|
||
AND ko.mld_kenmerk_key = 561) -- PO nummer
|
||
projectnummer,
|
||
prs_kostensoort_oms,
|
||
k.prs_kostensoort_refcode,
|
||
k.prs_kostensoort_key,
|
||
COALESCE (
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk,
|
||
alg_v_onroerendgoed_gegevens aogg,
|
||
mld_melding m
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys =
|
||
aogg.alg_onroerendgoed_keys
|
||
AND aogg.alg_gebouw_key = aogk.alg_onrgoed_key
|
||
AND aogk.alg_kenmerk_key = 1200),
|
||
'Onbekend')
|
||
prs_kostenplaats_nr,
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
bo.bes_bestelopdr_key,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
|
||
-- met status ingevoerd, afgewezen of incompleet
|
||
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (
|
||
o_t.mld_uitvoerende_keys,
|
||
COALESCE (b_t.prs_bedrijf_key,
|
||
c_t.cnt_prs_bedrijf_key)) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (bo.prs_bedrijf_key,
|
||
c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (1, 2, 3)
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr
|
||
lev_kpn
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
|
||
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL;
|
||
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_export_exact_xml (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT';
|
||
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_export_exact_62 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM ykpn_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_export_exact_63 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM ykpn_v_export_exact_xml;
|
||
|
||
|
||
CREATE OR REPLACE VIEW ykpn_v_bron_export_exact_xml
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
factuur_nr, -- crediteur factuurnummer
|
||
datum, -- factuurdatum
|
||
crdnr, -- crediteurnummer
|
||
project_nummer, -- PO nummer
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
oms_regel, -- omschrijving in de detailregels
|
||
reknr, -- grootboekrekeningnr
|
||
kstplcode, -- kostenplaats kenmerk bij gebouw
|
||
kstdrcode, -- kostendrager afh van grootboek
|
||
btw_code,
|
||
dagboek,
|
||
oms_kop, -- omschrijving in de kopregel
|
||
fin_factuur_debiteur_nr -- crediteur debiteurnummer
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd')
|
||
datum,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
|
||
crdnr,
|
||
project_nummer,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.')
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
SUBSTR (UPPER (b.prs_bedrijf_naam), 1, 3)
|
||
|| ','
|
||
|| SUBSTR(fin_factuur_boekmaand, 6,2)
|
||
|| ','
|
||
|| opdracht_id
|
||
|| ','
|
||
|| DECODE (project_nummer, NULL, fin_factuur_opmerking, project_nummer)
|
||
oms_regel,
|
||
DECODE (project_nummer, NULL, '44900', '45310')
|
||
reknr,
|
||
prs_kostenplaats_nr
|
||
kstplcode,
|
||
DECODE (project_nummer, NULL, '10', '11')
|
||
kstdrcode,
|
||
fin_btwtabelwaarde_code
|
||
btw_code,
|
||
fg.dagboek,
|
||
SUBSTR(UPPER(b.prs_bedrijf_naam),1,3) || ',' || SUBSTR(fin_factuur_boekmaand,6,2) || ',variabel',
|
||
fin_factuur_debiteur_nr
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
SUM (fin_factuurregel_totaal)
|
||
bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
|
||
bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek
|
||
FROM ykpn_v_factuur_gegevens g, ykpn_exp_factuur e
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND g.fin_factuur_key = e.fin_factuur_key
|
||
AND g.dagboek = e.dagboek
|
||
GROUP BY g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek) fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key;
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE ykpn_select_exact_xml (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c(c_dagboek VARCHAR2)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum, MAX(oms_kop) oms_kop
|
||
FROM ykpn_v_bron_export_exact_xml
|
||
WHERE c_dagboek = dagboek
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM ykpn_v_bron_export_exact_xml
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND factuur_nr = c_factuur_nr;
|
||
|
||
v_order_count NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_amount_sum_incl NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_sub_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_boekstuknummer NUMBER;
|
||
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
|
||
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
|
||
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
v_count := 0;
|
||
v_bestand := 'EXACT';
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde, 3,2) = p_dagboek
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7);
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE ykpn_exp_factuur
|
||
WHERE dagboek = p_dagboek;
|
||
|
||
INSERT INTO ykpn_exp_factuur (fin_factuur_key, dagboek)
|
||
( SELECT DISTINCT fin_factuur_key, dagboek
|
||
FROM ykpn_v_factuur_gegevens
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
|
||
AND fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
|
||
);
|
||
|
||
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar
|
||
-- ## AAIT#36589
|
||
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_kenmerk_key = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,3,2) = p_dagboek;
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || p_dagboek || '0000');
|
||
END IF;
|
||
|
||
-- header
|
||
ykpn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
ykpn.add_xml_row (v_bestand, '<eExact>');
|
||
ykpn.add_xml_row (v_bestand, '<GLEntries>');
|
||
|
||
FOR rec IN c(p_dagboek)
|
||
LOOP
|
||
BEGIN
|
||
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
|
||
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
|
||
THEN
|
||
v_boekstuknummer := v_boekstuknummer + 1;
|
||
v_crdnr := rec.crdnr;
|
||
v_factuur_nr := rec.factuur_nr;
|
||
END IF;
|
||
|
||
ykpn.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
ykpn.add_xml_element (v_bestand, 'Description', rec.oms_kop);
|
||
ykpn.add_xml_element (v_bestand, 'Date', rec.datum);
|
||
ykpn.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
ykpn.add_xml_row (v_bestand, '<Journal type="I" code="' || p_dagboek || '"/>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr)
|
||
LOOP
|
||
BEGIN
|
||
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
|
||
ykpn.set_kenmerk('FIN', 1, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
ykpn.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
ykpn.add_xml_element (v_bestand, 'Date', rec1.datum);
|
||
ykpn.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
ykpn.add_xml_element (v_bestand, 'Description', rec1.oms_regel);
|
||
ykpn.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
ykpn.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
ykpn.add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
ykpn.add_xml_row (v_bestand, '<Item code=""/>');
|
||
ykpn.add_xml_row (v_bestand, '<Amount>');
|
||
ykpn.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
|
||
ykpn.add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
ykpn.add_xml_row (v_bestand, '</Amount>');
|
||
ykpn.add_xml_row (v_bestand, '<Payment>');
|
||
ykpn.add_xml_element (v_bestand, 'Reference', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr );
|
||
ykpn.add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
ykpn.add_xml_row (v_bestand, '</Payment>');
|
||
ykpn.add_xml_row (v_bestand, '<FinReferences>');
|
||
ykpn.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr);
|
||
ykpn.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
ykpn.add_xml_row (v_bestand, '</FinReferences>');
|
||
IF rec1.project_nummer IS NOT NULL
|
||
THEN
|
||
ykpn.add_xml_row (v_bestand, '<FreeFields>');
|
||
ykpn.add_xml_row (v_bestand, '<FreeTexts>');
|
||
ykpn.add_xml_row (v_bestand, '<FreeText number="1">PO' || rec1.project_nummer || '</FreeText>');
|
||
ykpn.add_xml_row (v_bestand, '</FreeTexts>');
|
||
ykpn.add_xml_row (v_bestand, '</FreeFields>');
|
||
END IF;
|
||
ykpn.add_xml_row (v_bestand, '</FinEntryLine>');
|
||
v_sub_count := v_sub_count + 1;
|
||
v_amount_sum := v_amount_sum + rec1.bedrag;
|
||
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
|
||
END;
|
||
END LOOP;
|
||
IF v_sub_count = 1
|
||
THEN
|
||
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
|
||
END IF;
|
||
ykpn.add_xml_row (v_bestand, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
ykpn.add_xml_row (v_bestand, '</GLEntries>');
|
||
ykpn.add_xml_row (v_bestand, '</eExact>');
|
||
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_select_exact_62 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
ykpn_select_exact_xml (p_applname, p_applrun, '62');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_select_exact_63 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
ykpn_select_exact_xml (p_applname, p_applrun, '63');
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_exact_62 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Verwerk actie direct starten na de EXPORT_EXACT
|
||
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_62');
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_exact_63 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Verwerk actie direct starten na de EXPORT_EXACT
|
||
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_63');
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_verwerk_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c_fact
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM ykpn_exp_factuur f
|
||
, ykpn_v_factuur_gegevens fg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek;
|
||
|
||
CURSOR c_opdr
|
||
IS
|
||
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
|
||
FROM ykpn_exp_factuur f
|
||
, ykpn_v_factuur_gegevens fg
|
||
, mld_opdr o
|
||
, mld_melding m
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek;
|
||
|
||
CURSOR c_bes
|
||
IS
|
||
SELECT bo.*
|
||
FROM ykpn_exp_factuur f
|
||
, ykpn_v_factuur_gegevens fg
|
||
, bes_bestelopdr bo
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek;
|
||
|
||
-- pas de bedragen in het factuurschema aan als de laatste factuur ontvangen is.
|
||
CURSOR c_cnt
|
||
IS
|
||
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key
|
||
FROM ykpn_exp_factuur f,
|
||
ykpn_v_factuur_gegevens fg,
|
||
cnt_contract c,
|
||
cnt_factuurschema fs
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_key = fs.cnt_contract_key
|
||
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanvrager NUMBER;
|
||
v_bestelling_key NUMBER;
|
||
v_logdate DATE;
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
v_aanvrager := 3; -- Facilitor
|
||
v_logdate := SYSDATE;
|
||
|
||
FOR rec1 IN c_bes
|
||
LOOP
|
||
BEGIN
|
||
-- indien nog niet afgemeld, dan maar even afmelden.
|
||
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
|
||
UPDATE bes_bestelopdr
|
||
SET bes_bestelopdr_status = 4
|
||
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
|
||
AND bes_bestelopdr_status = 3;
|
||
END IF;
|
||
|
||
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
|
||
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
|
||
OR rec1.bes_bestelopdr_status = 3 THEN
|
||
|
||
UPDATE bes_bestelopdr_item B
|
||
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
|
||
bes_bestelopdr_item_ontvangen = SYSDATE
|
||
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
|
||
|
||
UPDATE bes_bestelling_item bi
|
||
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
|
||
WHERE EXISTS (SELECT bes_bestelopdr_key
|
||
FROM bes_bestelopdr_item boi
|
||
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
|
||
|
||
SELECT distinct bes_bestelling_key
|
||
INTO v_bestelling_key
|
||
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
|
||
|
||
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
|
||
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
|
||
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- set de status van de opdracht en neem de kosten over van de factuur.
|
||
FOR rec1 IN c_opdr
|
||
LOOP
|
||
BEGIN
|
||
-- indien nog niet afgemeld, dan maar even afmelden.
|
||
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
|
||
END IF;
|
||
|
||
UPDATE mld_opdr o
|
||
SET mld_opdr_kosten =
|
||
(SELECT SUM (fin_factuurregel_totaal)
|
||
FROM ykpn_v_aanwezigfactuur f
|
||
, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND f.fin_factuur_statuses_key >= 6)
|
||
WHERE o.mld_opdr_key = rec1.mld_opdr_key
|
||
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
|
||
|
||
-- update meldingstatus
|
||
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
|
||
-- zet de status naar verwerkt (user is facilitor)
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Neem de kosten van de factuur over in het termijnbedrag
|
||
FOR rec1 IN c_cnt
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE cnt_factuurschema fs
|
||
SET (cnt_factuurschema_opmerking,
|
||
cnt_factuurschema_bedrag) =
|
||
(SELECT SUBSTR(DECODE(cnt_factuurschema_opmerking, NULL, '', cnt_factuurschema_opmerking || CHR(10)) || 'Bedrag na verwerken facturen ' || TO_CHAR(SYSDATE, 'DD-MM-YYYY') || ' aangepast van ' || cnt_factuurschema_bedrag || ' naar ' || SUM (fin_factuurregel_totaal),1,320) opmerking,
|
||
SUM (fin_factuurregel_totaal) totaal
|
||
FROM ykpn_v_aanwezigfactuur f
|
||
, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.cnt_contract_key = fs.cnt_contract_key
|
||
AND f.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND f.fin_factuur_statuses_key >= 6)
|
||
WHERE fs.cnt_factuurschema_key = rec1.cnt_factuurschema_key;
|
||
|
||
UPDATE cnt_contract c
|
||
SET c. cnt_contract_kosten = (SELECT SUM(cnt_factuurschema_bedrag)
|
||
FROM cnt_factuurschema fs
|
||
WHERE fs.cnt_contract_key = rec1.cnt_contract_key)
|
||
WHERE c.cnt_contract_key = rec1.cnt_contract_key;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
FOR rec1 IN c_fact
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fin_factuur f
|
||
SET fin_factuur_statuses_key = 7
|
||
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
|
||
|
||
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
|
||
END;
|
||
END LOOP;
|
||
-- verwijder de enties uit de tijdelijke tabel. (AAEY#29465)
|
||
DELETE ykpn_exp_factuur WHERE dagboek = p_dagboek;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_verwerk_exact_62 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
ykpn_export_verwerk_exact (p_applname, p_applrun, p_filedir, p_filename, '62');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ykpn_export_verwerk_exact_63 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
ykpn_export_verwerk_exact (p_applname, p_applrun, p_filedir, p_filename, '63');
|
||
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 |