Files
Customer/ASDL/asdl.sql
Arthur Egberink d348f99e1c ASDL#37684 -- Dashboard voor opleidingsgegevens.
svn path=/Customer/trunk/; revision=30683
2016-09-12 14:31:57 +00:00

2045 lines
77 KiB
SQL
Raw Blame History

-- Script containing customer specific configuration sql statements for Asito Digitaal Logboek
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
SET ECHO ON
SET DEFINE ON
column fcltlogfile new_value fcltlogfile NOPRINT;
select 'x' || UPPER(USER) || '.lst' as fcltlogfile from dual;
spool &fcltlogfile
SET DEFINE OFF
CREATE OR REPLACE PACKAGE asdl
AS
FUNCTION check_valid_schedule (p_deel_key IN NUMBER)
RETURN VARCHAR2;
FUNCTION get_bits_str (p_eenheid IN NUMBER,
p_bits IN NUMBER)
RETURN VARCHAR2;
FUNCTION get_bits_value (p_eenheid IN NUMBER,
p_rangorde IN NUMBER,
p_dagen IN VARCHAR2)
RETURN NUMBER;
FUNCTION get_bits_rangorde (p_eenheid IN NUMBER,
p_bits IN NUMBER)
RETURN NUMBER;
FUNCTION get_kenmerks (p_module IN VARCHAR2,
p_srtkenmerk_key IN NUMBER,
p_soort_key IN NUMBER,
p_soort_niveau IN VARCHAR2,
p_link_key IN NUMBER)
RETURN VARCHAR2;
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 asdl
AS
FUNCTION check_valid_schedule (p_deel_key IN NUMBER)
RETURN VARCHAR2
AS
v_srtcontrole_key NUMBER;
v_dummydate DATE;
v_error_string VARCHAR2 (200);
BEGIN
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontroledl_xcp x
WHERE x.ins_deel_key = p_deel_key;
BEGIN
SELECT TRUNC (
fac.nextcyclusdatedeel (p_deel_key, v_srtcontrole_key, 1))
INTO v_dummydate
FROM DUAL;
v_error_string := NULL;
EXCEPTION
WHEN OTHERS
THEN
v_error_string := SUBSTR (SQLERRM, 1, 200);
END;
RETURN v_error_string;
END;
FUNCTION get_bits_str (p_eenheid IN NUMBER,
p_bits IN NUMBER) RETURN VARCHAR2
AS
v_result VARCHAR2(10);
m_bits NUMBER;
BEGIN
IF p_eenheid = 0
THEN
-- uurlijks doen we nog even niets mee
NULL;
ELSIF p_eenheid = 1
THEN
-- dagelijks doen we nog even niets mee
NULL;
ELSIF p_eenheid = 2
THEN
-- wekelijks
IF BITAND (p_bits, 2) <> 0 THEN v_result := 'Ma'; END IF;
IF BITAND (p_bits, 4) <> 0 THEN v_result := v_result || 'Di'; END IF;
IF BITAND (p_bits, 8) <> 0 THEN v_result := v_result || 'Wo'; END IF;
IF BITAND (p_bits, 16) <> 0 THEN v_result := v_result || 'Do'; END IF;
IF BITAND (p_bits, 32) <> 0 THEN v_result := v_result || 'Vr'; END IF;
IF BITAND (p_bits, 64) <> 0 THEN v_result := v_result || 'Za'; END IF;
IF BITAND (p_bits, 1) <> 0 THEN v_result := v_result || 'Zo'; END IF;
IF BITAND (p_bits, 128) <> 0 THEN v_result := v_result || 'NF'; END IF;
ELSIF p_eenheid = 3
THEN
-- maandelijks
IF BITAND (p_bits, 2) <> 0 THEN v_result := 'Ma'; END IF;
IF BITAND (p_bits, 4) <> 0 THEN v_result := v_result || 'Di'; END IF;
IF BITAND (p_bits, 8) <> 0 THEN v_result := v_result || 'Wo'; END IF;
IF BITAND (p_bits, 16) <> 0 THEN v_result := v_result || 'Do'; END IF;
IF BITAND (p_bits, 32) <> 0 THEN v_result := v_result || 'Vr'; END IF;
IF BITAND (p_bits, 64) <> 0 THEN v_result := v_result || 'Za'; END IF;
IF BITAND (p_bits, 1) <> 0 THEN v_result := v_result || 'Zo'; END IF;
IF BITAND (p_bits, 128) <> 0 THEN v_result := v_result || 'NF'; END IF;
END IF;
RETURN v_result;
END;
FUNCTION get_bits_value (p_eenheid IN NUMBER,
p_rangorde IN NUMBER,
p_dagen IN VARCHAR2) RETURN NUMBER
AS
v_result NUMBER;
BEGIN
v_result := 0;
IF INSTR(UPPER(p_dagen), 'MA') > 0 THEN v_result := v_result + 2; END IF;
IF INSTR(UPPER(p_dagen), 'DI') > 0 THEN v_result := v_result + 4; END IF;
IF INSTR(UPPER(p_dagen), 'WO') > 0 THEN v_result := v_result + 8; END IF;
IF INSTR(UPPER(p_dagen), 'DO') > 0 THEN v_result := v_result + 16; END IF;
IF INSTR(UPPER(p_dagen), 'VR') > 0 THEN v_result := v_result + 32; END IF;
IF INSTR(UPPER(p_dagen), 'ZA') > 0 THEN v_result := v_result + 64; END IF;
IF INSTR(UPPER(p_dagen), 'ZO') > 0 THEN v_result := v_result + 1; END IF;
IF INSTR(UPPER(p_dagen), 'NF') > 0 THEN v_result := v_result + 128; END IF;
IF p_rangorde IS NOT NULL
THEN
v_result := v_result + (p_rangorde * 256);
END IF;
RETURN v_result;
END;
FUNCTION get_bits_rangorde (p_eenheid IN NUMBER,
p_bits IN NUMBER) RETURN NUMBER
AS
m_bits NUMBER;
BEGIN
IF p_eenheid = 3
THEN
-- maandelijks
m_bits := BITAND(p_bits, 256 + 512 + 1024) / 256;
END IF;
RETURN m_bits;
END;
FUNCTION get_kenmerks (p_module IN VARCHAR2,
p_srtkenmerk_key IN NUMBER,
p_soort_key IN NUMBER,
p_soort_niveau IN VARCHAR2,
p_link_key IN NUMBER)
RETURN VARCHAR2
AS
v_kenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
BEGIN
CASE p_module
WHEN 'MLD'
THEN
SELECT k.mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = p_srtkenmerk_key
AND mld_stdmelding_key = p_soort_key
AND mld_kenmerk_niveau = p_soort_niveau;
WHEN 'INS'
THEN
SELECT k.ins_kenmerk_key
INTO v_kenmerk_key
FROM ins_kenmerk k
WHERE k.ins_kenmerk_verwijder IS NULL
AND ins_srtkenmerk_key = p_srtkenmerk_key
AND ins_srtinstallatie_key = p_soort_key
AND ins_kenmerk_niveau = p_soort_niveau;
END CASE;
RETURN asdl.get_kenmerk (p_module,
v_kenmerk_key,
p_link_key);
END;
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 'PRS'
THEN
SELECT prs_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
pkl.prs_kenmerklink_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM prs_kenmerklink pkl, prs_kenmerk k
WHERE pkl.prs_link_key = p_link_key
AND pkl.prs_kenmerk_key = p_kenmerk_key
AND pkl.prs_kenmerk_key = k.prs_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 asdl.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;
/
CREATE OR REPLACE VIEW asdl_v_perslid_2250
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_verwijder
)
AS
SELECT p.prs_perslid_key,
pf.prs_perslid_naam_full,
p.prs_perslid_verwijder
FROM prs_v_perslid_fullnames_all pf, prs_perslid p
WHERE pf.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = 62;
CREATE OR REPLACE VIEW asdl_v_rap_werkprogramma
(
alg_district_omschrijving,
alg_locatie_code,
fclt_3d_locatie_key,
alg_locatie_omschrijving,
ins_srtdeel_code,
ins_srtcontrole_omschrijving,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_periode,
frequentie,
afwijking,
uitvoering,
info
)
AS
SELECT alg_district_omschrijving,
alg_locatie_code,
l.alg_locatie_key,
alg_locatie_omschrijving,
ins_srtdeel_code,
ins_srtcontrole_omschrijving,
DECODE (ins_srtcontroledl_xcp_eenheid,
2, 'week',
3, 'maand',
'jaar'),
ins_srtcontroledl_xcp_periode,
DECODE (ins_srtcontroledl_xcp_eenheid, 2, 52, 3, 12, 1)
/ ins_srtcontroledl_xcp_periode,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE alg_onrgoedkenmerk_verwijder IS NULL
AND aogk.alg_onrgoed_key = l.alg_locatie_key
AND aogk.alg_kenmerk_key = 1000)
afw,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE alg_onrgoedkenmerk_verwijder IS NULL
AND aogk.alg_onrgoed_key = l.alg_locatie_key
AND aogk.alg_kenmerk_key = 1020)
uitv,
REPLACE (
REPLACE (
REPLACE (REPLACE (ins_srtcontrole_info, '[table]'),
'[/table]'),
'[',
'<'),
']',
'>')
FROM alg_locatie l,
alg_district d,
ins_srtdeel sd,
ins_v_deel_gegevens dg,
ins_srtcontroledl_xcp x,
ins_srtcontrole sc
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = dg.alg_locatie_key
AND dg.ins_srtdeel_key = sc.ins_srtinstallatie_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND x.ins_deel_key = dg.ins_deel_key
AND dg.ins_srtdeel_key = sd.ins_srtdeel_key;
-- Schoonmaakacties voor vandaag.
CREATE OR REPLACE VIEW asdl_v_rap_schoonmaak_today
(
aantal,
eerste,
ruimte_key,
ruimte_nr,
alg_ruimte_omschrijving,
ins_deel_omschrijving,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_locatie_omschrijving,
alg_locatie_key,
ins_deel_key,
ins_srtcontroledl_xcp_groep,
fclt_3d_user_key,
alg_locatie_x,
ins_srtcontrole_key,
maand,
periodiek,
ins_deelsrtcontrole_key
)
AS
SELECT COUNT (isc.ins_srtcontrole_key) aantal_srtcontoles,
MIN (isc.ins_srtcontrole_key) min_srtcontrole_key,
r.alg_ruimte_key,
r.alg_ruimte_nr,
'Wekelijks onderhoud',
REPLACE (d.ins_deel_omschrijving, alg_gebouw_upper || '-'),
REPLACE (alg_gebouw_omschrijving, alg_gebouw_upper || ' - '),
alg_gebouw_upper,
l.alg_locatie_omschrijving,
l.alg_locatie_key,
id.ins_deel_key,
ins_srtcontroledl_xcp_groep,
COALESCE (p.prs_perslid_key, -1) prs_perslid_key,
alg_locatie_x,
isc.ins_srtcontrole_key,
DECODE (ins_srtcontroledl_xcp_eenheid, 3, 1, 0) maand,
DECODE (ins_srtcontroledl_xcp_eenheid, 3, ' Periodiek', '') periodiek,
(SELECT MAX (ins_deelsrtcontrole_key) ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = id.ins_deel_key
AND dsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
AND ins_deelsrtcontrole_status NOT IN (5,6))
ins_deelsrtcontrole_key
FROM ins_v_deel_gegevens id,
ins_deel d,
ins_srtcontrole isc,
ins_srtcontroledl_xcp xcp,
prs_kenmerklink kl,
alg_ruimte r,
alg_locatie l,
prs_perslid p
WHERE id.alg_locatie_key = l.alg_locatie_key
AND p.alg_onroerendgoed_keys(+) = l.alg_locatie_key
AND xcp.ins_deel_key = id.ins_deel_key
AND xcp.ins_srtcontrole_key = isc.ins_srtcontrole_key
AND xcp.ins_srtcontroledl_xcp_eenheid IS NOT NULL
AND (isc.ins_srtcontrole_niveau = 'S'
AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key
OR isc.ins_srtcontrole_niveau = 'G'
AND isc.ins_srtinstallatie_key = id.ins_srtgroep_key
OR isc.ins_srtcontrole_niveau = 'D'
AND isc.ins_srtinstallatie_key = id.ins_discipline_key)
AND kl.prs_kenmerk_key = 1000
AND kl.prs_kenmerklink_waarde = xcp.ins_srtcontroledl_xcp_groep
AND id.alg_ruimte_key = r.alg_ruimte_key
AND kl.prs_link_key = p.prs_perslid_key
AND id.ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_deel_vervaldatum, SYSDATE) >= SYSDATE
AND ( ( TRUNC (fac.nextcyclusdatedeel (id.ins_deel_key, isc.ins_srtcontrole_key, 1)) <= TRUNC (SYSDATE) + DECODE (ins_srtcontroledl_xcp_eenheid, 3, 5, 0) -- periodieke werkzaamheden mag ik de gehele week afmelden.
AND NOT EXISTS (SELECT idsc.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deelsrtcontrole_status < 5
AND idsc.ins_deel_key = d.ins_deel_key
AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
)
)
OR EXISTS (SELECT idsc.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deelsrtcontrole_status < 5
AND idsc.ins_deel_key = d.ins_deel_key
AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
AND TRUNC(COALESCE(ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_datum_org)) <= TRUNC (SYSDATE) + DECODE (ins_srtcontroledl_xcp_eenheid, 3, 5, 0) ) )
GROUP BY r.alg_ruimte_key,
r.alg_ruimte_nr,
kl.prs_link_key,
isc.ins_srtcontrole_omschrijving,
alg_gebouw_omschrijving,
alg_gebouw_upper,
l.alg_locatie_key,
d.ins_deel_omschrijving,
l.alg_locatie_omschrijving,
id.ins_deel_key,
ins_srtcontroledl_xcp_groep,
p.prs_perslid_key,
alg_locatie_x,
isc.ins_srtcontrole_key,
ins_srtcontroledl_xcp_eenheid;
-- Schoonmaak acties voor vandaag op mijn route.
CREATE OR REPLACE VIEW asdl_v_rap_schoonmaak_today1
(
aantal,
eerste,
ruimte_key,
ruimte_nr,
alg_ruimte_omschrijving,
ins_deel_omschrijving,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_locatie_omschrijving,
alg_locatie_key,
alg_district_key,
alg_regio_key,
ins_deel_key,
ins_discipline_key,
ins_srtcontroledl_xcp_groep,
fclt_3d_user_key,
alg_locatie_x,
ins_srtcontrole_key,
volgorde,
maand
)
AS
SELECT COUNT (isc.ins_srtcontrole_key) aantal_srtcontoles,
MIN (isc.ins_srtcontrole_key) min_srtcontrole_key,
r.alg_ruimte_key,
r.alg_ruimte_nr,
alg_ruimte_omschrijving,
REPLACE (d.ins_deel_omschrijving, alg_gebouw_upper || '-'),
REPLACE (alg_gebouw_omschrijving, alg_gebouw_upper || ' - '),
alg_gebouw_upper,
l.alg_locatie_omschrijving,
l.alg_locatie_key,
di.alg_district_key,
di.alg_regio_key,
id.ins_deel_key,
id.ins_discipline_key,
ins_srtcontroledl_xcp_groep,
kl.prs_link_key,
alg_locatie_x,
isc.ins_srtcontrole_key,
w.volgorde,
DECODE(ins_srtcontroledl_xcp_eenheid, 3, 1, 0) maand
FROM ins_v_deel_gegevens id,
ins_deel d,
ins_srtcontrole isc,
ins_srtcontroledl_xcp xcp,
prs_kenmerklink kl,
alg_ruimte r,
alg_locatie l,
alg_district di,
(SELECT alg_onrgoedkenmerk_waarde volgorde, alg_onrgoed_key
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = DECODE (MOD(TO_CHAR(SYSDATE, 'IW'),2), 1, 1043, 0, 1042)
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL) w
WHERE id.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND l.alg_locatie_key = w.alg_onrgoed_key(+)
AND xcp.ins_deel_key = id.ins_deel_key
AND xcp.ins_srtcontrole_key = isc.ins_srtcontrole_key
AND xcp.ins_srtcontroledl_xcp_eenheid IS NOT NULL
AND (isc.ins_srtcontrole_niveau = 'S'
AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key
OR isc.ins_srtcontrole_niveau = 'G'
AND isc.ins_srtinstallatie_key = id.ins_srtgroep_key
OR isc.ins_srtcontrole_niveau = 'D'
AND isc.ins_srtinstallatie_key = id.ins_discipline_key)
AND kl.prs_kenmerk_key = 1000
AND kl.prs_kenmerklink_waarde = xcp.ins_srtcontroledl_xcp_groep
AND id.alg_ruimte_key = r.alg_ruimte_key
AND id.ins_deel_key = d.ins_deel_key
AND COALESCE(d.ins_deel_vervaldatum, SYSDATE) >= SYSDATE
AND ( ( TRUNC (fac.nextcyclusdatedeel (id.ins_deel_key, isc.ins_srtcontrole_key, 1)) <= TRUNC (SYSDATE) + DECODE (ins_srtcontroledl_xcp_eenheid, 3, 5, 0) -- periodieke werkzaamheden mag ik de gehele week afmelden.
AND NOT EXISTS (SELECT idsc.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deelsrtcontrole_status < 5
AND idsc.ins_deel_key = d.ins_deel_key
AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
)
)
OR EXISTS (SELECT idsc.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole idsc
WHERE idsc.ins_deelsrtcontrole_status < 5
AND idsc.ins_deel_key = d.ins_deel_key
AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
AND TRUNC(COALESCE(ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_datum_org)) <= TRUNC (SYSDATE) + DECODE (ins_srtcontroledl_xcp_eenheid, 3, 5, 0) ) )
GROUP BY r.alg_ruimte_key,
r.alg_ruimte_nr,
kl.prs_link_key,
alg_ruimte_omschrijving,
alg_gebouw_omschrijving,
alg_gebouw_upper,
l.alg_locatie_key,
di.alg_district_key,
di.alg_regio_key,
d.ins_deel_omschrijving,
l.alg_locatie_omschrijving,
id.ins_deel_key,
id.ins_discipline_key,
ins_srtcontroledl_xcp_groep,
alg_locatie_x,
isc.ins_srtcontrole_key,
w.volgorde,
ins_srtcontroledl_xcp_eenheid;
CREATE OR REPLACE VIEW asdl_v_rap_schoonmaak_result
(
alg_regio_key,
alg_regio_omschrijving,
alg_district_key,
alg_district_omschrijving,
fclt_3d_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
laatste_schoonmaak,
schoonmaker
)
AS
SELECT r.alg_regio_key,
r.alg_regio_omschrijving,
di.alg_district_key,
di.alg_district_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
idc.ins_deelsrtcontrole_datum laatste_schoonmaak,
pf.prs_perslid_naam_full
FROM (SELECT ins_alg_locatie_key alg_locatie_key,
prs_perslid_key,
ins_deelsrtcontrole_datum
FROM ins_deelsrtcontrole idc1, ins_deel d1
WHERE idc1.ins_deel_key = d1.ins_deel_key
AND NOT EXISTS
(SELECT ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole idc2, ins_deel d2
WHERE idc2.ins_deel_key = d2.ins_deel_key
AND d1.ins_alg_locatie_key = d2.ins_alg_locatie_key
AND idc1.ins_deelsrtcontrole_key <
idc2.ins_deelsrtcontrole_key)) idc,
alg_locatie l,
alg_district di,
alg_regio r,
prs_v_perslid_fullnames pf
WHERE idc.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND di.alg_regio_key = r.alg_regio_key
AND idc.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW asdl_v_rap_persoonsgegevens
AS
SELECT pf.prs_perslid_naam_full naam,
prs_afdeling_naam,
p.prs_perslid_key,
prs_perslid_email email,
prs_srtperslid_omschrijving,
prs_srtperslid_opp,
asdl.get_kenmerk ('PRS', 1000, p.prs_perslid_key) route,
asdl.get_kenmerk ('PRS', 1023, p.prs_perslid_key) geboortedatum,
asdl.get_kenmerk ('PRS', 1024, p.prs_perslid_key) VGM,
asdl.get_kenmerk ('PRS', 1055, p.prs_perslid_key) resgerichtsch,
asdl.get_kenmerk ('PRS', 1056, p.prs_perslid_key) resgerichtschbeh,
asdl.get_kenmerk ('PRS', 1057, p.prs_perslid_key) duurzaamsch,
asdl.get_kenmerk ('PRS', 1058, p.prs_perslid_key) duurzaamschbeh,
asdl.get_kenmerk ('PRS', 1059, p.prs_perslid_key) gastvrijheid,
asdl.get_kenmerk ('PRS', 1060, p.prs_perslid_key) gastvrijheidbeh,
asdl.get_kenmerk ('PRS', 1026, p.prs_perslid_key) hospitality,
asdl.get_kenmerk ('PRS', 1045, p.prs_perslid_key) hospitalitybeh,
asdl.get_kenmerk ('PRS', 1027, p.prs_perslid_key) nederl_taaltrjct,
asdl.get_kenmerk ('PRS', 1046, p.prs_perslid_key) nederl_taalbeh,
asdl.get_kenmerk ('PRS', 1030, p.prs_perslid_key) svsbasis,
asdl.get_kenmerk ('PRS', 1047, p.prs_perslid_key) svsbasisbeh,
asdl.get_kenmerk ('PRS', 1031, p.prs_perslid_key) svsleid,
asdl.get_kenmerk ('PRS', 1048, p.prs_perslid_key) svsleidbeh,
asdl.get_kenmerk ('PRS', 1032, p.prs_perslid_key) svsstation,
asdl.get_kenmerk ('PRS', 1049, p.prs_perslid_key) svsstationbeh,
asdl.get_kenmerk ('PRS', 1033, p.prs_perslid_key) taakeigenveilig,
asdl.get_kenmerk ('PRS', 1046, p.prs_perslid_key) taakeigenveiligbeh,
asdl.get_kenmerk ('PRS', 1034, p.prs_perslid_key) taakeigenveiliggeldigtot,
DECODE(SIGN(fac.safe_to_date(asdl.get_kenmerk ('PRS', 1034, p.prs_perslid_key), 'dd-mm-yyyy') - SYSDATE), -1, 0, 1) taakeigenveiliggeldig,
asdl.get_kenmerk ('PRS', 1052, p.prs_perslid_key) vca_b,
asdl.get_kenmerk ('PRS', 1053, p.prs_perslid_key) vca_bbeh,
asdl.get_kenmerk ('PRS', 1054, p.prs_perslid_key) vca_bgeldigtot,
DECODE(SIGN(fac.safe_to_date(asdl.get_kenmerk ('PRS', 1054, p.prs_perslid_key), 'dd-mm-yyyy') - SYSDATE), -1, 0, 1) vca_bgeldig,
asdl.get_kenmerk ('PRS', 1036, p.prs_perslid_key) dvp,
-- asdl.get_kenmerk ('PRS', 1053) vca_bbeh,
asdl.get_kenmerk ('PRS', 1037, p.prs_perslid_key) dvpgeldigtot,
DECODE(SIGN(fac.safe_to_date(asdl.get_kenmerk ('PRS', 1037, p.prs_perslid_key), 'dd-mm-yyyy') - SYSDATE), -1, 0, 1) dvpgeldig,
asdl.get_kenmerk ('PRS', 1039, p.prs_perslid_key) idchecker,
asdl.get_kenmerk ('PRS', 1041, p.prs_perslid_key) wavpas,
d.alg_district_omschrijving
FROM prs_perslid p,
prs_afdeling a,
prs_srtperslid sp,
prs_v_perslid_fullnames pf,
( SELECT prs_perslid_key, alg_district_key
FROM prs_v_perslidwerkplek_gegevens pwg, alg_locatie l
WHERE pwg.alg_locatie_key = l.alg_locatie_key
AND alg_district_key <> 21 -- Algemene Asito locatie
GROUP BY prs_perslid_key, l.alg_district_key) wp,
alg_district d
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = wp.prs_perslid_key(+)
AND wp.alg_district_key = d.alg_district_key(+)
AND prs_afdeling_naam = '2250';
CREATE OR REPLACE VIEW asdl_v_rap_wiezitwaar
AS
SELECT prs_afd_perslid_naam,
alg_locatie_omschrijving,
wp.prs_werkplek_getekend,
l.alg_locatie_key fclt_3d_locatie_key,
pwg.prs_perslid_key
FROM prs_v_perslidwerkplek_gegevens pwg, prs_werkplek wp, alg_locatie l, prs_perslid p
WHERE pwg.prs_werkplek_key = wp.prs_werkplek_key
AND prs_werkplek_type = 1
AND pwg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_verwijder IS NULL
AND pwg.alg_locatie_key = l.alg_locatie_key;
CREATE OR REPLACE VIEW asdl_v_rap_importsheet
(
disciplineomschrijving,
disciplinekostensoort,
groepsoortomschrijving,
objectsoortcode,
objectsoortomschrijving,
objectomschrijving,
objectopmerking,
ins_deel_key,
reserveerbaar,
eenheid,
prijs,
locatiecode,
gebouwcode,
bouwlaagvolgnummer,
ruimtenummer,
reserveringscope,
catalogusnaam,
cataloguskostensoort,
persoonmatchcode,
persoonmatchwaarde,
district,
locatie,
frequentie,
oppervlakte,
vloersoort,
dagen,
route,
uitvoeringsmoment,
afwijkingen,
eerstvolgendeschoonmaak
)
AS
SELECT d.ins_discipline_omschrijving,
NULL disciplinekostensoort,
d.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
NULL objectopmerking,
d.ins_deel_key,
NULL reserveerbaar,
NULL eenheid,
NULL prijs,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
alg_ruimte_nr,
NULL reserveringscope,
NULL catalogusnaam,
NULL cataloguskostensoort,
NULL persoonmatchcode,
NULL persoonmatchwaarde,
alg_district_omschrijving,
alg_locatie_omschrijving,
COALESCE(fac.safe_to_number(asdl.get_kenmerks ('INS', 44, d.ins_discipline_key, 'D', d.ins_deel_key)),
DECODE (ins_srtcontroledl_xcp_eenheid, 2, 52, 3, 12, 1)
/ ins_srtcontroledl_xcp_periode),
asdl.get_kenmerks ('INS', 41, d.ins_discipline_key, 'D', d.ins_deel_key) oppervlakte,
asdl.get_kenmerks ('INS', 42, d.ins_discipline_key, 'D', d.ins_deel_key) vloersoort,
COALESCE( asdl.get_kenmerks ('INS', 43, d.ins_discipline_key, 'D', d.ins_deel_key), asdl.get_bits_str(ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_bits)) dagen,
ins_srtcontroledl_xcp_groep,
asdl.get_kenmerk ('ALG', 1020, l.alg_locatie_key) uitv,
asdl.get_kenmerk ('ALG', 1000, l.alg_locatie_key) afw,
DECODE (
id.ins_deel_vervaldatum,
NULL,
TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key,
x.ins_srtcontrole_key,
1)),
NULL)
eerste
FROM ins_v_deel_gegevens d,
ins_srtdeel sd,
alg_locatie l,
alg_verdieping v,
alg_district di,
ins_srtcontroledl_xcp x,
ins_deel id
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = x.ins_deel_key
AND d.ins_deel_key = id.ins_deel_key
AND d.alg_verdieping_key = v.alg_verdieping_key
AND l.alg_district_key = di.alg_district_key;
CREATE OR REPLACE VIEW asdl_v_rap_check_schedule
AS
SELECT d.*
FROM ins_v_deel_gegevens d, ins_srtcontroledl_xcp x
WHERE x.ins_deel_key = d.ins_deel_key
AND asdl.check_valid_schedule (d.ins_deel_key) IS NOT NULL;
-- Basisrapportage om per locatie te zien of hier schoongemaakt is.
-- Om te bepalen of er uberhaupt schoongemaakt moest worden kijken we in de xcp bits.
CREATE OR REPLACE VIEW asdl_v_rap_ns_stat
(
datum,
locatie,
perceel,
schoongemaakt
)
AS
SELECT dsc.ins_deelsrtcontrole_datum,
alg_locatie_omschrijving,
alg_district_omschrijving,
DECODE (
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsca, ins_deel da
WHERE dsca.ins_deel_key = da.ins_deel_key
AND ins_controlemode_key = 10
AND TRUNC (dsca.ins_deelsrtcontrole_datum_org) =
dsc.ins_deelsrtcontrole_datum
AND da.ins_alg_locatie_key = l.alg_locatie_key),
0,
0,
1)
schoongemaakt
FROM alg_locatie l,
alg_district d,
( SELECT TRUNC (ins_deelsrtcontrole_datum) ins_deelsrtcontrole_datum,
POWER (2, TO_CHAR (ins_deelsrtcontrole_datum, 'D') - 1)
mask
FROM ins_deelsrtcontrole
GROUP BY TRUNC (ins_deelsrtcontrole_datum),
POWER (2, TO_CHAR (ins_deelsrtcontrole_datum, 'D') - 1))
dsc,
( SELECT ins_alg_locatie_key alg_locatie_key,
ins_srtcontroledl_xcp_bits
FROM ins_srtcontroledl_xcp x,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg
WHERE d.ins_deel_key = x.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 121 -- NS Schoonmaak
GROUP BY ins_alg_locatie_key, ins_srtcontroledl_xcp_bits) dcg
WHERE l.alg_locatie_key = dcg.alg_locatie_key
AND ins_deelsrtcontrole_datum >= TO_DATE ('20160701', 'yyyymmdd') -- we zijn het contract op 1 juli begonnen
AND l.alg_district_key = d.alg_district_key
AND BITAND (ins_srtcontroledl_xcp_bits, dsc.mask) <> 0;
-- Groepering om grafiek met percentages te tonen
CREATE OR REPLACE VIEW asdl_v_rap_ns_stat_tot (datum, percentage)
AS
SELECT datum, ROUND ( (SUM (schoongemaakt) / COUNT ( * )) * 100)
FROM asdl_v_rap_ns_stat
GROUP BY datum;
-- Groepering om grafiek met percentages te tonen per perceel
CREATE OR REPLACE VIEW asdl_v_rap_ns_stat_perceel (datum, perceel, percentage)
AS
SELECT datum, perceel, ROUND ( (SUM (schoongemaakt) / COUNT ( * )) * 100)
FROM asdl_v_rap_ns_stat
GROUP BY datum, perceel;
-- Algemene view tbv opleidingsrapportages
CREATE OR REPLACE VIEW asdl_v_training
(
perceel,
status,
prs_kenmerk_key,
fac_usrdata_key,
leiding
)
AS
SELECT alg_district_omschrijving,
fac_usrdata_volgnr || '.' || fac_usrdata_omschr status,
prs_kenmerk_key,
ud.fac_usrdata_key,
DECODE (sp.prs_srtperslid_key, 62, 1, 0)
FROM prs_kenmerklink kl,
fac_usrdata ud,
prs_perslid p,
prs_afdeling a,
prs_srtperslid sp,
( SELECT prs_perslid_key, alg_district_key
FROM prs_perslidwerkplek pw,
prs_werkplek wp,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND alg_district_key <> 21 -- Algemene Asito locatie
GROUP BY prs_perslid_key, l.alg_district_key) wp,
alg_district d
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = wp.prs_perslid_key(+)
AND wp.alg_district_key = d.alg_district_key(+)
AND prs_afdeling_naam = '2250'
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key
AND kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key IN (1058, 1060, 1045, 1046, 1047, 1048);
-- Specifieke rapportages.
CREATE OR REPLACE VIEW asdl_v_training_perceel
(
perceel,
omschrijving,
status,
perc,
aantal
)
AS
SELECT alg_district_omschrijving,
DECODE (prs_kenmerk_key,
1056, 'Resultaatgericht schoonmaken',
1058, 'Duurzaam schoonmaken',
1060, 'Gastvrijheid',
1045, 'Hospitality',
1046, 'Nederlands taaltraject',
1047, 'SVS Basis',
1048, 'SVS Leidinggevende')
omschrijving,
fac_usrdata_volgnr || '.' || fac_usrdata_omschr,
ROUND (
( (SELECT COUNT ( * )
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key
AND ud.fac_usrdata_key = t.fac_usrdata_key
AND perceel = alg_district_omschrijving)
/ (SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key
AND perceel = alg_district_omschrijving)
* 100),
2)
perc,
(SELECT COUNT ( * )
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key
AND ud.fac_usrdata_key = t.fac_usrdata_key
AND perceel = alg_district_omschrijving)
aantal
FROM fac_usrdata ud, prs_kenmerk k, alg_district d
WHERE ud.fac_usrtab_key = 1
AND prs_kenmerk_key IN (1058, 1060, 1045, 1046, 1047, 1048)
AND d.alg_district_key IN (41, 42, 43, 44);
CREATE OR REPLACE VIEW asdl_v_training_totaal
(
omschrijving,
status,
perc,
aantal
)
AS
SELECT DECODE (prs_kenmerk_key,
1056, 'Resultaatgericht schoonmaken',
1058, 'Duurzaam schoonmaken',
1060, 'Gastvrijheid',
1045, 'Hospitality',
1046, 'Nederlands taaltraject',
1047, 'SVS Basis',
1048, 'SVS Leidinggevende')
omschrijving,
fac_usrdata_volgnr || '.' || fac_usrdata_omschr,
ROUND (
( (SELECT COUNT ( * )
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key
AND ud.fac_usrdata_key = t.fac_usrdata_key)
/ (SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key)
* 100),
2)
perc,
(SELECT COUNT ( * )
FROM asdl_v_training t
WHERE k.prs_kenmerk_key = t.prs_kenmerk_key
AND ud.fac_usrdata_key = t.fac_usrdata_key)
aantal
FROM fac_usrdata ud, prs_kenmerk k, alg_district d
WHERE ud.fac_usrtab_key = 1
AND prs_kenmerk_key IN (1058, 1060, 1045, 1046, 1047, 1048)
AND d.alg_district_key IN (41, 42, 43, 44);
-------------------------------------------------------------------------------------------
--
-- Notificatiejobs
--
-------------------------------------------------------------------------------------------
-- Notificatie naar leidinggevende op dag dat medewerker jarig is.
CREATE OR REPLACE VIEW asdl_v_noti_verjaardag
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL,
p.prs_perslid_key,
'Let op: Uw medewerker '
|| prs_perslid_naam_friendly
|| ' is vandaag ('
|| RTRIM (TO_CHAR (SYSDATE, 'dd month'))
|| ') jarig.',
'PRSMAI' code,
NULL fac_srtnotificatie_key,
NULL key,
NULL xkey,
NULL xemail,
NULL xmobiel
FROM prs_kenmerklink klg,
prs_v_perslid_fullnames pf,
prs_kenmerklink kll,
prs_perslid p
WHERE klg.prs_kenmerk_key = 1023
AND klg.prs_kenmerklink_verwijder IS NULL
AND klg.prs_link_key = pf.prs_perslid_key
AND SUBSTR (klg.prs_kenmerklink_waarde, 1, 5) =
TO_CHAR (SYSDATE, 'dd-mm')
AND kll.prs_kenmerk_key = 1061
AND kll.prs_kenmerklink_verwijder IS NULL
AND kll.prs_link_key = pf.prs_perslid_key
AND fac.safe_to_number (kll.prs_kenmerklink_waarde) = p.prs_perslid_key;
CREATE OR REPLACE VIEW asdl_v_noti_opleiding
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL,
701 prs_perslid_key, -- NS Asito administratie
'Let op: Opleiding/pas '
|| opleiding
|| ' van medewerker '
|| prs_perslid_naam_friendly
|| ' is bijna verlopen.',
'PRSMAI' code,
NULL fac_srtnotificatie_key,
NULL key,
NULL xkey,
NULL xemail,
NULL xmobiel
FROM prs_v_perslid_fullnames pf,
(SELECT 'VCA vol' opleiding, prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1095
AND ADD_MONTHS (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
-1) = TRUNC (SYSDATE)
UNION
SELECT 'DVP (digitaal veiligheids paspoort)', prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1100
AND ADD_MONTHS (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
-1) = TRUNC (SYSDATE)
UNION
SELECT 'VCA Basis', prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1054
AND ADD_MONTHS (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
-1) = TRUNC (SYSDATE)
UNION
SELECT 'Taak eigen veiligheid', prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1034
AND ADD_MONTHS (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
-1) = TRUNC (SYSDATE)
UNION
SELECT 'NS ID Checker', prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1037
AND ADD_MONTHS (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
-1) = TRUNC (SYSDATE)) o
WHERE o.prs_link_key = pf.prs_perslid_key;
-- Afschrift naar gebruiker NS Asito administratie
-- na afmelden 'Graffiti verwijderen'-meldingen!
CREATE OR REPLACE VIEW asdl_v_noti_administratie
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
701 prs_perslid_key, -- NS Asito administratie
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
m.mld_melding_key),
'##DISC##',
md.ins_discipline_omschrijving),
'##STDMLD##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
NULL,
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = 81 -- Graffiti verwijderen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'ASDL_V_NOTI_ADMINISTRATIE'
AND t.fac_tracking_datum > nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24);
-------------------------------------------------------------------------------------------
--
-- Importsheets
--
-------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE asdl_import_perslid (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT * FROM fac_imp_perslid;
v_seq_of_columns VARCHAR (255);
v_index_eigen NUMBER;
v_index_partner NUMBER;
v_code NUMBER;
v_index NUMBER;
v_voorletters VARCHAR2 (100);
BEGIN
v_seq_of_columns :=
'0;0;0;0;0;0;1;10;12;14;9;11;13;0;0;0;0;7;0;2;5;0;0;0;0;0;16;15;0;8;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46';
prs.import_perslid (
p_import_key,
v_seq_of_columns,
'WERKS;PERNR;STELL;SHORT;STEXT;E_MAIL_P;E_MAIL_Z;ENAME;INITS;NACHN;NAME2;VORSW;VORS2;RUFNM;GBDAT;PERNR_OL%');
-- Even het personeelsnummer voorzien van de nodig voorloopnullen. Die Excel toch...
-- en ook het nummer van de leidinggevende
UPDATE fac_imp_perslid i
SET prs_perslid_nr = LPAD(prs_perslid_nr, 8, '0'),
prs_kenmerk1 = LPAD(prs_kenmerk1, 8, '0'),
prs_perslid_oslogin = (SELECT MAX(prs_perslid_oslogin) FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL and p.prs_perslid_nr = LPAD(i.prs_perslid_nr, 8, '0')),
prs_srtperslid_omschrijving = DECODE (SUBSTR(REPLACE(UPPER(prs_srtperslid_omschrijving), 'MEDEWERKER '),1,10),
'OBJECTLEID', 'Objectleider',
'PROJECTLEI', 'Objectleider',
'KWALITEIT ', 'Vestigingsmanager en ondersteuning',
'Schoonmaker');
-- koppel iedereen aan afdeling 2250
-- UPDATE fac_imp_perslid SET prs_afdeling_naam = '2250';
-- Zorg dat de juiste naam getoond wordt
-- Codering naamgebruik FACILITOR:
-- 0 - Gebruik eigennaam
-- 1 - Gebruik partnernaam - eigennaam
-- 2 - Gebruik partnernaam
-- 3 - Gebruik eigennaam - partnernaam
-- PRS_PERSLID_NAAMGEBRUIK_CODE
-- Kenmerk4 is de volledige naam.
FOR rec IN c
LOOP
v_index_eigen := INSTR (rec.prs_kenmerk4, rec.prs_perslid_naam);
-- als de partnernaam leeg is wil dat hetzelfde zeggen als dat deze niet voorkomt in de display naam.
IF rec.prs_perslid_partner_naam IS NULL
THEN
v_index_partner := 0;
ELSE
v_index_partner :=
INSTR (rec.prs_kenmerk4, rec.prs_perslid_partner_naam);
END IF;
IF v_index_eigen = 0
THEN
v_code := 2;
ELSE
IF v_index_partner = 0
THEN
v_code := 0;
ELSE
IF v_index_eigen < v_index_partner
THEN
v_code := 3;
ELSE
v_code := 1;
END IF;
END IF;
END IF;
UPDATE fac_imp_perslid
SET prs_perslid_naamgebruik_code = v_code
WHERE prs_perslid_nr = rec.prs_perslid_nr;
-- even netjes de punten plaatsen in de voorletters.
v_voorletters := NULL;
FOR v_index IN 1 .. LENGTH (rec.prs_perslid_voorletters)
LOOP
v_voorletters :=
v_voorletters
|| SUBSTR (rec.prs_perslid_voorletters, v_index, 1)
|| '.';
END LOOP;
UPDATE fac_imp_perslid
SET prs_perslid_voorletters = SUBSTR (v_voorletters, 1, 15)
WHERE prs_perslid_nr = rec.prs_perslid_nr;
END LOOP;
END asdl_import_perslid;
/
CREATE OR REPLACE PROCEDURE asdl_update_perslid (p_import_key IN NUMBER)
IS
CURSOR c_flex
IS
SELECT i.prs_perslid_key, prs_kenmerk3 leid_key, prs_kenmerk2 geboorte
FROM fac_imp_perslid i;
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL
ORDER BY 2;
v_perslid_key NUMBER;
v_perslid_nr VARCHAR2 (100);
v_kostenplaats_nr VARCHAR2 (100);
v_count NUMBER;
v_errorhint VARCHAR2 (1000);
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'NR', NULL);
FOR rec IN c_del
LOOP
BEGIN
-- Niet gebruik maken van de standaard functie omdat we geen medewerkers
-- hard willen verwijderen.
-- prs.delete_perslid (p_import_key, rec.prs_perslid_key);
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT ( * )
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam, 1, 60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
IF rec.prs_perslid_naam_full NOT LIKE '%INACTIEF%'
THEN
fac.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, SYSDATE, 'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.' );
END IF;
fac.imp_writelog (
p_import_key,
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon ge<67>nactiveerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
fac.trackaction ('PRSDEL', rec.prs_perslid_key, NULL, SYSDATE, NULL );
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr;
fac.imp_writelog (p_import_key,
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END;
END LOOP;
UPDATE fac_imp_perslid i
SET prs_kenmerk3 =
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = i.prs_kenmerk1);
FOR rec IN c_flex
LOOP
BEGIN
prs.upsertkenmerk (1061, rec.prs_perslid_key, rec.leid_key);
prs.upsertkenmerk (1023, rec.prs_perslid_key, rec.geboorte);
EXCEPTION
WHEN OTHERS
THEN
NULL; -- Jammer
END;
END LOOP;
END asdl_update_perslid;
/
CREATE OR REPLACE PROCEDURE asdl_import_wiezitwaar (p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_perslid_nr VARCHAR2 (100);
v_locatie_code VARCHAR2 (100);
v_locatie_omschrijving VARCHAR2(100);
v_datum_str VARCHAR2 (100);
v_perslid_key NUMBER;
v_locatie_key NUMBER;
v_datum DATE;
v_ruimte_key NUMBER;
v_werkplek_key NUMBER;
v_perslidwerkplek_key NUMBER;
v_max_werkplek_volgnr NUMBER;
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_skipfield);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_skipfield);
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_str);
v_aanduiding := 'Persoon: ' || v_perslid_nr || ' - Locatie: ' || v_locatie_code;
-- Skip until a valid header is found
IF UPPER(v_perslid_nr) = 'PERNR'
AND UPPER(v_locatie_code) = 'STRNO'
AND UPPER(v_datum_str) = 'DATUM'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND v_perslid_nr IS NOT NULL)
THEN
v_errorhint := 'Datum omzetten naar intern formaat';
v_datum := to_date(v_datum_str, 'dd-mm-yyyy');
-- personeelsnummer voorzien van voorloopnullen
v_perslid_nr := LPAD(v_perslid_nr, 8, '0');
v_errorhint := 'Vind de juiste persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid p
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_nr = v_perslid_nr;
v_errorhint := 'Vind de juiste locatie (op postcode)';
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND REPLACE(alg_locatie_code, ' ') = SUBSTR(v_locatie_code, 1, 6);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Vind de juiste locatie (op omschrijving)';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND UPPER(v_locatie_omschrijving) like '%' || UPPER(alg_locatie_omschrijving);
END;
v_errorhint := 'Vind de juiste ruimte';
SELECT MIN(alg_ruimte_key)
INTO v_ruimte_key
FROM alg_v_ruimte_gegevens rg
WHERE alg_locatie_key = v_locatie_key;
BEGIN
v_errorhint := 'Check of er al een werkplek voor deze persoon bestaat.';
SELECT wp.prs_werkplek_key, prs_perslidwerkplek_key
INTO v_werkplek_key, v_perslidwerkplek_key
FROM prs_werkplek wp,
prs_perslidwerkplek pwp
WHERE wp.prs_werkplek_key = pwp.prs_werkplek_key
AND wp.prs_alg_ruimte_key = v_ruimte_key
AND pwp.prs_perslid_key = v_perslid_key
AND prs_werkplek_type = 1 -- we gebruikten type flex om conflict met echter wp te voorkomen.
AND prs_werkplek_virtueel = 1;
v_errorhint := 'Pas de datum aan bij de werkplek';
UPDATE prs_werkplek SET prs_werkplek_getekend = v_datum WHERE prs_werkplek_key = v_werkplek_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Bepaal max werkplekvolgnummer';
SELECT MAX(prs_werkplek_volgnr)
INTO v_max_werkplek_volgnr
FROM prs_werkplek
WHERE prs_alg_ruimte_key = v_ruimte_key;
v_errorhint := 'Toevoegen werkplek';
INSERT INTO prs_werkplek
( prs_alg_ruimte_key,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_werkplek_getekend,
prs_werkplek_type,
prs_werkplek_virtueel)
VALUES ( v_ruimte_key,
COALESCE(v_max_werkplek_volgnr, 0) + 1,
v_perslid_nr,
v_datum,
1,
1)
RETURNING prs_werkplek_key INTO v_werkplek_key;
v_errorhint := 'Toevoegen perslidwerkplek';
INSERT INTO prs_perslidwerkplek
( prs_werkplek_key,
prs_perslid_key)
VALUES ( v_werkplek_key,
v_perslid_key);
END;
END IF;
COMMIT;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding || ' - ' || v_errorhint);
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.'
);
END IF;
-- Werkplekken ouder dan 18 maanden gaan we weggooien.
DELETE prs_perslidwerkplek pwp
WHERE pwp.prs_werkplek_key IN (SELECT prs_werkplek_key
FROM prs_werkplek
WHERE ADD_MONTHS (
COALESCE (prs_werkplek_getekend,
SYSDATE),
18) < SYSDATE);
DELETE prs_werkplek wp
WHERE ADD_MONTHS (
COALESCE (prs_werkplek_getekend,
SYSDATE),
18) < SYSDATE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
END;
/
-- import van template met schoonmaakgegevens
CREATE OR REPLACE PROCEDURE asdl_import_ins (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT alg_locatie_code, ins_deel_omschrijving
FROM fac_imp_ins
GROUP BY alg_locatie_code, ins_deel_omschrijving
HAVING COUNT (ins_deel_omschrijving) > 1;
CURSOR c2 (
p_locatie_code VARCHAR2,
p_deel_omschrijving VARCHAR2)
IS
SELECT alg_locatie_code, ins_deel_omschrijving, ins_kenmerkwaarde20
FROM fac_imp_ins
WHERE alg_locatie_code = p_locatie_code
AND ins_deel_omschrijving = p_deel_omschrijving;
v_count NUMBER;
BEGIN
fac_import_ins(p_import_key);
-- vul een volgnummer in kenmerk20
UPDATE fac_imp_ins
SET ins_kenmerkwaarde20 = ROWNUM;
-- markeer objecten die niet uniek zijn met *<volgnummer>
FOR rec IN c
LOOP
v_count := 1;
FOR rec2 IN c2 (rec.alg_locatie_code, rec.ins_deel_omschrijving)
LOOP
UPDATE fac_imp_ins
SET ins_deel_omschrijving =
ins_deel_omschrijving || '*' || v_count
WHERE ins_kenmerkwaarde20 = rec2.ins_kenmerkwaarde20;
v_count := v_count + 1;
END LOOP;
END LOOP;
-- soms wordt een , als decimaal scheidingsteken opgegeven. Dat passen we even aan.
UPDATE fac_imp_ins
SET ins_kenmerkwaarde1 = REPLACE(ins_kenmerkwaarde1, ',', '.');
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE asdl_update_ins (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT * FROM fac_imp_ins;
CURSOR c_insp
IS
SELECT DISTINCT sdg.*
FROM ins_v_srtdeel_gegevens sdg, fac_imp_ins i
WHERE UPPER (sdg.ins_discipline_omschrijving) =
UPPER (TRIM (i.ins_discipline_omschrijving))
AND sdg.ins_srtgroep_upper =
UPPER (TRIM (i.ins_srtgroep_omschrijving))
AND UPPER (sdg.ins_srtdeel_code) = UPPER (TRIM (i.ins_srtdeel_code));
v_errormsg VARCHAR (200);
v_aanduiding VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_regio_key alg_regio.alg_regio_key%TYPE;
v_district_key alg_district.alg_district_key%TYPE;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
v_verdieping_key alg_verdieping.alg_verdieping_key%TYPE;
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
v_locatie_code alg_locatie.alg_locatie_code%TYPE;
v_regio alg_regio.alg_regio_omschrijving%TYPE;
v_district alg_district.alg_district_omschrijving%TYPE;
v_locatie alg_locatie.alg_locatie_omschrijving%TYPE;
v_srtcontrole_key ins_srtcontrole.ins_srtcontrole_key%TYPE;
v_srtcontroledl_xcp_key ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_key%TYPE;
v_deel_key ins_deel.ins_deel_key%TYPE;
v_srtdeel_key ins_srtdeel.ins_srtdeel_key%TYPE;
v_kenmerk_key ins_kenmerk.ins_kenmerk_key%TYPE;
BEGIN
SELECT COUNT ( * )
INTO v_count
FROM imp_log
WHERE fac_import_key = p_import_key AND imp_log_status = 'E';
IF v_count > 0
THEN
RETURN;
END IF;
FOR rec IN c
LOOP
BEGIN
v_regio := SUBSTR (rec.ins_kenmerkwaarde2, 1, 30);
v_district := SUBSTR (rec.ins_kenmerkwaarde3, 1, 30);
v_locatie := SUBSTR (rec.ins_kenmerkwaarde4, 1, 60);
v_locatie_code := rec.alg_locatie_code;
v_aanduiding := 'Locatiecode: ' || v_locatie_code || ' - Locatie omschrijving: ' || v_locatie;
SELECT alg_regio_key
INTO v_regio_key
FROM alg_regio
WHERE alg_regio_upper = UPPER (TRIM (v_regio))
AND alg_regio_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_regio (alg_regio_omschrijving)
VALUES (TRIM (v_regio))
RETURNING alg_regio_key
INTO v_regio_key;
END;
IF v_regio_key IS NOT NULL
THEN
BEGIN
SELECT alg_district_key
INTO v_district_key
FROM alg_district
WHERE alg_district_upper = UPPER (TRIM (v_district))
AND alg_regio_key = v_regio_key
AND alg_district_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_district (alg_regio_key,
alg_district_omschrijving)
VALUES (v_regio_key, TRIM (v_district))
RETURNING alg_district_key
INTO v_district_key;
END;
END IF;
IF v_district_key IS NOT NULL
THEN
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE UPPER (alg_locatie_code) = UPPER (TRIM (v_locatie_code))
AND alg_district_key = v_district_key
AND alg_locatie_verwijder IS NULL;
BEGIN
UPDATE alg_locatie
SET alg_locatie_omschrijving = v_locatie
WHERE alg_locatie_key = v_locatie_key;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
END;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
INSERT INTO alg_locatie (alg_district_key,
alg_locatie_code,
alg_locatie_omschrijving)
VALUES (v_district_key,
TRIM (v_locatie_code),
TRIM (v_locatie))
RETURNING alg_locatie_key
INTO v_locatie_key;
EXCEPTION WHEN OTHERS
THEN
v_locatie_key := -1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
END;
END;
END IF;
IF v_locatie_key <> -1
THEN
BEGIN
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_naam = '_'
AND alg_gebouw_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_gebouw (alg_locatie_key,
alg_gebouw_naam,
alg_gebouw_code)
VALUES (v_locatie_key, '_', '_')
RETURNING alg_gebouw_key
INTO v_gebouw_key;
END;
BEGIN
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr = 1
AND alg_verdieping_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_verdieping (alg_gebouw_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code)
VALUES (v_gebouw_key,
'Verdieping 1',
1,
'_')
RETURNING alg_verdieping_key
INTO v_verdieping_key;
END;
BEGIN
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_nr = '_'
AND alg_ruimte_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte (alg_verdieping_key,
alg_srtruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving)
VALUES (v_verdieping_key,
1,
'_',
'_')
RETURNING alg_ruimte_key
INTO v_ruimte_key;
END;
END IF;
END LOOP;
fac_update_ins (p_import_key);
FOR rec IN c_insp
LOOP
-- pas de binding van de objecttypes aan zodat we alleen aan ruimten kunnen koppelen.
UPDATE ins_srtdeel sd
SET ins_srtdeel_binding = 1 -- alleen aan ruimte te koppelen
WHERE ins_srtdeel_key = rec.ins_srtdeel_key;
BEGIN
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_niveau = 'S'
AND sc.ins_srtinstallatie_key = rec.ins_srtdeel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode,
ins_srtcontrole_type)
VALUES (rec.ins_srtdeel_key,
'S',
rec.ins_srtdeel_omschrijving,
0,
0,
0,
1)
RETURNING ins_srtcontrole_key INTO v_srtcontrole_key;
END;
BEGIN
-- Kijk of het kenmerk bijlage al bestaat
SELECT ins_kenmerk_key
INTO v_kenmerk_key
FROM ins_kenmerk
WHERE ins_srtkenmerk_key = 21 -- bijlage
AND ins_srtinstallatie_key = v_srtcontrole_key
AND ins_kenmerk_niveau = 'C'
AND ins_kenmerk_bewerkniveau = 'D'
AND ins_kenmerk_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_kenmerk (ins_srtkenmerk_key,
ins_srtinstallatie_key,
ins_kenmerk_niveau,
ins_kenmerk_bewerkniveau,
ins_kenmerk_groep,
ins_kenmerk_volgnummer)
VALUES (21,
v_srtcontrole_key,
'C',
'D',
0,
100);
END;
END LOOP;
FOR rec IN c
LOOP
BEGIN
SELECT sdg.ins_deel_key, sdg.ins_srtdeel_key
INTO v_deel_key, v_srtdeel_key
FROM ins_v_deel_gegevens sdg, alg_locatie l, ins_srtdeel sd
WHERE sdg.alg_locatie_key = l.alg_locatie_key
AND sdg.ins_srtdeel_key = sd.ins_srtdeel_key
AND UPPER (sdg.ins_discipline_omschrijving) =
UPPER (TRIM (rec.ins_discipline_omschrijving))
AND sdg.ins_srtgroep_upper =
UPPER (TRIM (rec.ins_srtgroep_omschrijving))
AND sd.ins_srtdeel_code_upper = UPPER (TRIM (rec.ins_srtdeel_code))
AND UPPER(l.alg_locatie_code) = UPPER(rec.alg_locatie_code)
AND UPPER (sdg.ins_deel_omschrijving) =
UPPER (TRIM (rec.ins_deel_omschrijving));
BEGIN
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_niveau = 'S'
AND sc.ins_srtinstallatie_key = v_srtdeel_key
AND UPPER (sc.ins_srtcontrole_omschrijving) =
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
SELECT ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key = v_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key;
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_bits =
asdl.get_bits_value (rec.ins_kenmerkwaarde11,
rec.ins_kenmerkwaarde13,
rec.ins_kenmerkwaarde12),
ins_srtcontroledl_xcp_periode = rec.ins_kenmerkwaarde10,
ins_srtcontroledl_xcp_eenheid = rec.ins_kenmerkwaarde11,
ins_srtcontroledl_xcp_groep = rec.ins_kenmerkwaarde7
WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_bits,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_groep)
VALUES (v_deel_key,
v_srtcontrole_key,
asdl.get_bits_value (rec.ins_kenmerkwaarde11,
rec.ins_kenmerkwaarde13,
rec.ins_kenmerkwaarde12),
rec.ins_kenmerkwaarde10,
rec.ins_kenmerkwaarde11,
rec.ins_kenmerkwaarde7);
END;
EXCEPTION WHEN OTHERS THEN
fac.imp_writelog (p_import_key, 'E', 'Niet gelukt om schoonmaakactie toe te voegen',
'alg_locatie_code: ' || rec.alg_locatie_code || ' - ' ||
'ins_srtdeel_code: ' || rec.ins_srtdeel_code || ' - ' ||
'ins_srtgroep_omschrijving: ' || rec.ins_srtgroep_omschrijving || ' - ' ||
'ins_discipline_omschrijving: ' || rec.ins_discipline_omschrijving);
END;
END LOOP;
COMMIT;
END;
/
--
-- Export FREEZE (iedere eerste dag van de maand
--
CREATE OR REPLACE PROCEDURE asdl_export_schoonmaak_freeze (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
INSERT INTO asdl_schoonmaak_freeze (freeze_datum,
freeze_q,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
alg_locatie_code,
alg_locatie_omschrijving,
perceel,
frequentie,
oppervlakte,
vloersoort,
dagen,
route,
uitvoeringsmoment,
afwijkingen,
ins_deel_key)
SELECT SYSDATE,
TO_CHAR(sysdate, 'YYYYQ'),
disciplineomschrijving,
groepsoortomschrijving,
objectsoortcode,
objectsoortomschrijving,
objectomschrijving,
locatiecode,
locatie,
district,
frequentie,
oppervlakte,
vloersoort,
dagen,
route,
uitvoeringsmoment,
afwijkingen,
ins_deel_key
FROM asdl_v_rap_importsheet
WHERE disciplineomschrijving LIKE '%NS%';
COMMIT;
END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('ASDL', 14); END;
/
COMMIT;
SPOOL OFF