1670 lines
67 KiB
SQL
1670 lines
67 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
DEFINE thisfile = 'goko.SQL'
|
||
DEFINE dbuser = 'GOKO'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE PACKAGE GOKO
|
||
AS
|
||
-- PROCEDURE set_werkplek;
|
||
|
||
-- PROCEDURE annuleer_werkplek;
|
||
|
||
-- PROCEDURE bes_after_insert (p_bes_bestelling_key IN NUMBER);
|
||
|
||
|
||
FUNCTION get_kenmerk (p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
|
||
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
|
||
p_kenmerkdomein_key NUMBER,
|
||
p_kenmerk_waarde VARCHAR2)
|
||
RETURN VARCHAR2;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY GOKO
|
||
AS
|
||
FUNCTION get_kenmerk (p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
|
||
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
||
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
|
||
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'MLD'
|
||
THEN
|
||
SELECT mld_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
km.mld_kenmerkmelding_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM mld_v_aanwezigkenmerkmelding km,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk
|
||
WHERE km.mld_melding_key = p_link_key
|
||
AND km.mld_kenmerk_key = p_kenmerk_key
|
||
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
|
||
WHEN 'CNT'
|
||
THEN
|
||
SELECT cnt_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
kc.cnt_kenmerkcontract_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM cnt_kenmerkcontract kc,
|
||
cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE kc.cnt_contract_key = p_link_key
|
||
AND kc.cnt_kenmerk_key = p_kenmerk_key
|
||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
|
||
WHEN 'ALG'
|
||
THEN
|
||
SELECT alg_kenmerk_kenmerktype,
|
||
k.fac_kenmerkdomein_key,
|
||
aogk.alg_onrgoedkenmerk_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_onrgoed_key = p_link_key
|
||
AND aogk.alg_kenmerk_key = p_kenmerk_key
|
||
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
|
||
WHEN 'INS'
|
||
THEN
|
||
SELECT k.ins_kenmerk_niveau
|
||
INTO v_kenmerk_niveau
|
||
FROM ins_kenmerk k
|
||
WHERE ins_kenmerk_key = p_kenmerk_key;
|
||
|
||
IF v_kenmerk_niveau = 'C'
|
||
THEN
|
||
SELECT sk.ins_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
ikds.ins_kmdeelsrtcontr_waarde
|
||
INTO v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde
|
||
FROM ins_kmdeelsrtcontr ikds,
|
||
ins_kenmerk k,
|
||
ins_srtkenmerk sk
|
||
WHERE ikds.ins_kmdeelsrtcontr_key = p_link_key
|
||
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
|
||
AND ikds.ins_kenmerk_key = p_kenmerk_key
|
||
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
ELSE
|
||
SELECT sk.ins_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
ikd.ins_kenmerkdeel_waarde
|
||
INTO v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde
|
||
FROM ins_kenmerkdeel ikd,
|
||
ins_kenmerk k,
|
||
ins_srtkenmerk sk
|
||
WHERE ikd.ins_deel_key = p_link_key
|
||
AND ikd.ins_kenmerkdeel_verwijder IS NULL
|
||
AND ikd.ins_kenmerk_key = p_kenmerk_key
|
||
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
END IF;
|
||
END CASE;
|
||
|
||
RETURN goko.get_kenmerkwaarde (v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde);
|
||
END;
|
||
|
||
|
||
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
|
||
p_kenmerkdomein_key NUMBER,
|
||
p_kenmerk_waarde VARCHAR2)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_result VARCHAR2 (4000);
|
||
BEGIN
|
||
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S'
|
||
THEN
|
||
v_result :=
|
||
fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde);
|
||
ELSIF p_kenmerk_type = 'D'
|
||
THEN
|
||
v_result :=
|
||
TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'),
|
||
'yyyy-mm-dd');
|
||
ELSE
|
||
v_result := p_kenmerk_waarde;
|
||
END IF;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
-------------------------------
|
||
--- DOMEIN-VIEWS --------------
|
||
-------------------------------
|
||
|
||
-- Voor keuzelijstjes (kenmerk domein)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE
|
||
WHEN p.prs_perslid_tussenvoegsel IS NOT NULL
|
||
THEN
|
||
p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam
|
||
ELSE
|
||
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
|
||
END naam
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GO Kinderopvang
|
||
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT','INTERNE AFDELING') -- Geen team-accounts en interne afdeling-accounts
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW goko_v_kostenplaatsen
|
||
(
|
||
PRS_KOSTENPLAATS_KEY,
|
||
NR,
|
||
OMSCHRIJVING
|
||
)
|
||
AS
|
||
SELECT
|
||
kp.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_nr,
|
||
kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
|
||
omschrijving
|
||
FROM
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE
|
||
kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
|
||
AND kp.prs_kostenplaats_verwijder IS NULL
|
||
AND (kp.prs_kostenplaats_eind IS NULL OR kp.prs_kostenplaats_eind > TRUNC(SYSDATE) )
|
||
AND kp.prs_kostenplaats_module = 'PRS'
|
||
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW goko_v_it_nummers
|
||
(
|
||
INS_DEEL_KEY,
|
||
INS_DEEL_UPPER
|
||
)
|
||
AS
|
||
SELECT
|
||
v.ins_deel_key,
|
||
v.ins_deel_upper
|
||
FROM ins_v_deel_gegevens v, ins_deel d
|
||
WHERE v.ins_discipline_key = 84 -- IT-Nummers
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND d.ins_deel_verwijder IS NULL
|
||
AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ;
|
||
|
||
CREATE OR REPLACE VIEW goko_v_it_nummers_man
|
||
(
|
||
ICT_NUMMER,
|
||
STATUS,
|
||
ICT_OBJECT,
|
||
NR_INS_DEEL_KEY
|
||
)
|
||
AS
|
||
SELECT
|
||
nr.ins_deel_upper,
|
||
CASE WHEN d.ins_deel_upper IS NOT NULL THEN 'Gekoppeld' ELSE 'Vrij' END
|
||
status,
|
||
d.ins_deel_upper,
|
||
nr.ins_deel_key
|
||
FROM (SELECT v.ins_deel_key,
|
||
v.ins_deel_upper
|
||
FROM ins_v_deel_gegevens v, ins_deel d
|
||
WHERE v.ins_discipline_key = 84 -- IT-Nummers
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND d.ins_deel_verwijder IS NULL
|
||
AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ) nr,
|
||
(SELECT d.ins_deel_key,
|
||
d.ins_deel_upper,
|
||
kw.ins_kenmerkdeel_waarde,
|
||
num.ins_deel_upper as nummer_gekoppeld
|
||
FROM ins_deel d,
|
||
ins_kenmerkdeel kw,
|
||
ins_kenmerk k,
|
||
ins_deel num
|
||
WHERE d.ins_deel_key = kw.ins_deel_key
|
||
AND kw.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND k.ins_srtkenmerk_key = 22 -- kenmerksoort domeinview SIM-kaart
|
||
AND kw.ins_kenmerkdeel_verwijder IS NULL
|
||
AND fac.safe_to_number (kw.ins_kenmerkdeel_waarde) =
|
||
num.ins_deel_key) d
|
||
WHERE
|
||
nr.ins_deel_upper = d.nummer_gekoppeld(+) ;
|
||
|
||
|
||
-- Lijst van Locatieleiders (tbv domeinview)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst_leider
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM,
|
||
PERSONEELSNUMMER,
|
||
EMAIL
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
|
||
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
||
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
||
END
|
||
naam,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_email
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GOKO
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND UPPER(sp.prs_srtperslid_omschrijving) = 'LOCATIELEIDER'
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
-- Lijst van Waarnemers (tbv domeinview)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst_waarn
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM,
|
||
PERSONEELSNUMMER,
|
||
EMAIL
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
|
||
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
|
||
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
|
||
END
|
||
naam,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_email
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b,
|
||
prs_kenmerklink kl
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1009 -- kenmerk waarnemer (vinkbox)
|
||
AND kl.prs_kenmerklink_waarde = '1' AND kl.prs_kenmerklink_verwijder IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
-- Lijst van Locatieleiders/Waarnemers en de locaties waar men verantwoordelijk voor is (tbv Personen-import)
|
||
CREATE OR REPLACE VIEW goko_v_locatiemanagers
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
ALG_LOCATIE_KEY,
|
||
LOCATIEMANAGER,
|
||
LOCATIE,
|
||
WAARNEMER,
|
||
PRS_PERSLID_VERWIJDER
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_key,
|
||
l.alg_locatie_key,
|
||
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving
|
||
locatiemanager,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||
locatie,
|
||
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END
|
||
waarnemer,
|
||
p.prs_perslid_verwijder
|
||
FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l
|
||
WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key
|
||
AND ok.alg_kenmerk_key IN (1002, 1003) -- locatieleider en waarnemer
|
||
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND ok.alg_onrgoed_niveau = 'L' AND ok.alg_onrgoed_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
GROUP BY p.prs_perslid_key, l.alg_locatie_key,
|
||
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving,
|
||
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END,
|
||
p.prs_perslid_verwijder ;
|
||
|
||
-- Lijst van Locatiemanagers + Waarnemers en de Werkplekkoppeling die ze in hun personenkaart hebben (tbv Personen-import)
|
||
CREATE OR REPLACE VIEW goko_v_locatiemanagers_wp
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
ALG_LOCATIE_KEY,
|
||
NAAM,
|
||
LOCATIE_WP
|
||
)
|
||
AS
|
||
SELECT wp.prs_perslid_key,
|
||
onr.alg_locatie_key,
|
||
p.prs_perslid_naam_friendly,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||
locatie
|
||
FROM (
|
||
SELECT prs_perslid_key
|
||
FROM (SELECT *
|
||
FROM goko_v_personenlijst_leider
|
||
UNION
|
||
SELECT *
|
||
FROM goko_v_personenlijst_waarn) x
|
||
GROUP BY x.prs_perslid_key
|
||
) v,
|
||
prs_v_perslid_fullnames p, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l
|
||
WHERE v.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = wp.prs_perslid_key
|
||
AND wp.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_ruimte_key = onr.alg_ruimte_key
|
||
AND onr.alg_locatie_key = l.alg_locatie_key
|
||
ORDER BY wp.prs_perslid_key
|
||
;
|
||
|
||
-- Lijst van Locaties en de kostenplaaten die daaronder vallen (opvangsoorten die men aanbied)
|
||
CREATE OR REPLACE VIEW goko_v_locatie_kp
|
||
(
|
||
ALG_LOCATIE_KEY,
|
||
LOCATIE,
|
||
PRS_KOSTENPLAATS_KEY,
|
||
PRS_KOSTENPLAATS_NR,
|
||
PRS_KOSTENPLAATS_OMSCHRIJVING
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1010 -- kostenplaats KDV
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1012 -- kostenplaats BSO
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1014 -- kostenplaats PSZ
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1017 -- kostenplaats TSO
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1016 -- 2e kostenplaats PSZ
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key ;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE goko_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
v_aantal_in_fclt NUMBER;
|
||
|
||
-- overige variabelen
|
||
v_prs_afdeling_key NUMBER(10);
|
||
c_prs_afdeling_key NUMBER(10) := 22 ; -- Fallback-afdeling 'OVERIG'
|
||
c_prs_afdeling_key_leid NUMBER(10) := 21 ; -- Afdeling OPVANG bestemd voor de Locatieleiders
|
||
v_prs_kostenplaats_key NUMBER(10);
|
||
v_prs_afdeling_upper VARCHAR2(10);
|
||
|
||
v_alg_locatie_key NUMBER(10);
|
||
v_alg_locatie_code VARCHAR2(10);
|
||
v_alg_gebouw_key NUMBER(10);
|
||
v_alg_gebouw_code VARCHAR2(12);
|
||
v_alg_verdieping_key NUMBER(10);
|
||
v_alg_verdieping_volgnr NUMBER(3);
|
||
v_alg_ruimte_key NUMBER(10);
|
||
v_alg_ruimte_nr VARCHAR2(20);
|
||
|
||
|
||
CURSOR c_email
|
||
IS
|
||
SELECT fac_imp_file_index, p.prs_perslid_key, p.prs_perslid_email
|
||
FROM fac_imp_perslid i, prs_perslid p
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
ORDER BY 1 ;
|
||
|
||
-- Facilitor is leading qua Functies - Voor alle bestaande werknemers de facilitor-functie overnemen en voor nieuwe medewerkers de functie uit beaufort initieel pakken..
|
||
CURSOR c_functie
|
||
IS
|
||
SELECT fac_imp_file_index, p.prs_perslid_key, sp.prs_srtperslid_omschrijving
|
||
FROM fac_imp_perslid i, prs_perslid p, prs_srtperslid sp
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_srtperslid_key IS NOT NULL
|
||
UNION ALL
|
||
SELECT fac_imp_file_index, -1 prs_perslid_key, COALESCE(i.prs_kenmerk1,'Onbekend') prs_srtperslid_omschrijving
|
||
FROM fac_imp_perslid i
|
||
WHERE fac_import_key = p_import_key
|
||
AND NOT EXISTS (SELECT 1 FROM prs_perslid p WHERE p.prs_perslid_nr = i.prs_perslid_nr AND p.prs_perslid_verwijder IS NULL) ;
|
||
|
||
CURSOR c_login
|
||
IS
|
||
SELECT fac_imp_file_index, p.prs_perslid_key, p.prs_perslid_oslogin
|
||
FROM fac_imp_perslid i, prs_perslid p
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin IS NOT NULL
|
||
ORDER BY 1 ;
|
||
|
||
CURSOR c_afd
|
||
IS
|
||
SELECT fac_imp_file_index, prs_afdeling_naam, prs_kenmerk5, prs_srtperslid_omschrijving
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
CURSOR c_loc
|
||
IS
|
||
SELECT fac_imp_file_index, prs_kenmerk5
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
|
||
BEGIN
|
||
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
|
||
v_errorhint := 'Delimiter goed zetten';
|
||
-- UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
|
||
-- WHERE fac_import_key = p_import_key;
|
||
|
||
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
|
||
-- UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
|
||
-- WHERE fac_import_key = p_import_key;
|
||
|
||
|
||
v_errorhint := 'Generieke update';
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
|
||
-- Voor GOKO geldt: functie in Facilitor gaan we leading maken. bij import-inleesactie vullen met personeelsnr en daarna overschrijven met het de functie uit Facilitor of bij nieuwe medewerker met <onbekend>
|
||
---
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;5;8;7;6;'
|
||
|| '0;0;0;0;0;0;0;0;0;5;'
|
||
|| '5;0;0;0;0;0;9;1;2;3;'
|
||
|| '4;10;11;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'Regio;Locatie;Inzet werksoort;Kostenplaats loonverd;Persoonsnr;Roepnaam;Voorvoeg;Persoonsnaam;Oms functie;Uitdienst dat;Email werk%');
|
||
-- 1 2 3 4 5 6 7 8 9 10 11
|
||
-- DEF. BESTAND BIJ GOKO: Regio;Locatie;Inzet werksoort;Kostenplaats loonverd.;Persoonsnr.;Roepnaam;Voorvoeg.;Persoonsnaam;Oms functie;Uitdienst dat.;Email werk
|
||
|
||
v_errorhint := 'Uit dienst datum goed vullen';
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk6 = DECODE (fac.safe_to_date(prs_kenmerk6,'dd-mm-yyyy'), NULL, NULL, fac.safe_to_date(prs_kenmerk6,'dd-mm-yyyy')) WHERE prs_kenmerk6 IS NOT NULL;
|
||
|
||
v_errorhint := 'De FUNCTIE uit Facilitor is leading';
|
||
FOR rec IN c_functie
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_srtperslid_omschrijving = rec.prs_srtperslid_omschrijving
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Het EMAIL-adres uit Facilitor is leading';
|
||
-- Facilitor is leading qua emailadressen.
|
||
FOR rec IN c_email
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_email = rec.prs_perslid_email
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Emailadres Go-Kinderopvang vullen';
|
||
-- De prive-adressen die uit Beaufort meekomen verwijderen - alleen de zakelijke emailadressen nemen we over naar kenmerkveld Email (werk)
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk7 = NULL
|
||
WHERE prs_kenmerk7 IS NOT NULL AND INSTR(UPPER(prs_kenmerk7),'@GO-KINDEROPVANG.NL')=0 ;
|
||
|
||
|
||
FOR rec IN c_login
|
||
LOOP
|
||
BEGIN
|
||
|
||
v_errorhint := 'Bestaande OSLOGIN uit Facilitor handhaven';
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_oslogin = rec.prs_perslid_oslogin
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Login afleiden van emailadres (voor locatieleiders)';
|
||
-- Voor de locatieleiders de oslogin vullen in geval nog niet gevuld in Facilitor (vanuit vorige cursor)
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_oslogin =
|
||
UPPER((SUBSTR (prs_perslid_email,
|
||
0,
|
||
INSTR (prs_perslid_email, '@') - 1)))
|
||
WHERE
|
||
UPPER (prs_perslid_email) LIKE '%GO-KINDEROPVANG.NL'
|
||
AND prs_perslid_email IS NOT NULL
|
||
AND UPPER(prs_srtperslid_omschrijving) = 'LOCATIELEIDER'
|
||
AND prs_perslid_oslogin IS NULL
|
||
AND LENGTH((SUBSTR (prs_perslid_email,
|
||
0,
|
||
INSTR (prs_perslid_email, '@') - 1))) <=30 ;
|
||
|
||
v_errorhint := 'Afdeling bepalen en vullen';
|
||
-- Afdeling bepalen waar persoon onder komt te vallen. LET OP - Deze is voor GOKO niet altijd gevuld!? Oplossen door eerst te vullen met PERSONEELSNR en in Kenmerk5 de kostenplaats/afdeling
|
||
-- Voor locatieleiders geldt dat deze altijd op organisatie 'OPVANG' moeten komen (onder dit organisatieonderdeel zitten op niveau 2 de team/afdelingen/kostenplaatsen)
|
||
FOR rec IN c_afd
|
||
LOOP
|
||
BEGIN
|
||
|
||
v_errorhint := 'Persoon aan Afdeling koppelen';
|
||
|
||
-- Als locatieleider dan afdeling altijd OPVANG (c_prs_afdeling_key_leid)
|
||
IF UPPER(rec.prs_srtperslid_omschrijving) = 'LOCATIELEIDER'
|
||
THEN
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key_leid)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
ELSE
|
||
IF rec.prs_kenmerk5 IS NULL
|
||
THEN
|
||
|
||
v_prs_afdeling_key := NULL ;
|
||
|
||
ELSE
|
||
SELECT min(prs_afdeling_key)
|
||
INTO v_prs_afdeling_key
|
||
FROM prs_v_afdeling
|
||
WHERE prs_afdeling_upper = UPPER(rec.prs_kenmerk5)
|
||
AND prs_bedrijf_key = 21 -- bedrijf GOKO
|
||
AND prs_afdeling_verwijder IS NULL ;
|
||
|
||
END IF;
|
||
|
||
-- Als afdeling uit beaufort (nog) niet bekend is in Facilitor dan op afdeling OVERIG zetten (c_prs_afdeling_key)
|
||
IF v_prs_afdeling_key IS NULL THEN
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
ELSE
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam = rec.prs_kenmerk5
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Locatie bepalen en vullen';
|
||
-- Op basis van kostenplaats gaan we kijken of we de locatie en werkplekkoppeling kunnen maken
|
||
FOR rec IN c_loc
|
||
LOOP
|
||
BEGIN
|
||
|
||
v_errorhint := 'Persoon aan Locatie-Ruimte koppelen adhv de kostenplaats - ' || TO_CHAR(rec.fac_imp_file_index) ;
|
||
v_alg_locatie_key := NULL;
|
||
v_prs_kostenplaats_key := NULL;
|
||
v_prs_afdeling_upper := NULL;
|
||
v_alg_gebouw_key := NULL;
|
||
v_alg_verdieping_key := NULL;
|
||
v_alg_ruimte_key := NULL;
|
||
|
||
IF rec.prs_kenmerk5 IS NULL
|
||
THEN
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
ELSE
|
||
|
||
SELECT MAX(l.alg_locatie_key), MAX(kp.prs_kostenplaats_key)
|
||
INTO v_alg_locatie_key, v_prs_kostenplaats_key
|
||
FROM alg_locatie l,
|
||
alg_onrgoedkenmerk kk,
|
||
alg_kenmerk k,
|
||
prs_kostenplaats kp,
|
||
prs_afdeling a
|
||
WHERE l.alg_locatie_key = kk.alg_onrgoed_key
|
||
AND kk.alg_onrgoed_niveau = 'L'
|
||
AND kk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND k.alg_kenmerk_key IN (1010, 1012, 1014, 1016, 1017) -- kenmerk_keys voor de kostenplaatsen KDV, BSO, PSZ, TSO en PSZ-2e
|
||
AND fac.safe_to_number (kk.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaats_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL
|
||
AND kp.prs_kostenplaats_upper = UPPER(rec.prs_kenmerk5) ;
|
||
|
||
END IF;
|
||
|
||
IF v_alg_locatie_key IS NOT NULL THEN
|
||
|
||
-- Locatie_code ophalen
|
||
SELECT alg_locatie_code
|
||
INTO v_alg_locatie_code
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_key = v_alg_locatie_key ;
|
||
|
||
-- Gebouw_key ophalen
|
||
SELECT min(alg_gebouw_key)
|
||
INTO v_alg_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_locatie_key = v_alg_locatie_key
|
||
AND alg_gebouw_verwijder IS NULL
|
||
AND (TRUNC(alg_gebouw_vervaldatum) > TRUNC(sysdate) OR alg_gebouw_vervaldatum IS NULL ) ;
|
||
|
||
-- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'Default standplaats'
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 = (SELECT UPPER(alg_locatie_code) || ' - ' || alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
IF v_alg_gebouw_key IS NOT NULL THEN
|
||
|
||
-- Gebouw_code ophalen
|
||
SELECT alg_gebouw_code
|
||
INTO v_alg_gebouw_code
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_key = v_alg_gebouw_key ;
|
||
|
||
-- Verdiepings_key ophalen
|
||
SELECT min(alg_verdieping_key)
|
||
INTO v_alg_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_gebouw_key = v_alg_gebouw_key
|
||
AND alg_verdieping_verwijder IS NULL ;
|
||
|
||
END IF;
|
||
|
||
IF v_alg_verdieping_key IS NOT NULL THEN
|
||
|
||
-- Verdieping_volgnr ophalen
|
||
SELECT alg_verdieping_volgnr
|
||
INTO v_alg_verdieping_volgnr
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_key = v_alg_verdieping_key ;
|
||
|
||
-- Ruimte_key ophalen
|
||
SELECT min(alg_ruimte_key)
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_verdieping_key = v_alg_verdieping_key
|
||
AND alg_ruimte_verwijder IS NULL ;
|
||
|
||
END IF;
|
||
|
||
IF v_alg_ruimte_key IS NOT NULL THEN
|
||
|
||
-- Ruimte_nr ophalen
|
||
SELECT alg_ruimte_nr
|
||
INTO v_alg_ruimte_nr
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_key = v_alg_ruimte_key ;
|
||
|
||
-- Vullen vastgoed-keten in import-tabel
|
||
UPDATE fac_imp_perslid
|
||
SET alg_locatie_code = v_alg_locatie_code,
|
||
alg_gebouw_code = v_alg_gebouw_code,
|
||
alg_verdieping_volgnr = v_alg_verdieping_volgnr,
|
||
alg_ruimte_nr = v_alg_ruimte_nr
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END IF;
|
||
|
||
ELSE
|
||
-- Geen Locatie/Vastgoedketen kunnen vinden
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END goko_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE goko_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
-- Alle personen verwijderen die niet meer in het import bestand voorkomen
|
||
-- Personen in de juiste autorisatiegroep zetten.
|
||
-- Match bij GO KINDEROPVANG is Personeelsnummer.
|
||
-- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft.
|
||
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving
|
||
FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- GO Kinderopvang
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_upper NOT IN ('TEAMACCOUNT','INTERNE AFDELING','UITZENDKRACHT')
|
||
AND p.prs_perslid_key NOT IN (SELECT prs_perslid_key FROM goko_v_personenlijst_waarn) -- Tijdelijke waarnemers worden niet door import verwijderd. Regelt men handmatig
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE p.prs_perslid_nr = prs_perslid_nr
|
||
)
|
||
ORDER BY 1 ;
|
||
|
||
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
|
||
IS
|
||
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk20
|
||
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
||
WHERE p.prs_perslid_key = i.prs_perslid_key
|
||
ORDER BY 1;
|
||
|
||
CURSOR c_loc -- Voor updaten van locatieleiders & Waarnemers (in eigen autorisatiegroep + profiel toevoegen)
|
||
IS
|
||
SELECT v.prs_perslid_key
|
||
FROM goko_v_locatiemanagers v
|
||
GROUP BY v.prs_perslid_key ;
|
||
|
||
CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen)
|
||
IS
|
||
SELECT v.prs_perslid_key, v.alg_locatie_key, v.actie
|
||
FROM
|
||
(
|
||
SELECT man.prs_perslid_key, man.alg_locatie_key, 'toevoegen' actie
|
||
FROM goko_v_locatiemanagers man
|
||
WHERE NOT EXISTS
|
||
(SELECT *
|
||
FROM goko_v_locatiemanagers_wp wp
|
||
WHERE wp.alg_locatie_key = man.alg_locatie_key
|
||
AND wp.prs_perslid_key = man.prs_perslid_key)
|
||
UNION
|
||
SELECT wp.prs_perslid_key, wp.alg_locatie_key, 'verwijderen' actie
|
||
FROM goko_v_locatiemanagers_wp wp
|
||
WHERE NOT EXISTS
|
||
(SELECT *
|
||
FROM goko_v_locatiemanagers man
|
||
WHERE man.alg_locatie_key = wp.alg_locatie_key
|
||
AND man.prs_perslid_key = wp.prs_perslid_key)
|
||
UNION
|
||
SELECT wp.prs_perslid_key, wp.alg_locatie_key, 'ok' actie
|
||
FROM goko_v_locatiemanagers_wp wp, goko_v_locatiemanagers man
|
||
WHERE man.alg_locatie_key = wp.alg_locatie_key
|
||
AND man.prs_perslid_key = wp.prs_perslid_key
|
||
) v
|
||
ORDER BY 1,2 ;
|
||
|
||
CURSOR c_loc_kp -- Voor updaten van locatieleiders (budgethouder kostenplaatsen en mandaten op kostenplaatsen)
|
||
IS
|
||
SELECT v_prs.prs_perslid_key,
|
||
v_prs.alg_locatie_key,
|
||
v_kp.prs_kostenplaats_key,
|
||
v_prs.waarnemer
|
||
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
|
||
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
|
||
ORDER BY 1,2,3 ;
|
||
|
||
CURSOR c_loc_kp_del -- Voor deleten van mandaten die niet meer van toepassing zijn
|
||
IS
|
||
SELECT pk.prs_perslidkostenplaats_key
|
||
FROM prs_perslidkostenplaats pk
|
||
WHERE NOT EXISTS (SELECT v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
|
||
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
|
||
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
|
||
AND v_prs.prs_perslid_key = pk.prs_perslid_key AND v_kp.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
||
GROUP BY v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
|
||
)
|
||
AND pk.prs_perslid_key IN (SELECT prs_perslid_key
|
||
FROM goko_v_locatiemanagers
|
||
GROUP BY prs_perslid_key) ;
|
||
|
||
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
|
||
v_fac_gebruikersgroep_key NUMBER(10);
|
||
v_alg_ruimte_key NUMBER;
|
||
v_prs_werkplek_key NUMBER;
|
||
v_waarnemer_overrule VARCHAR2 (12);
|
||
v_prs_perslid_key NUMBER(10); -- budgethouder op kp
|
||
v_prs_perslidkostenplaats_key NUMBER(10) ;
|
||
v_fac_profiel_key NUMBER(10);
|
||
|
||
|
||
BEGIN
|
||
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
|
||
|
||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
||
|
||
IF v_count >= 100
|
||
THEN
|
||
v_errorhint := 'Verwerken persoonsgegevens';
|
||
|
||
-- Geldig importbestand wat betreft aantal personen
|
||
|
||
COMMIT;
|
||
|
||
-- generic update
|
||
-- 'EMAIL' betekent dat op basis van Email wordt gematched. 'NR' op basis van personeelsnummer.
|
||
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
||
-- Voor GOKO / Beaufort geldt:
|
||
---- Op NR gaan matchen.
|
||
---- Werkplekkoppeling <20> WEL/NIET standaard verwijderen <20> HOE/WAT beste in te regelen? UITZOEKEN/TESTEN (denk verwijderen beste is<69>.? OF alleen maar voor die personen die nu andere WERKPLEK_LOCATIE_KEY hebben ?)
|
||
prs.update_perslid (p_import_key, 'NR', NULL);
|
||
|
||
v_errorhint := 'Verwijderen persoonsgegevens';
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_flex
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint:='Fout bijwerken kenmerkveld Regio';
|
||
PRS.upsertkenmerk (1001, rec.prs_perslid_key, rec.prs_kenmerk2);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Locatie';
|
||
PRS.upsertkenmerk (1002, rec.prs_perslid_key, rec.prs_kenmerk3);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Kostenplaats';
|
||
PRS.upsertkenmerk (1004, rec.prs_perslid_key, rec.prs_kenmerk5);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Datum uit dienst';
|
||
PRS.upsertkenmerk (1005, rec.prs_perslid_key, rec.prs_kenmerk6);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Standplaats Facilitor';
|
||
PRS.upsertkenmerk (1006, rec.prs_perslid_key, rec.prs_kenmerk20);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Email (werk)';
|
||
PRS.upsertkenmerk (1007, rec.prs_perslid_key, rec.prs_kenmerk7);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Functie Beaufort';
|
||
PRS.upsertkenmerk (1040, rec.prs_perslid_key, rec.prs_kenmerk1);
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc
|
||
LOOP
|
||
BEGIN
|
||
-- Alle locatieleiders toevoegen aan autorisatiegroep 'Locatieleiders'
|
||
v_errorhint:='Fout bijwerken locatieleiders in eigen autorisatiegroep';
|
||
|
||
BEGIN
|
||
|
||
SELECT fac_gebruikersgroep_key
|
||
INTO v_fac_gebruikersgroep_key
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 21 -- Groep 'Locatieleiders en Waarnemers'
|
||
AND prs_perslid_key = rec.prs_perslid_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key,
|
||
prs_perslid_key)
|
||
VALUES (21, rec.prs_perslid_key);
|
||
|
||
END;
|
||
|
||
-- Alle locatieleiders juiste profiel meegeven
|
||
v_errorhint:='Fout bijwerken profiel locatieleiders';
|
||
|
||
SELECT fac_profiel_key
|
||
INTO v_fac_profiel_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||
|
||
IF v_fac_profiel_key IS NULL
|
||
THEN
|
||
|
||
UPDATE prs_perslid
|
||
SET fac_profiel_key = 1
|
||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||
|
||
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Profiel: (leeg) --> Locatieleider-profiel (<5000)'); END;
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_wp
|
||
LOOP
|
||
BEGIN
|
||
-- Werkplekkoppelingen op basis van de locaties waar men locatieleider van is
|
||
v_errorhint:='Fout bijwerken werkplekkoppelingen locatieleider';
|
||
|
||
IF rec.actie = 'toevoegen'
|
||
THEN
|
||
v_errorhint:='Fout bij toevoegen werkplekken voor Locatieleider - perslid_key:' || TO_CHAR(rec.prs_perslid_key) || ' , loc-key: ' || TO_CHAR(rec.alg_locatie_key);
|
||
|
||
BEGIN
|
||
|
||
SELECT MIN(r.alg_ruimte_key)
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_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
|
||
AND r.alg_ruimte_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL
|
||
AND g.alg_locatie_key = rec.alg_locatie_key ;
|
||
|
||
IF v_alg_ruimte_key IS NOT NULL
|
||
THEN
|
||
|
||
-- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0);
|
||
BEGIN
|
||
PRS.movetoruimte (rec.prs_perslid_key,
|
||
v_alg_ruimte_key,
|
||
'L',
|
||
1);
|
||
END;
|
||
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
IF rec.actie = 'verwijderen'
|
||
THEN
|
||
v_errorhint:='Fout bij verwijderen werkplekken';
|
||
|
||
SELECT prs_werkplek_key
|
||
INTO v_prs_werkplek_key
|
||
FROM prs_v_perslidwerkplek_gegevens pwpg, alg_locatie l
|
||
WHERE pwpg.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_key = rec.alg_locatie_key
|
||
AND pwpg.prs_perslid_key = rec.prs_perslid_key
|
||
GROUP BY prs_werkplek_key ;
|
||
|
||
DELETE prs_werkplek WHERE prs_werkplek_key = v_prs_werkplek_key;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_kp
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- kostenplaatsen waar men verantwoordelijk voor is - Budgethouder en Mandaten
|
||
v_errorhint:='Fout bijwerken kostenplaatsen en mandaten waar men verantwoordelijk voor is';
|
||
v_waarnemer_overrule := 'nee' ;
|
||
|
||
-- Eerst budgethouder op kostenplaatsen updaten waar nodig
|
||
---- Indien het geen waarnemer betreft gaan we eerst checken of er een bovenliggende waarnemer op die locatie is. Deze wordt/is dan namelijk de budgethouder voor die kostenplaats
|
||
|
||
IF rec.waarnemer = 'nee'
|
||
THEN
|
||
|
||
BEGIN
|
||
-- Is er op die locatie een waarnemer (die afwijkt van locatieleider) ingevuld?
|
||
SELECT waarnemer
|
||
INTO v_waarnemer_overrule
|
||
FROM goko_v_locatiemanagers
|
||
WHERE alg_locatie_key = rec.alg_locatie_key
|
||
AND waarnemer = 'ja'
|
||
AND prs_perslid_key <> rec.prs_perslid_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN v_waarnemer_overrule := 'nee' ;
|
||
|
||
END;
|
||
|
||
END IF;
|
||
|
||
-- Dan kunnen we nu de budgethouder op kostenplaats updaten indien nodig
|
||
IF v_waarnemer_overrule = 'nee'
|
||
THEN
|
||
|
||
-- check eers of er nu afwijkende budgethouder op KP zit. Zo ja updaten
|
||
SELECT prs_perslid_key
|
||
INTO v_prs_perslid_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||
AND prs_kostenplaats_verwijder IS NULL
|
||
AND (prs_kostenplaats_eind IS NULL OR prs_kostenplaats_eind > TRUNC(SYSDATE) )
|
||
AND prs_kostenplaats_module = 'PRS' ;
|
||
|
||
IF v_prs_perslid_key IS NULL OR v_prs_perslid_key <> rec.prs_perslid_key
|
||
THEN
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_perslid_key = rec.prs_perslid_key
|
||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
|
||
|
||
-- Geen fac_tracking nodig. Mutatie wordt namelijk al via trigger met aud.auditaction weggeschreven
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
-- Tot slot alle mandaten goed inregelen
|
||
SELECT prs_perslidkostenplaats_key
|
||
INTO v_prs_perslidkostenplaats_key
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = rec.prs_perslid_key
|
||
AND prs_kostenplaats_key = rec.prs_kostenplaats_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN v_prs_perslidkostenplaats_key := NULL;
|
||
|
||
IF v_prs_perslidkostenplaats_key IS NULL
|
||
THEN
|
||
|
||
INSERT INTO prs_perslidkostenplaats (prs_perslidkostenplaats_boeken,
|
||
prs_perslidkostenplaats_inzage,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key)
|
||
VALUES (1,
|
||
1,
|
||
rec.prs_perslid_key,
|
||
rec.prs_kostenplaats_key) ;
|
||
|
||
END IF;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_kp_del
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- opschonen mandaten die niet meer geldig zijn
|
||
v_errorhint:='Fout verwijderen mandaten die niet meer geldig zijn';
|
||
|
||
DELETE
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslidkostenplaats_key = rec.prs_perslidkostenplaats_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END goko_update_perslid;
|
||
/
|
||
|
||
-- Hook functie die na het saven (bes_postsave) van een bestelling wordt aangeroepen.
|
||
CREATE OR REPLACE PROCEDURE goko_bes_after_insert (p_key IN NUMBER)
|
||
AS
|
||
v_bes_bestelling_key NUMBER(10) ;
|
||
v_korting_percentage NUMBER(10,2) ;
|
||
v_inkoopprijs_totaal NUMBER(10,2) ;
|
||
v_check VARCHAR2(100) := 'ok' ;
|
||
v_ins_discipline_key NUMBER(10) ;
|
||
v_bes_kenmerk_key1 NUMBER(10) ; -- kenmerk_key voor totaalbedrag bestelling
|
||
v_waarde1 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag in bestelling
|
||
v_bes_kenmerk_key2 NUMBER(10) ; -- kenmerk_key voor totaalbedrag korting
|
||
v_waarde2 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag korting in bestelling
|
||
v_korting_totaal NUMBER(10,2) ;
|
||
v_gewijzigd NUMBER(1) := 0 ;
|
||
v_count NUMBER(10) ;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_aanduiding VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
|
||
BEGIN
|
||
|
||
v_errormsg := 'Ophalen bestelgegevens ivm totaalprijs en kortingspercentage';
|
||
v_gewijzigd := 0 ;
|
||
|
||
BEGIN
|
||
SELECT b.bes_bestelling_key, COALESCE(fac.safe_to_number(kmb.bes_kenmerkbestell_waarde),0) km_kortingspercentage, v.km_totaalprijs km_totaalprijs
|
||
INTO v_bes_bestelling_key, v_korting_percentage, v_inkoopprijs_totaal
|
||
FROM bes_bestelling b,
|
||
bes_kenmerkbestell kmb,
|
||
bes_kenmerk km,
|
||
(
|
||
SELECT bi.bes_bestelling_key,
|
||
SUM (COALESCE (bi.bes_bestelling_item_aantal * fac.safe_to_number(replace(kmi.bes_kenmerkbesteli_waarde,',','.')), 0))
|
||
km_totaalprijs
|
||
FROM bes_kenmerkbesteli kmi, bes_kenmerk km, bes_bestelling_item bi
|
||
WHERE bi.bes_bestelling_item_key = kmi.bes_bestelling_item_key
|
||
AND kmi.bes_kenmerk_key = km.bes_kenmerk_key
|
||
AND km.bes_srtkenmerk_key = 81 -- Artikelprijs
|
||
GROUP BY bi.bes_bestelling_key ) v
|
||
WHERE b.bes_bestelling_key = p_key
|
||
AND b.bes_bestelling_key = kmb.bes_bestelling_key
|
||
AND kmb.bes_kenmerk_key = km.bes_kenmerk_key AND km.bes_srtkenmerk_key = 142 -- Leverancierskorting
|
||
AND v.bes_bestelling_key = b.bes_bestelling_key
|
||
;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_check := 'stop';
|
||
END;
|
||
|
||
v_errormsg := 'Ophalen kenmerk_key voor totaalprijs';
|
||
|
||
IF v_check = 'ok'
|
||
THEN
|
||
|
||
-- ophalen kenmerk_key 'totaalbedrag bestelling'
|
||
-- ophalen kenmerk_key kortingsbedrag
|
||
SELECT d.ins_discipline_key
|
||
INTO v_ins_discipline_key
|
||
FROM bes_bestelling_item bi,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
ins_tab_discipline d
|
||
WHERE bi.bes_bestelling_key = p_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
GROUP BY d.ins_discipline_key ;
|
||
|
||
SELECT MAX(bes_kenmerk_key)
|
||
INTO v_bes_kenmerk_key1
|
||
FROM bes_kenmerk km, bes_srtkenmerk skm
|
||
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
|
||
AND skm.bes_srtkenmerk_key = 44 -- totaalbedrag bestelling
|
||
AND km.bes_srtinstallatie_key = v_ins_discipline_key
|
||
AND km.bes_kenmerk_niveau = 'D'
|
||
AND km.bes_kenmerk_verwijder IS NULL ;
|
||
|
||
SELECT MAX(bes_kenmerk_key)
|
||
INTO v_bes_kenmerk_key2
|
||
FROM bes_kenmerk km, bes_srtkenmerk skm
|
||
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
|
||
AND skm.bes_srtkenmerk_key = 47 -- totaalbedrag korting
|
||
AND km.bes_srtinstallatie_key = v_ins_discipline_key
|
||
AND km.bes_kenmerk_niveau = 'D'
|
||
AND km.bes_kenmerk_verwijder IS NULL ;
|
||
|
||
-- Vullen kenmerk 'totaalbedrag bestelling'
|
||
IF v_bes_kenmerk_key1 IS NOT NULL
|
||
THEN
|
||
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
|
||
BEGIN
|
||
|
||
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
|
||
INTO v_count, v_waarde1
|
||
FROM bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
|
||
IF v_inkoopprijs_totaal IS NULL
|
||
THEN
|
||
|
||
DELETE bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
ELSE
|
||
|
||
IF (fac.safe_to_number(v_waarde1) <> v_inkoopprijs_totaal)
|
||
THEN
|
||
|
||
UPDATE bes_kenmerkbestell
|
||
SET bes_kenmerkbestell_waarde = v_inkoopprijs_totaal
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
IF v_bes_kenmerk_key1 IS NOT NULL AND v_inkoopprijs_totaal IS NOT NULL
|
||
THEN
|
||
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
|
||
bes_bestelling_key,
|
||
bes_kenmerkbestell_waarde)
|
||
VALUES (v_bes_kenmerk_key1, p_key, v_inkoopprijs_totaal);
|
||
v_gewijzigd := 1 ;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
-- Vullen kenmerk 'totaalbedrag korting'
|
||
IF v_bes_kenmerk_key2 IS NOT NULL
|
||
THEN
|
||
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
|
||
BEGIN
|
||
v_korting_totaal := COALESCE(v_korting_percentage, 0)/100 * COALESCE(v_inkoopprijs_totaal, 0) ;
|
||
|
||
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
|
||
INTO v_count, v_waarde2
|
||
FROM bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
|
||
IF v_korting_percentage IS NULL OR v_korting_percentage = 0
|
||
THEN
|
||
|
||
DELETE bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
ELSE
|
||
|
||
IF (fac.safe_to_number(v_waarde2) <> v_korting_totaal)
|
||
THEN
|
||
|
||
UPDATE bes_kenmerkbestell
|
||
SET bes_kenmerkbestell_waarde = v_korting_totaal
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
IF v_bes_kenmerk_key2 IS NOT NULL AND v_korting_totaal > 0
|
||
THEN
|
||
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
|
||
bes_bestelling_key,
|
||
bes_kenmerkbestell_waarde)
|
||
VALUES (v_bes_kenmerk_key2, p_key, v_korting_totaal);
|
||
v_gewijzigd := 1 ;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
|
||
-- fac_tracking - ACTIE - bedrag is + bedrag was
|
||
IF v_gewijzigd = 1
|
||
THEN
|
||
BEGIN fac.trackaction('BESUPD', v_bes_bestelling_key, 3, NULL, 'Prijswijziging doorgevoerd in bestelling - totaalprijs was/is ' || TO_CHAR(v_waarde1) || '/' || TO_CHAR(v_inkoopprijs_totaal) || ' - korting was/is ' || TO_CHAR(v_waarde2) || '/' || TO_CHAR(v_korting_totaal)); END;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
END goko_bes_after_insert;
|
||
/
|
||
|
||
-------------------------------
|
||
--- RAPPORTAGES ---------------
|
||
-------------------------------
|
||
|
||
CREATE OR REPLACE VIEW goko_v_rap_opdrachten_intern
|
||
(
|
||
TYPE,
|
||
MLD_OPDR_KEY,
|
||
MLD_UITVOERENDE_KEY,
|
||
OPDRACHTNR,
|
||
OPDRACHT_DATUM,
|
||
STATUS,
|
||
MELDING,
|
||
BEHANDELAAR,
|
||
LOCATIE_PLAATS,
|
||
LOCATIE_OMSCHRIJVING,
|
||
GEPLANDE_AANVANG,
|
||
OMSCHRIJVING,
|
||
PRS_PERSLID_KEY,
|
||
NAAM_UITVOERDER,
|
||
UREN_BESTEED,
|
||
MATERIALEN_VERBRUIK,
|
||
AFMELD_DATUM,
|
||
OPDRACHT_TYPE,
|
||
TD_NAAM,
|
||
FILTERSTATUS
|
||
)
|
||
AS
|
||
SELECT CASE
|
||
WHEN mu.TYPE = 'B' THEN 'Poule-opdracht'
|
||
WHEN mu.TYPE = 'P' THEN 'Klus-opdracht'
|
||
ELSE '<?>'
|
||
END
|
||
TYPE,
|
||
o.mld_opdr_key,
|
||
CASE
|
||
WHEN mu.TYPE = 'B' THEN o.prs_perslid_key
|
||
WHEN mu.TYPE = 'P' THEN mu.mld_uitvoerende_key
|
||
ELSE NULL
|
||
END
|
||
mld_uitvoerende_key,
|
||
TO_CHAR (o.mld_melding_key)
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
opdrachtnummer,
|
||
o.mld_opdr_datumbegin,
|
||
DECODE (
|
||
os.mld_statusopdr_key,
|
||
8, DECODE (o.mld_opdr_halted,
|
||
1, 'Onderbroken',
|
||
os.mld_statusopdr_omschrijving),
|
||
os.mld_statusopdr_omschrijving)
|
||
status,
|
||
std.mld_stdmelding_omschrijving,
|
||
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>'), -- BEHANDELAAR
|
||
l.alg_locatie_plaats,
|
||
CASE WHEN m.mld_alg_onroerendgoed_keys IS NOT NULL
|
||
THEN l.alg_locatie_omschrijving || ' - ' || COALESCE(onr.alg_gebouw_naam, onr.alg_terreinsector_naam)
|
||
ELSE l.alg_locatie_omschrijving
|
||
END
|
||
locatie_omschrijving,
|
||
COALESCE(o.mld_opdr_plandatum, o.mld_opdr_einddatum)
|
||
geplande_aanvang,
|
||
TRIM (
|
||
REGEXP_REPLACE (
|
||
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
|
||
'(([^ ]*)( |$)*){10}'),
|
||
'[[:space:]]',
|
||
' '))
|
||
|| '...',
|
||
p.prs_perslid_key,
|
||
mu.naam,
|
||
(SELECT ko.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = 5), -- kenmerk Uren_besteed
|
||
(SELECT ko.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = 6), -- kenmerk Materialenverbruik
|
||
(SELECT MAX (ft.fac_tracking_datum)
|
||
FROM fac_tracking ft
|
||
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
|
||
AND ft.fac_srtnotificatie_key = 74), -- ORDAFM
|
||
ot.mld_typeopdr_omschrijving,
|
||
CASE
|
||
WHEN mu.TYPE = 'B' THEN COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
|
||
WHEN mu.TYPE = 'P' THEN mu.naam
|
||
ELSE '<?>'
|
||
END TD_NAAM,
|
||
(CASE
|
||
WHEN o.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || o.mld_opdr_flag)
|
||
ELSE ''
|
||
END) filterstatus
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
prs_v_perslid_fullnames p,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
alg_locatie l,
|
||
alg_v_onroerendgoed_gegevens onr,
|
||
mld_v_uitvoerende mu,
|
||
mld_statusopdr os
|
||
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
||
AND o.prs_perslid_key = p.prs_perslid_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys (+)
|
||
AND mu.intern = 1;
|
||
|
||
|
||
-- view om QR codes voor een deel te genereren.
|
||
CREATE OR REPLACE VIEW goko_v_rap_qr_deel
|
||
AS
|
||
SELECT fac_bookmark_naam,
|
||
fac_bookmark_id,
|
||
ins_discipline_omschrijving,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_deel_omschrijving,
|
||
CASE
|
||
WHEN d.ins_discipline_key = 83 -- IT
|
||
THEN
|
||
(SELECT k.ins_kenmerkdeel_waarde
|
||
FROM ins_kenmerkdeel k
|
||
WHERE k.ins_deel_key = d.ins_deel_key
|
||
AND k.ins_kenmerk_key = 8)
|
||
ELSE
|
||
NULL
|
||
END
|
||
serienummer,
|
||
CASE WHEN alg_locatie_key IS NOT NULL THEN 'Locatiegebonden'
|
||
WHEN d.prs_perslid_key IS NOT NULL THEN 'Persoonsgebonden'
|
||
ELSE 'Overig'
|
||
END soort,
|
||
alg_locatie_key,
|
||
alg_gebouw_omschrijving,
|
||
d.prs_perslid_key,
|
||
prs_perslid_volnaam,
|
||
ins_deel_aanmaak,
|
||
ins_deel_key
|
||
FROM fac_bookmark b, ins_v_deel_gegevens d
|
||
WHERE fac_bookmark_expire IS NULL
|
||
AND fac_bookmark_id = 'wiBUpSjNzahvJ9R5';
|
||
|
||
-- Rapportage Gebouwbeheer
|
||
CREATE OR REPLACE VIEW GOKO_V_ALG_ONROERENDGOED
|
||
(
|
||
DISTRICT,
|
||
LOCATIE,
|
||
LOCATIE_CODE,
|
||
LOCATIE_KEY,
|
||
GEBOUW,
|
||
-- gegevens uit locatiekaart
|
||
LOCATIEMANAGER,
|
||
WAARNEMER,
|
||
EIGENDOMSINDICATIE,
|
||
WIFI_DOOR,
|
||
INBRAAKBEV_DOOR,
|
||
TELEFONIE_DOOR,
|
||
KDV,
|
||
PSZ,
|
||
BSO,
|
||
TSO,
|
||
KDV_TEL,
|
||
PSZ_TEL,
|
||
BSO_TEL,
|
||
TSO_TEL,
|
||
--
|
||
VERDIEPING,
|
||
RUIMTENR,
|
||
RUIMTE_OMSCHRIJVING,
|
||
RUIMTEFUNCTIE,
|
||
BVO_M2
|
||
)
|
||
AS
|
||
SELECT d.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_key,
|
||
v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam
|
||
gebouw,
|
||
km.locatiemanager,
|
||
km.waarnemer,
|
||
km.eigendomsinidcatie,
|
||
km.wifi_door,
|
||
km.inbraakbev_door,
|
||
km.telefonie_door,
|
||
km.kdv,
|
||
km.psz,
|
||
km.bso,
|
||
km.tso,
|
||
km.kdv_tel,
|
||
km.psz_tel,
|
||
km.bso_tel,
|
||
km.tso_tel,
|
||
v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code
|
||
verdieping,
|
||
v.alg_ruimte_nr,
|
||
v.alg_ruimte_omschrijving,
|
||
sr.alg_srtruimte_omschrijving,
|
||
r.alg_ruimte_bruto_vloeropp
|
||
FROM alg_v_onroerendgoed_gegevens v,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
(SELECT l.alg_locatie_key,
|
||
goko.get_kenmerk('ALG',1002, l.alg_locatie_key) locatiemanager,
|
||
goko.get_kenmerk('ALG',1003, l.alg_locatie_key) waarnemer,
|
||
goko.get_kenmerk('ALG',1020, l.alg_locatie_key) eigendomsinidcatie,
|
||
goko.get_kenmerk('ALG',1022, l.alg_locatie_key) wifi_door,
|
||
goko.get_kenmerk('ALG',1023, l.alg_locatie_key) inbraakbev_door,
|
||
goko.get_kenmerk('ALG',1024, l.alg_locatie_key) telefonie_door,
|
||
goko.get_kenmerk('ALG',1006, l.alg_locatie_key) KDV,
|
||
goko.get_kenmerk('ALG',1014, l.alg_locatie_key) PSZ,
|
||
goko.get_kenmerk('ALG',1007, l.alg_locatie_key) BSO,
|
||
goko.get_kenmerk('ALG',1009, l.alg_locatie_key) TSO,
|
||
goko.get_kenmerk('ALG',1011, l.alg_locatie_key) KDV_Tel,
|
||
goko.get_kenmerk('ALG',1013, l.alg_locatie_key) PSZ_Tel,
|
||
goko.get_kenmerk('ALG',1015, l.alg_locatie_key) BSO_Tel,
|
||
goko.get_kenmerk('ALG',1018, l.alg_locatie_key) TSO_Tel
|
||
FROM alg_locatie l ) km,
|
||
alg_ruimte r,
|
||
alg_srtruimte sr
|
||
WHERE v.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND v.alg_type IN ('R')
|
||
AND v.alg_locatie_key = km.alg_locatie_key
|
||
AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+)
|
||
ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_ruimte_nr ;
|
||
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|