7205 lines
311 KiB
SQL
7205 lines
311 KiB
SQL
-- Script containing customer specific configuration sql statements
|
||
-- for PZHO: Provincie Zuid Holland
|
||
-- (c) 2006 Facilitor Software Nederland/Dijkoraad IT bv
|
||
-- $Revision$
|
||
-- $Id$
|
||
--
|
||
-- Support: +31 53 4800700
|
||
|
||
SET ECHO ON
|
||
spool xPZHO.LST
|
||
|
||
--------------
|
||
-- functie om eerst weekdag na x aantal werkdagen te bepalen.
|
||
CREATE OR REPLACE FUNCTION pzho_eerste_vrijdag (dagen number, weekdag number)
|
||
RETURN DATE
|
||
AS
|
||
tmp_date DATE;
|
||
BEGIN
|
||
tmp_date := fac.DatumTijdPlusUitvoerTijd(sysdate,dagen,'DAGEN');
|
||
|
||
IF weekdag > 7 OR weekdag < 1 THEN
|
||
RETURN sysdate;
|
||
END IF;
|
||
|
||
WHILE TO_CHAR (tmp_date, 'D') <> TO_CHAR (weekdag)
|
||
LOOP
|
||
tmp_date := tmp_date + 1;
|
||
END LOOP;
|
||
|
||
RETURN tmp_date;
|
||
END;
|
||
/
|
||
|
||
/* Formatted on 2006/03/30 15:43 (Formatter Plus v4.8.6) */
|
||
CREATE OR REPLACE VIEW pzho_v_stdmelding
|
||
(
|
||
vakgroep,
|
||
omschrijving,
|
||
acceptatietijd,
|
||
uitvoertijd,
|
||
kostensoort,
|
||
kostensoort_opmerking,
|
||
niet_frontend
|
||
)
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_prefix
|
||
|| ' - '
|
||
|| d.ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
TO_CHAR (std.mld_stdmelding_t_accepttijd.tijdsduur)
|
||
|| std.mld_stdmelding_t_accepttijd.eenheid,
|
||
TO_CHAR (std.mld_stdmelding_t_uitvoertijd.tijdsduur)
|
||
|| std.mld_stdmelding_t_uitvoertijd.eenheid,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_opmerking,
|
||
std.mld_stdmelding_notfrontend
|
||
FROM ins_srtdiscipline sd,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE d.ins_discipline_verwijder IS NULL
|
||
AND mld_stdmelding_verwijder IS NULL
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND std.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key;
|
||
|
||
|
||
/* Formatted on 2006/03/30 15:54 (Formatter Plus v4.8.6) */
|
||
CREATE OR REPLACE VIEW pzho_v_res_catalogus (fclt_f_soort,
|
||
omschrijving,
|
||
kostensoort,
|
||
kostensoort_opmerking,
|
||
artikel_omschrijving
|
||
)
|
||
AS
|
||
SELECT DECODE (ins_discipline_min_level,
|
||
1, 'Reserveerbaar object',
|
||
2, 'Verbruiksartikel',
|
||
3, 'Ruimte'
|
||
),
|
||
ins_discipline_omschrijving, ks.prs_kostensoort_oms,
|
||
prs_kostensoort_opmerking,
|
||
nvl(ra.res_artikel_omschrijving, id.ins_deel_omschrijving)
|
||
FROM res_discipline rd, prs_kostensoort ks, res_v_aanwezigartikel ra, res_v_aanwezigdeel red, ins_deel id
|
||
WHERE rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND rd.ins_discipline_verwijder is null
|
||
AND rd.ins_discipline_key = ra.res_discipline_key(+)
|
||
AND rd.ins_discipline_key = red.res_discipline_key(+)
|
||
AND red.res_ins_deel_key = id.ins_deel_key(+);
|
||
|
||
CREATE OR REPLACE VIEW PZHO_V_RAP_VERGADER
|
||
(
|
||
FCLT_F_LOCATIE,
|
||
FCLT_F_RUIMTE,
|
||
FCLT_D_DATUM,
|
||
VAN_TOT,
|
||
OMSCHRIJVING,
|
||
GASTHEER
|
||
)
|
||
AS
|
||
SELECT alg_locatie_omschrijving locatie,
|
||
rr.res_ruimte_nr ruimte,
|
||
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') datum,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi')
|
||
|| ' - '
|
||
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi')
|
||
van_tot,
|
||
rrr.res_rsv_ruimte_omschrijving omschrijving,
|
||
pfh.prs_perslid_naam_full gastheer
|
||
FROM prs_v_perslid_fullnames pfh,
|
||
res_v_aanwezigrsv_ruimte rrr,
|
||
res_ruimte_opstelling rro,
|
||
res_ruimte rr,
|
||
(SELECT DISTINCT alg_locatie_key, res_ruimte_key
|
||
FROM res_v_alg_ruimte_gegevens) rarg,
|
||
alg_locatie l
|
||
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
|
||
AND rro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_ruimte_key = rarg.res_ruimte_key
|
||
AND rarg.alg_locatie_key = l.alg_locatie_key
|
||
AND rrr.res_rsv_ruimte_host_key = pfh.prs_perslid_key;
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_export_vergader
|
||
(
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT 'LOCATIE;RUIMTE;DATUM;VAN_TOT;OMSCHRIJVING;GASTHEER',0 FROM DUAL
|
||
UNION ALL
|
||
SELECT REPLACE (fclt_f_locatie, ';', ':') || ';'
|
||
|| REPLACE (
|
||
REPLACE (
|
||
REPLACE (REPLACE (fclt_f_ruimte, 'DH- ', 'DH-'),
|
||
'DH- ',
|
||
'DH-'),
|
||
'DH- ',
|
||
'DH-'),
|
||
';',
|
||
':')
|
||
|| ';'
|
||
|| REPLACE (fclt_d_datum, ';', ':')
|
||
|| ';'
|
||
|| REPLACE (van_tot, ';', ':')
|
||
|| ';'
|
||
|| REPLACE (omschrijving, ';', ':')
|
||
|| ';'
|
||
|| REPLACE (gastheer, ';', ':'),1
|
||
FROM pzho_v_rap_vergader
|
||
WHERE TO_CHAR (SYSDATE, 'dd-mm-yyyy') = fclt_d_datum;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE PZHO_IMPORT AS
|
||
-- PACKAGES voor de PZHO specifieke hulpfuncties tbv import
|
||
PROCEDURE set_prs_kenmerk ( p_import_key NUMBER
|
||
, p_niveau IN VARCHAR2
|
||
, p_kenmerk_key in NUMBER
|
||
, p_link_key in NUMBER
|
||
, p_kenmerk_waarde IN VARCHAR2);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY PZHO_IMPORT AS
|
||
--
|
||
-- Algemene procedures en functies.
|
||
--
|
||
PROCEDURE set_prs_kenmerk ( p_import_key NUMBER
|
||
, p_niveau IN VARCHAR2
|
||
, p_kenmerk_key in NUMBER
|
||
, p_link_key in NUMBER
|
||
, p_kenmerk_waarde IN VARCHAR2) AS
|
||
v_count NUMBER;
|
||
v_hint VARCHAR2(100);
|
||
v_aktie VARCHAR2(100);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
v_hint := ' kenmerk ' || p_niveau || ' kenmerk_key: ' || p_kenmerk_key || ' link: ' || p_link_key || ' waarde: ' || p_kenmerk_waarde;
|
||
v_aktie := 'Toevoegen';
|
||
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
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
|
||
v_aktie := 'Verwijder';
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder is null;
|
||
ELSE
|
||
v_aktie := 'Wijzigen';
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder is null;
|
||
END IF;
|
||
ELSE
|
||
v_aktie := 'Toevoegen';
|
||
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
|
||
, p_niveau
|
||
, p_kenmerk_waarde);
|
||
|
||
END IF;
|
||
END IF;
|
||
--fac.imp_writelog (p_import_key, 'I', 'Verwerken kenmerk ' || v_aktie || ' kenmerk_key:' || p_kenmerk_key || ' waarde:'|| p_kenmerk_waarde || '-','');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_aktie || ' - ' || v_hint);
|
||
END;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE PZHO_RAP AS
|
||
-- PACKAGES voor de PZHO specifieke rapportages
|
||
TYPE t_cursor IS REF CURSOR;
|
||
PROCEDURE pzho_p_rap_indienst (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||
PROCEDURE pzho_p_res_zelfservice (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||
PROCEDURE pzho_p_mld_fe_overzicht(user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||
PROCEDURE pzho_p_res_verg_centrum(user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||
PROCEDURE pzho_p_zelfservicemeld (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||
END;
|
||
/
|
||
|
||
|
||
/* Formatted on 12-11-2012 11:02:38 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PACKAGE BODY PZHO_RAP
|
||
AS
|
||
--
|
||
-- Algemene procedures en functies.
|
||
--
|
||
PROCEDURE pzho_p_rap_indienst (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT pf_new.prs_perslid_naam_full nieuwe_medewerker,
|
||
TO_CHAR (p_new.prs_perslid_aanmaak, 'DD-MM-YYYY HH24:MI')
|
||
aanmaak,
|
||
p_new.prs_perslid_key key,
|
||
COALESCE (
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km
|
||
WHERE mld_kenmerk_key = 1096
|
||
AND km.mld_melding_key =
|
||
melding.mld_melding_key),
|
||
'**'
|
||
|| a.prs_afdeling_naam
|
||
|| '-'
|
||
|| a.prs_afdeling_omschrijving
|
||
)
|
||
afdeling,
|
||
COALESCE (
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames pf2
|
||
WHERE pf2.prs_perslid_key = melding.mld_perslid_key),
|
||
'**' || pf_rec.prs_perslid_naam_full
|
||
)
|
||
aanvrager,
|
||
COALESCE (
|
||
(SELECT prs_perslid_email
|
||
FROM prs_perslid p2
|
||
WHERE p2.prs_perslid_key = melding.mld_perslid_key),
|
||
'**' || p_rec.prs_perslid_email
|
||
)
|
||
mail,
|
||
melding.mld_melding_key melding,
|
||
TO_CHAR (melding.mld_melding_datum, 'DD-MM-YYYY HH24:MI')
|
||
aanmaak_melding
|
||
FROM prs_perslid p_new,
|
||
prs_kenmerklink kl,
|
||
prs_perslid p_rec,
|
||
prs_v_perslid_fullnames pf_new,
|
||
prs_v_perslid_fullnames pf_rec,
|
||
prs_afdeling a,
|
||
(SELECT km.mld_kenmerkmelding_waarde || '/'
|
||
personeelsnummer,
|
||
m.mld_melding_key,
|
||
mld_melding_datum,
|
||
p.prs_perslid_key,
|
||
m.prs_perslid_key mld_perslid_key
|
||
FROM mld_melding m,
|
||
mld_kenmerkmelding km,
|
||
prs_perslid p
|
||
WHERE 1 = 1
|
||
AND mld_kenmerk_key = 1095
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND mld_stdmelding_key = 394
|
||
AND SUBSTR (prs_perslid_nr,
|
||
1,
|
||
INSTR (prs_perslid_nr, '/')) =
|
||
km.mld_kenmerkmelding_waarde || '/'
|
||
AND mld_melding_datum > p.prs_perslid_aanmaak)
|
||
melding
|
||
WHERE p_new.prs_perslid_aanmaak > v_datum_van
|
||
AND p_new.prs_perslid_aanmaak < v_datum_tot
|
||
AND SUBSTR (p_new.prs_perslid_naam, 1, 1) <> '_'
|
||
AND a.prs_afdeling_key = p_new.prs_afdeling_key
|
||
AND p_new.prs_afdeling_key = kl.prs_link_key
|
||
AND kl.prs_kenmerklink_niveau = 'A'
|
||
AND kl.prs_kenmerk_key = 1060
|
||
AND SUBSTR (p_rec.prs_perslid_nr,
|
||
1,
|
||
INSTR (p_rec.prs_perslid_nr, '/') - 1) =
|
||
kl.prs_kenmerklink_waarde
|
||
AND p_new.prs_perslid_key = melding.prs_perslid_key(+)
|
||
AND p_new.prs_perslid_key = pf_new.prs_perslid_key
|
||
AND p_rec.prs_perslid_key = pf_rec.prs_perslid_key
|
||
AND p_new.prs_perslid_verwijder IS NULL
|
||
ORDER BY TO_CHAR (p_new.prs_perslid_aanmaak, 'YYYYMMDDHH24MI');
|
||
END;
|
||
|
||
PROCEDURE pzho_p_res_zelfservice (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
v_alg_level_read NUMBER;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT TO_CHAR (r.res_reservering_aanmaak, 'dd-mm-yyyy hh24:mi')
|
||
datum_tijd,
|
||
r.res_reservering_key nummer,
|
||
pf.prs_perslid_naam_full aanvrager,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
k.prs_kostenplaats_nr
|
||
|| '-'
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
--rr.res_rsv_ruimte_ordernr begrotingspost,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
begrotingspost
|
||
FROM res_v_aanwezigreservering r,
|
||
res_rsv_ruimte rr,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_kostenplaats k,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE r.res_reservering_key = rr.res_reservering_key
|
||
AND rr.res_rsv_ruimte_contact_key = pf.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_contact_key =
|
||
fac.gettrackinguserkey ('RESNEW',
|
||
rr.res_rsv_ruimte_key)
|
||
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
AND r.res_reservering_aanmaak BETWEEN v_datum_van
|
||
AND v_datum_tot
|
||
ORDER BY r.res_reservering_aanmaak;
|
||
END;
|
||
|
||
PROCEDURE pzho_p_mld_fe_overzicht (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
v_alg_level_read NUMBER;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT m.mld_melding_key meldingnr,
|
||
TO_CHAR (m.mld_melding_datum, 'DD-MM-YYYY HH24:MI')
|
||
invoer_tijdstip,
|
||
'['
|
||
|| md.ins_discipline_omschrijving
|
||
|| '/'
|
||
|| std.mld_stdmelding_omschrijving
|
||
|| '] '
|
||
|| m.mld_melding_omschrijving
|
||
melding,
|
||
(SELECT pf.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = m.prs_perslid_key)
|
||
melder,
|
||
l.alg_locatie_code
|
||
|| DECODE (v.alg_gebouw_code,
|
||
NULL, '',
|
||
'-' || v.alg_gebouw_code)
|
||
|| DECODE (v.alg_verdieping_code,
|
||
NULL, '',
|
||
'-' || v.alg_verdieping_code)
|
||
|| DECODE (v.alg_ruimte_nr,
|
||
NULL, '',
|
||
'-' || v.alg_ruimte_nr)
|
||
|| DECODE (v.alg_terreinsector_code,
|
||
NULL, '',
|
||
'-' || v.alg_terreinsector_code)
|
||
plaats,
|
||
s.mld_statuses_omschrijving status
|
||
FROM mld_melding m,
|
||
mld_statuses s,
|
||
mld_stdmelding std,
|
||
alg_v_allonrgoed_gegevens v,
|
||
alg_locatie l,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd
|
||
WHERE std.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND m.mld_melding_status = s.mld_statuses_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND m.prs_perslid_key =
|
||
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) -- maw FE melding
|
||
AND m.mld_alg_onroerendgoed_keys =
|
||
v.alg_onroerendgoed_keys(+)
|
||
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
||
ORDER BY m.mld_melding_datum;
|
||
END;
|
||
|
||
PROCEDURE pzho_p_res_verg_centrum (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
v_alg_level_read NUMBER;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT l.alg_locatie_code Locatie,
|
||
COALESCE (opstelalg.res_ruimte_nr,
|
||
ruimte_geg.alg_ruimte_aanduiding)
|
||
Ruimte,
|
||
TO_CHAR (res_geg.res_reservering_van, 'DD-MM-YYYY') Datum,
|
||
TO_CHAR (res_geg.res_reservering_van, 'HH24:MI') Van,
|
||
TO_CHAR (res_geg.res_reservering_tot, 'HH24:MI') Tot,
|
||
rrr.res_reservering_key Res_nr,
|
||
res_geg.res_ruimte_opstel_bezoekers Pers_max,
|
||
rrr.res_rsv_ruimte_bezoekers Opg_pers,
|
||
p.prs_perslid_naam
|
||
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
|
||
'', '',
|
||
', ' || p.prs_perslid_voorletters)
|
||
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
|
||
'', '',
|
||
' ' || p.prs_perslid_tussenvoegsel)
|
||
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
|
||
'', '',
|
||
' (' || p.prs_perslid_voornaam || ')')
|
||
Gastheer,
|
||
(SELECT p.prs_perslid_naam
|
||
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
|
||
'', '',
|
||
', ' || p.prs_perslid_voorletters)
|
||
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
|
||
'', '',
|
||
' ' || p.prs_perslid_tussenvoegsel)
|
||
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
|
||
'', '',
|
||
' (' || p.prs_perslid_voornaam || ')')
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_key =
|
||
rrr.res_rsv_ruimte_contact_key)
|
||
Aanvrager,
|
||
p.prs_perslid_telefoonnr Tel_aanvr,
|
||
res_rsv_ruimte_omschrijving Omsch,
|
||
res_rsv_ruimte_opmerking Opm
|
||
FROM (SELECT 'R' AS res_type,
|
||
rrr.res_rsv_ruimte_key,
|
||
rrr.res_rsv_ruimte_van AS res_reservering_van,
|
||
rrr.res_rsv_ruimte_tot AS res_reservering_tot,
|
||
rrr.res_status_bo_key,
|
||
rro.res_ruimte_opstel_bezoekers
|
||
FROM res_v_aanwezigrsv_ruimte rrr,
|
||
res_ruimte_opstelling rro,
|
||
res_ruimte rr,
|
||
res_opstelling ro
|
||
WHERE rrr.res_ruimte_opstel_key =
|
||
rro.res_ruimte_opstel_key
|
||
AND rro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rro.res_opstelling_key =
|
||
ro.res_opstelling_key
|
||
AND res_rsv_ruimte_van BETWEEN v_datum_van
|
||
AND v_datum_tot)
|
||
res_geg,
|
||
res_rsv_ruimte rrr,
|
||
prs_perslid p,
|
||
alg_v_ruimte_gegevens ruimte_geg,
|
||
( SELECT res_ruimte_opstel_key,
|
||
res_ruimte_nr,
|
||
MIN (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_ruimte_opstelling rro,
|
||
res_alg_ruimte rar,
|
||
res_ruimte rr
|
||
WHERE rro.res_ruimte_key = rar.res_ruimte_key
|
||
AND rr.res_ruimte_key = rar.res_ruimte_key
|
||
AND rar.res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg,
|
||
alg_locatie l,
|
||
prs_kostenplaats k
|
||
WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND rrr.res_ruimte_opstel_key =
|
||
opstelalg.res_ruimte_opstel_key(+)
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND ruimte_geg.alg_ruimte_key =
|
||
COALESCE (rrr.alg_ruimte_key,
|
||
opstelalg.alg_ruimte_key)
|
||
AND l.alg_locatie_key = ruimte_geg.alg_locatie_key
|
||
AND res_geg.res_reservering_van BETWEEN v_datum_van
|
||
AND v_datum_tot
|
||
AND res_geg.res_status_bo_key < 5
|
||
AND (rrr.res_rsv_ruimte_bezoekers >
|
||
res_geg.res_ruimte_opstel_bezoekers
|
||
OR rrr.res_rsv_ruimte_bezoekers > 50)
|
||
ORDER BY UPPER (l.alg_locatie_code), res_geg.res_reservering_van;
|
||
END;
|
||
|
||
-- PZHO#13965/PZHO#23492
|
||
PROCEDURE pzho_p_zelfservicemeld (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT vakgroeptype,
|
||
vakgroep,
|
||
melding,
|
||
SUM (zelf) zelf,
|
||
COUNT ( * ) - SUM (zelf) nietzelf,
|
||
REPLACE (
|
||
TO_CHAR (ROUND (100 * SUM (zelf) / COUNT ( * ), 1),
|
||
'990.9'),
|
||
'.',
|
||
','
|
||
)
|
||
pctzelf
|
||
FROM (SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
||
md.ins_discipline_omschrijving vakgroep,
|
||
std.mld_stdmelding_omschrijving melding,
|
||
DECODE (m.prs_perslid_key,
|
||
t.prs_perslid_key, 1,
|
||
0)
|
||
zelf
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
fac_tracking t
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key =
|
||
md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = 21 -- MLDNEW
|
||
AND m.mld_melding_datum BETWEEN v_datum_van
|
||
AND v_datum_tot)
|
||
GROUP BY vakgroeptype, vakgroep, melding;
|
||
END;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_export_bulkverhuizing (result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT SUBSTR (prs_perslid_nr, 1, INSTR (prs_perslid_nr, '/') - 1) ||';'||
|
||
SUBSTR (prs_perslid_nr, INSTR (prs_perslid_nr, '/') + 1) ||';'||
|
||
a.prs_afdeling_naam ||';'||
|
||
REPLACE (SUBSTR (f.prs_srtperslid_omschrijving,
|
||
1,
|
||
INSTR (f.prs_srtperslid_omschrijving, '-') - 2), 'INACTIEF: ' , ''
|
||
) ||';'||
|
||
alg_locatie_code ||';'||
|
||
alg_gebouw_code ||';'||
|
||
alg_verdieping_code ||';'||
|
||
alg_ruimte_nr ||';',
|
||
p.prs_perslid_key
|
||
FROM prs_v_perslidwerkplek_gegevens wg,
|
||
prs_v_aanwezigperslid p,
|
||
alg_locatie l,
|
||
prs_afdeling a,
|
||
prs_srtperslid f
|
||
WHERE NVL (prs_werkplek_virtueel, 0) = 0
|
||
AND wg.prs_perslid_key = p.prs_perslid_key
|
||
AND wg.alg_locatie_key = l.alg_locatie_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_srtperslid_key = f.prs_srtperslid_key;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE PZHO_SELECT_BULKVERHUIZING (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
-- export wordt via de view PZHO_V_EXPORT_BULKVERHUIZING uitgevoerd.
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE PZHO_EXPORT_BULKVERHUIZING(
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
-- export wordt via de view PZHO_V_EXPORT_BULKVERHUIZING uitgevoerd.
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_label_werkplekbew (prj_werkplek_key, waarde)
|
||
AS
|
||
SELECT pw.prj_werkplek_key, prs_perslid_naam_full prs_perslid_naam_full
|
||
FROM prj_werkplek wp, prj_perslidwerkplek pw, prs_v_perslid_fullnames pf
|
||
WHERE wp.prj_werkplek_key = pw.prj_werkplek_key
|
||
AND pw.prs_perslid_key = pf.prs_perslid_key(+)
|
||
AND pw.prj_perslidwerkplek_verwijder IS NULL;
|
||
|
||
|
||
|
||
-- Kostenoverzicht voor mail naar budgethouder.
|
||
/* Formatted on 12-11-2012 11:20:44 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW pzho_v_kostenoverzicht_budgeth
|
||
(
|
||
prs_perslid_key,
|
||
kostenplaats,
|
||
datum,
|
||
aanvrager,
|
||
organisatie,
|
||
categorie,
|
||
categorienummer,
|
||
bedrag,
|
||
status,
|
||
module,
|
||
kpgroep,
|
||
ksoort,
|
||
ordernr,
|
||
kostenplaats_key,
|
||
prs_perslid_email,
|
||
omschrijving,
|
||
extra_key
|
||
)
|
||
AS
|
||
SELECT pl.prs_perslid_key,
|
||
kostenplaats,
|
||
datum,
|
||
aanvrager,
|
||
organisatie,
|
||
categorie,
|
||
categorienummer,
|
||
SUM (bedrag),
|
||
status,
|
||
module,
|
||
kpgroep,
|
||
ksoort,
|
||
ordernr,
|
||
kostenplaats_key,
|
||
pl.prs_perslid_email,
|
||
omschrijving,
|
||
pl.prs_perslid_key
|
||
FROM (SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Reservering' categorie,
|
||
TO_CHAR (r.res_reservering_key) categorienummer,
|
||
res.getruimteprijs (rr.res_rsv_ruimte_key) bedrag,
|
||
rr.res_status_BO_key status,
|
||
'RES' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
ksoort,
|
||
--rr.res_rsv_ruimte_ordernr ordernr,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
ordernr,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving
|
||
FROM prs_kostenplaats k,
|
||
res_v_aanwezigreservering r,
|
||
res_v_aanwezigrsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_v_aanwezigruimte ru,
|
||
res_discipline dis,
|
||
prs_kostensoort ks,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND r.res_reservering_key = rr.res_reservering_key
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = ru.res_ruimte_key
|
||
AND ru.res_discipline_key = dis.ins_discipline_key
|
||
AND dis.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND rr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
AND rr.res_rsv_ruimte_aanmaak BETWEEN TRUNC (SYSDATE)
|
||
- 1
|
||
AND TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Reservering' categorie,
|
||
TO_CHAR (r.res_reservering_key) categorienummer,
|
||
res.getartikelprijs (ra.res_rsv_artikel_key) bedrag,
|
||
ra.res_status_BO_key status,
|
||
'RES' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
ksoort,
|
||
--rr.res_rsv_ruimte_ordernr ordernr,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
ordernr,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving
|
||
FROM prs_kostenplaats k,
|
||
res_v_aanwezigreservering r,
|
||
res_v_aanwezigrsv_ruimte rr,
|
||
res_v_aanwezigrsv_artikel ra,
|
||
res_v_aanwezigartikel a,
|
||
res_discipline dis,
|
||
prs_kostensoort ks,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND r.res_reservering_key = rr.res_reservering_key
|
||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND ra.res_artikel_key = a.res_artikel_key
|
||
AND a.res_discipline_key = dis.ins_discipline_key
|
||
AND dis.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND rr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
AND ra.res_rsv_artikel_aanmaak BETWEEN TRUNC (SYSDATE)
|
||
- 1
|
||
AND TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Reservering' categorie,
|
||
TO_CHAR (r.res_reservering_key) categorienummer,
|
||
res.getdeelprijs (rd.res_rsv_deel_key) bedrag,
|
||
rd.res_status_BO_key status,
|
||
'RES' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
ksoort,
|
||
--rr.res_rsv_ruimte_ordernr ordernr,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
ordernr,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving
|
||
FROM prs_kostenplaats k,
|
||
res_v_aanwezigreservering r,
|
||
res_v_aanwezigrsv_deel rd,
|
||
res_v_aanwezigrsv_ruimte rr,
|
||
res_v_aanwezigdeel d,
|
||
res_discipline dis,
|
||
prs_kostensoort ks,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND r.res_reservering_key = rr.res_reservering_key
|
||
AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
|
||
AND rd.res_deel_key = d.res_deel_key
|
||
AND d.res_discipline_key = dis.ins_discipline_key
|
||
AND dis.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND rr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
AND rd.res_rsv_deel_aanmaak BETWEEN TRUNC (SYSDATE) - 1
|
||
AND TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (m.mld_melding_datum, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Melding' categorie,
|
||
(SELECT sd.ins_srtdiscipline_prefix
|
||
FROM mld_discipline md, ins_srtdiscipline sd
|
||
WHERE sd.ins_srtdiscipline_key =
|
||
md.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
|| m.mld_melding_key
|
||
categorienummer,
|
||
NULL bedrag,
|
||
NULL status,
|
||
'MLD' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
NVL (
|
||
(SELECT ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
std.prs_kostensoort_key),
|
||
(SELECT ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
FROM mld_discipline mdis, prs_kostensoort ks
|
||
WHERE mdis.prs_kostensoort_key =
|
||
ks.prs_kostensoort_key
|
||
AND mdis.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
)
|
||
ksoort,
|
||
COALESCE (mk.mld_kenmerkmelding_waarde,
|
||
m.mld_melding_ordernr)
|
||
ordernr,
|
||
(SELECT md.ins_discipline_omschrijving
|
||
FROM mld_discipline md
|
||
WHERE md.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
|| ' / '
|
||
|| std.mld_stdmelding_omschrijving
|
||
omschrijving
|
||
FROM prs_kostenplaats k,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT mk.mld_melding_key,
|
||
mk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding mk, mld_kenmerk k
|
||
WHERE mk.mld_kenmerkmelding_verwijder IS NULL
|
||
AND mk.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND k.mld_srtkenmerk_key = 752) mk
|
||
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND m.mld_melding_status <> 1 -- geen afgewezen
|
||
AND m.mld_stdmelding_key in (470, -- 9-persoonsbus
|
||
409, -- Dienstauto
|
||
210, -- Taxirit
|
||
471 -- Touringcar met chauffeur
|
||
) -- PZHO#28574
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_melding_key = mk.mld_melding_key(+)
|
||
AND m.mld_melding_datum BETWEEN TRUNC (SYSDATE) - 1
|
||
AND TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Melding' categorie,
|
||
(SELECT sd.ins_srtdiscipline_prefix
|
||
FROM mld_discipline md, ins_srtdiscipline sd
|
||
WHERE sd.ins_srtdiscipline_key =
|
||
md.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
|| m.mld_melding_key
|
||
categorienummer,
|
||
NVL (o.mld_opdr_kosten, 0) bedrag,
|
||
o.mld_statusopdr_key status,
|
||
'MLD' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
NVL (
|
||
(SELECT ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
std.prs_kostensoort_key),
|
||
(SELECT ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
FROM mld_discipline mdis, prs_kostensoort ks
|
||
WHERE mdis.prs_kostensoort_key =
|
||
ks.prs_kostensoort_key
|
||
AND mdis.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
)
|
||
ksoort,
|
||
--m.mld_melding_ordernr ordernr,
|
||
COALESCE (mk.mld_kenmerkmelding_waarde,
|
||
m.mld_melding_ordernr)
|
||
ordernr,
|
||
(SELECT md.ins_discipline_omschrijving
|
||
FROM mld_discipline md
|
||
WHERE md.ins_discipline_key =
|
||
std.mld_ins_discipline_key)
|
||
|| ' / '
|
||
|| std.mld_stdmelding_omschrijving
|
||
omschrijving
|
||
FROM prs_kostenplaats k,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT mk.mld_melding_key,
|
||
mk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding mk, mld_kenmerk k
|
||
WHERE mk.mld_kenmerkmelding_verwijder IS NULL
|
||
AND mk.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND k.mld_srtkenmerk_key = 752) mk
|
||
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND o.mld_statusopdr_key NOT IN (1, 2) -- geen afgewezen/niet-gefiatteerde
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_melding_key = mk.mld_melding_key(+)
|
||
AND o.mld_opdr_datumbegin BETWEEN TRUNC (SYSDATE) - 1
|
||
AND TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT k.prs_kostenplaats_key kostenplaats_key,
|
||
k.prs_kostenplaats_nr
|
||
|| ' '
|
||
|| k.prs_kostenplaats_omschrijving
|
||
kostenplaats,
|
||
TO_CHAR (b.bes_bestelling_datum, 'DD-MM-YYYY') datum,
|
||
prs_perslid_naam_full aanvrager,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_v_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
||
organisatie,
|
||
'Bestelling' categorie,
|
||
TO_CHAR (b.bes_bestelling_key) categorienummer,
|
||
bi.bes_bestelling_item_aantal
|
||
* bi.bes_bestelling_item_prijs
|
||
bedrag,
|
||
NVL (b.bes_bestelling_status, 0) status,
|
||
'BES' module,
|
||
k.prs_kostenplaatsgrp_key kpgroep,
|
||
ks.prs_kostensoort_oms
|
||
|| ' '
|
||
|| ks.prs_kostensoort_opmerking
|
||
ksoort,
|
||
--b.bes_bestelling_ordernr ordernr,
|
||
COALESCE (bk.bes_kenmerkbestell_waarde,
|
||
b.bes_bestelling_ordernr)
|
||
ordernr,
|
||
bdis.ins_discipline_omschrijving omschrijving
|
||
FROM prs_kostenplaats k,
|
||
bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg,
|
||
bes_discipline bdis,
|
||
prs_kostensoort ks,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT bk.bes_bestelling_key,
|
||
bk.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell bk, bes_kenmerk k
|
||
WHERE bk.bes_kenmerkbestell_verwijder IS NULL
|
||
AND bk.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_kenmerk_verwijder IS NULL
|
||
AND k.bes_srtkenmerk_key = 241) bk
|
||
WHERE k.prs_kostenplaats_key = b.prs_kostenplaats_key(+)
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = bdis.ins_discipline_key
|
||
AND bdis.prs_kostensoort_key =
|
||
ks.prs_kostensoort_key(+)
|
||
AND b.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND b.bes_bestelling_key = bk.bes_bestelling_key(+)
|
||
AND b.bes_bestelling_datum BETWEEN TRUNC (SYSDATE) - 1
|
||
AND TRUNC (SYSDATE))
|
||
tab,
|
||
prs_perslid pl,
|
||
prs_kostenplaats pk,
|
||
(SELECT p2.prs_perslid_key,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (
|
||
prs_kenmerklink_waarde
|
||
)
|
||
FROM prs_kenmerklink kl
|
||
WHERE kl.prs_link_key(+) = p2.prs_perslid_key
|
||
AND prs_kenmerk_key = 1160),
|
||
6
|
||
)
|
||
waarde -- kenmerk om geen mail te ontvangen
|
||
FROM prs_perslid p2) mail
|
||
WHERE tab.kostenplaats_key = pk.prs_kostenplaats_key
|
||
AND pl.prs_perslid_key = mail.prs_perslid_key
|
||
AND mail.waarde = 6 -- 6 = ja en 7 = nee
|
||
AND pl.prs_perslid_key = pk.prs_perslid_key
|
||
AND NVL (ksoort, 'xxx') NOT LIKE '99999%' -- Die wil PZHO niet zien. code wordt gevolgd door opmerking
|
||
GROUP BY pl.prs_perslid_key,
|
||
prs_perslid_email,
|
||
kostenplaats_key,
|
||
kostenplaats,
|
||
datum,
|
||
aanvrager,
|
||
organisatie,
|
||
categorie,
|
||
categorienummer,
|
||
status,
|
||
module,
|
||
kpgroep,
|
||
ksoort,
|
||
ordernr,
|
||
omschrijving
|
||
ORDER BY prs_perslid_email,
|
||
kostenplaats_key,
|
||
datum,
|
||
aanvrager;
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_noti_kostenbudgeth (code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
KEY,
|
||
xkey
|
||
)
|
||
AS
|
||
-- mail naar de budgethouder met gemaakte kosten van de vorige dag.
|
||
SELECT DISTINCT 'RAPMAI' code,
|
||
NULL sender,
|
||
prs_perslid_key receiver,
|
||
'Facilitaire Zaken: Bestellingen en Reserveringen ' text,
|
||
fac_usrrap_key KEY,
|
||
prs_perslid_key xkey
|
||
FROM pzho_v_kostenoverzicht_budgeth b,
|
||
fac_usrrap u
|
||
WHERE UPPER(fac_usrrap_view_name) = 'PZHO_V_KOSTENOVERZICHT_BUDGETH';
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_noti_noshowbudgeth (code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
KEY,
|
||
xkey
|
||
)
|
||
AS
|
||
-- mail naar budgethouder ivm noshow op reserveringen.
|
||
SELECT 'CUST04' code,
|
||
NULL sender,
|
||
kp.prs_perslid_key receiver,
|
||
'Facilitaire Zaken: NoShow reservering' text,
|
||
rrr.res_reservering_key key,
|
||
rrr.res_rsv_ruimte_key xkey
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie s,
|
||
res_rsv_ruimte rrr,
|
||
prs_kostenplaats kp,
|
||
(SELECT p2.prs_perslid_key,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (prs_kenmerklink_waarde)
|
||
FROM prs_kenmerklink kl
|
||
WHERE kl.prs_link_key(+) = p2.prs_perslid_key
|
||
AND prs_kenmerk_key = 1160),
|
||
6)
|
||
waarde -- kenmerk om geen mail te ontvangen
|
||
FROM prs_perslid p2) mail
|
||
WHERE t.fac_srtnotificatie_key = s.fac_srtnotificatie_key
|
||
AND s.fac_srtnotificatie_code = 'RESNOS'
|
||
AND fac_tracking_refkey = res_rsv_ruimte_key
|
||
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_perslid_key = mail.prs_perslid_key
|
||
AND mail.waarde = 6
|
||
AND fac_tracking_datum BETWEEN TRUNC (SYSDATE) - 1
|
||
AND TRUNC (SYSDATE)
|
||
GROUP BY kp.prs_perslid_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_key;
|
||
|
||
-- IMPORT VIEWS PZHO#274
|
||
|
||
-- View van de import logging
|
||
CREATE OR REPLACE VIEW PZHO_V_IMPORT_IMPLOG
|
||
(
|
||
HIDE_F_IMP_LOG_DATUM,
|
||
FCLT_F_APPLICATIE,
|
||
FCLT_F_DATUM,
|
||
TIJDSTIP,
|
||
FCLT_F_NIVEAU,
|
||
FCLT_F_OMSCHRIJVING,
|
||
HINT
|
||
)
|
||
AS
|
||
SELECT imp_log_datum hide_f_imp_log_datum,
|
||
fac_import_app_code,
|
||
TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
|
||
TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
|
||
DECODE (imp_log_status,
|
||
'F', 'Fataal',
|
||
'E', 'Error',
|
||
'W', 'Waarschuwing',
|
||
'S', 'Samenvatting',
|
||
'I', 'Informatief',
|
||
'-')
|
||
fclt_f_niveau,
|
||
imp_log_omschrijving fclt_f_omschrijving,
|
||
imp_log_hint
|
||
FROM imp_log l, fac_import i, fac_import_app a
|
||
WHERE l.fac_import_key = i.fac_import_key
|
||
AND i.fac_import_app_key = a.fac_import_app_key
|
||
AND l.fac_import_key IN (SELECT max(fac_import_key)
|
||
FROM fac_import
|
||
GROUP BY fac_import_app_key);
|
||
|
||
--
|
||
CREATE OR REPLACE VIEW PZHO_V_VERPLICHTING
|
||
(PRS_PERSLID_KEY)
|
||
AS
|
||
SELECT o.mld_uitvoerende_keys
|
||
FROM mld_opdr o, prs_perslid p, mld_melding m
|
||
WHERE o.mld_statusopdr_key = 5
|
||
AND o.mld_uitvoerende_keys = p.prs_perslid_key
|
||
UNION
|
||
SELECT m.prs_perslid_key
|
||
FROM mld_melding m
|
||
WHERE m.mld_melding_status IN (2, 3, 4, 7)
|
||
UNION
|
||
SELECT b.prs_perslid_key
|
||
FROM bes_bestelling b
|
||
WHERE b.bes_bestelling_status IN (5, 4, 3, 2)
|
||
UNION
|
||
SELECT prs_perslid_key
|
||
FROM prs_v_aanwezigkostenplaats
|
||
UNION
|
||
SELECT ins_alg_ruimte_key
|
||
FROM ins_v_aanwezigdeel d, ins_tab_discipline ID
|
||
WHERE d.ins_alg_ruimte_type = 'P'
|
||
AND ID.ins_discipline_key = d.ins_discipline_key
|
||
AND ID.ins_discipline_min_level <> 3
|
||
UNION
|
||
SELECT rr.res_rsv_ruimte_host_key
|
||
FROM res_v_aanwezigrsv_ruimte rr
|
||
WHERE rr.res_status_bo_key IN (4, 3, 2)
|
||
UNION
|
||
SELECT r.res_rsv_ruimte_host_key
|
||
FROM res_v_aanwezigrsv_ruimte r, res_v_aanwezigrsv_deel rd
|
||
WHERE r.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
|
||
AND rd.res_status_bo_key IN (4, 3, 2)
|
||
AND r.alg_ruimte_key IS NOT NULL
|
||
UNION
|
||
SELECT r.res_rsv_ruimte_host_key
|
||
FROM res_v_aanwezigrsv_ruimte r, res_v_aanwezigrsv_artikel ra
|
||
WHERE r.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND ra.res_status_bo_key IN (4, 3, 2)
|
||
AND r.alg_ruimte_key IS NOT NULL
|
||
UNION
|
||
SELECT rr.res_rsv_ruimte_contact_key
|
||
FROM res_v_aanwezigrsv_ruimte rr
|
||
WHERE rr.res_status_bo_key IN (4, 3, 2)
|
||
UNION
|
||
SELECT r.res_rsv_ruimte_contact_key
|
||
FROM res_v_aanwezigrsv_ruimte r, res_v_aanwezigrsv_deel rd
|
||
WHERE r.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
|
||
AND rd.res_status_bo_key IN (4, 3, 2)
|
||
AND r.alg_ruimte_key IS NOT NULL
|
||
UNION
|
||
SELECT r.res_rsv_ruimte_contact_key
|
||
FROM res_v_aanwezigrsv_ruimte r, res_v_aanwezigrsv_artikel ra
|
||
WHERE r.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND ra.res_status_bo_key IN (4, 3, 2)
|
||
AND r.alg_ruimte_key IS NOT NULL
|
||
UNION
|
||
SELECT a.bez_afspraak_host_key
|
||
FROM bez_afspraak a
|
||
WHERE a.bez_afspraak_datum > SYSDATE
|
||
UNION
|
||
SELECT a.bez_afspraak_contact_key
|
||
FROM bez_afspraak a
|
||
WHERE a.bez_afspraak_datum > SYSDATE;
|
||
|
||
|
||
-- View of er nog ACTUELE verplichtingen zijn voor prs_afdeling_key
|
||
CREATE OR REPLACE VIEW PZHO_V_VERPL_AFDELING
|
||
(PRS_AFDELING_KEY, FAC_MESSAGE_CODE, ITEM, ITEM_KEY)
|
||
AS
|
||
SELECT c.cnt_prs_afdeling_key, 'CNT_OPENST_CONTRACT', TO_CHAR(c.cnt_contract_looptijd_tot), c.cnt_contract_key
|
||
FROM cnt_contract c
|
||
WHERE c.cnt_contract_looptijd_tot > SYSDATE
|
||
UNION
|
||
SELECT c.prs_afdeling_key_eig, 'CNT_OPENST_CONTRACT', TO_CHAR(c.cnt_contract_looptijd_tot), c.cnt_contract_key
|
||
FROM cnt_contract c
|
||
WHERE c.cnt_contract_looptijd_tot > SYSDATE
|
||
UNION
|
||
SELECT a.prs_afdeling_parentkey, 'PRS_PARENT_AFDELING', TO_CHAR(a.prs_afdeling_key), a.prs_afdeling_key
|
||
FROM prs_afdeling a
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
UNION
|
||
SELECT p.prs_afdeling_key, 'PRS_PERSLID', TO_CHAR(p.prs_perslid_key), p.prs_perslid_key
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_verwijder IS NULL;
|
||
|
||
|
||
-- Importeren verhuisresultaten
|
||
CREATE OR REPLACE PROCEDURE pzho_import_verhuizing (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- 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_count NUMBER;
|
||
v_invalid BOOLEAN;
|
||
-- De importvelden
|
||
header_is_valid BOOLEAN;
|
||
v_sleutel VARCHAR2 (100);
|
||
v_sleutel_key NUMBER (10);
|
||
v_scenario VARCHAR2 (100);
|
||
v_scenario_key NUMBER (10);
|
||
v_directie VARCHAR2 (100);
|
||
v_afdeling VARCHAR2 (100);
|
||
v_bureau VARCHAR2 (100);
|
||
v_persoon VARCHAR2 (100);
|
||
v_plaats VARCHAR2 (100);
|
||
v_locatie VARCHAR2 (100);
|
||
v_gebouw VARCHAR2 (100);
|
||
v_verdieping VARCHAR2 (100);
|
||
v_kamer VARCHAR2 (100);
|
||
v_werkplek VARCHAR2 (100);
|
||
v_prs_perslidwerkplek_key NUMBER (10);
|
||
v_prs_werkplek_key NUMBER (10);
|
||
|
||
|
||
|
||
CURSOR c IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
|
||
BEGIN
|
||
v_fielddelimitor := ';';
|
||
header_is_valid := FALSE;
|
||
|
||
DELETE FROM pzho_imp_verhuizing;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
|
||
v_errorhint := 'Fout opvragen te importeren rij';
|
||
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_invalid := FALSE;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_sleutel);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_scenario);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_directie);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_bureau);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_persoon);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_plaats);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_verdieping);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kamer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_werkplek);
|
||
|
||
IF header_is_valid = TRUE THEN
|
||
-- controle op ingelezen velden
|
||
v_errorhint := 'Controle op sleutel van de persoon: ' || v_sleutel;
|
||
SELECT count(prs_perslid_key)
|
||
INTO v_count
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_key = fac.safe_to_number(v_sleutel);
|
||
|
||
IF v_count <> 1 THEN
|
||
v_invalid := true;
|
||
fac.imp_writelog (p_import_key, 'E', 'Persoon kan niet gevonden worden', v_errorhint);
|
||
END IF;
|
||
|
||
v_sleutel_key := fac.safe_to_number(v_sleutel);
|
||
|
||
v_errorhint := 'Controle op scenario: ' || v_scenario;
|
||
SELECT prj_scenario_key
|
||
INTO v_scenario_key
|
||
FROM prj_scenario
|
||
WHERE prj_scenario_verwerkt IS NULL
|
||
AND prj_scenario_omschrijving = v_scenario;
|
||
|
||
v_errorhint := 'Controle op huidige plaats: ' || v_plaats;
|
||
IF v_plaats IS NOT NULL THEN
|
||
SELECT prs_perslidwerkplek_key
|
||
INTO v_prs_perslidwerkplek_key
|
||
FROM prs_v_perslidwerkplek_gegevens wpg
|
||
WHERE wpg.prs_werkplek_aanduiding = v_plaats
|
||
AND wpg.prs_perslid_key = v_sleutel;
|
||
ELSE
|
||
v_prs_perslidwerkplek_key := NULL;
|
||
END IF;
|
||
|
||
v_errorhint := 'Controle op nieuwe plaats: ' || v_locatie || '-' || v_gebouw || '-' || v_verdieping || '-' || v_kamer || '/' || v_werkplek;
|
||
IF v_werkplek IS NOT NULL THEN
|
||
SELECT prs_werkplek_key
|
||
INTO v_prs_werkplek_key
|
||
FROM prs_v_werkplek_gegevens wpg
|
||
WHERE wpg.prs_werkplek_aanduiding = v_locatie || '-' || v_gebouw || '-' || v_verdieping || '-' || v_kamer || '/' || v_werkplek;
|
||
ELSE
|
||
v_prs_werkplek_key := NULL;
|
||
END IF;
|
||
END IF;
|
||
|
||
|
||
IF header_is_valid = FALSE
|
||
AND UPPER(v_sleutel) = 'SLEUTEL'
|
||
AND UPPER(v_werkplek) = 'WERKPLEK'
|
||
THEN
|
||
header_is_valid := TRUE;
|
||
ELSE
|
||
IF header_is_valid = TRUE AND v_invalid = FALSE
|
||
THEN
|
||
INSERT INTO pzho_imp_verhuizing
|
||
(sleutel,
|
||
scenario_key,
|
||
directie,
|
||
afdeling,
|
||
bureau,
|
||
persoon,
|
||
plaats,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
kamer,
|
||
werkplek,
|
||
prs_werkplek_key,
|
||
prs_perslidwerkplek_key)
|
||
VALUES
|
||
(v_sleutel_key,
|
||
v_scenario_key,
|
||
v_directie,
|
||
v_afdeling,
|
||
v_bureau,
|
||
v_persoon,
|
||
v_plaats,
|
||
v_locatie,
|
||
v_gebouw,
|
||
v_verdieping,
|
||
v_kamer,
|
||
v_werkplek,
|
||
v_prs_werkplek_key,
|
||
v_prs_perslidwerkplek_key);
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
IF (header_is_valid = FALSE)
|
||
THEN
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Invalid import file',
|
||
'Er is geen geldige Header aangetroffen in het 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', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE pzho_update_verhuizing (p_import_key IN NUMBER)
|
||
AS
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT i.*,
|
||
(SELECT MAX (prj_perslidwerkplek_key)
|
||
FROM prj_perslidwerkplek ppwp, prj_werkplek pwp, prj_ruimte pr
|
||
WHERE ppwp.prs_perslidwerkplek_key = i.prs_perslidwerkplek_key
|
||
AND ppwp.prj_werkplek_key = pwp.prj_werkplek_key
|
||
AND pwp.prj_ruimte_key = pr.prj_ruimte_key
|
||
AND pr.prj_scenario_key = i.scenario_key)
|
||
prj_perslidwerkplek_key,
|
||
(SELECT MAX (prj_werkplek_key)
|
||
FROM prj_werkplek pwp, prj_ruimte pr
|
||
WHERE pwp.prs_werkplek_key = i.prs_werkplek_key
|
||
AND pwp.prj_ruimte_key = pr.prj_ruimte_key
|
||
AND pr.prj_scenario_key = i.scenario_key)
|
||
prj_werkplek_key
|
||
FROM pzho_imp_verhuizing i;
|
||
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
BEGIN
|
||
-- Init
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
-- aanpassen werkplek voor:
|
||
v_errorhint := 'Aanpassen werkplek voor: ' || rec.persoon;
|
||
|
||
-- indien de plaats niet veranderd is mogen we niets aanpassen.
|
||
IF coalesce(rec.plaats,'---/') <> rec.locatie || '-' || rec.gebouw || '-' || rec.verdieping || '-' || rec.kamer || '/' || rec.werkplek THEN
|
||
IF rec.prj_werkplek_key IS NULL THEN
|
||
-- persoon heeft geen werkplek meer
|
||
UPDATE prj_perslidwerkplek
|
||
SET prj_werkplek_key = NULL
|
||
WHERE prj_perslidwerkplek_key = rec.prj_perslidwerkplek_key;
|
||
fac.imp_writelog (p_import_key, 'I', 'Werkplek verwijdert bij persoon', v_errorhint);
|
||
ELSE
|
||
-- persoon heeft nieuwe werkplek binnen scenario
|
||
IF rec.prj_perslidwerkplek_key IS NULL THEN
|
||
-- had de persoon al een perslidwerkplek binnen het scenario?
|
||
-- NEE, dan maken we een prj_perslidwerkplek aan
|
||
INSERT INTO prj_perslidwerkplek
|
||
( prs_perslid_key,
|
||
prs_perslidwerkplek_key,
|
||
prj_werkplek_key,
|
||
prj_perslidwerkplek_bezetting)
|
||
VALUES
|
||
( rec.sleutel,
|
||
rec.prs_perslidwerkplek_key,
|
||
rec.prj_werkplek_key,
|
||
100);
|
||
fac.imp_writelog (p_import_key, 'I', 'Werkplek toegevoegd aan persoon buiten scenario', v_errorhint);
|
||
ELSE
|
||
UPDATE prj_perslidwerkplek
|
||
SET prj_werkplek_key = rec.prj_werkplek_key
|
||
WHERE prj_perslidwerkplek_key = rec.prj_perslidwerkplek_key;
|
||
fac.imp_writelog (p_import_key, 'I', 'Werkplek toegevoegd aan persoon binnen scenario', v_errorhint);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'I', 'Werkplek is niet gewijzigd', v_errorhint);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
-- Importeren gegevens afdeling
|
||
CREATE OR REPLACE PROCEDURE pzho_import_afdeling (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_afdeling_code VARCHAR2 (100);
|
||
v_afdeling_naam VARCHAR2 (100);
|
||
v_kostenplaats_code VARCHAR2 (100);
|
||
v_afdeling_niveau VARCHAR2 (100);
|
||
v_afdeling_code_0 VARCHAR2 (100);
|
||
v_afdeling_code_1 VARCHAR2 (100);
|
||
v_afdeling_code_2 VARCHAR2 (100);
|
||
v_afdeling_code_3 VARCHAR2 (100);
|
||
v_leiding_personeelsnummer VARCHAR2 (100);
|
||
v_leiding_naam VARCHAR2 (100);
|
||
v_leiding_roepnaam VARCHAR2 (100);
|
||
v_leiding_gebruiknaam VARCHAR2 (100);
|
||
header_is_valid BOOLEAN;
|
||
v_controle_res VARCHAR2 (30);
|
||
|
||
CURSOR c1 IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
|
||
rec1 c1%ROWTYPE;
|
||
BEGIN
|
||
|
||
v_fielddelimitor := ';';
|
||
header_is_valid := TRUE; -- No header present
|
||
|
||
DELETE FROM pzho_imp_afdeling;
|
||
|
||
OPEN C1;
|
||
IF C1%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
FETCH c1 INTO rec1;
|
||
EXIT WHEN c1%NOTFOUND;
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostenplaats_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_niveau);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code_0);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code_1);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code_2);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code_3);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_leiding_personeelsnummer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_leiding_naam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_leiding_roepnaam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_leiding_gebruiknaam);
|
||
|
||
IF (header_is_valid = FALSE)
|
||
THEN
|
||
header_is_valid := TRUE;
|
||
ELSE
|
||
IF header_is_valid = TRUE AND v_afdeling_code IS NOT NULL
|
||
THEN
|
||
INSERT INTO pzho_imp_afdeling
|
||
(afdeling_code,
|
||
afdeling_naam,
|
||
kostenplaats_code,
|
||
afdeling_niveau,
|
||
afdeling_code_0,
|
||
afdeling_code_1,
|
||
afdeling_code_2,
|
||
afdeling_code_3,
|
||
leiding_personeelsnummer,
|
||
leiding_naam,
|
||
leiding_roepnaam,
|
||
leiding_gebruiknaam
|
||
)
|
||
VALUES (SUBSTR (v_afdeling_code, 1, 7),
|
||
SUBSTR (v_afdeling_naam, 1, 50),
|
||
SUBSTR (v_kostenplaats_code, 1, 7),
|
||
SUBSTR (v_afdeling_niveau, 1, 10),
|
||
SUBSTR (v_afdeling_code_0, 1, 7),
|
||
SUBSTR (v_afdeling_code_1, 1, 7),
|
||
SUBSTR (v_afdeling_code_2, 1, 7),
|
||
SUBSTR (v_afdeling_code_3, 1, 7),
|
||
SUBSTR (v_leiding_personeelsnummer, 1, 10),
|
||
SUBSTR (v_leiding_naam, 1, 30),
|
||
SUBSTR (v_leiding_roepnaam, 1, 25),
|
||
SUBSTR (v_leiding_gebruiknaam, 100, 10)
|
||
);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
IF (header_is_valid = FALSE)
|
||
THEN
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Invalid import file',
|
||
'Er is geen geldige Header aangetroffen in het 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', v_errormsg, '');
|
||
END;
|
||
/
|
||
|
||
|
||
-- Importeren gegevens medewerkers en inzet
|
||
CREATE OR REPLACE PROCEDURE pzho_import_mw_inz (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||
v_errormsg VARCHAR (200);
|
||
v_hint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_personeelsnummer VARCHAR2 (100);
|
||
v_diensTverbandvolgnummer VARCHAR2 (100);
|
||
v_datum_in_dienst VARCHAR2 (100);
|
||
v_datum_uit_dienst VARCHAR2 (100);
|
||
v_achternaam VARCHAR2 (100);
|
||
v_voorvoegsel VARCHAR2 (100);
|
||
v_voorletters VARCHAR2 (100);
|
||
v_voornamen VARCHAR2 (100);
|
||
v_roepnaam VARCHAR2 (100);
|
||
v_titel VARCHAR2 (100);
|
||
v_titel_na VARCHAR2 (100);
|
||
v_afdeling_code VARCHAR2 (100);
|
||
v_datum_begin_dienstv VARCHAR2 (100);
|
||
v_datum_einde_dienstv VARCHAR2 (100);
|
||
v_arbeidsuren VARCHAR2 (100);
|
||
v_werkdagen VARCHAR2 (100);
|
||
v_email VARCHAR2 (100);
|
||
v_oslogin VARCHAR2 (100);
|
||
v_dummy VARCHAR2 (1000);
|
||
v_functie_code VARCHAR2 (100);
|
||
v_functie_omschrijving VARCHAR2 (100);
|
||
v_locatiecode VARCHAR2 (100);
|
||
v_gebouwcode VARCHAR2 (100);
|
||
v_verdiepingscode VARCHAR2 (100);
|
||
v_ruimtenr VARCHAR2 (100);
|
||
v_telefoon VARCHAR2 (100);
|
||
v_telefoon_bgg VARCHAR2 (100);
|
||
v_mobiel VARCHAR2 (100);
|
||
v_actief VARCHAR2 (100);
|
||
|
||
|
||
|
||
header_is_valid BOOLEAN;
|
||
v_controle_res VARCHAR2 (30);
|
||
v_aantal_imported NUMBER;
|
||
|
||
CURSOR c1 IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
rec1 c1%ROWTYPE;
|
||
|
||
BEGIN
|
||
|
||
v_fielddelimitor := ';';
|
||
header_is_valid := FALSE; -- No header present
|
||
v_aantal_imported := 0;
|
||
|
||
DELETE FROM pzho_imp_mw_inz;
|
||
|
||
FOR rec1 IN c1
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_hint := v_newline;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_personeelsnummer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dienstverbandvolgnummer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Arbeidsrelatiesoort
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Instellingsnummer
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Aantal dienstverbanden
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_voorletters);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_voornamen);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_roepnaam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_voorvoegsel);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_achternaam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_titel);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_titel_na);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Geslacht
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_oslogin);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- AD principle name
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_email);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_in_dienst);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_uit_dienst);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Organisatienaam
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Kostenplaatscode
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Personeelsnummer leidinggevende
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Personeelsnummer vervangende leidinggevende
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_begin_dienstv);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_einde_dienstv);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_arbeidsuren);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- feitelijke uren
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_werkdagen);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_functie_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_functie_omschrijving);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Inhoudelijke functie
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Werkzaamheden
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatiecode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouwcode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_verdiepingscode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimtenr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Lang kamernummer
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Kamernummer
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_telefoon);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_telefoon_bgg);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_mobiel);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Geboortedatum
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Standplaats
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- In dienst overheid
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_actief);
|
||
-- in verband met bug FSN#15957
|
||
v_actief := replace(v_actief,'"');
|
||
|
||
IF (header_is_valid = FALSE)
|
||
THEN
|
||
IF v_personeelsnummer = 'PERS_NR'
|
||
OR v_dienstverbandvolgnummer = 'DV_VLGNR'
|
||
OR v_voorletters = 'E_VRLT'
|
||
OR v_voornamen = 'E_VOORNMN'
|
||
OR v_roepnaam = 'E_ROEPNAAM'
|
||
OR v_voorvoegsel = 'SAMEN_VRVG'
|
||
OR v_achternaam = 'SAMEN_NAAM'
|
||
OR v_titel = 'E_TITUL'
|
||
OR v_titel_na = 'E_TITUL_NA'
|
||
OR v_oslogin = 'USERID'
|
||
OR v_email = 'EMAIL'
|
||
OR v_datum_in_dienst = 'INDNST_DT'
|
||
OR v_datum_uit_dienst = 'UITDNST_DT'
|
||
OR v_afdeling_code = 'OE_KORT_NM'
|
||
OR v_datum_begin_dienstv = 'INGANG_DT'
|
||
OR v_datum_einde_dienstv = 'EIND_DT'
|
||
OR v_arbeidsuren = 'UREN_PW'
|
||
OR v_werkdagen = 'WERKDGN'
|
||
OR v_functie_code = 'FUNC_KD'
|
||
OR v_functie_omschrijving = 'FUNC_OMS'
|
||
OR v_locatiecode = 'LOCATIE_KD'
|
||
OR v_gebouwcode = 'GEBOUW_KD'
|
||
OR v_verdiepingscode = 'VERDIEP_KD'
|
||
OR v_ruimtenr = 'RUIMTENR'
|
||
OR v_telefoon = 'TELEFOONNR'
|
||
OR v_telefoon_bgg = 'BGG_TELEFOONNR'
|
||
OR v_mobiel = 'MOBIEL_TELEFOONNR'
|
||
OR v_actief = 'VLAG_ACTIEF'
|
||
THEN
|
||
header_is_valid := TRUE;
|
||
END IF;
|
||
ELSE
|
||
IF header_is_valid = TRUE AND v_personeelsnummer IS NOT NULL
|
||
THEN
|
||
INSERT INTO pzho_imp_mw_inz
|
||
(personeelsnummer,
|
||
dienstverbandvolgnummer,
|
||
voorletters,
|
||
voornamen,
|
||
roepnaam,
|
||
voorvoegsel,
|
||
achternaam,
|
||
titel,
|
||
titel_na,
|
||
oslogin,
|
||
email,
|
||
datum_in_dienst,
|
||
datum_uit_dienst,
|
||
afdeling_code,
|
||
begin_dienstverband,
|
||
einde_dienstverband,
|
||
arbeidsuren,
|
||
werkdagen,
|
||
functie_code,
|
||
functie_omschrijving,
|
||
locatie_code,
|
||
gebouw_code,
|
||
verdieping_code,
|
||
ruimtenr,
|
||
telefoonnr,
|
||
telefoonnr_bgg,
|
||
mobielnr,
|
||
actief
|
||
)
|
||
VALUES (SUBSTR (v_personeelsnummer, 1, 6),
|
||
SUBSTR (v_dienstverbandvolgnummer, 1, 3),
|
||
SUBSTR (v_voorletters, 1, 6),
|
||
SUBSTR (v_voornamen, 1, 30),
|
||
SUBSTR (v_roepnaam, 1, 30),
|
||
SUBSTR (v_voorvoegsel, 1, 10),
|
||
SUBSTR (v_achternaam, 1, 30),
|
||
SUBSTR (v_titel, 1, 15),
|
||
SUBSTR (v_titel_na, 1, 15),
|
||
SUBSTR (v_oslogin, 1, 30),
|
||
SUBSTR (v_email, 1, 50),
|
||
TO_DATE(v_datum_in_dienst, 'YYYY-MM-DD HH24:MI:SS'),
|
||
TO_DATE(v_datum_uit_dienst, 'YYYY-MM-DD HH24:MI:SS'),
|
||
SUBSTR (v_afdeling_code, 1, 7),
|
||
TO_DATE(v_datum_begin_dienstv, 'YYYY-MM-DD HH24:MI:SS'),
|
||
TO_DATE(v_datum_einde_dienstv, 'YYYY-MM-DD HH24:MI:SS'),
|
||
SUBSTR (v_arbeidsuren, 1, 7),
|
||
SUBSTR (v_werkdagen, 1, 7),
|
||
SUBSTR (v_functie_code, 1, 7),
|
||
SUBSTR (v_functie_omschrijving, 1, 50),
|
||
SUBSTR (v_locatiecode, 1, 5),
|
||
SUBSTR (v_gebouwcode, 1, 10),
|
||
SUBSTR (v_verdiepingscode, 1, 10),
|
||
SUBSTR (v_ruimtenr, 1, 10),
|
||
SUBSTR (v_telefoon, 1, 15),
|
||
SUBSTR (v_telefoon_bgg, 1, 15),
|
||
SUBSTR (v_mobiel, 1, 15),
|
||
SUBSTR (v_actief, 1, 1)
|
||
);
|
||
v_aantal_imported := v_aantal_imported + 1;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = FALSE)
|
||
THEN
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Invalid import file',
|
||
'Er is geen geldige Header aangetroffen in het 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', v_errormsg, v_hint);
|
||
END;
|
||
/
|
||
|
||
|
||
-- Update afdelingen
|
||
CREATE OR REPLACE PROCEDURE pzho_update_afdeling (p_import_key IN NUMBER)
|
||
AS
|
||
/*
|
||
1. Technische documentatie: PZHO#274.doc (05-09-2006)
|
||
*/
|
||
-- Constanten
|
||
c_maxvariation NUMBER := 180;
|
||
c_commitbuffer NUMBER := 1000;
|
||
-- om de zoveel committen
|
||
v_buffercount NUMBER := 0;
|
||
|
||
CURSOR c_afd_del
|
||
IS
|
||
SELECT a.prs_afdeling_key,
|
||
a.prs_afdeling_naam,
|
||
afd.afdeling_code,
|
||
ab.niveau,
|
||
prs_afdeling_omschrijving
|
||
FROM prs_afdeling a,
|
||
pzho_imp_afdeling afd,
|
||
prs_v_afdeling_boom ab
|
||
WHERE a.prs_afdeling_naam = afd.afdeling_code(+)
|
||
AND a.prs_afdeling_naam IS NOT NULL
|
||
AND afd.afdeling_code IS NULL
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key(+)
|
||
--AND a.prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%'
|
||
--AND 1=2
|
||
ORDER BY 4 DESC, 2, 1;
|
||
|
||
CURSOR c_afd_upd
|
||
IS
|
||
-- Parent afdelingen eerst. (order by prs_afdeling_niveau)
|
||
SELECT a.prs_afdeling_key prs_afdeling_key,
|
||
afd.afdeling_code prs_afdeling_naam,
|
||
afd.afdeling_naam prs_afdeling_omschrijving,
|
||
afd.kostenplaats_code prs_kostenplaats_code,
|
||
afd.afdeling_niveau prs_afdeling_niveau,
|
||
afd.afdeling_code_0 prs_afdeling_naam0,
|
||
afd.afdeling_code_1 prs_afdeling_naam1,
|
||
afd.afdeling_code_2 prs_afdeling_naam2,
|
||
afd.afdeling_code_3 prs_afdeling_naam3,
|
||
afd.leiding_personeelsnummer prs_perslid_nr,
|
||
afd.leiding_naam prs_perslid_naam,
|
||
afd.leiding_roepnaam prs_perslid_roepnaam,
|
||
afd.leiding_gebruiknaam prs_perslid_oslogin
|
||
FROM pzho_imp_afdeling afd,
|
||
prs_afdeling a
|
||
WHERE afd.afdeling_code = a.prs_afdeling_naam(+)
|
||
AND a.prs_afdeling_verwijder(+) IS NULL
|
||
--AND afd.afdeling_niveau NOT LIKE '-1'
|
||
AND afd.afdeling_niveau IN ('0','1','2','3','4')
|
||
ORDER BY prs_afdeling_niveau, afd.afdeling_code;
|
||
|
||
-- Ik kan er van uit gaan dat het bedrijf niet veranderd en dat er geen bijkomt!
|
||
|
||
|
||
v_kenmerk_persnr_leiding_key NUMBER(10);
|
||
v_kenmerk_naam_leiding_key NUMBER(10);
|
||
v_kenmerk_roepnaam_leiding_key NUMBER(10);
|
||
v_kenmerk_email_leiding_key NUMBER(10);
|
||
v_email_leiding VARCHAR(49);
|
||
v_afdeling_key NUMBER (10);
|
||
v_afdeling_parentkey NUMBER (10);
|
||
v_afdeling_parentnaam VARCHAR2 (30);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_kostenplaats_code VARCHAR2 (30);
|
||
v_afdeling_bedrijfkey NUMBER (10);
|
||
v_perslid_nr VARCHAR2 (16);
|
||
v_perslid_key NUMBER (10);
|
||
v_find NUMBER (10);
|
||
|
||
rec_afd_del c_afd_del%ROWTYPE;
|
||
rec_afd_upd c_afd_upd%ROWTYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_action VARCHAR (10);
|
||
v_count NUMBER (10);
|
||
v_update BOOLEAN;
|
||
v_aktie VARCHAR (10);
|
||
v_afdeling_count_imp NUMBER;
|
||
v_afdeling_count_fclt NUMBER;
|
||
v_afdeling_newcount_fclt NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
l_validatie NUMBER;
|
||
BEGIN
|
||
-- Init
|
||
|
||
v_kenmerk_persnr_leiding_key :=1060;
|
||
v_kenmerk_naam_leiding_key :=1061;
|
||
v_kenmerk_roepnaam_leiding_key :=1062;
|
||
v_kenmerk_email_leiding_key :=1140;
|
||
|
||
v_update := TRUE;
|
||
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Facilitor Afdelingen import version ' || currentversion, '$Revision$');
|
||
|
||
-- #Import
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0
|
||
INTO v_afdeling_count_imp
|
||
FROM pzho_imp_afdeling;
|
||
|
||
-- Informatieve logging, zien we gelijk hoe laat het was
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen afdelingen: ' || TO_CHAR (v_afdeling_count_imp), '');
|
||
|
||
-- #Actieve afdelingen
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0
|
||
INTO v_afdeling_count_fclt
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%';
|
||
|
||
-- v_afdleing_count_fclt = 1 bij initiele situatie (of er is maar 1 afdeling aanwezig = > ook doorgaan!)
|
||
-- IF v_afdeling_count_imp = 1
|
||
-- OR 100 * ABS (v_afdeling_count_imp - v_afdeling_count_fclt) / v_afdeling_count_fclt > c_maxvariation
|
||
IF ((v_afdeling_count_fclt <> 1)
|
||
AND ((v_afdeling_count_imp = 1)
|
||
OR (100 * ABS (v_afdeling_count_imp - v_afdeling_count_fclt) / v_afdeling_count_fclt > c_maxvariation)))
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Het verschil tussen de actieve afdelingen ('
|
||
|| TO_CHAR (v_afdeling_count_fclt)
|
||
|| ') en te importeren aantallen ('
|
||
|| TO_CHAR (v_afdeling_count_imp)
|
||
|| ') is te groot',
|
||
'Zie Specificaties: De afwijking is teveel en bedraagt '
|
||
|| TO_CHAR (100 * ABS (v_afdeling_count_fclt - v_afdeling_count_imp) / v_afdeling_count_fclt,
|
||
'9999999D9'
|
||
)
|
||
|| '%.'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
v_errormsg := 'Try to open cursor';
|
||
v_action := 'DELETE';
|
||
|
||
FOR rec_afd_del IN c_afd_del
|
||
LOOP
|
||
BEGIN
|
||
v_afdeling_key := rec_afd_del.prs_afdeling_key;
|
||
v_errormsg := 'Verwijderen van de afdeling is NIET gelukt';
|
||
v_errorhint := 'Heeft de afdeling met prs_afdeling_key ' || TO_CHAR (v_afdeling_key) || ' historie?';
|
||
|
||
|
||
-- Controleer of er ACTUELE verplichtingen zijn
|
||
-- View prs_v_verpl_afdeling aangemaakt
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM pzho_v_verpl_afdeling pv --prs_v_verplichting pv,
|
||
WHERE pv.prs_afdeling_key = v_afdeling_key;
|
||
|
||
IF v_count > 0 THEN
|
||
IF rec_afd_del.prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%' THEN
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_omschrijving = SUBSTR ('INACTIEF: ' || prs_afdeling_omschrijving, 1, 60)
|
||
WHERE prs_afdeling_key = v_afdeling_key
|
||
AND prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%';
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Afdeling als INACTIEF gemarkeerd of was al INACTIEF, afdelingscode: ' || rec_afd_del.prs_afdeling_naam,
|
||
''
|
||
);
|
||
END IF;
|
||
ELSE
|
||
BEGIN
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_verwijder = SYSDATE
|
||
WHERE prs_afdeling_key = v_afdeling_key;
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Afdeling geinactiveerd (verwijderdatum gezet), afdelingscode: ' || rec_afd_del.prs_afdeling_naam,
|
||
''
|
||
);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- Kennelijk heeft de afdeling toch ernstige verplichtingen
|
||
v_errorhint := 'Afdeling heeft nog (max. '
|
||
|| TO_CHAR (v_count)
|
||
|| ') verplichtingen; afdelingscode: '
|
||
|| rec_afd_del.prs_afdeling_naam;
|
||
fac.imp_writelog (p_import_key, 'I', 'Inactiveren afdeling is niet gelukt', v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- fac.imp_writelog (p_import_key,
|
||
-- 'C',
|
||
-- 'Start Update', SYSDATE
|
||
-- );
|
||
COMMIT;
|
||
-- Update
|
||
v_errormsg := 'Try to open cursor';
|
||
v_action := 'UPDATE';
|
||
|
||
FOR rec_afd_upd IN c_afd_upd
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'De afdeling kan niet bepaald worden ' || rec_afd_upd.prs_afdeling_naam;
|
||
-- Init
|
||
v_update := TRUE;
|
||
v_afdeling_key := 0;
|
||
|
||
IF rec_afd_upd.prs_afdeling_key IS NULL
|
||
THEN
|
||
v_aktie := 'INSERT';
|
||
v_errormsg := 'Afdelingsgegevens kunnen niet toegevoegd worden';
|
||
ELSE
|
||
v_aktie := 'UPDATE';
|
||
v_errormsg := 'Afdelingsgegevens kunnen niet gewijzigd worden';
|
||
END IF;
|
||
|
||
-- *** Controle verplichte gegevens + ophalen extra informatie ***
|
||
-- Controle: PRS_AFDELING_CODE
|
||
IF rec_afd_upd.prs_afdeling_naam IS NULL
|
||
THEN
|
||
v_errorhint := 'Afdeling heeft geen afdelingscode; afdelingsomschrijving: ' || rec_afd_upd.prs_afdeling_omschrijving;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: PRS_AFDELING_NAAM
|
||
IF v_update AND rec_afd_upd.prs_afdeling_omschrijving IS NULL
|
||
THEN
|
||
v_errorhint := 'Afdeling heeft geen afdelingsomschrijving; afdelingscode: ' || rec_afd_upd.prs_afdeling_naam;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: PRS_AFDELING_NIVEAU
|
||
IF v_update AND rec_afd_upd.prs_afdeling_niveau IS NULL
|
||
THEN
|
||
v_errorhint := 'Afdeling heeft geen afdelingsniveau; afdelingscode: ' || rec_afd_upd.prs_afdeling_naam;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: PRS_AFDELING_NAAM? (is parent naam aanwezig)
|
||
-- als niveau is 0 dan geen parent maar prs_bedrijf_key = 1
|
||
-- als niveau is -1 dan is het het bedrijf
|
||
v_afdeling_parentkey := NULL;
|
||
IF v_update AND
|
||
((rec_afd_upd.prs_afdeling_niveau = 1 AND rec_afd_upd.prs_afdeling_naam0 IS NULL) OR
|
||
(rec_afd_upd.prs_afdeling_niveau = 2 AND rec_afd_upd.prs_afdeling_naam1 IS NULL) OR
|
||
(rec_afd_upd.prs_afdeling_niveau = 3 AND rec_afd_upd.prs_afdeling_naam2 IS NULL) OR
|
||
(rec_afd_upd.prs_afdeling_niveau = 4 AND rec_afd_upd.prs_afdeling_naam3 IS NULL))
|
||
THEN
|
||
v_errorhint := 'Afdeling heeft geen parent; afdelingscode: ' || rec_afd_upd.prs_afdeling_naam;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
ELSIF v_update AND
|
||
((rec_afd_upd.prs_afdeling_niveau = 1) OR (rec_afd_upd.prs_afdeling_niveau = 2) OR
|
||
(rec_afd_upd.prs_afdeling_niveau = 3) OR (rec_afd_upd.prs_afdeling_niveau = 4))
|
||
THEN
|
||
BEGIN
|
||
IF rec_afd_upd.prs_afdeling_niveau = '1'
|
||
THEN
|
||
v_afdeling_parentnaam := rec_afd_upd.prs_afdeling_naam0;
|
||
v_afdeling_bedrijfkey := NULL;
|
||
END IF;
|
||
IF rec_afd_upd.prs_afdeling_niveau = '2'
|
||
THEN
|
||
v_afdeling_parentnaam := rec_afd_upd.prs_afdeling_naam1;
|
||
v_afdeling_bedrijfkey := NULL;
|
||
END IF;
|
||
IF rec_afd_upd.prs_afdeling_niveau = '3'
|
||
THEN
|
||
v_afdeling_parentnaam := rec_afd_upd.prs_afdeling_naam2;
|
||
v_afdeling_bedrijfkey := NULL;
|
||
END IF;
|
||
IF rec_afd_upd.prs_afdeling_niveau = '4'
|
||
THEN
|
||
v_afdeling_parentnaam := rec_afd_upd.prs_afdeling_naam3;
|
||
v_afdeling_bedrijfkey := NULL;
|
||
END IF;
|
||
|
||
-- Bepaal de afdelingskey van de parent
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_parentkey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_naam = v_afdeling_parentnaam
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Parentafdeling '
|
||
|| v_afdeling_parentnaam
|
||
|| ' bestaat niet; afdelingscode: '
|
||
|| rec_afd_upd.prs_afdeling_naam;
|
||
|
||
-- Kennelijk is de afdeling niet gevonden
|
||
IF (v_aktie = 'INSERT')
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
ELSE
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Parentafdeling van de afdeling kan niet gewijzigd worden, evt. andere wijzigingen worden ook genegeerd.',
|
||
v_errorhint
|
||
);
|
||
END IF;
|
||
WHEN OTHERS
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Kan Parentafdeling ' || v_afdeling_parentnaam || ' niet eenduidig bepalen?!';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
ELSIF v_update AND rec_afd_upd.prs_afdeling_niveau = '0'
|
||
THEN
|
||
v_afdeling_parentkey := NULL;
|
||
v_afdeling_bedrijfkey := 1;
|
||
ELSIF v_update AND rec_afd_upd.prs_afdeling_niveau = '-1'
|
||
THEN
|
||
v_afdeling_parentkey := NULL;
|
||
v_afdeling_bedrijfkey := NULL;
|
||
END IF;
|
||
|
||
|
||
|
||
-- Controle: PRS_KOSTENPLAATS_CODE
|
||
IF v_update AND rec_afd_upd.prs_kostenplaats_code IS NOT NULL
|
||
THEN
|
||
v_kostenplaats_code := RTRIM (rec_afd_upd.prs_kostenplaats_code);
|
||
|
||
BEGIN
|
||
-- Bepaal de key van de kostenplaats
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE UPPER(prs_kostenplaats_nr) = UPPER(v_kostenplaats_code)
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errormsg := 'prs_kostenplaats ' || v_kostenplaats_code || ' bestaat niet';
|
||
|
||
-- Functie bestaat kennelijk niet, maak 'm maar aan
|
||
INSERT INTO prs_kostenplaats
|
||
(prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module
|
||
)
|
||
VALUES (v_kostenplaats_code,
|
||
v_kostenplaats_code,
|
||
'PRS'
|
||
);
|
||
COMMIT;
|
||
|
||
-- Wat is de key van deze nieuwe geworden?
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = v_kostenplaats_code
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errorhint := 'Kostenplaats '
|
||
|| v_kostenplaats_code
|
||
|| ' kan niet bepaald worden; afdelingscode: '
|
||
|| rec_afd_upd.prs_afdeling_naam;
|
||
v_update := FALSE;
|
||
END;
|
||
END IF;
|
||
|
||
-- *** Daadwerkelijk insert/update prs_afdeling ***
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
IF v_aktie = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Afdeling kan niet worden toegevoegd';
|
||
|
||
-- De volgende flexkenmerken toevoegen
|
||
--afd.leiding_personeelsnummer prs_perslid_nr,
|
||
--afd.leiding_naam prs_perslid_naam,
|
||
--afd.leiding_roepnaam prs_perslid_roepnaam,
|
||
--afd.leiding_gebruiknaam prs_perslid_oslogin
|
||
INSERT INTO prs_afdeling
|
||
(prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
prs_kostenplaats_key,
|
||
prs_afdeling_parentkey,
|
||
prs_bedrijf_key
|
||
)
|
||
VALUES (rec_afd_upd.prs_afdeling_naam,
|
||
rec_afd_upd.prs_afdeling_omschrijving,
|
||
v_kostenplaats_key,
|
||
v_afdeling_parentkey,
|
||
v_afdeling_bedrijfkey
|
||
);
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Nieuwe afdeling toegevoegd',
|
||
'afdelingsomschrijving/afdelingscode: '
|
||
|| rec_afd_upd.prs_afdeling_omschrijving
|
||
|| '/'
|
||
|| rec_afd_upd.prs_afdeling_naam
|
||
);
|
||
|
||
-- Wat is de key van deze nieuwe geworden?
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_naam = rec_afd_upd.prs_afdeling_naam
|
||
AND prs_afdeling_omschrijving = rec_afd_upd.prs_afdeling_omschrijving
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
ELSE -- v_aktie = 'UPDATE'
|
||
v_errormsg := 'Afdeling kan niet worden gewijzigd';
|
||
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_naam = rec_afd_upd.prs_afdeling_naam,
|
||
prs_afdeling_omschrijving = rec_afd_upd.prs_afdeling_omschrijving,
|
||
prs_kostenplaats_key = v_kostenplaats_key,
|
||
prs_afdeling_parentkey = v_afdeling_parentkey,
|
||
prs_bedrijf_key = v_afdeling_bedrijfkey
|
||
WHERE prs_afdeling_key = rec_afd_upd.prs_afdeling_key
|
||
AND prs_afdeling_naam = rec_afd_upd.prs_afdeling_naam
|
||
AND ( prs_afdeling_naam <> rec_afd_upd.prs_afdeling_naam
|
||
OR prs_afdeling_omschrijving <> rec_afd_upd.prs_afdeling_omschrijving
|
||
OR nvl(prs_kostenplaats_key, -1) <> nvl(v_kostenplaats_key,-1)
|
||
OR nvl(prs_afdeling_parentkey, -1) <> nvl(v_afdeling_parentkey, -1)
|
||
OR nvl(prs_bedrijf_key, -1) <> nvl(v_afdeling_bedrijfkey, -1)
|
||
);
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Afdeling bijgewerkt (indien nodig)',
|
||
'afdelingsomschrijving/afdelingscode: '
|
||
|| rec_afd_upd.prs_afdeling_omschrijving
|
||
|| '/'
|
||
|| rec_afd_upd.prs_afdeling_naam
|
||
);
|
||
|
||
-- Wat is de key van deze afdeling?
|
||
v_afdeling_key := rec_afd_upd.prs_afdeling_key;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
v_errorhint := ' {' || v_errormsg || '}; afdelingscode: ' || rec_afd_upd.prs_afdeling_naam;
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
|
||
-- *** insert/update van de vier kenmerken van de afdeling ***
|
||
BEGIN
|
||
SELECT max(substr(prs_perslid_email, 1, 49))
|
||
INTO v_email_leiding
|
||
FROM prs_perslid p
|
||
WHERE SUBSTR (p.prs_perslid_nr, 1, INSTR (p.prs_perslid_nr, '/') - 1) = rec_afd_upd.prs_perslid_nr;
|
||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||
v_email_leiding := 'Geen';
|
||
END;
|
||
|
||
-- De volgende flexkenmerken toevoegen
|
||
-- afd.leiding_personeelsnummer prs_perslid_nr,
|
||
-- afd.leiding_naam prs_perslid_naam,
|
||
-- afd.leiding_roepnaam prs_perslid_roepnaam,
|
||
-- afd.leiding_email prs_perslid_email,
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'A', v_kenmerk_persnr_leiding_key, v_afdeling_key, rec_afd_upd.prs_perslid_nr);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'A', v_kenmerk_naam_leiding_key, v_afdeling_key, rec_afd_upd.prs_perslid_naam);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'A', v_kenmerk_roepnaam_leiding_key, v_afdeling_key, rec_afd_upd.prs_perslid_roepnaam);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'A', v_kenmerk_email_leiding_key, v_afdeling_key, v_email_leiding);
|
||
|
||
|
||
|
||
v_buffercount := v_buffercount + 1;
|
||
|
||
IF v_buffercount >= c_commitbuffer
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_afdeling_newcount_fclt
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Aantal actieve afdelingen vooraf: '
|
||
|| TO_CHAR (v_afdeling_count_fclt)
|
||
|| ' nu: '
|
||
|| TO_CHAR (v_afdeling_newcount_fclt),
|
||
''
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
-- Update medewerkers
|
||
CREATE OR REPLACE PROCEDURE pzho_update_mw_inz (p_import_key IN NUMBER)
|
||
AS
|
||
/*
|
||
1. Technische documentatie: PZHO#xxx.doc (05-09-2006)
|
||
*/
|
||
-- Constanten
|
||
c_maxvariation NUMBER := 50;
|
||
c_commitbuffer NUMBER := 1000;
|
||
-- om de zoveel committen
|
||
v_buffercount NUMBER := 0;
|
||
|
||
CURSOR c_fun_del
|
||
IS
|
||
SELECT f.prs_srtperslid_key,
|
||
f.prs_srtperslid_omschrijving,
|
||
fun.functie_code,
|
||
fun.functie_omschrijving
|
||
FROM prs_srtperslid f,
|
||
(SELECT distinct functie_code, functie_omschrijving from pzho_imp_mw_inz) fun
|
||
WHERE UPPER (f.prs_srtperslid_omschrijving) = UPPER (SUBSTR(fun.functie_code(+) || ' - ' || fun.functie_omschrijving(+), 1, 30))
|
||
AND f.prs_srtperslid_omschrijving IS NOT NULL
|
||
AND fun.functie_code IS NULL
|
||
AND fun.functie_omschrijving IS NULL
|
||
AND f.prs_srtperslid_verwijder IS NULL
|
||
AND f.prs_srtperslid_key IN (
|
||
SELECT f1.prs_srtperslid_key
|
||
FROM prs_srtperslid f1,
|
||
(SELECT distinct functie_code, functie_omschrijving from pzho_imp_mw_inz) fun1
|
||
WHERE UPPER (f1.prs_srtperslid_omschrijving) = UPPER (fun1.functie_omschrijving(+))
|
||
AND f1.prs_srtperslid_omschrijving IS NOT NULL
|
||
AND fun1.functie_code IS NULL
|
||
AND fun1.functie_omschrijving IS NULL
|
||
AND f1.prs_srtperslid_verwijder IS NULL)
|
||
ORDER BY 2, 1;
|
||
|
||
CURSOR c_fun_upd
|
||
IS
|
||
SELECT f.prs_srtperslid_key functiekey,
|
||
fun.functie_code functie_code,
|
||
fun.functie_omschrijving functie_omschrijving
|
||
FROM (SELECT DISTINCT functie_code, functie_omschrijving
|
||
FROM pzho_imp_mw_inz) fun, prs_srtperslid f
|
||
WHERE (SUBSTR (prs_srtperslid_omschrijving,
|
||
1,
|
||
INSTR (prs_srtperslid_omschrijving, ' - ') - 1
|
||
) = fun.functie_code
|
||
OR SUBSTR (prs_srtperslid_omschrijving,
|
||
11,
|
||
INSTR (prs_srtperslid_omschrijving, ' - ') - 11
|
||
) = fun.functie_code)
|
||
AND f.prs_srtperslid_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT NULL, fun.functie_code, functie_omschrijving
|
||
FROM (SELECT DISTINCT functie_code, functie_omschrijving
|
||
FROM pzho_imp_mw_inz) fun
|
||
WHERE NOT EXISTS
|
||
(SELECT prs_srtperslid_key
|
||
FROM prs_srtperslid f
|
||
WHERE f.prs_srtperslid_omschrijving LIKE
|
||
'%' || fun.functie_code || ' - %'
|
||
AND f.prs_srtperslid_verwijder IS NULL)
|
||
ORDER BY functie_code;
|
||
|
||
|
||
CURSOR c_prs_del
|
||
IS
|
||
-- Alle personen die niet in de medewerkerslijst voorkomen
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_naam
|
||
FROM prs_perslid p,
|
||
(select personeelsnummer || '/' || dienstverbandvolgnummer nr, personeelsnummer from pzho_imp_mw_inz
|
||
where nvl(einde_dienstverband, sysdate+10) >= trunc(sysdate)) pv
|
||
WHERE p.prs_perslid_nr = pv.nr(+)
|
||
AND nvl (p.prs_perslid_oslogin, 'QueQueLeQue') NOT LIKE '\_%' ESCAPE '\' -- 'Syntax highlighter correctie :-)
|
||
AND pv.personeelsnummer IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
ORDER BY 2, 1;
|
||
|
||
CURSOR c_prs_upd
|
||
IS
|
||
SELECT *
|
||
FROM pzho_imp_mw_inz
|
||
WHERE nvl (einde_dienstverband, sysdate+10) >= trunc(sysdate)
|
||
ORDER BY personeelsnummer, dienstverbandvolgnummer, actief, afdeling_code;
|
||
|
||
CURSOR c_alg_wp (ruimte_key NUMBER)
|
||
IS
|
||
SELECT wp.prs_werkplek_key
|
||
FROM prs_werkplek wp,
|
||
prs_v_werkplek_bezetting pwp
|
||
WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND prs_alg_ruimte_key = ruimte_key
|
||
AND NVL (wp.prs_werkplek_virtueel, 0) <> 1
|
||
ORDER BY prs_werkplek_bezetting;
|
||
|
||
v_perslid_key NUMBER (10);
|
||
v_srtperslid_key NUMBER (10);
|
||
v_afdeling_key NUMBER (10);
|
||
v_old_afdeling_key NUMBER (10);
|
||
v_srtperslid_omschr VARCHAR (30);
|
||
v_achternaam VARCHAR (80);
|
||
v_oslogin VARCHAR (30);
|
||
v_kenmerk_voornamen NUMBER (10);
|
||
v_kenmerk_titel_na NUMBER (10);
|
||
v_kenmerk_arbeidsuren NUMBER (10);
|
||
v_kenmerk_begininzet NUMBER (10);
|
||
v_kenmerk_eindinzet NUMBER (10);
|
||
v_kenmerk_aanwezigheid NUMBER (10);
|
||
v_kenmerk_nummer_bgg NUMBER (10);
|
||
v_kenmerk_oude_afdeling NUMBER (10);
|
||
v_kenmerk_oude_functie NUMBER (10);
|
||
v_kenmerk_oude_arbeidsuren NUMBER (10);
|
||
v_oude_functie VARCHAR2 (60);
|
||
v_oude_arbeidsuren VARCHAR2 (7);
|
||
|
||
v_functie_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_werkplek_key NUMBER (10);
|
||
v_persoon_bestaat NUMBER (10);
|
||
v_dienstv_bestaat NUMBER (10);
|
||
v_find NUMBER (10);
|
||
v_vorig_personeelsnummer VARCHAR2 (10);
|
||
v_vorig_mut_persnrdienst VARCHAR2 (10);
|
||
v_existing_perslid_key_count NUMBER;
|
||
v_existing_perslid_key NUMBER (10);
|
||
v_suffix_perslidnaam BOOLEAN;
|
||
|
||
|
||
rec_prs_del c_prs_del%ROWTYPE;
|
||
rec_prs_upd c_prs_upd%ROWTYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_action VARCHAR (10);
|
||
v_count NUMBER (10);
|
||
v_update BOOLEAN;
|
||
v_aktie VARCHAR (10);
|
||
v_perslid_count_imp NUMBER;
|
||
v_perslid_count_fclt NUMBER;
|
||
v_perslid_newcount_fclt NUMBER;
|
||
v_aanduiding VARCHAR2 (100);
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
v_debug NUMBER;
|
||
v_debug_str VARCHAR2 (100);
|
||
v_locatie VARCHAR2 (100);
|
||
BEGIN
|
||
|
||
v_kenmerk_voornamen :=1063;
|
||
v_kenmerk_titel_na :=1064;
|
||
v_kenmerk_begininzet :=1000;
|
||
v_kenmerk_arbeidsuren :=1026;
|
||
--v_kenmerk_eindinzet :=1066;
|
||
--v_kenmerk_aanwezigheid :=1080;
|
||
v_kenmerk_nummer_bgg :=1040;
|
||
v_kenmerk_oude_afdeling :=1200;
|
||
v_kenmerk_oude_functie :=1201;
|
||
v_kenmerk_oude_arbeidsuren :=1202;
|
||
|
||
v_update := TRUE;
|
||
v_debug := 0;
|
||
|
||
--Init
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
fac.imp_writelog (p_import_key, 'I', 'Facilitor Medewerkers import version ' || currentversion, '$Revision$');
|
||
|
||
-- #Import
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0
|
||
INTO v_perslid_count_imp
|
||
FROM pzho_imp_mw_inz;
|
||
|
||
-- Informatieve logging, zien we gelijk hoe laat het was
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal aangeboden personen: ' || TO_CHAR (v_perslid_count_imp), '');
|
||
|
||
-- #Actieve personen m<>t personeelsnummer
|
||
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0
|
||
INTO v_perslid_count_fclt
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
|
||
|
||
IF ((v_perslid_count_fclt <> 1)
|
||
AND ((v_perslid_count_imp = 1)
|
||
OR (100 * ABS (v_perslid_count_imp - v_perslid_count_fclt) / v_perslid_count_fclt > c_maxvariation)))
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Het verschil tussen de actieve personen ('
|
||
|| TO_CHAR (v_perslid_count_fclt)
|
||
|| ') en te importeren aantallen ('
|
||
|| TO_CHAR (v_perslid_count_imp)
|
||
|| ') is te groot',
|
||
'Zie Specificaties: De afwijking is teveel en bedraagt '
|
||
|| TO_CHAR (100 * ABS (v_perslid_count_fclt - v_perslid_count_imp) / v_perslid_count_fclt,
|
||
'9999999D9'
|
||
)
|
||
|| '%.'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- **********************************
|
||
-- *
|
||
-- * Verwijder medewerker / inzet
|
||
-- *
|
||
-- **********************************
|
||
v_errormsg := 'Try to open cursor';
|
||
v_action := 'DELETE';
|
||
FOR rec_prs_del IN c_prs_del
|
||
LOOP
|
||
BEGIN
|
||
v_perslid_key := rec_prs_del.prs_perslid_key;
|
||
v_errormsg := 'Verwijderen van de persoon is NIET gelukt';
|
||
v_errorhint := 'Heeft de persoon met prs_perslid_key ' || TO_CHAR (v_perslid_key) || ' historie?';
|
||
|
||
-- Controleer of er ACTUELE verplichtingen zijn
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM pzho_v_verplichting pv
|
||
WHERE pv.prs_perslid_key = v_perslid_key;
|
||
|
||
IF v_count > 0
|
||
THEN
|
||
IF rec_prs_del.prs_perslid_naam NOT LIKE 'INACTIEF:%' THEN
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_naam = SUBSTR ('INACTIEF: ' || prs_perslid_naam, 1, 30),
|
||
prs_perslid_oslogin = null
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Persoon als INACTIEF gemarkeerd, personeelsnummer: ' || rec_prs_del.prs_perslid_nr,
|
||
''
|
||
);
|
||
END IF;
|
||
ELSE
|
||
BEGIN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_verwijder = SYSDATE
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = v_perslid_key;
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Persoon verwijderdatum gezet, personeelsnummer: ' || rec_prs_del.prs_perslid_nr,
|
||
''
|
||
);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- Kennelijk heeft de persoon toch ernstige verplichtingen
|
||
v_errorhint := 'Persoon heeft nog (max. '
|
||
|| TO_CHAR (v_count)
|
||
|| ') verplichtingen; personeelsnummer: '
|
||
|| rec_prs_del.prs_perslid_nr;
|
||
fac.imp_writelog (p_import_key, 'I', 'Inactiveren persoon is niet gelukt', v_errorhint);
|
||
END;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
-- fac.imp_writelog (p_import_key,
|
||
-- 'C',
|
||
-- 'Start Update', SYSDATE
|
||
-- );
|
||
COMMIT;
|
||
|
||
-- **********************************
|
||
-- *
|
||
-- * Verwijder functie
|
||
-- *
|
||
-- **********************************
|
||
v_errormsg := 'Try to open cursor';
|
||
v_action := 'DELETE';
|
||
|
||
FOR rec_fun_del IN c_fun_del
|
||
LOOP
|
||
BEGIN
|
||
v_functie_key := rec_fun_del.prs_srtperslid_key;
|
||
v_errormsg := 'Verwijderen van de functie is NIET gelukt';
|
||
v_errorhint := 'Heeft de functie met prs_functie_key ' || TO_CHAR (v_functie_key) || ' historie?';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_perslid p
|
||
WHERE p.prs_srtperslid_key = v_functie_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- Functie (personen met functie) heeft geen enkele (actuele of historische) verplichting
|
||
v_errorhint := 'Verwijderen van functie met key ' || TO_CHAR (v_functie_key);
|
||
|
||
UPDATE prs_srtperslid
|
||
SET prs_srtperslid_verwijder = SYSDATE
|
||
WHERE prs_srtperslid_key = v_functie_key;
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Functie verwijderdatum gezet, functie omschrijving: ' || rec_fun_del.prs_srtperslid_omschrijving,
|
||
v_errorhint
|
||
);
|
||
ELSE
|
||
-- Controleer of er ACTUELE verplichtingen zijn
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_perslid p
|
||
WHERE p.prs_srtperslid_key = v_functie_key
|
||
AND p.prs_perslid_verwijder IS NULL;
|
||
|
||
IF v_count > 0
|
||
THEN
|
||
UPDATE prs_srtperslid
|
||
SET prs_srtperslid_omschrijving = SUBSTR ('INACTIEF: ' || prs_srtperslid_omschrijving, 1, 30)
|
||
WHERE prs_srtperslid_key = v_functie_key
|
||
AND prs_srtperslid_omschrijving NOT LIKE 'INACTIEF:%';
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Functie als INACTIEF gemarkeerd of was al INACTIEF',
|
||
'functie omschrijving: ' || rec_fun_del.prs_srtperslid_omschrijving
|
||
);
|
||
ELSE
|
||
BEGIN
|
||
UPDATE prs_srtperslid
|
||
SET prs_srtperslid_verwijder = SYSDATE
|
||
WHERE prs_srtperslid_key = v_functie_key;
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Functie geinactiveerd, functie omschrijving: ' || rec_fun_del.prs_srtperslid_omschrijving,
|
||
''
|
||
);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- Kennelijk heeft de functie toch ernstige verplichtingen
|
||
v_errorhint := 'Functie heeft nog (max. '
|
||
|| TO_CHAR (v_count)
|
||
|| ') verplichtingen; functie omschrijving: '
|
||
|| rec_fun_del.prs_srtperslid_omschrijving;
|
||
fac.imp_writelog (p_import_key, 'I', 'Inactiveren functie is niet gelukt', v_errorhint);
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- **********************************
|
||
-- *
|
||
-- * Update functie
|
||
-- *
|
||
-- **********************************
|
||
FOR rec_fun_upd IN c_fun_upd
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'De functie kan niet bepaald worden ' || rec_fun_upd.functie_code;
|
||
-- Init
|
||
v_update := TRUE;
|
||
v_functie_key := 0;
|
||
|
||
IF rec_fun_upd.functiekey IS NULL
|
||
THEN
|
||
v_aktie := 'INSERT';
|
||
v_errormsg := 'Functiegegevens kunnen niet toegevoegd worden';
|
||
ELSE
|
||
v_aktie := 'UPDATE';
|
||
v_errormsg := 'Functiegegevens kunnen niet gewijzigd worden';
|
||
END IF;
|
||
|
||
-- *** Controle verplichte gegevens + ophalen extra informatie ***
|
||
-- Controle: FUNCTIE_CODE
|
||
IF rec_fun_upd.functie_code IS NULL
|
||
THEN
|
||
v_errorhint := 'Functie heeft geen functiecode; functieomschrijving: ' || rec_fun_upd.functie_omschrijving;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: FUNCTIE_OMSCHRIJVING
|
||
IF v_update AND rec_fun_upd.functie_omschrijving IS NULL
|
||
THEN
|
||
v_errorhint := 'Functie heeft geen functieomschrijving; functiecode: ' || rec_fun_upd.functie_code;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
|
||
-- *** Daadwerkelijk insert/update prs_srtperslid ***
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
IF v_aktie = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Functie kan niet worden toegevoegd';
|
||
|
||
INSERT INTO prs_srtperslid
|
||
(prs_srtperslid_omschrijving
|
||
)
|
||
VALUES (SUBSTR(rec_fun_upd.functie_code || ' - ' || rec_fun_upd.functie_omschrijving, 1, 30)
|
||
);
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Nieuwe functie toegevoegd',
|
||
'functiecode - functieomschrijving: '
|
||
|| rec_fun_upd.functie_code
|
||
|| ' - '
|
||
|| rec_fun_upd.functie_omschrijving
|
||
);
|
||
|
||
-- Wat is de key van deze nieuwe geworden?
|
||
SELECT prs_srtperslid_key
|
||
INTO v_functie_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_omschrijving = SUBSTR(rec_fun_upd.functie_code || ' - ' || rec_fun_upd.functie_omschrijving, 1, 30)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
ELSE -- v_aktie = 'UPDATE'
|
||
v_errormsg := 'Functie kan niet worden gewijzigd';
|
||
|
||
UPDATE prs_srtperslid
|
||
SET prs_srtperslid_omschrijving = SUBSTR(rec_fun_upd.functie_code
|
||
|| ' - '
|
||
|| rec_fun_upd.functie_omschrijving, 1, 30)
|
||
WHERE prs_srtperslid_key = rec_fun_upd.functiekey;
|
||
COMMIT;
|
||
|
||
v_errormsg := 'Update van functie = ' || SUBSTR(rec_fun_upd.functie_code
|
||
|| ' - '
|
||
|| rec_fun_upd.functie_omschrijving, 1, 30);
|
||
v_errorhint := 'Functie_key = ' || TO_CHAR(rec_fun_upd.functiekey);
|
||
-- fac.imp_writelog (p_import_key, 'C', v_errormsg, v_errorhint);
|
||
|
||
-- Wat is de key van deze functie?
|
||
SELECT prs_srtperslid_key
|
||
INTO v_functie_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_omschrijving = SUBSTR(rec_fun_upd.functie_code || ' - ' || rec_fun_upd.functie_omschrijving, 1, 30)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := ' {' || v_errormsg || '}; functiecode: ' || rec_fun_upd.functie_code;
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
|
||
v_buffercount := v_buffercount + 1;
|
||
|
||
IF v_buffercount >= c_commitbuffer
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- **********************************
|
||
-- *
|
||
-- * Update medewerkers / inzet
|
||
-- *
|
||
-- **********************************
|
||
v_errormsg := 'Try to open cursor';
|
||
v_action := 'UPDATE';
|
||
v_vorig_personeelsnummer := '9999999';
|
||
v_vorig_mut_persnrdienst := '9999999/9';
|
||
FOR rec_prs_upd IN c_prs_upd
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer || ' ' || rec_prs_upd.achternaam;
|
||
-- Init
|
||
|
||
v_update := TRUE;
|
||
|
||
-- bestaat de persoon al in Facilitor?
|
||
SELECT count(*)
|
||
INTO v_persoon_bestaat
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_nr like rec_prs_upd.personeelsnummer || '/%';
|
||
|
||
-- bestaat het dienstverband al?
|
||
SELECT count(*)
|
||
INTO v_dienstv_bestaat
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_nr = rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer;
|
||
|
||
|
||
IF (rec_prs_upd.actief = 'A' and nvl(rec_prs_upd.einde_dienstverband, sysdate + 10) >= trunc(sysdate) AND v_dienstv_bestaat = 0)
|
||
or (rec_prs_upd.actief = 'T' and v_persoon_bestaat = 0)
|
||
THEN
|
||
v_aktie := 'INSERT';
|
||
v_errormsg := 'Persoonsgegevens kunnen niet toegevoegd worden';
|
||
ELSIF rec_prs_upd.actief = 'A' and nvl(rec_prs_upd.einde_dienstverband, sysdate + 10) >= trunc(sysdate)
|
||
THEN
|
||
v_aktie := 'UPDATE';
|
||
v_errormsg := 'Persoonsgegevens kunnen niet gewijzigd worden';
|
||
ELSE
|
||
-- toekomstmutaties e.d.
|
||
v_aktie := 'NONE';
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
IF v_debug = 1 THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Test 2: actie: ' || v_aktie,
|
||
'Naam/persoonsnr: '
|
||
|| rec_prs_upd.achternaam
|
||
|| '/'
|
||
|| rec_prs_upd.personeelsnummer
|
||
);
|
||
END IF;
|
||
|
||
v_afdeling_key := 0;
|
||
v_srtperslid_key := 0;
|
||
v_perslid_key := 0;
|
||
|
||
|
||
-- *** Controle verplichte gegevens + ophalen extra informatie ***
|
||
-- Controle: personeelsnummer
|
||
IF v_update AND rec_prs_upd.personeelsnummer IS NULL
|
||
THEN
|
||
v_errorhint := 'Persoon heeft geen personeelsnummer; achternaam: ' || rec_prs_upd.achternaam;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: dienstverbandvolgnummer
|
||
IF v_update AND rec_prs_upd.dienstverbandvolgnummer IS NULL
|
||
THEN
|
||
v_errorhint := 'Persoon heeft geen dienstverband; personeelsnummer: ' || rec_prs_upd.personeelsnummer;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: achternaam
|
||
IF v_update AND rec_prs_upd.achternaam IS NULL
|
||
THEN
|
||
v_errorhint := 'Persoon heeft geen achternaam; personeelsnummer: ' || rec_prs_upd.personeelsnummer;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
-- Controle: begin_dienstverband
|
||
IF v_update AND rec_prs_upd.begin_dienstverband IS NULL
|
||
THEN
|
||
v_errorhint := 'Persoon heeft geen ingangsdatum; personeelsnummer: ' || rec_prs_upd.personeelsnummer;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF;
|
||
|
||
|
||
v_errorhint := 'De afdeling kan niet bepaald worden ' || rec_prs_upd.afdeling_code;
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
-- Bepaal de afdelingskey; afdelingen worden met een andere import beheerd
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_naam = rec_prs_upd.afdeling_code
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Afdeling '
|
||
|| rec_prs_upd.afdeling_code
|
||
|| ' bestaat niet; personeelsnummer: '
|
||
|| rec_prs_upd.personeelsnummer;
|
||
-- Kennelijk is de afdeling niet gevonden
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
WHEN OTHERS
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Kan Afdeling ' || rec_prs_upd.afdeling_code || ' niet eenduidig bepalen?!';
|
||
END;
|
||
END IF;
|
||
|
||
-- Controle: functie_code
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
-- Bepaal de srtperslid_key
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE (SUBSTR (prs_srtperslid_omschrijving,
|
||
1,
|
||
INSTR (prs_srtperslid_omschrijving, ' - ') - 1
|
||
) = rec_prs_upd.functie_code
|
||
OR SUBSTR (prs_srtperslid_omschrijving,
|
||
11,
|
||
INSTR (prs_srtperslid_omschrijving, ' - ') - 11
|
||
) = rec_prs_upd.functie_code)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Functie '
|
||
|| rec_prs_upd.functie_code
|
||
|| ' bestaat niet; personeelsnummer: '
|
||
|| rec_prs_upd.personeelsnummer;
|
||
-- Kennelijk is de functie niet gevonden
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
WHEN OTHERS
|
||
THEN
|
||
v_update := FALSE;
|
||
v_errorhint := 'Kan Functie ' || rec_prs_upd.functie_code || ' niet eenduidig bepalen?!';
|
||
END;
|
||
END IF;
|
||
|
||
IF v_debug = 1 THEN
|
||
IF v_update THEN v_debug_str := 'TRUE';
|
||
ELSE v_debug_str := 'FALSE';
|
||
END IF;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Test 1: persoon actie:' || v_aktie || ' v_update: ' || v_debug_str ,
|
||
'Naam/persoonsnr: '
|
||
|| rec_prs_upd.achternaam
|
||
|| '/'
|
||
|| rec_prs_upd.personeelsnummer
|
||
);
|
||
END IF;
|
||
|
||
-- *** Daadwerkelijk insert/update prs_perslid ***
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
-- Bepaal of er een persoon is met hetzelfde personeelsnummer
|
||
-- Dan moet er een suffix organisatie_code achter prs_perslid_naam
|
||
-- en een _ voor de naam om ervoor te zorgen dat deze namen onderaan de lijst komen.
|
||
-- Deze medewerkers krijgen ook geen login.
|
||
|
||
IF rec_prs_upd.personeelsnummer = v_vorig_personeelsnummer THEN
|
||
v_achternaam := substr('_' || rec_prs_upd.achternaam, 1, 23) || rec_prs_upd.afdeling_code;
|
||
v_oslogin := '';
|
||
ELSE
|
||
v_achternaam := rec_prs_upd.achternaam;
|
||
v_oslogin := rec_prs_upd.oslogin;
|
||
|
||
END IF;
|
||
|
||
|
||
IF v_aktie = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Persoon kan niet worden toegevoegd';
|
||
|
||
-- Moeten we hier nog iets mee doen???
|
||
-- UPDATE prs_perslid SET prs_perslid_oslogin = NULL WHERE prs_perslid_oslogin = upper(rec_prs_upd.prs_perslid_oslogin);
|
||
|
||
INSERT INTO prs_perslid
|
||
(prs_perslid_nr,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_naam,
|
||
prs_perslid_titel,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_email,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_ingangsdatum,
|
||
prs_perslid_einddatum,
|
||
prs_perslid_telefoonnr,
|
||
prs_afdeling_key,
|
||
prs_srtperslid_key,
|
||
prs_perslid_module,
|
||
fac_profiel_key
|
||
)
|
||
VALUES (rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer,
|
||
rec_prs_upd.voorletters,
|
||
rec_prs_upd.roepnaam,
|
||
rec_prs_upd.voorvoegsel,
|
||
v_achternaam,
|
||
rec_prs_upd.titel,
|
||
v_oslogin,
|
||
rec_prs_upd.email,
|
||
rec_prs_upd.mobielnr,
|
||
rec_prs_upd.datum_in_dienst,
|
||
rec_prs_upd.datum_uit_dienst,
|
||
rec_prs_upd.telefoonnr,
|
||
v_afdeling_key,
|
||
v_srtperslid_key,
|
||
'PRS',
|
||
61
|
||
)
|
||
RETURNING prs_perslid_key
|
||
INTO v_perslid_key;
|
||
COMMIT;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Nieuw persoon toegevoegd',
|
||
'Naam/persoonsnr: '
|
||
|| v_achternaam
|
||
|| '/'
|
||
|| rec_prs_upd.personeelsnummer
|
||
);
|
||
|
||
-- Mandateer nieuwe persoon voor alle kostenplaatsen
|
||
INSERT INTO prs_perslidkostenplaats
|
||
(prs_perslid_key,
|
||
prs_perslidkostenplaats_boeken,
|
||
prs_perslidkostenplaats_inzage
|
||
)
|
||
VALUES (v_perslid_key,
|
||
1,
|
||
0
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
v_perslid_key := null;
|
||
v_errormsg := 'Persoon kan niet worden gewijzigd';
|
||
SELECT prs_perslid_key, prs_afdeling_key
|
||
INTO v_perslid_key, v_old_afdeling_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_nr like rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer;
|
||
|
||
-- voorkom dat wijziging in afdeling notificaties dubbel verzonden worden voor personen met meerdere inzetten onder hetzelfde
|
||
-- dienstverband. We gaan dan alleen de eerste inzet opslaan.
|
||
IF v_vorig_mut_persnrdienst = rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Persoon is voor tweede keer aangeboden ',
|
||
'Naam-persoonsnr: '
|
||
|| v_achternaam
|
||
|| '-'
|
||
|| v_vorig_mut_persnrdienst
|
||
);
|
||
v_update := FALSE;
|
||
ELSE
|
||
IF v_afdeling_key <> v_old_afdeling_key THEN
|
||
-- stuur notificatie naar de afdeling ICT
|
||
-- afzender key 14424 = Facilitor
|
||
-- to key 11641 = ICT Notificatie
|
||
|
||
fac.putnotificationsrtprio (14424, 11641, 'PRSMAI', v_perslid_key, 'Organisatiecode van ' || v_achternaam || ' is gewijzigd m.i.v. ' || TO_CHAR (SYSDATE, 'dd-mm-yyyy') || '.', 3,
|
||
null, null, null, 1, null);
|
||
|
||
-- haal de oude functie op
|
||
SELECT prs_srtperslid_omschrijving
|
||
INTO v_oude_functie
|
||
FROM prs_srtperslid sp, prs_perslid p
|
||
WHERE sp.prs_srtperslid_key = p.prs_srtperslid_key
|
||
AND p.prs_perslid_key = v_perslid_key;
|
||
|
||
BEGIN
|
||
-- haal het oude dienstverband op
|
||
SELECT prs_kenmerklink_waarde
|
||
INTO v_oude_arbeidsuren
|
||
FROM prs_kenmerklink kl
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND kl.prs_kenmerk_key = v_kenmerk_arbeidsuren
|
||
AND kl.prs_link_key = v_perslid_key;
|
||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||
v_oude_arbeidsuren := NULL;
|
||
END;
|
||
|
||
-- pas kenmerken aan om bon bij notificatie te kunnen voorzien van de juiste velden. PZHO#26917
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_oude_afdeling, v_perslid_key, v_old_afdeling_key);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_oude_functie, v_perslid_key, v_oude_functie);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_oude_arbeidsuren, v_perslid_key, v_oude_arbeidsuren);
|
||
|
||
END IF;
|
||
|
||
v_vorig_mut_persnrdienst := rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer;
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_nr = rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer,
|
||
prs_perslid_ingangsdatum = rec_prs_upd.datum_in_dienst,
|
||
prs_perslid_einddatum = rec_prs_upd.datum_uit_dienst,
|
||
prs_perslid_naam = v_achternaam,
|
||
prs_perslid_tussenvoegsel = rec_prs_upd.voorvoegsel,
|
||
prs_perslid_voorletters = rec_prs_upd.voorletters,
|
||
prs_perslid_voornaam = rec_prs_upd.roepnaam,
|
||
prs_perslid_titel = rec_prs_upd.titel,
|
||
prs_perslid_email = rec_prs_upd.email,
|
||
prs_perslid_mobiel = rec_prs_upd.mobielnr,
|
||
prs_perslid_telefoonnr = rec_prs_upd.telefoonnr,
|
||
prs_afdeling_key = v_afdeling_key,
|
||
prs_srtperslid_key = v_srtperslid_key,
|
||
prs_perslid_oslogin = v_oslogin
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND prs_perslid_nr = rec_prs_upd.personeelsnummer || '/' || rec_prs_upd.dienstverbandvolgnummer
|
||
AND ( prs_perslid_ingangsdatum <> rec_prs_upd.datum_in_dienst
|
||
OR nvl(prs_perslid_einddatum, to_date('99990101', 'yyyymmdd')) <> nvl(rec_prs_upd.datum_uit_dienst, to_date('99990101', 'yyyymmdd'))
|
||
OR prs_perslid_naam <> v_achternaam
|
||
OR NVL (prs_perslid_oslogin, '-') <> NVL(v_oslogin, '-')
|
||
OR NVL (prs_perslid_tussenvoegsel, '-') <> NVL (rec_prs_upd.voorvoegsel, '-')
|
||
OR NVL (prs_perslid_email, '-') <> NVL (rec_prs_upd.email, '-')
|
||
OR NVL (prs_perslid_mobiel, '-') <> NVL (rec_prs_upd.mobielnr, '-')
|
||
OR NVL (prs_perslid_telefoonnr, '-') <> NVL (rec_prs_upd.telefoonnr, '-')
|
||
OR prs_perslid_voorletters <> rec_prs_upd.voorletters
|
||
OR NVL (prs_perslid_voornaam, '-') <> NVL (rec_prs_upd.roepnaam, '-')
|
||
OR prs_perslid_titel <> rec_prs_upd.titel
|
||
OR prs_afdeling_key <> v_afdeling_key
|
||
OR prs_srtperslid_key <> v_srtperslid_key
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'C',
|
||
'Persoon bijgewerkt (indien nodig)',
|
||
'Naam/persoonsnr: '
|
||
|| rec_prs_upd.oslogin
|
||
|| '/'
|
||
|| rec_prs_upd.personeelsnummer
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := ' {' || v_errormsg || '}; personeelsnummer: ' || rec_prs_upd.personeelsnummer || ' key:' || v_perslid_key;
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
|
||
-- *** insert/update van de kenmerken van de persoon ***
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Kenmerken kunnen niet worden toegevoegd';
|
||
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_voornamen, v_perslid_key, rec_prs_upd.voornamen);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_titel_na, v_perslid_key, rec_prs_upd.titel_na);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_arbeidsuren, v_perslid_key, rec_prs_upd.arbeidsuren);
|
||
-- pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_aanwezigheid, v_perslid_key, rec_prs_upd.werkdagen);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_begininzet, v_perslid_key, rec_prs_upd.begin_dienstverband);
|
||
-- pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_eindinzet, v_perslid_key, rec_prs_upd.einde_dienstverband);
|
||
pzho_import.set_prs_kenmerk(p_import_key, 'P', v_kenmerk_nummer_bgg, v_perslid_key, rec_prs_upd.telefoonnr_bgg);
|
||
|
||
v_locatie := rec_prs_upd.locatie_code;
|
||
-- Koppel de persoon aan een werkplek
|
||
IF rec_prs_upd.ruimtenr IS NOT NULL THEN
|
||
IF v_debug = 1 THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'Test 3 Persoon heeft werkplek ingevuld:'||rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code||'-'||rec_prs_upd.verdieping_code||'-'||rec_prs_upd.ruimtenr, v_aanduiding);
|
||
END IF;
|
||
|
||
v_errormsg := 'Locatie niet gevonden';
|
||
-- voorloopnullen van ruimtes staan niet in de importdata.
|
||
SELECT DECODE (l.alg_locatie_key, null, 'Locatie niet gevonden:' || rec_prs_upd.locatie_code,
|
||
DECODE (g.alg_gebouw_key, null, 'Gebouw niet gevonden:' || rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code,
|
||
DECODE (v.alg_verdieping_key, null, 'Verdieping niet gevonden:'|| rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code||'-'||rec_prs_upd.verdieping_code,
|
||
DECODE (r.alg_ruimte_key, null, 'Ruimte niet gevonden:'|| rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code||'-'||rec_prs_upd.verdieping_code||'-'||rec_prs_upd.ruimtenr,'')))), r.alg_ruimte_key
|
||
INTO v_errormsg, v_ruimte_key
|
||
FROM alg_v_aanweziglocatie l,
|
||
alg_v_aanweziggebouw g,
|
||
alg_v_aanwezigverdieping v,
|
||
(SELECT alg_ruimte_key, LPAD(alg_ruimte_nr,4,'0') alg_ruimte_nr, alg_verdieping_key from alg_v_aanwezigruimte) r
|
||
WHERE l.alg_locatie_code(+) = rec_prs_upd.locatie_code
|
||
AND g.alg_gebouw_code(+) = rec_prs_upd.gebouw_code
|
||
AND v.alg_verdieping_code(+) = rec_prs_upd.verdieping_code
|
||
AND alg_ruimte_nr(+) = LPAD(rec_prs_upd.ruimtenr,4,'0')
|
||
AND l.alg_locatie_key = g.alg_locatie_key(+)
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key(+)
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key(+);
|
||
|
||
IF v_debug = 1 THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'Test 4 Persoon heeft werkplek ingevuld:'||rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code||'-'||rec_prs_upd.verdieping_code||'-'||rec_prs_upd.ruimtenr, v_aanduiding);
|
||
END IF;
|
||
-- als de locatie niet gevonden kan worden dan komen we direct in de exception.
|
||
IF v_errormsg = '' OR v_errormsg IS NULL THEN
|
||
IF v_debug = 1 THEN
|
||
fac.imp_writelog (p_import_key, 'I', 'Test 5 Persoon heeft werkplek ingevuld:'||rec_prs_upd.locatie_code||'-'||rec_prs_upd.gebouw_code||'-'||rec_prs_upd.verdieping_code||'-'||rec_prs_upd.ruimtenr, v_aanduiding);
|
||
END IF;
|
||
-- nu op zoek naar een werkplek
|
||
-- heeft de persoon al een werkplek in deze ruimte?
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_perslidwerkplek pwp, prs_werkplek wp
|
||
WHERE wp.prs_alg_ruimte_key = v_ruimte_key
|
||
AND NVL(wp.prs_werkplek_virtueel,0) <> 1
|
||
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND prs_perslid_key = v_perslid_key;
|
||
|
||
IF v_count = 0 THEN
|
||
-- persoon heeft nog geen werkplek in deze ruimte
|
||
v_werkplek_key := NULL;
|
||
FOR rec_alg_wp IN c_alg_wp(v_ruimte_key)
|
||
LOOP
|
||
BEGIN
|
||
IF v_werkplek_key IS NULL THEN
|
||
v_werkplek_key := rec_alg_wp.prs_werkplek_key;
|
||
INSERT INTO prs_perslidwerkplek
|
||
(prs_werkplek_key,
|
||
prs_perslid_key,
|
||
prs_perslidwerkplek_bezetting)
|
||
VALUES
|
||
(v_werkplek_key,
|
||
v_perslid_key,
|
||
100);
|
||
fac.imp_writelog (p_import_key, 'I', 'Persoon aan nieuwe werkplek gekoppeld', v_aanduiding);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_aanduiding);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- verwijder alle
|
||
IF v_ruimte_key IS NOT NULL THEN
|
||
-- verwijder alle werkplekken buiten de gevonden ruimte
|
||
DELETE prs_perslidwerkplek pwp
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND EXISTS (SELECT prs_werkplek_key
|
||
FROM prs_werkplek wp
|
||
WHERE prs_alg_ruimte_key <> v_ruimte_key
|
||
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND NVL(wp.prs_werkplek_virtueel,0) = 0);
|
||
ELSE
|
||
-- verwijder alle werkplekken van deze persoon
|
||
DELETE prs_perslidwerkplek pwp
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND EXISTS (SELECT prs_werkplek_key
|
||
FROM prs_werkplek wp
|
||
WHERE NVL(wp.prs_werkplek_virtueel,0) = 0
|
||
AND pwp.prs_werkplek_key = wp.prs_werkplek_key);
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- indien de locatie niet gevonden kan worden gaan we alleen maar een info loggen.
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := ' {' || v_errormsg || '}; personeelsnummer: ' || v_aanduiding || 'locatie: ' || v_locatie;
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := ' {' || v_errormsg || '}; personeelsnummer: ' || v_aanduiding;
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
|
||
v_buffercount := v_buffercount + 1;
|
||
IF v_buffercount >= c_commitbuffer
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
v_vorig_personeelsnummer := rec_prs_upd.personeelsnummer;
|
||
END LOOP;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_perslid_newcount_fclt
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
|
||
|
||
-- actieve personen zonder personeelsnr worden verwijderd
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Aantal actieve personen (met personeelsnr) vooraf: '
|
||
|| TO_CHAR (v_perslid_count_fclt)
|
||
|| ' nu: '
|
||
|| TO_CHAR (v_perslid_newcount_fclt),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
-- personenview met personeelsnummer zonder dienstverbandvolgnummer
|
||
CREATE OR REPLACE VIEW pzho_v_prs_perslid
|
||
AS
|
||
SELECT p.*,
|
||
SUBSTR (p.prs_perslid_nr, 1, INSTR (p.prs_perslid_nr, '/') - 1)
|
||
personeels_nr
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE prs_perslid_nr IS NOT NULL;
|
||
|
||
-- view met groepering van personen met hetzelfde personeelsnummer met langste einddatum
|
||
CREATE OR REPLACE VIEW pzho_v_prs_perslid_uitdienst
|
||
AS
|
||
SELECT *
|
||
FROM pzho_v_prs_perslid p
|
||
WHERE NOT EXISTS
|
||
(SELECT prs_perslid_key
|
||
FROM pzho_v_prs_perslid p2
|
||
WHERE TRUNC(p2.prs_perslid_einddatum) > TRUNC(p.prs_perslid_einddatum)
|
||
AND p.personeels_nr = p2.personeels_nr);
|
||
|
||
-- view met groepering van personen met hetzelfde personeelsnummer met vroegste begindatum
|
||
CREATE OR REPLACE VIEW pzho_v_prs_perslid_indienst
|
||
AS
|
||
SELECT *
|
||
FROM pzho_v_prs_perslid p
|
||
WHERE NOT EXISTS
|
||
(SELECT prs_perslid_key
|
||
FROM pzho_v_prs_perslid p2
|
||
WHERE TRUNC(p2.prs_perslid_aanmaak) < TRUNC(p.prs_perslid_aanmaak)
|
||
AND p.personeels_nr = p2.personeels_nr);
|
||
|
||
-- View met persoonsrecord-keys die afgelopen 24 uur zijn aangemaakt + key van te notificeren leidinggevende (PZHO#12915)
|
||
-- Aannames: 1. elke(!) nacht - na personen-import - afgehandeld, zodat nieuwe personen bijna niet kunnen worden gemist;
|
||
-- 2. indien vaker afgehandeld, garandeert de notificatietaak dat leidinggevende maar <20><>n notificatie ontvangt;
|
||
-- 3. geen notificatie als leidinggevende onbekend en "zelf-notificatie" als nieuwe persoon is leidinggevende.
|
||
CREATE OR REPLACE VIEW pzho_v_new_prs_records (code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT 'PRSINF', NULL, p_rec.prs_perslid_key,
|
||
'Aanmelding nieuwe medewerker: ' || pf.prs_perslid_naam_full,
|
||
p_new.prs_perslid_key, NULL
|
||
FROM (SELECT prs_perslid_key, prs_afdeling_key
|
||
FROM pzho_v_prs_perslid_indienst
|
||
WHERE prs_perslid_aanmaak > SYSDATE - 1) p_new,
|
||
prs_kenmerklink kl,
|
||
prs_perslid p_rec,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE p_new.prs_afdeling_key = kl.prs_link_key
|
||
AND kl.prs_kenmerklink_niveau = 'A'
|
||
AND kl.prs_kenmerk_key = 1060
|
||
AND SUBSTR (p_rec.prs_perslid_nr,
|
||
1,
|
||
INSTR (p_rec.prs_perslid_nr, '/') - 1
|
||
) = kl.prs_kenmerklink_waarde
|
||
AND p_new.prs_perslid_key = pf.prs_perslid_key
|
||
AND p_rec.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_email IS NOT NULL
|
||
GROUP BY p_rec.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p_new.prs_perslid_key
|
||
ORDER BY p_new.prs_perslid_key;
|
||
|
||
|
||
-- View met nieuwe meldingen met stdmelding ICT nieuwe medewerker.
|
||
-- vakgroep key ict meldingen = 306
|
||
CREATE OR REPLACE VIEW pzho_v_ict_nieuwe_medew (code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT 'MLDMAI', NULL, (SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_ICT'),
|
||
'Facilitor: '||mld_stdmelding_omschrijving||' '
|
||
|| (SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km
|
||
WHERE km.mld_kenmerk_key = 1130
|
||
AND km.mld_melding_key = m.mld_melding_key),
|
||
mld_melding_key, NULL
|
||
FROM mld_melding m,
|
||
mld_stdmelding std
|
||
WHERE std.mld_ins_discipline_key = 306
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND mld_melding_datum > SYSDATE - 1;
|
||
|
||
|
||
-- uitdienst notificaties
|
||
CREATE OR REPLACE VIEW pzho_v_noti_uitdienst (code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
KEY,
|
||
xkey
|
||
)
|
||
AS
|
||
-- uitdienst naar leidinggevende 30 dagen voor uitdiensttreding
|
||
SELECT code, sender, receiver, text, KEY, xkey
|
||
FROM (SELECT 'CUST01' code, NULL sender,
|
||
p_rec.prs_perslid_key receiver,
|
||
'Be<EFBFBD>indiging dienstverband medewerker: '
|
||
|| pf.prs_perslid_naam_full text,
|
||
p.prs_perslid_key KEY, NULL xkey
|
||
FROM pzho_v_prs_perslid_uitdienst p,
|
||
prs_kenmerklink kl,
|
||
prs_perslid p_rec,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 30
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_afdeling_key = kl.prs_link_key
|
||
AND kl.prs_kenmerklink_niveau = 'A'
|
||
AND kl.prs_kenmerk_key = 1060
|
||
AND SUBSTR (p_rec.prs_perslid_nr,
|
||
1,
|
||
INSTR (p_rec.prs_perslid_nr, '/') - 1
|
||
) = kl.prs_kenmerklink_waarde
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_email IS NOT NULL
|
||
UNION ALL
|
||
-- uitdienst naar medewerker 30 dagen voor uitdiensttreding
|
||
SELECT 'CUST01', NULL, p.prs_perslid_key prs_perslid_key_ontv,
|
||
'Be<EFBFBD>indiging dienstverband medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p, prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 30
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
UNION ALL
|
||
-- uitdienst naar huisvesting 30 dagen voor uitdiensttreding
|
||
SELECT 'CUST01', NULL,
|
||
(SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin =
|
||
'_HUISVESTING')
|
||
prs_perslid_key_ontv,
|
||
'Be<EFBFBD>indiging dienstverband medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p, prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 30
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
UNION ALL
|
||
-- uitdienst naar leidinggevende 10 dagen voor uitdiensttreding
|
||
SELECT 'CUST01', NULL,
|
||
p_rec.prs_perslid_key prs_perslid_key_ontv,
|
||
'Herinnering uitdiensttreding medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p,
|
||
prs_kenmerklink kl,
|
||
prs_perslid p_rec,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 10
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_afdeling_key = kl.prs_link_key
|
||
AND kl.prs_kenmerklink_niveau = 'A'
|
||
AND kl.prs_kenmerk_key = 1060
|
||
AND SUBSTR (p_rec.prs_perslid_nr,
|
||
1,
|
||
INSTR (p_rec.prs_perslid_nr, '/') - 1
|
||
) = kl.prs_kenmerklink_waarde
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_email IS NOT NULL
|
||
UNION ALL
|
||
-- uitdienst naar medewerker 10 dagen voor uitdiensttreding
|
||
SELECT 'CUST01', NULL, p.prs_perslid_key prs_perslid_key_ontv,
|
||
'Herinnering uitdiensttreding medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p, prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 10
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
UNION ALL
|
||
-- uitdienst naar leidinggevende 5 dagen voor uitdiensttreding
|
||
SELECT 'CUST03', NULL,
|
||
p_rec.prs_perslid_key prs_perslid_key_ontv,
|
||
'Definitief uitdiensttreding medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p,
|
||
prs_kenmerklink kl,
|
||
prs_perslid p_rec,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE) + 5
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_afdeling_key = kl.prs_link_key
|
||
AND kl.prs_kenmerklink_niveau = 'A'
|
||
AND kl.prs_kenmerk_key = 1060
|
||
AND SUBSTR (p_rec.prs_perslid_nr,
|
||
1,
|
||
INSTR (p_rec.prs_perslid_nr, '/') - 1
|
||
) = kl.prs_kenmerklink_waarde
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_verwijder IS NULL
|
||
AND p_rec.prs_perslid_email IS NOT NULL
|
||
UNION ALL
|
||
-- uitdienst naar ICT op dag van uitdiensttreding
|
||
SELECT 'CUST02', NULL,
|
||
(SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_ICT')
|
||
prs_perslid_key_ontv,
|
||
'Definitief uitdiensttreding medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p, prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE)
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
UNION ALL
|
||
-- uitdienst naar afdeling Beveiliging op dag van uitdiensttreding
|
||
SELECT 'CUST02', NULL,
|
||
(SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin =
|
||
'_BEVEILIGING')
|
||
prs_perslid_key_ontv,
|
||
'Definitief uitdiensttreding medewerker: '
|
||
|| pf.prs_perslid_naam_full,
|
||
p.prs_perslid_key, NULL
|
||
FROM pzho_v_prs_perslid_uitdienst p, prs_v_perslid_fullnames pf
|
||
WHERE TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE)
|
||
AND SUBSTR(p.prs_perslid_naam, 1,1) <> '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL)
|
||
GROUP BY code, sender, receiver, text, KEY, xkey;
|
||
|
||
|
||
/* Formatted on 12-11-2012 10:46:12 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW pzho_v_coda_afgemeld
|
||
(
|
||
regelnummer,
|
||
regeltype,
|
||
regel_key,
|
||
datum,
|
||
afn_kostensoort,
|
||
afn_kostensoort_refcode,
|
||
afn_kostenplaats,
|
||
afn_deelproduct,
|
||
lev_kostensoort,
|
||
lev_kostenplaats,
|
||
lev_deelproduct,
|
||
bedrag,
|
||
referentieregel_1,
|
||
referentieregel_2,
|
||
referentieregel_3,
|
||
referentieregel_4
|
||
)
|
||
AS
|
||
SELECT ROWNUM regelnummer,
|
||
x.regeltype,
|
||
x.regel_key,
|
||
x.datum,
|
||
x.afn_kostensoort,
|
||
x.afn_kostensoort_refcode,
|
||
x.afn_kostenplaats,
|
||
x.afn_deelproduct,
|
||
x.lev_kostensoort,
|
||
x.lev_kostenplaats,
|
||
x.lev_deelproduct,
|
||
x.bedrag,
|
||
x.refregel_1,
|
||
x.refregel_2,
|
||
x.refregel_3,
|
||
x.refregel_4
|
||
FROM (SELECT 'RES_ARTIKEL' regeltype,
|
||
res_rsv_artikel_key regel_key,
|
||
res_rsv_artikel_levering datum,
|
||
kst.prs_kostensoort_oms afn_kostensoort,
|
||
kst.prs_kostensoort_refcode afn_kostensoort_refcode,
|
||
kp.prs_kostenplaats_nr afn_kostenplaats,
|
||
--rr.res_rsv_ruimte_ordernr afn_deelproduct,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_deelproduct,
|
||
ra.res_rsv_artikel_prijs bedrag, -- Totaal voor #art.
|
||
'resnr.' || rr.res_reservering_key refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van host
|
||
af.prs_afdeling_naam
|
||
|| ' - '
|
||
|| af.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. host
|
||
rr.res_rsv_ruimte_omschrijving refregel_4
|
||
FROM res_v_aanwezigrsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline rdi,
|
||
prs_kostensoort kst,
|
||
res_v_aanwezigrsv_ruimte rr,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling af,
|
||
prs_kostenplaats kp,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE ra.res_status_bo_key = 5 -- Uitgevoerd
|
||
AND ra.res_artikel_key = a.res_artikel_key
|
||
AND a.res_discipline_key = rdi.ins_discipline_key
|
||
AND rdi.prs_kostensoort_key =
|
||
kst.prs_kostensoort_key(+)
|
||
AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = af.prs_afdeling_key
|
||
AND rr.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND ra.res_rsv_artikel_afgemeld <
|
||
TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01',
|
||
'yyyymmdd')
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
UNION ALL
|
||
SELECT 'BES_BESTELOPDRACHT' regeltype,
|
||
bo.bes_bestelopdr_key regel_key,
|
||
bo.bes_bestelopdr_leverdatum datum,
|
||
kst.prs_kostensoort_oms afn_kostensoort,
|
||
kst.prs_kostensoort_refcode afn_kostensoort_refcode,
|
||
kp.prs_kostenplaats_nr afn_kostenplaats,
|
||
--b.bes_bestelling_ordernr afn_deelproduct,
|
||
COALESCE (bk.bes_kenmerkbestell_waarde,
|
||
b.bes_bestelling_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_deelproduct,
|
||
(boi.bes_bestelopdr_item_prijs
|
||
* boi.bes_bestelopdr_item_aantal)
|
||
bedrag,
|
||
'besnr.' || b.bes_bestelling_key refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van besteller
|
||
a.prs_afdeling_naam
|
||
|| ' - '
|
||
|| a.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. besteller
|
||
itd.ins_discipline_omschrijving refregel_4
|
||
FROM bes_bestelopdr bo,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg,
|
||
ins_tab_discipline itd,
|
||
prs_kostensoort kst,
|
||
bes_bestelling b,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling a,
|
||
prs_kostenplaats kp,
|
||
--mld_adres m,
|
||
fac_tracking t,
|
||
(SELECT bk.bes_bestelling_key,
|
||
bk.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell bk, bes_kenmerk k
|
||
WHERE bk.bes_kenmerkbestell_verwijder IS NULL
|
||
AND bk.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_kenmerk_verwijder IS NULL
|
||
AND k.bes_srtkenmerk_key = 241) bk
|
||
WHERE bo.bes_bestelopdr_status = 6 -- Geleverd (#besteld=#ontv.)
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = itd.ins_discipline_key
|
||
AND itd.prs_kostensoort_key =
|
||
kst.prs_kostensoort_key(+)
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
--AND b.mld_adres_key_lev = m.mld_adres_key(+)
|
||
AND t.fac_tracking_refkey = bo.bes_bestelopdr_key
|
||
AND t.fac_srtnotificatie_key = 10 -- levering
|
||
AND t.fac_tracking_datum <
|
||
TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01',
|
||
'yyyymmdd')
|
||
AND b.bes_bestelling_key = bk.bes_bestelling_key(+)
|
||
UNION ALL
|
||
SELECT 'MLD_OPDRACHT' regeltype,
|
||
o.mld_opdr_key,
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) datum,
|
||
COALESCE (kst1.prs_kostensoort_oms,
|
||
kst2.prs_kostensoort_oms)
|
||
afn_kostensoort, -- Melding, anders vakgroep
|
||
COALESCE (kst1.prs_kostensoort_refcode,
|
||
kst2.prs_kostensoort_refcode)
|
||
afn_kostensoort_refcode, -- Melding, anders vakgroep
|
||
k.prs_kostenplaats_nr afn_kostenplaats,
|
||
--o.mld_opdr_ordernr afn_deelproduct,
|
||
COALESCE (ok.mld_kenmerkopdr_waarde,
|
||
o.mld_opdr_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_deelproduct,
|
||
o.mld_opdr_kosten,
|
||
'opdrnr.'
|
||
|| o.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van melder
|
||
a.prs_afdeling_naam
|
||
|| ' - '
|
||
|| a.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. melder
|
||
o.mld_opdr_omschrijving refregel_4
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding stm,
|
||
ins_tab_discipline itd,
|
||
prs_kostensoort kst1,
|
||
prs_kostensoort kst2,
|
||
alg_locatie l,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
(SELECT ok.mld_opdr_key, ok.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ok, mld_kenmerk k
|
||
WHERE ok.mld_kenmerkopdr_verwijder IS NULL
|
||
AND ok.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND k.mld_srtkenmerk_key = 752) ok
|
||
WHERE o.mld_statusopdr_key = 6 -- Afgemeld
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = stm.mld_stdmelding_key
|
||
AND stm.prs_kostensoort_key =
|
||
kst1.prs_kostensoort_key(+)
|
||
AND stm.mld_ins_discipline_key = itd.ins_discipline_key
|
||
AND itd.prs_kostensoort_key =
|
||
kst2.prs_kostensoort_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND mld.getopdrachtstatusdate (o.mld_opdr_key, 6) <
|
||
TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01',
|
||
'yyyymmdd')
|
||
AND o.mld_opdr_key = ok.mld_opdr_key(+)) x;
|
||
|
||
/* Formatted on 12-11-2012 10:48:45 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW pzho_v_coda_verwerkt
|
||
(
|
||
regelnummer,
|
||
regeltype,
|
||
regel_key,
|
||
datum,
|
||
afn_kostensoort,
|
||
afn_kostensoort_refcode,
|
||
afn_kostenplaats,
|
||
afn_deelproduct,
|
||
lev_kostensoort,
|
||
lev_kostenplaats,
|
||
lev_deelproduct,
|
||
bedrag,
|
||
referentieregel_1,
|
||
referentieregel_2,
|
||
referentieregel_3,
|
||
referentieregel_4
|
||
)
|
||
AS
|
||
SELECT ROWNUM regelnummer,
|
||
x.regeltype,
|
||
x.regel_key,
|
||
x.datum,
|
||
x.afn_kostensoort,
|
||
x.afn_kostensoort_refcode,
|
||
x.afn_kostenplaats,
|
||
x.afn_deelproduct,
|
||
x.lev_kostensoort,
|
||
x.lev_kostenplaats,
|
||
x.lev_deelproduct,
|
||
x.bedrag,
|
||
x.refregel_1,
|
||
x.refregel_2,
|
||
x.refregel_3,
|
||
x.refregel_4
|
||
FROM (SELECT 'RES_ARTIKEL' regeltype,
|
||
res_rsv_artikel_key regel_key,
|
||
ra.res_rsv_artikel_verwerkt datum,
|
||
kst.prs_kostensoort_oms afn_kostensoort,
|
||
kst.prs_kostensoort_refcode afn_kostensoort_refcode,
|
||
k.prs_kostenplaats_nr afn_kostenplaats,
|
||
--rr.res_rsv_ruimte_ordernr afn_deelproduct,
|
||
COALESCE (rk.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_deelproduct,
|
||
ra.res_rsv_artikel_prijs bedrag, -- Totaal voor #art.
|
||
'resnr.' || rr.res_reservering_key refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van host
|
||
af.prs_afdeling_naam
|
||
|| ' - '
|
||
|| af.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. host
|
||
rr.res_rsv_ruimte_omschrijving refregel_4
|
||
FROM res_v_aanwezigrsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline rdi,
|
||
prs_kostensoort kst,
|
||
res_v_aanwezigrsv_ruimte rr,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling af,
|
||
prs_kostenplaats k,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
rk.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_srtkenmerk_key = 31) rk
|
||
WHERE ra.res_status_bo_key = 6 -- Verwerkt
|
||
AND ra.res_artikel_key = a.res_artikel_key
|
||
AND a.res_discipline_key = rdi.ins_discipline_key
|
||
AND rdi.prs_kostensoort_key =
|
||
kst.prs_kostensoort_key(+)
|
||
AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = af.prs_afdeling_key
|
||
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND rr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
|
||
UNION ALL
|
||
SELECT 'BES_BESTELOPDRACHT' regeltype,
|
||
bo.bes_bestelopdr_key regel_key,
|
||
boi.bes_bestelopdr_item_verwerkt datum,
|
||
kst.prs_kostensoort_oms afn_kostensoort,
|
||
kst.prs_kostensoort_refcode afn_kostensoort_refcode,
|
||
k.prs_kostenplaats_nr afn_kostenplaats,
|
||
--b.bes_bestelling_ordernr afn_deelproduct,
|
||
COALESCE (bk.bes_kenmerkbestell_waarde,
|
||
b.bes_bestelling_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
kst.prs_kostensoort_upper)
|
||
lev_deelproduct,
|
||
(boi.bes_bestelopdr_item_prijs
|
||
* boi.bes_bestelopdr_item_aantal)
|
||
bedrag,
|
||
'besnr.' || b.bes_bestelling_key refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van besteller
|
||
a.prs_afdeling_naam
|
||
|| ' - '
|
||
|| a.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. besteller
|
||
itd.ins_discipline_omschrijving refregel_4
|
||
FROM bes_bestelopdr bo,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg,
|
||
ins_tab_discipline itd,
|
||
prs_kostensoort kst,
|
||
bes_bestelling b,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
--mld_adres m,
|
||
(SELECT bk.bes_bestelling_key,
|
||
bk.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell bk, bes_kenmerk k
|
||
WHERE bk.bes_kenmerkbestell_verwijder IS NULL
|
||
AND bk.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_kenmerk_verwijder IS NULL
|
||
AND k.bes_srtkenmerk_key = 241) bk
|
||
WHERE bo.bes_bestelopdr_status = 7 -- Verwerkt
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = itd.ins_discipline_key
|
||
AND itd.prs_kostensoort_key =
|
||
kst.prs_kostensoort_key(+)
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
--AND b.mld_adres_key_lev = m.mld_adres_key(+)
|
||
AND b.bes_bestelling_key = bk.bes_bestelling_key(+)
|
||
UNION ALL
|
||
SELECT 'MLD_OPDRACHT' regeltype,
|
||
o.mld_opdr_key,
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 7) datum,
|
||
COALESCE (kst1.prs_kostensoort_oms,
|
||
kst2.prs_kostensoort_oms)
|
||
afn_kostensoort, -- Melding, anders vakgroep
|
||
COALESCE (kst1.prs_kostensoort_refcode,
|
||
kst2.prs_kostensoort_refcode)
|
||
afn_kostensoort_refcode, -- Melding, anders vakgroep
|
||
k.prs_kostenplaats_nr afn_kostenplaats,
|
||
--o.mld_opdr_ordernr afn_deelproduct,
|
||
COALESCE (ok.mld_kenmerkopdr_waarde,
|
||
o.mld_opdr_ordernr)
|
||
afn_deelproduct,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 307
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_kostensoort,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 308
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_kostenplaats,
|
||
(SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 309
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_upper =
|
||
COALESCE (kst1.prs_kostensoort_upper,
|
||
kst2.prs_kostensoort_upper))
|
||
lev_deelproduct,
|
||
o.mld_opdr_kosten,
|
||
'opdrnr.'
|
||
|| o.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
refregel_1,
|
||
pf.prs_perslid_naam_full refregel_2, -- Van melder
|
||
a.prs_afdeling_naam
|
||
|| ' - '
|
||
|| a.prs_afdeling_omschrijving
|
||
refregel_3, -- Van afd. melder
|
||
o.mld_opdr_omschrijving refregel_4
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding stm,
|
||
ins_tab_discipline itd,
|
||
prs_kostensoort kst1,
|
||
prs_kostensoort kst2,
|
||
alg_locatie l,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
(SELECT ok.mld_opdr_key, ok.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ok, mld_kenmerk k
|
||
WHERE ok.mld_kenmerkopdr_verwijder IS NULL
|
||
AND ok.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND k.mld_srtkenmerk_key = 752) ok
|
||
WHERE o.mld_statusopdr_key = 7 -- Verwerkt
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = stm.mld_stdmelding_key
|
||
AND stm.prs_kostensoort_key =
|
||
kst1.prs_kostensoort_key(+)
|
||
AND stm.mld_ins_discipline_key = itd.ins_discipline_key
|
||
AND itd.prs_kostensoort_key =
|
||
kst2.prs_kostensoort_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND o.mld_opdr_key = ok.mld_opdr_key(+)) x;
|
||
/* Formatted on 2008/11/20 16:44 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE VIEW pzho_v_rap_export_coda_actual (hide_f_groepering,
|
||
POST,
|
||
doc_code,
|
||
header_descr,
|
||
proposed_no,
|
||
actual_no,
|
||
fclt_f_element1,
|
||
fclt_f_element2,
|
||
fclt_f_element3,
|
||
element4,
|
||
line_description,
|
||
debet,
|
||
credit,
|
||
line_type,
|
||
ext_ref,
|
||
ext_ref_aanvrager,
|
||
ext_ref_organisatie,
|
||
ext_ref_description
|
||
)
|
||
AS
|
||
SELECT groepering, 'post', 'ME-INT', NULL, '1', NULL, kostensoort,
|
||
kostenplaats, deelproduct, NULL,
|
||
referentieregel_1 || ' ' || substr(referentieregel_4,1,20),
|
||
REPLACE (TO_CHAR (debet, '999999999D99'), '.', ','),
|
||
REPLACE (TO_CHAR (credit, '999999999D99'), '.', ','), NULL,
|
||
referentieregel_1, referentieregel_2, referentieregel_3, substr(referentieregel_4,1,200)
|
||
FROM (
|
||
-- Tegenwaarde leverende kant/credit
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0' groepering,
|
||
v.lev_kostensoort kostensoort,
|
||
v.lev_kostenplaats kostenplaats,
|
||
v.lev_deelproduct deelproduct, NULL debet,
|
||
SUM (v.bedrag) credit,
|
||
null referentieregel_1, -- id
|
||
null referentieregel_2, -- naam aanvrager
|
||
null referentieregel_3, -- organisatie
|
||
null referentieregel_4 -- omschrijving
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE v.lev_kostensoort IS NOT NULL
|
||
AND v.lev_kostenplaats IS NOT NULL
|
||
AND v.lev_deelproduct IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0',
|
||
v.lev_kostensoort,
|
||
v.lev_kostenplaats,
|
||
v.lev_deelproduct
|
||
UNION ALL
|
||
-- Doorbelasting afnemende kant/debet
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1' groepering,
|
||
v.afn_kostensoort kostensoort,
|
||
v.afn_kostenplaats kostenplaats,
|
||
v.afn_deelproduct deelproduct, SUM (v.bedrag) debet,
|
||
NULL credit,
|
||
referentieregel_1, -- id
|
||
referentieregel_2, -- naam aanvrager
|
||
referentieregel_3, -- organisatie
|
||
referentieregel_4 -- omschrijving
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE v.afn_kostensoort <> '99999'
|
||
AND v.afn_kostensoort IS NOT NULL
|
||
AND v.afn_kostenplaats IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1',
|
||
v.afn_kostensoort,
|
||
v.afn_kostenplaats,
|
||
v.afn_deelproduct,
|
||
referentieregel_1,
|
||
referentieregel_2,
|
||
referentieregel_3,
|
||
referentieregel_4)
|
||
WHERE debet <> 0 OR credit <> 0
|
||
ORDER BY groepering, kostensoort, kostenplaats, deelproduct,
|
||
referentieregel_1, referentieregel_2, referentieregel_3, referentieregel_4;
|
||
|
||
|
||
/* Formatted on 2008/11/20 16:44 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE VIEW pzho_v_rap_export_coda_frozen (hide_f_groepering,
|
||
fclt_f_maand,
|
||
POST,
|
||
doc_code,
|
||
header_descr,
|
||
proposed_no,
|
||
actual_no,
|
||
fclt_f_element1,
|
||
fclt_f_element2,
|
||
fclt_f_element3,
|
||
element4,
|
||
line_description,
|
||
debet,
|
||
credit,
|
||
line_type,
|
||
ext_ref,
|
||
ext_ref_aanvrager,
|
||
ext_ref_organisatie,
|
||
ext_ref_description
|
||
)
|
||
AS
|
||
SELECT groepering,
|
||
TO_CHAR ( TO_DATE ('01' || TO_CHAR (datum, 'mmyyyy'), 'ddmmyyyy')
|
||
- 1,
|
||
'yyyy-mm'
|
||
) || ' (' || TO_CHAR (datum, 'dd-mm-yyyy') || ')' maand,
|
||
'post', 'ME-INT', NULL, '1', NULL, kostensoort, kostenplaats,
|
||
deelproduct, NULL,
|
||
referentieregel_1 || ' ' || substr(referentieregel_4,1,20),
|
||
REPLACE (TO_CHAR (debet, '999999999D99'), '.', ','),
|
||
REPLACE (TO_CHAR (credit, '999999999D99'), '.', ','), NULL,
|
||
referentieregel_1, referentieregel_2, referentieregel_3, substr(referentieregel_4,1,200)
|
||
FROM (
|
||
-- Tegenwaarde leverende kant/credit
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0' groepering,
|
||
v.lev_kostensoort kostensoort,
|
||
v.lev_kostenplaats kostenplaats,
|
||
v.lev_deelproduct deelproduct, datum, NULL debet,
|
||
SUM (v.bedrag) credit,
|
||
null referentieregel_1, -- id
|
||
null referentieregel_2, -- naam aanvrager
|
||
null referentieregel_3, -- organisatie
|
||
null referentieregel_4 -- omschrijving
|
||
FROM pzho_v_coda_verwerkt v
|
||
WHERE v.lev_kostensoort IS NOT NULL
|
||
AND v.lev_kostenplaats IS NOT NULL
|
||
AND v.lev_deelproduct IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0',
|
||
v.lev_kostensoort,
|
||
v.lev_kostenplaats,
|
||
v.lev_deelproduct,
|
||
datum
|
||
UNION ALL
|
||
-- Doorbelasting afnemende kant/debet
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1' groepering,
|
||
v.afn_kostensoort kostensoort,
|
||
v.afn_kostenplaats kostenplaats,
|
||
v.afn_deelproduct deelproduct, datum,
|
||
SUM (v.bedrag) debet, NULL credit,
|
||
referentieregel_1, -- id
|
||
referentieregel_2, -- naam aanvrager
|
||
referentieregel_3, -- organisatie
|
||
referentieregel_4 -- omschrijving
|
||
FROM pzho_v_coda_verwerkt v
|
||
WHERE v.afn_kostensoort <> '99999'
|
||
AND v.afn_kostensoort IS NOT NULL
|
||
AND v.afn_kostenplaats IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1',
|
||
v.afn_kostensoort,
|
||
v.afn_kostenplaats,
|
||
v.afn_deelproduct,
|
||
datum,
|
||
referentieregel_1,
|
||
referentieregel_2,
|
||
referentieregel_3,
|
||
referentieregel_4)
|
||
WHERE debet <> 0 OR credit <> 0
|
||
ORDER BY groepering, kostensoort, kostenplaats, deelproduct,
|
||
referentieregel_1, referentieregel_2, referentieregel_3, referentieregel_4;
|
||
|
||
|
||
/* Formatted on 2008/11/05 09:38 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE VIEW pzho_v_rap_export_coda_invalid (fclt_f_regeltype,
|
||
regel_key,
|
||
datum,
|
||
fclt_f_afn_kostensoort,
|
||
afn_kostensoort_refcode,
|
||
fclt_f_afn_kostenplaats,
|
||
fclt_f_afn_deelproduct,
|
||
fclt_f_lev_kostensoort,
|
||
fclt_f_lev_kostenplaats,
|
||
fclt_f_lev_deelproduct,
|
||
bedrag,
|
||
referentieregel_1,
|
||
referentieregel_2,
|
||
referentieregel_3
|
||
)
|
||
AS
|
||
SELECT v.regeltype, TO_CHAR (v.regel_key), TO_CHAR (v.datum, 'dd-mm-yyyy'),
|
||
v.afn_kostensoort, v.afn_kostensoort_refcode, v.afn_kostenplaats,
|
||
v.afn_deelproduct, v.lev_kostensoort, v.lev_kostenplaats,
|
||
v.lev_deelproduct,
|
||
REPLACE (TO_CHAR (v.bedrag, '999999999D99'), '.', ','),
|
||
v.referentieregel_1, v.referentieregel_2, v.referentieregel_3
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE COALESCE (v.afn_kostensoort, '-') <> '99999'
|
||
AND ( v.afn_kostensoort IS NULL
|
||
OR v.afn_kostenplaats IS NULL
|
||
OR v.afn_deelproduct IS NULL
|
||
OR v.lev_kostensoort IS NULL
|
||
OR v.lev_kostenplaats IS NULL
|
||
)
|
||
/
|
||
|
||
---- EXPORT
|
||
----
|
||
/* Formatted on 2008/11/20 16:40 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE PROCEDURE pzho_select_coda (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE prepare_doorbelasting (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
-- Cursor over alle regels voor doorbelasting!
|
||
CURSOR c1
|
||
IS
|
||
SELECT groepering, kostensoort, kostenplaats, deelproduct, debet,
|
||
credit
|
||
FROM (
|
||
-- Tegenwaarde leverende kant/credit
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0' groepering,
|
||
v.lev_kostensoort kostensoort,
|
||
v.lev_kostenplaats kostenplaats,
|
||
v.lev_deelproduct deelproduct, NULL debet,
|
||
SUM (v.bedrag) credit
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE v.lev_kostensoort IS NOT NULL
|
||
AND v.lev_kostenplaats IS NOT NULL
|
||
AND v.lev_deelproduct IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#0',
|
||
v.lev_kostensoort,
|
||
v.lev_kostenplaats,
|
||
v.lev_deelproduct
|
||
UNION ALL
|
||
-- Doorbelasting afnemende kant/debet
|
||
SELECT v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1' groepering,
|
||
v.afn_kostensoort kostensoort,
|
||
v.afn_kostenplaats kostenplaats,
|
||
v.afn_deelproduct deelproduct,
|
||
SUM (v.bedrag) debet, NULL credit
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE v.afn_kostensoort <> '99999'
|
||
AND v.afn_kostensoort IS NOT NULL
|
||
AND v.afn_kostenplaats IS NOT NULL
|
||
GROUP BY v.lev_kostensoort
|
||
|| v.lev_kostenplaats
|
||
|| v.lev_deelproduct
|
||
|| '#1',
|
||
v.afn_kostensoort,
|
||
v.afn_kostenplaats,
|
||
v.afn_deelproduct)
|
||
WHERE debet <> 0 OR credit <> 0
|
||
ORDER BY groepering, kostensoort, kostenplaats, deelproduct;
|
||
|
||
export_datum DATE;
|
||
export_maand VARCHAR2 (10);
|
||
regelnr NUMBER;
|
||
BEGIN
|
||
export_datum := SYSDATE;
|
||
export_maand :=
|
||
TO_CHAR ( TO_DATE ('01' || TO_CHAR (export_datum, 'mmyyyy'),
|
||
'ddmmyyyy'
|
||
)
|
||
- 1,
|
||
'mon. yyyy'
|
||
);
|
||
regelnr := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
INSERT INTO pzho_exp_coda
|
||
(regelnummer,
|
||
export_regel,
|
||
export_datum, functie
|
||
)
|
||
VALUES (regelnr,
|
||
'"post";' -- Post
|
||
|| '"ME-INT";' -- Doc Code
|
||
|| '"";' -- Header Description (empty)
|
||
|| '"1";' -- Proposed No.
|
||
|| '"";"' -- Actual No. (empty)
|
||
|| rec.kostensoort -- Element 1
|
||
|| '";"'
|
||
|| rec.kostenplaats -- Element 2
|
||
|| '";"'
|
||
|| rec.deelproduct -- Element 3
|
||
|| '";'
|
||
|| '"";' -- Element 4 (empty)
|
||
|| '"facilitaire kosten '
|
||
|| export_maand -- Line Descr.
|
||
|| '";"'
|
||
|| REPLACE (TO_CHAR (rec.debet, '999999999D99'),
|
||
'.',
|
||
','
|
||
) -- Debet
|
||
|| '";"'
|
||
|| REPLACE (TO_CHAR (rec.credit, '999999999D99'),
|
||
'.',
|
||
','
|
||
) -- Credit
|
||
|| '";'
|
||
|| '"";' -- Line Type (empty)
|
||
|| '"";"";"";"";"";""', -- Ext. Ref. 1 t/m 6 (empty)
|
||
export_datum, 'E'
|
||
);
|
||
|
||
regelnr := regelnr + 1;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Aantal doorbelastingsregels ge<67>xporteerd: '
|
||
|| TO_CHAR (regelnr),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE close_valid_tv_regels (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
-- Cursor over ALLE geldige/volledige TV-regels, incl. kostensoort '99999'!
|
||
CURSOR c2
|
||
IS
|
||
SELECT v.regeltype, v.regel_key
|
||
FROM pzho_v_coda_afgemeld v
|
||
WHERE v.afn_kostensoort IS NOT NULL
|
||
AND v.afn_kostenplaats IS NOT NULL
|
||
AND v.lev_kostensoort IS NOT NULL
|
||
AND v.lev_kostenplaats IS NOT NULL
|
||
AND v.lev_deelproduct IS NOT NULL
|
||
ORDER BY v.regeltype, v.regel_key;
|
||
|
||
regelnr NUMBER;
|
||
close_date DATE;
|
||
BEGIN
|
||
close_date := SYSDATE;
|
||
regelnr := 0;
|
||
|
||
FOR rec IN c2
|
||
LOOP
|
||
IF (rec.regeltype = 'RES_ARTIKEL')
|
||
THEN
|
||
UPDATE res_rsv_artikel ra
|
||
SET ra.res_status_bo_key = 6, -- Verwerkt
|
||
ra.res_rsv_artikel_verwerkt = close_date -- + datum
|
||
WHERE ra.res_rsv_artikel_key = rec.regel_key;
|
||
ELSE
|
||
IF (rec.regeltype = 'BES_BESTELOPDRACHT')
|
||
THEN
|
||
UPDATE bes_bestelopdr_item boi
|
||
SET boi.bes_bestelopdr_item_status = 7, -- Verwerkt
|
||
boi.bes_bestelopdr_item_verwerkt = close_date -- + datum
|
||
WHERE boi.bes_bestelopdr_key = rec.regel_key;
|
||
|
||
UPDATE bes_bestelopdr bo
|
||
SET bo.bes_bestelopdr_status = 7 -- Verwerkt
|
||
WHERE bo.bes_bestelopdr_key = rec.regel_key;
|
||
ELSE
|
||
IF (rec.regeltype = 'MLD_OPDRACHT')
|
||
THEN
|
||
mld.setopdrachtstatus (rec.regel_key, 7, 14424); -- Verwerkt door Facilitor
|
||
ELSE
|
||
fac.writelog (p_applname,
|
||
'E',
|
||
'Regeltype ongedefinieerd!',
|
||
''
|
||
);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
regelnr := regelnr + 1;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Aantal TV-regels administratief verwerkt: '
|
||
|| TO_CHAR (regelnr),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
BEGIN
|
||
-- Verwijder de voorgaande exportgegevens.
|
||
DELETE FROM pzho_exp_coda;
|
||
|
||
prepare_doorbelasting (p_applname, p_applrun);
|
||
close_valid_tv_regels (p_applname, p_applrun);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| 'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.writelog (p_applname,
|
||
'E',
|
||
'Exportproces CODA afgebroken!',
|
||
v_errormsg
|
||
);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_export_coda (RESULT, result_order)
|
||
AS
|
||
SELECT e.export_regel, e.regelnummer
|
||
FROM pzho_exp_coda e
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE pzho_export_coda (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_dummy VARCHAR2 (128);
|
||
BEGIN
|
||
v_dummy :=
|
||
'Het echte wegschrijven is al gebeurd door gen_export.exe met de table PZHO_EXP_CODA';
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_sync_alg_ruimte (
|
||
alg_ruimte_key,
|
||
alg_verdieping_key,
|
||
cadlabel
|
||
)
|
||
AS
|
||
SELECT r.alg_ruimte_key,
|
||
r.alg_verdieping_key,
|
||
alg_gebouw_code || alg_verdieping_code || '.' || alg_ruimte_nr
|
||
FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key;
|
||
|
||
|
||
CREATE OR REPLACE view pzho_v_sync_prj_ruimte
|
||
(
|
||
prj_scenario_key,
|
||
prj_ruimte_key,
|
||
alg_verdieping_key,
|
||
cadlabel
|
||
)
|
||
AS
|
||
SELECT r.prj_scenario_key,
|
||
r.prj_ruimte_key,
|
||
r.alg_verdieping_key,
|
||
alg_gebouw_code || alg_verdieping_code || '.' || prj_ruimte_nr
|
||
FROM prj_ruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_afdeling (
|
||
niveau,
|
||
prs_afdeling_key,
|
||
prs_bedrijf_key,
|
||
prs_afdeling_parentkey,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_upper,
|
||
prs_afdeling_omschrijving,
|
||
prs_afdeling_aanmaak,
|
||
prs_afdeling_verwijder,
|
||
mld_adres_key,
|
||
prs_kostenplaats_key,
|
||
dir_key,
|
||
afd_key,
|
||
bur_key
|
||
)
|
||
AS
|
||
SELECT 1,
|
||
a.*,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 1) || '0000')
|
||
dir_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 2) || '000')
|
||
afd_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 3) || '00')
|
||
bur_key
|
||
FROM prs_afdeling a
|
||
WHERE SUBSTR (prs_afdeling_upper, 1, 1) <> '0'
|
||
AND SUBSTR (prs_afdeling_upper, 2, 4) = '0000'
|
||
AND prs_afdeling_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT 2,
|
||
a.*,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 1) || '0000')
|
||
dir_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 2) || '000')
|
||
afd_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 3) || '00')
|
||
bur_key
|
||
FROM prs_afdeling a
|
||
WHERE SUBSTR (prs_afdeling_upper, 2, 1) <> '0'
|
||
AND SUBSTR (prs_afdeling_upper, 3, 3) = '000'
|
||
AND prs_afdeling_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT 3,
|
||
a.*,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 1) || '0000')
|
||
dir_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 2) || '000')
|
||
afd_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 3) || '00')
|
||
bur_key
|
||
FROM prs_afdeling a
|
||
WHERE SUBSTR (prs_afdeling_upper, 3, 1) <> '0'
|
||
AND SUBSTR (prs_afdeling_upper, 4, 2) = '00'
|
||
AND prs_afdeling_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT 4,
|
||
a.*,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 1) || '0000')
|
||
dir_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 2) || '000')
|
||
afd_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 3) || '00')
|
||
bur_key
|
||
FROM prs_afdeling a
|
||
WHERE SUBSTR (prs_afdeling_upper, 4, 1) <> '0'
|
||
AND SUBSTR (prs_afdeling_upper, 5, 1) = '0'
|
||
AND prs_afdeling_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT 5,
|
||
a.*,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 1) || '0000')
|
||
dir_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 2) || '000')
|
||
afd_key,
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_afdeling au
|
||
WHERE au.prs_afdeling_verwijder IS NULL
|
||
AND au.prs_afdeling_upper =
|
||
SUBSTR (a.prs_afdeling_upper, 1, 3) || '00')
|
||
bur_key
|
||
FROM prs_afdeling a
|
||
WHERE SUBSTR (prs_afdeling_upper, 5, 1) <> '0'
|
||
AND prs_afdeling_verwijder IS NULL
|
||
AND fac.safe_to_number (prs_afdeling_upper) > 9999
|
||
UNION ALL
|
||
SELECT NULL, a.*, NULL, NULL, NULL
|
||
FROM prs_afdeling a
|
||
WHERE (fac.safe_to_number (prs_afdeling_upper) IS NULL
|
||
OR fac.safe_to_number (prs_afdeling_upper) < 9999)
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
|
||
|
||
|
||
|
||
|
||
-----------------------------------------------------------------------------------------------------------------
|
||
--
|
||
-- werkelijkheid
|
||
--
|
||
-----------------------------------------------------------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW pzho_v_thema_ruimte_dir (
|
||
alg_ruimte_key,
|
||
waarde,
|
||
waarde_key
|
||
)
|
||
AS
|
||
SELECT x.alg_ruimte_key,
|
||
DECODE (y.aantal,
|
||
NULL, '[Leegstand]',
|
||
1, SUBSTR (y.sp, 1, 60),
|
||
'Meer dan 1 directie!'),
|
||
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
|
||
FROM (SELECT r.alg_ruimte_key
|
||
FROM alg_v_aanwezigruimte r) x
|
||
LEFT JOIN
|
||
(SELECT ra.alg_ruimte_key,
|
||
MIN ( (SELECT COALESCE (prs_afdeling_omschrijving,
|
||
'Onbekende directie'
|
||
)
|
||
FROM prs_afdeling dir
|
||
WHERE dir.prs_afdeling_key = a.dir_key)
|
||
)
|
||
sp,
|
||
MIN (a.dir_key) sp_key,
|
||
COUNT (DISTINCT a.dir_key) aantal
|
||
FROM prs_v_aanwezigruimteafdeling ra, pzho_v_afdeling a
|
||
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
|
||
GROUP BY ra.alg_ruimte_key) y
|
||
ON x.alg_ruimte_key = y.alg_ruimte_key
|
||
UNION ALL
|
||
SELECT NULL, SUBSTR (a.prs_afdeling_omschrijving, 1, 60), a.dir_key
|
||
FROM pzho_v_afdeling a
|
||
WHERE niveau = 1
|
||
AND NOT EXISTS
|
||
(SELECT ra.prs_afdeling_key
|
||
FROM prs_ruimteafdeling ra, pzho_v_afdeling afd
|
||
WHERE ra.prs_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND afd.dir_key = a.dir_key);
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_rap_dir_bezettting (afdeling_omschrijving, bvo, aantalwp, max_wp) AS
|
||
SELECT prs_afdeling_omschrijving,
|
||
SUM (alg_ruimte_bruto_vloeropp) bvo,
|
||
SUM (wp) aantalwp,
|
||
SUM (max_wp) maxaantalwp
|
||
FROM (select a.prs_afdeling_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5)
|
||
,
|
||
0
|
||
)
|
||
max_wp,
|
||
(select count(*) from prs_werkplek wp where r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
and coalesce(wp.prs_werkplek_virtueel,0) <> 1) wp
|
||
FROM prs_ruimteafdeling ra,
|
||
prs_afdeling a,
|
||
pzho_v_afdeling pa,
|
||
alg_srtruimte sr,
|
||
alg_ruimte r
|
||
WHERE pa.prs_afdeling_key = ra.prs_afdeling_key
|
||
AND pa.dir_key = a.prs_afdeling_key
|
||
AND ra.alg_ruimte_key = r.alg_ruimte_key
|
||
and r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
and sr.prs_bevat_werkplek = 1 )
|
||
GROUP BY prs_afdeling_omschrijving;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_thema_ruimte_afd (
|
||
alg_ruimte_key,
|
||
waarde,
|
||
waarde_key
|
||
)
|
||
AS
|
||
SELECT x.alg_ruimte_key,
|
||
DECODE (y.aantal,
|
||
NULL, '[Leegstand]',
|
||
1, SUBSTR (y.sp, 1, 60),
|
||
'Meer dan 1 afdeling!'),
|
||
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
|
||
FROM (SELECT r.alg_ruimte_key
|
||
FROM alg_v_aanwezigruimte r) x
|
||
LEFT JOIN
|
||
(SELECT ra.alg_ruimte_key,
|
||
MIN ( (SELECT COALESCE (prs_afdeling_omschrijving,
|
||
'Onbekende directie'
|
||
)
|
||
FROM prs_afdeling afd
|
||
WHERE afd.prs_afdeling_key = a.afd_key)
|
||
)
|
||
sp,
|
||
MIN (a.afd_key) sp_key,
|
||
COUNT (DISTINCT a.afd_key) aantal
|
||
FROM prs_v_aanwezigruimteafdeling ra, pzho_v_afdeling a
|
||
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
|
||
GROUP BY ra.alg_ruimte_key) y
|
||
ON x.alg_ruimte_key = y.alg_ruimte_key
|
||
UNION ALL
|
||
SELECT NULL, SUBSTR (a.prs_afdeling_omschrijving, 1, 60), a.afd_key
|
||
FROM pzho_v_afdeling a
|
||
WHERE NOT EXISTS
|
||
(SELECT ra.prs_afdeling_key
|
||
FROM prs_ruimteafdeling ra, pzho_v_afdeling afd
|
||
WHERE ra.prs_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND afd.afd_key = a.afd_key);
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_rap_afd_bezettting (fclt_f_directie, afdeling_omschrijving, bvo, aantalwp, max_wp) AS
|
||
SELECT directie, prs_afdeling_omschrijving,
|
||
SUM (alg_ruimte_bruto_vloeropp) bvo,
|
||
SUM (wp) aantalwp,
|
||
trunc(SUM (max_wp)) maxaantalwp
|
||
FROM (SELECT (select prs_afdeling_omschrijving from prs_afdeling where prs_afdeling_key = pa.dir_key) directie,
|
||
a.prs_afdeling_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6,5)
|
||
,
|
||
0
|
||
)
|
||
max_wp,
|
||
(select count(*) from prs_werkplek wp where r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
and coalesce(wp.prs_werkplek_virtueel,0) <> 1) wp
|
||
FROM prs_ruimteafdeling ra,
|
||
prs_afdeling a,
|
||
pzho_v_afdeling pa,
|
||
alg_srtruimte sr,
|
||
alg_ruimte r
|
||
WHERE pa.prs_afdeling_key = ra.prs_afdeling_key
|
||
AND pa.afd_key = a.prs_afdeling_key
|
||
AND ra.alg_ruimte_key = r.alg_ruimte_key
|
||
and r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
and sr.prs_bevat_werkplek = 1)
|
||
GROUP BY prs_afdeling_omschrijving, directie;
|
||
|
||
-- view om werkplekbezetting in de actualiteit te tonen.
|
||
CREATE OR REPLACE FORCE VIEW pzho_v_label_bewonerwpe (
|
||
prs_werkplek_key,
|
||
waarde,
|
||
highlight
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
prs_werkplek_key, waarde, 1
|
||
FROM (SELECT w.prs_werkplek_key,
|
||
p.prs_perslid_naam
|
||
|| DECODE (p.prs_perslid_voornaam,
|
||
NULL,
|
||
'',
|
||
CHR (10)
|
||
|| '[s20] ('
|
||
|| p.prs_perslid_voornaam
|
||
|| ')'
|
||
)
|
||
|| ': '
|
||
|| TO_CHAR (NVL (pw.prs_perslidwerkplek_bezetting, 0))
|
||
|| '%'
|
||
waarde
|
||
FROM alg_ruimte r,
|
||
prs_werkplek w,
|
||
prs_perslidwerkplek pw,
|
||
prs_perslid p
|
||
WHERE w.prs_werkplek_key = pw.prs_werkplek_key
|
||
AND pw.prs_perslid_key IS NOT NULL
|
||
AND pw.prs_perslid_key = p.prs_perslid_key
|
||
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
UNION
|
||
SELECT w.prs_werkplek_key,
|
||
' Vrij: '
|
||
|| TO_CHAR(100
|
||
- NVL (SUM (pw.prs_perslidwerkplek_bezetting),
|
||
0
|
||
))
|
||
|| '%'
|
||
FROM prs_werkplek w,
|
||
prs_perslidwerkplek pw
|
||
WHERE w.prs_werkplek_key = pw.prs_werkplek_key(+)
|
||
GROUP BY w.prs_werkplek_key,
|
||
w.prs_werkplek_key,
|
||
w.prs_werkplek_volgnr
|
||
HAVING SUM (NVL (pw.prs_perslidwerkplek_bezetting, 0)) < 100)
|
||
data;
|
||
|
||
|
||
|
||
-- gemiddelde opp per werkplek
|
||
CREATE OR REPLACE FORCE VIEW pzho_v_thema_wpopp (
|
||
alg_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT wp.prs_alg_ruimte_key,
|
||
to_char(trunc(coalesce(r.alg_ruimte_bruto_vloeropp-1,0) / coalesce(COUNT (prs_werkplek_key),1)))
|
||
FROM prs_werkplek wp, alg_ruimte r
|
||
WHERE wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
GROUP BY wp.prs_alg_ruimte_key, r.alg_ruimte_bruto_vloeropp;
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE FORCE VIEW pzho_v_thema_ruimte_wp_max (
|
||
alg_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT r.alg_ruimte_key,
|
||
NVL (NVL (fac.safe_to_number (alg_onrgoedkenmerk_waarde),
|
||
TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5)
|
||
),
|
||
0
|
||
)
|
||
FROM alg_v_aanwezigruimte r
|
||
LEFT JOIN
|
||
(SELECT alg_onrgoedkenmerk_waarde, alg_onrgoed_key
|
||
FROM alg_onrgoedkenmerk k
|
||
WHERE alg_kenmerk_key = 1040
|
||
AND alg_onrgoed_niveau = 'R'
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL) ok
|
||
ON r.alg_ruimte_key = ok.alg_onrgoed_key
|
||
/
|
||
|
||
|
||
/* -- vul de ruimteafdeling met de huidige werkplekbezetting
|
||
insert into prs_ruimteafdeling (alg_ruimte_key, prs_afdeling_key)
|
||
select distinct wpg.alg_ruimte_key, a.prs_afdeling_key from prs_v_perslidwerkplek_gegevens wpg, prs_perslid p, prs_afdeling a
|
||
where wpg.prs_perslid_key = p.prs_perslid_key and p.prs_afdeling_key = a.prs_afdeling_key
|
||
*/
|
||
----------------------------------------------------------------------------------------------------------
|
||
--
|
||
-- project/scenario omgeving
|
||
--
|
||
----------------------------------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_prj_thema_ruimte_dir (
|
||
prj_ruimte_key,
|
||
waarde,
|
||
waarde_key
|
||
)
|
||
AS
|
||
SELECT x.prj_ruimte_key,
|
||
DECODE (y.aantal,
|
||
NULL, '[Leegstand]',
|
||
1, SUBSTR (y.dir, 1, 60),
|
||
'Meer dan 1 directie!'),
|
||
DECODE (y.aantal, NULL, -1, 1, y.dir_key, NULL)
|
||
FROM (SELECT r.prj_ruimte_key
|
||
FROM prj_ruimte r
|
||
WHERE r.prj_ruimte_verwijder IS NULL) x
|
||
LEFT JOIN
|
||
(SELECT ra.prj_ruimte_key,
|
||
MIN ((SELECT COALESCE (prs_afdeling_omschrijving,
|
||
'Onbekende directie'
|
||
)
|
||
FROM prs_afdeling dir
|
||
WHERE dir.prs_afdeling_key = a.dir_key)
|
||
)
|
||
dir,
|
||
MIN (a.dir_key) dir_key,
|
||
COUNT (DISTINCT a.dir_key) aantal
|
||
FROM prj_ruimteafdeling ra, pzho_v_afdeling a
|
||
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = a.prs_afdeling_key
|
||
GROUP BY ra.prj_ruimte_key) y
|
||
ON x.prj_ruimte_key = y.prj_ruimte_key
|
||
UNION ALL
|
||
SELECT NULL, substr(a.prs_afdeling_omschrijving,1,60), a.dir_key
|
||
FROM pzho_v_afdeling a
|
||
WHERE niveau = 1
|
||
AND NOT EXISTS
|
||
(SELECT ra.prs_afdeling_key
|
||
FROM prj_ruimteafdeling ra, pzho_v_afdeling afd
|
||
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND afd.dir_key = a.dir_key);
|
||
/
|
||
|
||
CREATE OR REPLACE TRIGGER pzho_t_prj_t_ruimte_dir_i_iu
|
||
INSTEAD OF INSERT OR UPDATE
|
||
ON pzho_v_prj_thema_ruimte_dir
|
||
DECLARE
|
||
oracle_err_mes VARCHAR2 (1000);
|
||
BEGIN
|
||
IF UPDATING -- oude logisch weggooien, dus g<><67>n DELETE!
|
||
THEN
|
||
UPDATE prj_ruimteafdeling
|
||
SET prj_ruimteafdeling_verwijder = SYSDATE
|
||
WHERE prj_ruimte_key = :new.prj_ruimte_key
|
||
AND prs_afdeling_key <> :new.waarde_key;
|
||
END IF;
|
||
|
||
BEGIN
|
||
IF :new.waarde_key <> -1
|
||
THEN
|
||
UPDATE prj_ruimteafdeling
|
||
SET prj_ruimteafdeling_verwijder = NULL
|
||
WHERE prj_ruimte_key = :new.prj_ruimte_key
|
||
AND prs_afdeling_key = :new.waarde_key;
|
||
|
||
BEGIN
|
||
INSERT INTO prj_ruimteafdeling (prj_ruimte_key, prs_afdeling_key)
|
||
VALUES (:new.prj_ruimte_key, :new.waarde_key);
|
||
EXCEPTION
|
||
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
|
||
THEN
|
||
NULL;
|
||
END;
|
||
|
||
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_DIR',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'I',
|
||
-- 'directie aangepast:'
|
||
-- || COALESCE((SELECT prs_afdeling_omschrijving
|
||
-- FROM prs_afdeling
|
||
-- WHERE prs_afdeling_key = :old.waarde_key), 'Leegstand')
|
||
-- || ' -> '
|
||
-- || (SELECT prs_afdeling_omschrijving
|
||
-- FROM prs_afdeling
|
||
-- WHERE prs_afdeling_key = :new.waarde_key),
|
||
-- :new.prj_ruimte_key);
|
||
ELSE
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_DIR',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'I',
|
||
-- 'ruimte op leegstand gezet',
|
||
-- :new.prj_ruimte_key);
|
||
NULL;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
NULL;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_DIR',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'E',
|
||
-- oracle_err_mes,
|
||
-- :new.prj_ruimte_key);
|
||
END;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_rap_prj_dir_bezettting (
|
||
fclt_f_scenario,
|
||
afdeling_omschrijving,
|
||
scenario_opp,
|
||
opp,
|
||
scenario_wp,
|
||
wp,
|
||
max_wp
|
||
)
|
||
AS
|
||
SELECT prj_scenario_omschrijving,
|
||
coalesce(prs_afdeling_omschrijving, 'Onbekend'),
|
||
SUM (prj_ruimte_vloeropp),
|
||
SUM (alg_ruimte_vloeropp),
|
||
SUM (prj_wp),
|
||
SUM (wp),
|
||
SUM (max_wp)
|
||
FROM (SELECT (pr_r.prj_ruimte_bruto_vloeropp
|
||
* pr_ra.prj_ruimteafdeling_bezetting)
|
||
/ 100
|
||
prj_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prj_werkplek wp
|
||
WHERE pr_r.prj_ruimte_key = wp.prj_ruimte_key)
|
||
prj_wp,
|
||
pr_a.prs_afdeling_omschrijving,
|
||
s.prj_scenario_omschrijving,
|
||
0 alg_ruimte_vloeropp,
|
||
0 wp,
|
||
0 max_wp
|
||
FROM alg_ruimte r,
|
||
prj_ruimte pr_r,
|
||
prj_scenario s,
|
||
prj_ruimteafdeling pr_ra,
|
||
pzho_v_afdeling pr_pa,
|
||
prs_afdeling pr_a,
|
||
alg_srtruimte sr
|
||
WHERE pr_r.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key
|
||
AND pr_r.prj_ruimte_key = pr_ra.prj_ruimte_key(+)
|
||
AND pr_ra.prs_afdeling_key = pr_pa.prs_afdeling_key(+)
|
||
AND pr_r.prj_ruimte_verwijder IS NULL
|
||
AND pr_pa.dir_key = pr_a.prs_afdeling_key(+)
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
UNION ALL
|
||
SELECT 0,
|
||
0,
|
||
a.prs_afdeling_omschrijving,
|
||
s.prj_scenario_omschrijving,
|
||
(r.alg_ruimte_bruto_vloeropp * ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
wp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5), 0) max_wp
|
||
FROM alg_ruimte r,
|
||
prj_ruimte pr_r,
|
||
prj_scenario s,
|
||
prs_ruimteafdeling ra,
|
||
pzho_v_afdeling pa,
|
||
prs_afdeling a,
|
||
alg_srtruimte sr
|
||
WHERE pr_r.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key
|
||
AND prj_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
|
||
AND ra.prs_afdeling_key = pa.prs_afdeling_key(+)
|
||
AND pa.dir_key = a.prs_afdeling_key(+)
|
||
UNION ALL
|
||
SELECT (r.alg_ruimte_bruto_vloeropp
|
||
* ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
prj_wp,
|
||
a.prs_afdeling_omschrijving,
|
||
s.prj_scenario_omschrijving,
|
||
(r.alg_ruimte_bruto_vloeropp * ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
wp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5), 0)
|
||
FROM alg_ruimte r,
|
||
prj_scenario s,
|
||
prs_ruimteafdeling ra,
|
||
pzho_v_afdeling pa,
|
||
alg_srtruimte sr,
|
||
prs_afdeling a
|
||
WHERE r.alg_ruimte_key = ra.alg_ruimte_key(+)
|
||
AND ra.prs_afdeling_key = pa.prs_afdeling_key(+)
|
||
AND pa.dir_key = a.prs_afdeling_key(+)
|
||
AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
AND NOT EXISTS
|
||
(SELECT alg_ruimte_key
|
||
FROM prj_ruimte pr
|
||
WHERE pr.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr.prj_scenario_key = s.prj_scenario_key))
|
||
GROUP BY prs_afdeling_omschrijving, prj_scenario_omschrijving;
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_prj_label_dir (
|
||
prj_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT x.prj_ruimte_key,
|
||
SUBSTR (y.dir, 1, 60)
|
||
FROM (SELECT r.prj_ruimte_key
|
||
FROM prj_ruimte r
|
||
WHERE r.prj_ruimte_verwijder IS NULL) x
|
||
LEFT JOIN
|
||
(SELECT ra.prj_ruimte_key,
|
||
MIN ((SELECT COALESCE (prs_afdeling_omschrijving,
|
||
'Onbekende directie'
|
||
)
|
||
FROM prs_afdeling dir
|
||
WHERE dir.prs_afdeling_key = a.dir_key)
|
||
)
|
||
dir,
|
||
MIN (a.dir_key) dir_key,
|
||
COUNT (DISTINCT a.dir_key) aantal
|
||
FROM prj_ruimteafdeling ra, pzho_v_afdeling a
|
||
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = a.prs_afdeling_key
|
||
GROUP BY ra.prj_ruimte_key) y
|
||
ON x.prj_ruimte_key = y.prj_ruimte_key;
|
||
|
||
|
||
CREATE OR REPLACE view pzho_v_prj_thema_ruimte_afd
|
||
(
|
||
prj_ruimte_key,
|
||
waarde,
|
||
waarde_key,
|
||
parent_key
|
||
)
|
||
AS
|
||
SELECT x.prj_ruimte_key,
|
||
DECODE (y.aantal,
|
||
NULL, '[Leegstand]',
|
||
1, SUBSTR (y.afd, 1, 60),
|
||
'Meer dan 1 afdeling!'),
|
||
DECODE (y.aantal,
|
||
NULL, -1,
|
||
1, DECODE (niveau, 1, NULL, y.afd_key),
|
||
NULL),
|
||
(SELECT MAX (dir_key) dir_key
|
||
FROM pzho_v_afdeling afd
|
||
WHERE afd.prs_afdeling_key = y.afd_key) parent_key
|
||
FROM (SELECT r.prj_ruimte_key
|
||
FROM prj_ruimte r
|
||
WHERE r.prj_ruimte_verwijder IS NULL) x
|
||
LEFT JOIN
|
||
( SELECT ra.prj_ruimte_key,
|
||
MIN( (SELECT COALESCE (prs_afdeling_omschrijving,
|
||
'Onbekende afdeling')
|
||
FROM prs_afdeling afd
|
||
WHERE afd.prs_afdeling_key = a.afd_key))
|
||
afd,
|
||
MIN (a.afd_key) afd_key,
|
||
COUNT (DISTINCT a.afd_key) aantal,
|
||
MIN (a.niveau) niveau
|
||
FROM prj_ruimteafdeling ra, pzho_v_afdeling a
|
||
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = a.prs_afdeling_key
|
||
GROUP BY ra.prj_ruimte_key) y
|
||
ON x.prj_ruimte_key = y.prj_ruimte_key
|
||
UNION ALL
|
||
SELECT NULL, SUBSTR (a.prs_afdeling_omschrijving, 1, 60), a.afd_key, null
|
||
FROM pzho_v_afdeling a
|
||
WHERE niveau = 2
|
||
AND NOT EXISTS
|
||
(SELECT ra.prs_afdeling_key
|
||
FROM prj_ruimteafdeling ra, pzho_v_afdeling afd
|
||
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
|
||
AND ra.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND afd.afd_key = a.afd_key);
|
||
|
||
|
||
CREATE OR REPLACE TRIGGER pzho_t_prj_t_ruimte_afd_i_iu
|
||
INSTEAD OF INSERT OR UPDATE
|
||
ON PZHO_V_PRJ_THEMA_RUIMTE_AFD
|
||
BEGIN
|
||
DECLARE
|
||
dummy NUMBER;
|
||
oracle_err_mes VARCHAR2 (1000);
|
||
parent_key NUMBER;
|
||
new_parent_key NUMBER;
|
||
BEGIN
|
||
SELECT MAX (dir_key) dir_key
|
||
INTO new_parent_key
|
||
FROM pzho_v_afdeling afd
|
||
WHERE afd.prs_afdeling_key = :new.waarde_key;
|
||
|
||
IF UPDATING
|
||
THEN
|
||
parent_key := :old.parent_key;
|
||
ELSE
|
||
SELECT MAX (dir_key) dir_key
|
||
INTO parent_key
|
||
FROM pzho_v_afdeling afd, prj_ruimteafdeling ra
|
||
WHERE afd.prs_afdeling_key = ra.prs_afdeling_key
|
||
AND ra.prj_ruimte_key = :new.prj_ruimte_key;
|
||
END IF;
|
||
|
||
IF parent_key <> new_parent_key AND parent_key <> -1
|
||
THEN
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_AFD',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'E',
|
||
-- 'directie is niet gelijk',
|
||
-- :new.prj_ruimte_key);
|
||
NULL;
|
||
ELSE
|
||
IF UPDATING -- oude logisch weggooien, dus g<><67>n DELETE!
|
||
THEN
|
||
UPDATE prj_ruimteafdeling
|
||
SET prj_ruimteafdeling_verwijder = SYSDATE
|
||
WHERE prj_ruimte_key = :new.prj_ruimte_key
|
||
AND prs_afdeling_key <> :new.waarde_key;
|
||
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_AFD',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'I',
|
||
-- 'afdeling aangepast:'
|
||
-- || (SELECT prs_afdeling_omschrijving
|
||
-- FROM prs_afdeling
|
||
-- WHERE prs_afdeling_key = :old.waarde_key)
|
||
-- || ' -> '
|
||
-- || (SELECT prs_afdeling_omschrijving
|
||
-- FROM prs_afdeling
|
||
-- WHERE prs_afdeling_key = :new.waarde_key),
|
||
-- :new.prj_ruimte_key);
|
||
END IF;
|
||
|
||
BEGIN
|
||
IF :new.waarde_key <> -1
|
||
THEN
|
||
UPDATE prj_ruimteafdeling
|
||
SET prj_ruimteafdeling_verwijder = NULL
|
||
WHERE prj_ruimte_key = :new.prj_ruimte_key
|
||
AND prs_afdeling_key = :new.waarde_key;
|
||
|
||
INSERT INTO prj_ruimteafdeling (prj_ruimte_key,
|
||
prs_afdeling_key,
|
||
prj_ruimteafdeling_bezetting)
|
||
VALUES (:new.prj_ruimte_key, :new.waarde_key, 100);
|
||
END IF;
|
||
END;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
|
||
THEN
|
||
NULL;
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
|
||
-- INSERT INTO imp_log (imp_log_applicatie,
|
||
-- imp_log_run,
|
||
-- imp_log_datum,
|
||
-- imp_log_status,
|
||
-- imp_log_omschrijving,
|
||
-- imp_log_hint)
|
||
-- VALUES ('MOVE_AFD',
|
||
-- 'now',
|
||
-- SYSDATE,
|
||
-- 'E',
|
||
-- oracle_err_mes,
|
||
-- :new.prj_ruimte_key);
|
||
END;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_rap_prj_afd_bezettting (
|
||
fclt_f_scenario,
|
||
fclt_f_directie,
|
||
afdeling_omschrijving,
|
||
scenario_opp,
|
||
opp,
|
||
scenario_wp,
|
||
wp,
|
||
max_wp
|
||
)
|
||
AS
|
||
SELECT prj_scenario_omschrijving,
|
||
coalesce(directie, 'Onbekend') directie,
|
||
coalesce(prs_afdeling_omschrijving, 'Onbekend') prs_afdeling_omschrijving,
|
||
SUM (prj_ruimte_vloeropp),
|
||
SUM (alg_ruimte_vloeropp),
|
||
SUM (prj_wp),
|
||
SUM (wp),
|
||
SUM (max_wp)
|
||
FROM (SELECT (pr_r.prj_ruimte_bruto_vloeropp
|
||
* pr_ra.prj_ruimteafdeling_bezetting)
|
||
/ 100
|
||
prj_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prj_werkplek wp
|
||
WHERE pr_r.prj_ruimte_key = wp.prj_ruimte_key)
|
||
prj_wp,
|
||
pr_a.prs_afdeling_omschrijving,
|
||
pr_d.prs_afdeling_omschrijving directie,
|
||
s.prj_scenario_omschrijving,
|
||
0 alg_ruimte_vloeropp,
|
||
0 wp,
|
||
0 max_wp
|
||
FROM alg_ruimte r,
|
||
prj_ruimte pr_r,
|
||
prj_scenario s,
|
||
prj_ruimteafdeling pr_ra,
|
||
pzho_v_afdeling pr_pa,
|
||
prs_afdeling pr_a,
|
||
prs_afdeling pr_d,
|
||
alg_srtruimte sr
|
||
WHERE pr_r.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key
|
||
AND pr_r.prj_ruimte_key = pr_ra.prj_ruimte_key(+)
|
||
AND pr_ra.prs_afdeling_key = pr_pa.prs_afdeling_key(+)
|
||
AND pr_r.prj_ruimte_verwijder IS NULL
|
||
AND pr_pa.dir_key = pr_d.prs_afdeling_key(+)
|
||
AND pr_pa.afd_key = pr_a.prs_afdeling_key(+)
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
UNION ALL
|
||
SELECT 0,
|
||
0,
|
||
a.prs_afdeling_omschrijving,
|
||
d.prs_afdeling_omschrijving directie,
|
||
s.prj_scenario_omschrijving,
|
||
(r.alg_ruimte_bruto_vloeropp * ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
wp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5), 0) max_wp
|
||
FROM alg_ruimte r,
|
||
prj_ruimte pr_r,
|
||
prj_scenario s,
|
||
prs_ruimteafdeling ra,
|
||
pzho_v_afdeling pa,
|
||
prs_afdeling a,
|
||
prs_afdeling d,
|
||
alg_srtruimte sr
|
||
WHERE pr_r.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key
|
||
AND prj_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
|
||
AND ra.prs_afdeling_key = pa.prs_afdeling_key(+)
|
||
AND pa.dir_key = d.prs_afdeling_key(+)
|
||
AND pa.afd_key = a.prs_afdeling_key(+)
|
||
UNION ALL
|
||
SELECT (r.alg_ruimte_bruto_vloeropp
|
||
* ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
prj_wp,
|
||
a.prs_afdeling_omschrijving,
|
||
d.prs_afdeling_omschrijving directie,
|
||
s.prj_scenario_omschrijving,
|
||
(r.alg_ruimte_bruto_vloeropp * ra.prs_ruimteafdeling_bezetting)
|
||
/ 100
|
||
alg_ruimte_vloeropp,
|
||
(SELECT COUNT ( * )
|
||
FROM prs_werkplek wp
|
||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> 1)
|
||
wp,
|
||
NVL (TRUNC ( (alg_ruimte_bruto_vloeropp - 1) / 6.5), 0)
|
||
FROM alg_ruimte r,
|
||
prj_scenario s,
|
||
prs_ruimteafdeling ra,
|
||
pzho_v_afdeling pa,
|
||
alg_srtruimte sr,
|
||
prs_afdeling a,
|
||
prs_afdeling d
|
||
WHERE r.alg_ruimte_key = ra.alg_ruimte_key(+)
|
||
AND ra.prs_afdeling_key = pa.prs_afdeling_key(+)
|
||
AND pa.dir_key = d.prs_afdeling_key(+)
|
||
AND pa.afd_key = a.prs_afdeling_key(+)
|
||
AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.prs_bevat_werkplek = 1
|
||
AND NOT EXISTS
|
||
(SELECT alg_ruimte_key
|
||
FROM prj_ruimte pr
|
||
WHERE pr.alg_ruimte_key = r.alg_ruimte_key
|
||
AND pr.prj_scenario_key = s.prj_scenario_key))
|
||
GROUP BY prs_afdeling_omschrijving, prj_scenario_omschrijving, directie;
|
||
|
||
|
||
CREATE OR REPLACE FORCE VIEW pzho_v_prj_thema_wpopp (
|
||
prj_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT wp.prj_ruimte_key,
|
||
to_char(trunc(coalesce(r.prj_ruimte_bruto_vloeropp-1,0) / coalesce(COUNT (prj_werkplek_key),1)))
|
||
FROM prj_werkplek wp, prj_ruimte r
|
||
WHERE wp.prj_werkplek_verwijder IS NULL
|
||
AND wp.prj_ruimte_key = r.prj_ruimte_key
|
||
GROUP BY wp.prj_ruimte_key, r.prj_ruimte_bruto_vloeropp;
|
||
|
||
|
||
CREATE OR REPLACE FORCE VIEW pzho_v_cad_thema_wp_bez (
|
||
prj_werkplek_key,
|
||
waarde,
|
||
highlight
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
pwp.prj_werkplek_key,
|
||
DECODE (SIGN(SUM (COALESCE (ppwp.prj_perslidwerkplek_bezetting, 0))
|
||
- 100),
|
||
1,
|
||
'> 100%',
|
||
-1,
|
||
'< 100%',
|
||
'100%'
|
||
),
|
||
SUM (COALESCE (ppwp.prj_perslidwerkplek_bezetting, 0)) highlight
|
||
FROM prj_werkplek pwp, prj_perslidwerkplek ppwp
|
||
WHERE pwp.prj_werkplek_key = ppwp.prj_werkplek_key(+)
|
||
GROUP BY pwp.prj_werkplek_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_prj_label_bewonerwpe (
|
||
prj_werkplek_key,
|
||
waarde,
|
||
highlight
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
prj_werkplek_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1)
|
||
FROM (SELECT prj_r.prj_scenario_key,
|
||
prs_w.prj_werkplek_key,
|
||
prs_p.prs_perslid_naam
|
||
|| DECODE (prs_p.prs_perslid_voornaam,
|
||
NULL,
|
||
'',
|
||
CHR (10)
|
||
|| '[s20] ('
|
||
|| prs_p.prs_perslid_voornaam
|
||
|| ')'
|
||
)
|
||
|| ': '
|
||
|| TO_CHAR (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0))
|
||
|| '%'
|
||
waarde,
|
||
'PRJ_WERKPLEK' label_soort,
|
||
prs_pw.prj_werkplek_key label_key
|
||
FROM prj_ruimte prj_r,
|
||
prj_werkplek prs_w,
|
||
(SELECT *
|
||
FROM prj_perslidwerkplek
|
||
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw,
|
||
prs_perslid prs_p
|
||
WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key
|
||
AND prs_pw.prs_perslid_key IS NOT NULL
|
||
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
|
||
AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key
|
||
UNION
|
||
SELECT -1,
|
||
prs_w.prj_werkplek_key,
|
||
' Vrij: '
|
||
|| TO_CHAR(100
|
||
- NVL (SUM (prs_wb.prj_perslidwerkplek_bezetting),
|
||
0
|
||
))
|
||
|| '%',
|
||
'PRJ_WERKPLEK',
|
||
prs_w.prj_werkplek_key
|
||
FROM prj_werkplek prs_w,
|
||
(SELECT *
|
||
FROM prj_perslidwerkplek
|
||
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb
|
||
WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+)
|
||
AND prj_werkplek_verwijder IS NULL
|
||
GROUP BY prs_w.prj_werkplek_key,
|
||
prs_w.prj_werkplek_key,
|
||
prs_w.prj_werkplek_volgnr
|
||
HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0)) < 100)
|
||
data,
|
||
prj_selectie ps
|
||
WHERE ps.prj_scenario_key(+) = data.prj_scenario_key
|
||
AND ps.prj_selectie_tabelnaam(+) = label_soort
|
||
AND ps.prj_selectie_tabelkey(+) = label_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW pzho_v_rap_perslid_verhuizing (
|
||
sleutel,
|
||
fclt_f_scenario,
|
||
fclt_f_directie,
|
||
fclt_f_afdeling,
|
||
fclt_f_bureau,
|
||
persoon,
|
||
plaats,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
kamer,
|
||
werkplek
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (p.prs_perslid_key),
|
||
s.prj_scenario_omschrijving,
|
||
dir.prs_afdeling_omschrijving,
|
||
afd.prs_afdeling_omschrijving,
|
||
bur.prs_afdeling_omschrijving,
|
||
prs_perslid_naam_full,
|
||
wpg.prs_werkplek_aanduiding,
|
||
DECODE (pr_pwp.prj_perslidwerkplek_verwijder,
|
||
NULL, pr_rg.alg_locatie_code,
|
||
'')
|
||
loc,
|
||
DECODE (pr_pwp.prj_perslidwerkplek_verwijder,
|
||
NULL, pr_rg.alg_gebouw_upper,
|
||
'')
|
||
geb,
|
||
DECODE (pr_pwp.prj_perslidwerkplek_verwijder,
|
||
NULL, pr_rg.alg_verdieping_code,
|
||
'')
|
||
verd,
|
||
DECODE (pr_pwp.prj_perslidwerkplek_verwijder,
|
||
NULL, pr_rg.alg_ruimte_nr,
|
||
'')
|
||
ruimte,
|
||
DECODE (pr_pwp.prj_perslidwerkplek_verwijder,
|
||
NULL, TO_CHAR (pr_wp.prj_werkplek_volgnr),
|
||
'')
|
||
wp
|
||
FROM prs_perslid p,
|
||
prj_scenario s,
|
||
pzho_v_afdeling a,
|
||
prs_afdeling dir,
|
||
prs_afdeling afd,
|
||
prs_afdeling bur,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_perslidwerkplek_gegevens wpg,
|
||
prj_perslidwerkplek pr_pwp,
|
||
prj_werkplek pr_wp,
|
||
prj_ruimte pr_r,
|
||
alg_v_ruimte_gegevens pr_rg
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.dir_key = dir.prs_afdeling_key
|
||
AND a.afd_key = afd.prs_afdeling_key
|
||
AND a.bur_key = bur.prs_afdeling_key
|
||
AND p.prs_perslid_key = wpg.prs_perslid_key(+)
|
||
AND p.prs_perslid_key = pr_pwp.prs_perslid_key
|
||
AND pr_pwp.prj_werkplek_key = pr_wp.prj_werkplek_key
|
||
AND pr_wp.prj_ruimte_key = pr_r.prj_ruimte_key(+)
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key(+)
|
||
AND pr_r.alg_ruimte_key = pr_rg.alg_ruimte_key(+)
|
||
AND EXISTS
|
||
(SELECT prj_ruimteafdeling_key
|
||
FROM prj_ruimteafdeling pra, prj_ruimte pr
|
||
WHERE pra.prj_ruimte_key = pr.prj_ruimte_key
|
||
AND pr.prj_scenario_key = s.prj_scenario_key
|
||
AND (pra.prs_afdeling_key = a.dir_key
|
||
OR pra.prs_afdeling_key = a.afd_key))
|
||
UNION ALL
|
||
SELECT TO_CHAR (p.prs_perslid_key),
|
||
s.prj_scenario_omschrijving,
|
||
dir.prs_afdeling_omschrijving,
|
||
afd.prs_afdeling_omschrijving,
|
||
bur.prs_afdeling_omschrijving,
|
||
prs_perslid_naam_full,
|
||
wpg.prs_werkplek_aanduiding,
|
||
l.alg_locatie_code loc,
|
||
wpg.alg_gebouw_upper geb,
|
||
wpg.alg_verdieping_code verd,
|
||
wpg.alg_ruimte_nr ruimte,
|
||
TO_CHAR (wpg.prs_werkplek_volgnr) wp
|
||
FROM prs_perslid p,
|
||
prj_scenario s,
|
||
pzho_v_afdeling a,
|
||
prs_afdeling dir,
|
||
prs_afdeling afd,
|
||
prs_afdeling bur,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_perslidwerkplek_gegevens wpg,
|
||
alg_locatie l
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.dir_key = dir.prs_afdeling_key
|
||
AND a.afd_key = afd.prs_afdeling_key
|
||
AND a.bur_key = bur.prs_afdeling_key
|
||
AND p.prs_perslid_key = wpg.prs_perslid_key(+)
|
||
AND wpg.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND NOT EXISTS
|
||
(SELECT prs_perslidwerkplek_key
|
||
FROM prj_perslidwerkplek pr_pwp,
|
||
prj_werkplek pr_wp,
|
||
prj_ruimte pr_r
|
||
WHERE p.prs_perslid_key = pr_pwp.prs_perslid_key
|
||
AND pr_pwp.prj_werkplek_key = pr_wp.prj_werkplek_key
|
||
AND pr_wp.prj_ruimte_key = pr_r.prj_ruimte_key
|
||
AND pr_r.prj_scenario_key = s.prj_scenario_key)
|
||
AND EXISTS
|
||
(SELECT prj_ruimteafdeling_key
|
||
FROM prj_ruimteafdeling pra, prj_ruimte pr
|
||
WHERE pra.prj_ruimte_key = pr.prj_ruimte_key
|
||
AND pr.prj_scenario_key = s.prj_scenario_key
|
||
AND (pra.prs_afdeling_key = a.dir_key
|
||
OR pra.prs_afdeling_key = a.afd_key));
|
||
|
||
-- key 523 is kenmerk besteld voor op PZH prod
|
||
-- status 6+7 is status geleverd en verwerkt
|
||
CREATE OR REPLACE VIEW PZHO_V_RAP_CADEAUBONVERANTW
|
||
(
|
||
FCLT_F_NAAM,
|
||
PERSONEELSNUMMER,
|
||
FCLT_F_FUNCTIE,
|
||
FCLT_D_DATUM,
|
||
Aantal,
|
||
Artikel,
|
||
Prijs,
|
||
Totaal,
|
||
Bestelling,
|
||
FCLT_F_BESTELD_DOOR
|
||
)
|
||
AS
|
||
SELECT pv.prs_perslid_naam_full,
|
||
p.prs_perslid_nr,
|
||
srtp.prs_srtperslid_omschrijving,
|
||
TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy') datum,
|
||
bes_bestelling_item_aantal,
|
||
bd.bes_srtdeel_omschrijving,
|
||
bes_bestelling_item_prijs,
|
||
bes_bestelling_item_aantal * bes_bestelling_item_prijs totaal,
|
||
b.bes_bestelling_key,
|
||
pv2.prs_perslid_naam_full
|
||
FROM bes_kenmerkbesteli kbi,
|
||
prs_v_perslid_fullnames_all pv,
|
||
prs_v_perslid_fullnames_all pv2,
|
||
prs_perslid p,
|
||
prs_srtperslid srtp,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
bes_srtdeel bd
|
||
WHERE bes_kenmerkbesteli_verwijder IS NULL
|
||
AND bes_kenmerk_key = 521 -- Kenmerk bestemd voor. Bij PZH op prod
|
||
AND p.prs_perslid_key = kbi.bes_kenmerkbesteli_waarde
|
||
AND kbi.bes_bestelling_item_key = bi.bes_bestelling_item_key
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = bd.bes_srtdeel_key
|
||
AND p.prs_perslid_key = pv.prs_perslid_key
|
||
AND p.prs_srtperslid_key = srtp.prs_srtperslid_key
|
||
AND pv2.prs_perslid_key = b.prs_perslid_key
|
||
AND b.bes_bestelling_status IN (6, 7);
|
||
|
||
|
||
---
|
||
--- MB: PZHO#26643 voorraad tonen tijdens bestellen.
|
||
---
|
||
CREATE OR REPLACE VIEW PZHO_V_RAP_VOORRAAD
|
||
(
|
||
HIDE_F_EXTERN_DISKEY,
|
||
HIDE_F_SRTGROEP_OMSCHRIJVING,
|
||
FCLT_F_CATALOGUS,
|
||
ARTIKEL_NR,
|
||
ARTIKEL_OMSCHRIJVING,
|
||
ARTIKEL_PRIJS,
|
||
MAGAZIJN,
|
||
MIN_VOORRAAD,
|
||
MAX_VOORRAAD,
|
||
INKOOP_GELEVERD,
|
||
INTERN_BESTELD,
|
||
VOORRAAD,
|
||
INKOOP_BESTELD,
|
||
INKOOP_LEVERDATUM,
|
||
INKOOP_GEWENST
|
||
)
|
||
AS
|
||
SELECT extern.dkey,
|
||
COALESCE (intern.bes_srtgroep_omschrijving,
|
||
extern.bes_srtgroep_omschrijving),
|
||
COALESCE (intern.ins_discipline_omschrijving,
|
||
extern.ins_discipline_omschrijving),
|
||
extern.bes_srtdeel_nr,
|
||
COALESCE (intern.bes_srtdeel_omschrijving,
|
||
extern.bes_srtdeel_omschrijving),
|
||
COALESCE (intern.srtdeel_prijs, extern.srtdeel_prijs),
|
||
intern.magazijn,
|
||
extern.vmin,
|
||
extern.vmax,
|
||
extern.geleverd,
|
||
intern.besteld,
|
||
extern.geleverd - COALESCE (intern.besteld, 0) voorraad,
|
||
extern.besteld,
|
||
TO_CHAR(extern.leverdatum, 'dd-mm-yyyy'),
|
||
CASE
|
||
WHEN ( (COALESCE (extern.besteld, 0)
|
||
+ COALESCE (extern.geleverd, 0))
|
||
- COALESCE (intern.besteld, 0)) < extern.vmin
|
||
THEN
|
||
extern.vmax
|
||
- ( (COALESCE (extern.besteld, 0)
|
||
+ COALESCE (extern.geleverd, 0))
|
||
- COALESCE (intern.besteld, 0))
|
||
ELSE
|
||
NULL
|
||
END
|
||
extern_gewenst
|
||
FROM (SELECT bd.ins_discipline_key dkey, -- INKOOP-key
|
||
g.bes_srtgroep_omschrijving,
|
||
sd.bes_srtdeel_nr, -- ext. artikelnr
|
||
sd.bes_srtdeel_omschrijving,
|
||
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
|
||
srtdeel_prijs,
|
||
bd.ins_discipline_omschrijving, -- ext. catalogusnaam
|
||
sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin
|
||
sd.bes_srtdeel_voorraadmax vmax, -- ext. voorraadmax
|
||
(SELECT SUM (coalesce(boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal)-COALESCE(boi.bes_bestelopdr_item_aantalontv,0))
|
||
FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_item_status IN (2, 3, 4, 5)
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
|
||
besteld,
|
||
(SELECT MIN (b.bes_bestelling_leverdatum)
|
||
FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_item_status IN (2, 3, 4, 5)
|
||
AND COALESCE(bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal) <> COALESCE(bes_bestelopdr_item_aantalontv, 0)
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
|
||
leverdatum,
|
||
(SELECT SUM (boi.bes_bestelopdr_item_aantalontv)
|
||
FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE -- boi.bes_bestelopdr_item_status in (6,7) AND
|
||
b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
|
||
geleverd
|
||
FROM bes_srtdeel sd,
|
||
bes_srtgroep g,
|
||
bes_discipline bd,
|
||
bes_disc_params dp
|
||
WHERE sd.bes_srtdeel_verwijder IS NULL
|
||
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
|
||
AND g.ins_discipline_key = bd.ins_discipline_key
|
||
AND bd.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND dp.bes_ins_discipline_key_inkoop IS NULL
|
||
AND BD.INS_DISCIPLINE_VERWIJDER is null
|
||
AND bd.ins_discipline_key IN
|
||
(SELECT bes_ins_discipline_key_inkoop
|
||
FROM bes_disc_params
|
||
WHERE bes_ins_discipline_key_inkoop IS NOT NULL))
|
||
extern -- Inkoop artikelen uit externe catalogus!
|
||
FULL JOIN
|
||
(SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key
|
||
g.bes_srtgroep_omschrijving,
|
||
sd.bes_srtdeel_nr, -- int. artikelnr
|
||
sd.bes_srtdeel_omschrijving,
|
||
sd.bes_srtdeel_notitie magazijn,
|
||
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
|
||
srtdeel_prijs,
|
||
bd.ins_discipline_omschrijving, -- int. catalogusnaam
|
||
(SELECT SUM (COALESCE(boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal))
|
||
FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
|
||
besteld
|
||
FROM bes_srtdeel sd,
|
||
bes_srtgroep g,
|
||
bes_discipline bd,
|
||
bes_disc_params dp
|
||
WHERE sd.bes_srtdeel_verwijder IS NULL
|
||
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
|
||
AND g.ins_discipline_key = bd.ins_discipline_key
|
||
AND bd.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND BD.INS_DISCIPLINE_VERWIJDER is null
|
||
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL) intern -- Verkoop artikelen uit interne catalogus!
|
||
ON extern.dkey = intern.dkey
|
||
AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr;
|
||
|
||
|
||
/* Formatted on 1-11-2013 16:24:42 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PROCEDURE pzho_import_invise (p_import_key IN NUMBER)
|
||
IS
|
||
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 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
-- De importvelden:
|
||
v_dummy VARCHAR2 (255);
|
||
v_badgenr VARCHAR2 (255); -- C10
|
||
v_serialnr VARCHAR2 (255); -- C10
|
||
v_name VARCHAR2 (255); -- C?
|
||
v_firstname VARCHAR2 (255); -- C?
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM pzho_imp_invise;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees een aantal veldwaarden
|
||
--badgenr;begintst;endtst;badgeprofilenr;servicenr;subsystemid;antipassback;antireturn;securityid;language;pincode;serialnr;contactid;name;firstname;address;postcode;city;phonenr;gender;birthdate;optionalfields01;optionalfields02;optionalfields03;optionalfields04;optionalfields05;optionalfields06;optionalfields07;optionalfields08;optionalfields09;optionalfields10;optionalfields11;optionalfields12;optionalfields13;optionalfields14;optionalfields15;optionalfields16;optionalfields17;optionalfields18;optionalfields19;optionalfields20;optionalfields21;optionalfields22;optionalfields23;optionalfields24;optionalfields25;optionalfields26;optionalfields27;optionalfields28;optionalfields29;optionalfields30;optionalfields31;optionalfields32;optionalfields33;optionalfields34;optionalfields35;optionalfields36;optionalfields37;optionalfields38;optionalfields39;optionalfields40;comment;createtst;createuserid;modtst;moduserid
|
||
fac.imp_getfield (v_newline, c_delim, v_badgenr); --badgenr (toegangspasnummer)
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- begintst
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- endtst
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- badgeprofilenr
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- servicenr
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- subsystemid
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- antipassback
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- antireturn
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- securityid
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- language
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- pincode
|
||
fac.imp_getfield (v_newline, c_delim, v_serialnr); --serialnr (personeelsnummer)
|
||
fac.imp_getfield (v_newline, c_delim, v_dummy); -- contactid
|
||
fac.imp_getfield (v_newline, c_delim, v_name); -- name
|
||
fac.imp_getfield (v_newline, c_delim, v_firstname); -- firstname
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_badgenr
|
||
|| '|'
|
||
|| v_serialnr
|
||
|| '|'
|
||
|| v_name
|
||
|| '|'
|
||
|| v_firstname
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij alleen de 2 relevante kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_badgenr) = 'BADGENR' AND UPPER (v_serialnr) = 'SERIALNR'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Badgenr ongeldig; ongedefinieerd of te lang';
|
||
v_badgenr := TRIM (v_badgenr);
|
||
|
||
IF v_badgenr IS NULL OR LENGTH (v_badgenr) > 15
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Personeelsnr ongeldig; ongedefinieerd of te lang';
|
||
v_serialnr := TRIM (v_serialnr);
|
||
|
||
IF v_serialnr IS NULL OR LENGTH (v_serialnr) > 6
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO pzho_imp_invise (badgenr, serialnr)
|
||
VALUES (v_badgenr, v_serialnr);
|
||
|
||
COMMIT;
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Passen/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Passen/#ongeldige niet ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
''
|
||
);
|
||
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 passen afgebroken!');
|
||
END pzho_import_invise;
|
||
/
|
||
|
||
/* Formatted on 12-11-2013 11:16:32 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PROCEDURE pzho_update_invise (p_import_key IN NUMBER)
|
||
AS
|
||
c_badgenr_kkey NUMBER := 13;
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_new NUMBER (10) := 0;
|
||
v_count_upd NUMBER (10) := 0;
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
kl.prs_kenmerklink_key,
|
||
COUNT ( * ) pas_cnt, -- #pas bij gelijk persnr!
|
||
MAX (i.badgenr) badgenr,
|
||
MAX (i.serialnr) serialnr
|
||
FROM pzho_imp_invise i,
|
||
( SELECT SUBSTR (prs_perslid_nr,
|
||
1,
|
||
INSTR (prs_perslid_nr, '/') - 1)
|
||
prs_perslid_nr,
|
||
COUNT ( * ) prs_cnt, -- #prs met gelijk persnr!
|
||
MAX (prs_perslid_key) prs_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_oslogin IS NOT NULL -- Met loginnaam!
|
||
GROUP BY SUBSTR (prs_perslid_nr,
|
||
1,
|
||
INSTR (prs_perslid_nr, '/') - 1)) p,
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = c_badgenr_kkey) kl
|
||
WHERE i.serialnr = p.prs_perslid_nr
|
||
AND p.prs_perslid_key = kl.prs_link_key(+)
|
||
GROUP BY p.prs_perslid_key, kl.prs_kenmerklink_key;
|
||
BEGIN
|
||
SELECT COUNT ( * ) INTO v_count_tot FROM pzho_imp_invise;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
v_aanduiding := '[' || rec.badgenr || '|' || rec.serialnr || '] ';
|
||
|
||
IF (rec.prs_kenmerklink_key IS NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen pasnummer';
|
||
|
||
INSERT INTO prs_kenmerklink (prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerk_key,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (rec.prs_perslid_key,
|
||
'P',
|
||
c_badgenr_kkey,
|
||
rec.badgenr);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken pasnummer';
|
||
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = rec.badgenr
|
||
WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Passen/#ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Passen/#toegevoegd: ' || TO_CHAR (v_count_new),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Passen/#bijgewerkt: ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
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,
|
||
'Importproces passen afgebroken!');
|
||
END pzho_update_invise;
|
||
/
|
||
|
||
/* Formatted on 13-11-2013 17:35:25 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW pzho_v_api_dienstfietsen
|
||
(
|
||
res_key,
|
||
res_id,
|
||
fiets_oms,
|
||
sleutel_id,
|
||
van,
|
||
tot,
|
||
user_key,
|
||
vnaam,
|
||
anaam,
|
||
pasnr,
|
||
fo_status_key, -- 1=OPT/2=BEV/3=DEL/4=BLK
|
||
last_change, -- Laatste NEW/UPD/DEL/BLK
|
||
res_verwijder
|
||
)
|
||
AS
|
||
SELECT rr.res_rsv_ruimte_key,
|
||
TO_CHAR (rr.res_reservering_key)
|
||
|| '/'
|
||
|| TO_CHAR (rr.res_rsv_ruimte_volgnr),
|
||
TRIM (rd.res_deel_omschrijving),
|
||
fac.safe_to_number(SUBSTR (
|
||
rd.res_deel_omschrijving,
|
||
INSTR (rd.res_deel_omschrijving, ' ', -1)
|
||
+ 1
|
||
)),
|
||
rr.res_rsv_ruimte_van,
|
||
rr.res_rsv_ruimte_tot,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_voornaam vnaam,
|
||
DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''),
|
||
'', '',
|
||
p.prs_perslid_tussenvoegsel || ' ')
|
||
|| p.prs_perslid_naam
|
||
anaam,
|
||
kl.prs_kenmerklink_waarde pasnr,
|
||
rr.res_status_fo_key,
|
||
CASE
|
||
WHEN rr.res_rsv_ruimte_van < TRUNC (SYSDATE + 1)
|
||
THEN SYSDATE - 5/24/60 -- Doe alsof 5 minuten geleden gewijzigd
|
||
ELSE t.last_change
|
||
END last_change,
|
||
rr.res_rsv_ruimte_verwijder
|
||
FROM res_rsv_ruimte rr, -- Ook verwijderde res_rsv_ruimte!
|
||
res_rsv_deel rrd, -- Ook verwijderde res_rsv_deel!
|
||
res_deel rd,
|
||
prs_perslid p,
|
||
prs_v_aanwezigkenmerklink kl,
|
||
( SELECT fac_tracking_refkey,
|
||
MAX (fac_tracking_datum) last_change
|
||
FROM fac_tracking -- 30=NEW/31=UPD/34=DEL/242=BLK
|
||
WHERE fac_srtnotificatie_key IN (30, 31, 34, 242)
|
||
GROUP BY fac_tracking_refkey) t
|
||
WHERE rr.res_rsv_ruimte_tot > TRUNC (SYSDATE) -- Lopende..
|
||
AND rr.res_ruimte_opstel_key IS NULL -- losse boekingen
|
||
AND rr.res_activiteit_key = 11 -- Activiteit tbv. Traka-koppeling
|
||
AND rr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
|
||
AND rrd.res_deel_key = rd.res_deel_key
|
||
AND rr.res_rsv_ruimte_dirtlevel = 0
|
||
AND rr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_contact_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 13 -- Alleen aanvragers met een pasnr
|
||
AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey(+);
|
||
|
||
|
||
/* Formatted on 7-7-2014 10:50:15 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE pzho_import_meubel (p_import_key IN NUMBER)
|
||
IS
|
||
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 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
-- De importvelden:
|
||
v_status VARCHAR2 (255); -- C100
|
||
v_kamer VARCHAR2 (255); -- C50
|
||
v_werkplek VARCHAR2 (255); -- C10
|
||
v_cinr VARCHAR2 (255); -- C60
|
||
v_artikelnr VARCHAR2 (255); -- C10
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM pzho_imp_meubel;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_status);
|
||
fac.imp_getfield (v_newline, c_delim, v_kamer);
|
||
fac.imp_getfield (v_newline, c_delim, v_werkplek);
|
||
fac.imp_getfield (v_newline, c_delim, v_cinr);
|
||
fac.imp_getfield (v_newline, c_delim, v_artikelnr);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_status
|
||
|| '|'
|
||
|| v_artikelnr
|
||
|| '|'
|
||
|| v_cinr
|
||
|| '|'
|
||
|| v_kamer
|
||
|| '] ';
|
||
|
||
-- 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 (v_status) = 'STATUS'
|
||
AND UPPER (v_kamer) = 'KAMER'
|
||
AND UPPER (v_werkplek) = 'WERKPLEK'
|
||
AND UPPER (v_cinr) = 'CI-NUMMER'
|
||
AND UPPER (v_artikelnr) = 'ARTIKELNUMMER'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Status ongedefinieerd of te lang';
|
||
v_status := TRIM (v_status);
|
||
|
||
IF v_status IS NULL OR LENGTH (v_status) > 60
|
||
THEN
|
||
v_status := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding || v_errormsg,
|
||
'Status wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Kamer ongeldig; ongedefinieerd of te lang';
|
||
v_kamer := TRIM (v_kamer);
|
||
|
||
IF v_kamer IS NULL OR LENGTH (v_kamer) > 50
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Ignore?
|
||
v_errormsg := 'Werkplek ongedefinieerd of te lang';
|
||
v_werkplek := TRIM (v_werkplek);
|
||
|
||
IF v_werkplek IS NULL OR LENGTH (v_werkplek) > 10
|
||
THEN
|
||
v_werkplek := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding || v_errormsg,
|
||
'Werkplek wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'CI-nummer ongeldig; ongedefinieerd of te lang';
|
||
v_cinr := TRIM (v_cinr);
|
||
|
||
IF v_cinr IS NULL OR LENGTH (v_cinr) > 60
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Artikelnummer ongeldig; ongedefinieerd of te lang';
|
||
v_artikelnr := TRIM (v_artikelnr);
|
||
|
||
IF v_artikelnr IS NULL OR LENGTH (v_artikelnr) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO pzho_imp_meubel (status,
|
||
kamer,
|
||
werkplek,
|
||
cinr,
|
||
artikelnr)
|
||
VALUES (v_status,
|
||
v_kamer,
|
||
v_werkplek,
|
||
v_cinr,
|
||
v_artikelnr);
|
||
|
||
COMMIT;
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Meubel-objecten/aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Meubel-objecten/aantal ongeldige niet ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
'');
|
||
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 Meubel-objecten afgebroken!');
|
||
END pzho_import_meubel;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE pzho_update_meubel (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
||
p_srtkenmerk_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_key NUMBER;
|
||
v_srtkenmerk_type VARCHAR2 (1);
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam VARCHAR2 (30);
|
||
v_kolomnaam VARCHAR2 (30);
|
||
v_kolomtxt VARCHAR2 (30);
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_kenmerkdeel_key NUMBER;
|
||
BEGIN
|
||
IF p_srtkenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij bepalen kenmerk van soort [' || p_srtkenmerk_key || ']';
|
||
|
||
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key, v_srtkenmerk_type
|
||
FROM ins_deel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_v_aanwezigkenmerk k,
|
||
ins_v_aanwezigsrtkenmerk sk
|
||
WHERE d.ins_deel_key = p_deel_key
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND k.ins_srtkenmerk_key = p_srtkenmerk_key
|
||
AND ( (k.ins_srtinstallatie_key = sd.ins_srtdeel_key
|
||
AND k.ins_kenmerk_niveau = 'S')
|
||
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key
|
||
AND k.ins_kenmerk_niveau = 'G')
|
||
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key
|
||
AND k.ins_kenmerk_niveau = 'D'))
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
|
||
IF v_srtkenmerk_type IN ('R', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
||
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg :=
|
||
'Fout bij bepalen nieuwe waarde [' || p_waarde || ']';
|
||
|
||
IF ccount = 1
|
||
THEN -- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM ins_srtkenmerk sk,
|
||
fac_kenmerkdomein d,
|
||
fac_v_aanwezigusrdata ud
|
||
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND UPPER (TRIM (ud.fac_usrdata_omschr)) =
|
||
UPPER (p_waarde);
|
||
ELSE -- FACILITOR view/tabel
|
||
SELECT d.fac_kenmerkdomein_objectnaam,
|
||
d.fac_kenmerkdomein_kolomnaam,
|
||
d.fac_kenmerkdomein_kolomtxt
|
||
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
||
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
||
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NULL;
|
||
|
||
sql_stmt :=
|
||
'SELECT MAX ('
|
||
|| v_kolomnaam
|
||
|| ') FROM '
|
||
|| v_objectnaam
|
||
|| ' WHERE UPPER (TRIM ('
|
||
|| v_kolomtxt
|
||
|| ')) = UPPER ('''
|
||
|| p_waarde
|
||
|| ''')';
|
||
|
||
EXECUTE IMMEDIATE sql_stmt INTO v_waarde;
|
||
END IF;
|
||
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
|
||
v_waarde := p_waarde;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bepalen huidige waarde';
|
||
|
||
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
|
||
INTO ccount, v_kenmerkdeel_key
|
||
FROM ins_v_aanwezigkenmerkdeel
|
||
WHERE ins_deel_key = p_deel_key AND ins_kenmerk_key = v_kenmerk_key;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
|
||
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
||
ins_kenmerk_key,
|
||
ins_kenmerkdeel_waarde)
|
||
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']';
|
||
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_waarde = v_waarde
|
||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||
END IF;
|
||
END IF;
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'upsert_inskenmerk');
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE upsert_deel (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT artikelnr,
|
||
'H' || SUBSTR (cinr, 3) cinr,
|
||
kamer,
|
||
SUBSTR (kamer, 1, INSTR (kamer, '-') - 1) gebouw_code,
|
||
SUBSTR (kamer,
|
||
INSTR (kamer, '-') + 1,
|
||
INSTR (kamer, '-', -1) - (INSTR (kamer, '-') + 1))
|
||
verdieping_code,
|
||
SUBSTR (kamer, INSTR (kamer, '-', -1) + 1) ruimte_nr,
|
||
werkplek,
|
||
status
|
||
FROM pzho_imp_meubel;
|
||
|
||
c_meubilair_diskey NUMBER (10) := 438;
|
||
c_status_srtkey NUMBER (10) := 45;
|
||
v_srtgroep_key NUMBER (10);
|
||
v_srtdeel_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_deel_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_create NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
v_srtnoti_code VARCHAR2 (6);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_create := 0;
|
||
v_count_update := 0;
|
||
v_aanduiding := '';
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.status
|
||
|| '|'
|
||
|| rec.artikelnr
|
||
|| '|'
|
||
|| rec.cinr
|
||
|| '|'
|
||
|| rec.kamer
|
||
|| '] ';
|
||
v_errormsg := 'Fout bepalen Meubel-objectsoort';
|
||
|
||
SELECT sg.ins_srtgroep_key, sd.ins_srtdeel_key
|
||
INTO v_srtgroep_key, v_srtdeel_key
|
||
FROM ins_srtgroep sg, ins_srtdeel sd
|
||
WHERE sg.ins_srtgroep_verwijder IS NULL
|
||
AND sg.ins_srtgroep_module = 'INS'
|
||
AND sg.ins_discipline_key = c_meubilair_diskey
|
||
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
|
||
AND sd.ins_srtdeel_verwijder IS NULL
|
||
AND sd.ins_srtdeel_module = 'INS'
|
||
AND TRIM (sd.ins_srtdeel_code_upper) =
|
||
UPPER (rec.artikelnr);
|
||
|
||
v_errormsg := 'Fout bepalen gebouw [' || rec.gebouw_code || ']';
|
||
|
||
SELECT alg_locatie_key, alg_gebouw_key
|
||
INTO v_locatie_key, v_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND UPPER (TRIM (alg_gebouw_code)) =
|
||
UPPER (rec.gebouw_code);
|
||
|
||
v_errormsg :=
|
||
'Fout bepalen verdieping [' || rec.verdieping_code || ']';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_verwijder IS NULL
|
||
AND alg_gebouw_key = v_gebouw_key
|
||
AND UPPER (TRIM (alg_verdieping_code)) =
|
||
UPPER (rec.verdieping_code);
|
||
|
||
v_errormsg := 'Fout bepalen ruimte [' || rec.ruimte_nr || ']';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_verwijder IS NULL
|
||
AND alg_verdieping_key = v_verdieping_key
|
||
AND UPPER (TRIM (alg_ruimte_nr)) = UPPER (rec.ruimte_nr);
|
||
|
||
-- Ruimtegebonden objecten hebben een unieke ID bij PZH (over alle
|
||
-- locaties)!
|
||
v_errormsg := 'Fout bepalen Meubel-object';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_deel_module = 'INS'
|
||
AND d.ins_deel_upper = UPPER (rec.cinr)
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = c_meubilair_diskey;
|
||
|
||
IF ccount > 0 -- Object bestaat reeds!
|
||
THEN
|
||
SELECT MAX (d.ins_deel_key)
|
||
INTO v_deel_key
|
||
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_deel_module = 'INS'
|
||
AND d.ins_deel_upper = UPPER (rec.cinr)
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = c_meubilair_diskey;
|
||
|
||
v_errormsg := 'Fout bijwerken Meubel-object';
|
||
|
||
UPDATE ins_deel
|
||
SET ins_alg_ruimte_key = v_ruimte_key,
|
||
ins_alg_ruimte_type = 'R'
|
||
WHERE ins_deel_key = v_deel_key;
|
||
|
||
COMMIT;
|
||
|
||
v_srtnoti_code := 'INSNEW';
|
||
v_count_update := v_count_update + 1;
|
||
ELSE -- Object bestaat nog niet, dus toevoegen!
|
||
v_errormsg := 'Fout toevoegen Meubel-object';
|
||
|
||
INSERT INTO ins_deel (ins_discipline_key,
|
||
ins_srtdeel_key,
|
||
ins_deel_module,
|
||
ins_deel_omschrijving,
|
||
ins_alg_ruimte_key,
|
||
ins_alg_ruimte_type,
|
||
ins_alg_locatie_key)
|
||
VALUES (c_meubilair_diskey,
|
||
v_srtdeel_key,
|
||
'INS',
|
||
rec.cinr,
|
||
v_ruimte_key,
|
||
'R',
|
||
v_locatie_key)
|
||
RETURNING ins_deel_key
|
||
INTO v_deel_key;
|
||
|
||
COMMIT;
|
||
|
||
v_srtnoti_code := 'INSUPD';
|
||
v_count_create := v_count_create + 1;
|
||
END IF;
|
||
|
||
-- Status upsert-en; huidige status wordt NOOIT gewist via import!
|
||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||
upsert_inskenmerk (v_deel_key, c_status_srtkey, rec.status);
|
||
|
||
fac.trackaction (v_srtnoti_code,
|
||
v_deel_key,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Meubel-Objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Meubel-Objecten/aantal toegevoegd: ' || TO_CHAR (v_count_create),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Meubel-Objecten/aantal bijgewerkt: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
upsert_deel (p_import_key);
|
||
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_errormsg,
|
||
'Importproces Meubel-objecten afgebroken!');
|
||
END pzho_update_meubel;
|
||
/
|
||
|
||
|
||
-- PZHO#28115 Rapport tbv kilometer controle. Deze worden in via meldingen geregistreerd (key 409)
|
||
CREATE OR REPLACE VIEW PZHO_V_RAP_DIENSTRITVERANTW
|
||
(
|
||
FCLT_F_Maand,
|
||
FCLT_F_Kenteken,
|
||
Kilometers,
|
||
Naam_Bestuurder,
|
||
Doel,
|
||
Van,
|
||
Via,
|
||
Naar,
|
||
Reden_auto_ipv_OV,
|
||
Reden_weekend_of_na_1800,
|
||
Datum_vertrek,
|
||
Tijd_vertrek,
|
||
Datum_terug,
|
||
Tijd_terug
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (TO_DATE (km1.mld_kenmerkmelding_waarde, 'DD-MM-YYYY'),
|
||
'YYYY-MM')
|
||
Maand,
|
||
fu.fac_usrdata_omschr Kenteken,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 1811)
|
||
Kilometers,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 911)
|
||
Naam_Bestuurder,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 1805)
|
||
Doel,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 1806)
|
||
Van,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 1807)
|
||
Via,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 1808)
|
||
Naar,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 832)
|
||
Reden_auto_ipv_OV,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 831)
|
||
Reden_weekend_of_na_1800,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 835)
|
||
Datum_vertrek,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 836)
|
||
Tijd_vertrek,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 837)
|
||
Datum_terugkomst,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_kenmerk_key = 838)
|
||
Tijd_terugkomst
|
||
FROM mld_melding m,
|
||
mld_kenmerkmelding km1,
|
||
mld_kenmerkmelding km2,
|
||
mld_kenmerk mk,
|
||
mld_srtkenmerk sk,
|
||
fac_kenmerkdomein kd,
|
||
fac_usrdata fu
|
||
WHERE m.mld_stdmelding_key = 409 -- Dienstauto
|
||
AND mld_melding_status IN (5, 6) -- Afgemeld + Historie
|
||
AND m.mld_melding_key = km1.mld_melding_key
|
||
AND m.mld_melding_key = km2.mld_melding_key
|
||
AND km1.mld_kenmerk_key = 835 -- Datum vertrek
|
||
AND km1.mld_kenmerkmelding_verwijder IS NULL
|
||
AND km2.mld_kenmerk_key = 1809 -- Kenteken Auto
|
||
AND km2.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND sk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND kd.fac_kenmerkdomein_key = SK.FAC_KENMERKDOMEIN_KEY
|
||
AND kd.fac_usrtab_key = fu.fac_usrtab_key
|
||
AND km2.mld_kenmerkmelding_waarde = fu.fac_usrdata_key;
|
||
|
||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||
/
|
||
BEGIN fac.registercustversion('PZHO', 50); END;
|
||
/
|
||
COMMIT;
|
||
spool off
|