Files
Customer/ASDL/asdl.sql
Sander Schepers dcd6de5021 ASDL#52274 Import glasmeldingen
svn path=/Customer/trunk/; revision=38573
2018-07-18 14:57:27 +00:00

3093 lines
124 KiB
SQL
Raw Blame History

F-- Script containing customer specific configuration sql statements for Asito Digitaal Logboek
-- $Revision$
-- $Id$
DEFINE thisfile = 'ASDL.SQL'
DEFINE dbuser = '^ASDL'
DEFINE custid = 'ASDL'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE 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(100);
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_locatie_verwijder IS NULL
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', 1050, 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,
fac.safe_to_date(asdl.get_kenmerk ('PRS', 1100, p.prs_perslid_key), 'yyyy-mm-dd') wavpasgeldigtot,
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;
-- rapportage van deelnemers aan de toolboxsessie.
-- Kenmerk 101 tot en met 120 zijn deelnemers.
CREATE OR REPLACE VIEW asdl_v_rap_toolboxsessie
AS
SELECT m.mld_melding_key melding,
mld_melding_datum datum,
mld_melding_onderwerp onderwerp,
mld_melding_omschrijving omschrijving,
prs_perslid_naam_full deelnemer
FROM mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf, mld_melding m
WHERE mld_kenmerk_key BETWEEN 101 AND 120
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
AND km.mld_melding_key = m.mld_melding_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;
-- ASDL#37757
CREATE OR REPLACE VIEW asdl_v_rap_obj_route_details
(
discipline,
groep,
objectsoort,
object,
district,
locatie_omschrijving,
locatie_code,
oppervlakte,
vloersoort,
route,
uitvoeringsmoment,
afwijkende_schoonmaak,
eerstvolgende_moment,
volgnummer_even_weken,
volgnummer_oneven_weken
)
AS
SELECT d.ins_discipline_omschrijving,
d.ins_srtgroep_omschrijving,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
alg_district_omschrijving,
alg_locatie_omschrijving,
alg_locatie_code,
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,
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,
asdl.get_kenmerk ('ALG', 1042, l.alg_locatie_key) volgnr_even,
asdl.get_kenmerk ('ALG', 1043, l.alg_locatie_key) volgnr_oneven
FROM ins_v_deel_gegevens d,
ins_srtdeel sd,
alg_locatie l,
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 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_locatie_verwijder IS NULL
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 FORCE 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;
-- Specifieke rapportages.
CREATE OR REPLACE VIEW asdl_v_training_perceel
(
PERCEEL,
OMSCHRIJVING,
STATUS,
PERC,
AANTAL
)
AS
SELECT alg_district_omschrijving,
DECODE (prs_kenmerk_key,
1049, 'SVS perron & stationsreiniging',
1050, 'Taak Eigen Veiligheid',
1053, 'VCA (B-VCA)',
1120, 'WAV pas',
1122, 'Digitaal Veiligheid Paspoort')
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 k.prs_kenmerk_key IN (1049, 1050, 1053, 1120, 1122)
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,
1049, 'SVS perron & stationsreiniging',
1050, 'Taak Eigen Veiligheid',
1053, 'VCA (B-VCA)',
1120, 'WAV pas',
1122, 'Digitaal Veiligheid Paspoort')
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 k.prs_kenmerk_key IN (1049, 1050, 1053, 1120, 1122)
AND d.alg_district_key IN (41, 42, 43, 44)
GROUP BY prs_kenmerk_key,
fac_usrdata_volgnr,
fac_usrdata_omschr,
fac_usrdata_key;
-- view om een listbox met locatiebeheerders te vullen
CREATE OR REPLACE VIEW asdl_v_list_locatiebeheerder
(
prs_perslid_naam_full,
prs_perslid_key,
prs_perslid_verwijder
)
AS
SELECT prs_perslid_naam_full, pf.prs_perslid_key, NULL
FROM prs_v_perslid_fullnames pf, fac_gebruikersgroep gg
WHERE pf.prs_perslid_key = gg.prs_perslid_key AND fac_groep_key = 241
UNION ALL
SELECT prs_perslid_naam_full, prs_perslid_key, SYSDATE
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key NOT IN
(SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = pf.prs_perslid_key AND fac_groep_key = 241);
-------------------------------------------------------------------------------------------
--
-- 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 ('
|| prs_kenmerklink_waarde
|| ')',
'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, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1095
AND TRUNC (SYSDATE) IN
(fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (12 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (10 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (8 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (6 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (4 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (2 * 7))
UNION
SELECT 'DVP (digitaal veiligheids paspoort)',
prs_link_key,
prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1037
AND TRUNC (SYSDATE) IN
(fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (8 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (6 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (4 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (2 * 7))
UNION
SELECT 'WAV (wet arbeid vreemdelingen)',
prs_link_key,
prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1100
AND TRUNC (SYSDATE) IN
(fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (8 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (6 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (4 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (2 * 7))
UNION
SELECT 'VCA Basis', prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1054
AND TRUNC (SYSDATE) IN
(fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (12 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (10 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (8 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (6 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (4 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (2 * 7))
UNION
SELECT 'Taak eigen veiligheid',
prs_link_key,
prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1034
AND TRUNC (SYSDATE) IN
(fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (8 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (6 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (4 * 7),
fac.safe_to_date (prs_kenmerklink_waarde,
'dd-mm-yyyy')
- (2 * 7))) 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);
-- Notificatie naar de locatiebeheerder om de actie goed te keuren of af te wijzen.
CREATE OR REPLACE VIEW asdl_v_noti_glas_locatiebeheer
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
fac.safe_to_number(mld_kenmerkmelding_waarde) prs_perslid_key, -- NS Asito administratie
'Glasbewassing op locatie ' || alg_locatie_omschrijving || ' is uitgevoerd.',
m.mld_melding_key,
NULL,
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_notificatie_job nj,
mld_kenmerkmelding km,
mld_kenmerk k,
alg_locatie l
WHERE t.fac_srtnotificatie_key = 43 -- MLDNEW
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 241
AND sn.fac_srtnotificatie_code = 'CUST02'
AND k.mld_srtkenmerk_key = 121 -- locatiebeheerder
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND UPPER(nj.fac_notificatie_job_view) = 'ASDL_V_NOTI_GLAS_LOCATIEBEHEER'
AND t.fac_tracking_datum > nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24);
--
-- Notificatie naar de administratie om glasbewassing te factureren en de voortgang te volgen.
CREATE OR REPLACE VIEW asdl_v_noti_glas_factuur
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
2561 prs_perslid_key, -- NS Asito 2250
'Glasbewassing op locatie ' || alg_locatie_omschrijving ||
DECODE(t.fac_srtnotificatie_key, 37, ' kan gefactureerd worden.',
44, ' is afgekeurd.',
43, ' is aangemaakt.'),
m.mld_melding_key,
NULL,
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_notificatie_job nj,
alg_locatie l
WHERE t.fac_srtnotificatie_key IN (37, 44, 43) -- MLDACP, MLDREJ, MLDNEW
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 241
AND sn.fac_srtnotificatie_code = 'MLDMAI'
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND UPPER(nj.fac_notificatie_job_view) = 'ASDL_V_NOTI_GLAS_FACTUUR'
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
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 0 THEN
-- 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 IF;
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;
/
CREATE OR REPLACE PROCEDURE asdl_update_wiezitwaar (p_import_key IN NUMBER)
AS
BEGIN
fac.imp_writelog (p_import_key, 'I', 'Verwerk hoeft bij WieZitWaar import niet uitgevoerd te worden', NULL);
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,
ctr_discipline_key)
VALUES (rec.ins_srtdeel_key,
'S',
rec.ins_srtdeel_omschrijving,
0,
0,
0,
181)
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;
/
CREATE OR REPLACE PROCEDURE asdl_export_daily_task (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.mld_melding_key
FROM mld_melding m, mld_stdmelding sm
WHERE mld_melding_status = 4 -- geaccepteerd dus in behandeing
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 241;
BEGIN
FOR rec in c
LOOP
BEGIN
-- nu de status op afgemeld zetten.
mld.setmeldingstatus(rec.mld_melding_key, 5, NULL);
END;
END LOOP;
BEGIN ASDL_EXPORT_GLASBON_MELDING('GLASBON_MELDING',SYSDATE,'-1',''); END;
END;
/
CREATE OR REPLACE VIEW asdl_v_rap_locatie_mismatch(alg_locatie_code, alg_locatie_omschrijving)
AS
SELECT DISTINCT locatie, locatieoms
FROM (
SELECT SUBSTR(fac_imp_file_line,
INSTR(fac_imp_file_line, ';', 1, 3)+1,
INSTR(fac_imp_file_line, ';', 1, 4)- INSTR(fac_imp_file_line, ';', 1, 3)-1) locatie,
SUBSTR(fac_imp_file_line,
INSTR(fac_imp_file_line, ';', 1, 4)+1,
INSTR(fac_imp_file_line, ';', 1, 5)- INSTR(fac_imp_file_line, ';', 1, 4)-1) locatieoms
FROM fac_imp_file f, fac_import i
WHERE f.fac_import_key = i.fac_import_key
AND fac_import_app_key = 81) im
WHERE SUBSTR(im.locatie, 1, 6) NOT IN (SELECT alg_locatie_code
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL);
CREATE OR REPLACE VIEW asdl_v_rap_mi_glas
(
mld_melding_key,
prioriteit,
nummer,
datum,
tijd,
district,
plaats,
onderwerp,
vakgroep,
melding,
omschrijving,
afhandeling,
behandelaar,
melder,
status,
datum_afgemeld_afgewezen,
tijd_afgemeld_afgewezen,
naam_afmelden_afwijzen,
datum_geaccepteerd,
tijd_geaccepteerd,
naam_accepteren,
notitie,
organisatie,
kostenplaats,
stationsmanager,
uitvoerdatum,
geplande_uitvoeringsweek,
uitvoerder
)
AS
SELECT mld_melding_key,
DECODE (mld_melding_spoed,
3, lcl.l ('lcl_mld_urg_normaal'),
1, lcl.l ('lcl_mld_urg_kritiek'),
2, lcl.l ('lcl_mld_urg_hoog'),
4, lcl.l ('lcl_mld_urg_laag'))
prioriteit,
sd.ins_srtdiscipline_prefix || m.mld_melding_key nummer,
mld_melding_datum datum,
mld_melding_datum tijd,
alg_district_omschrijving district,
alg_locatie_code || ' (' || alg_locatie_omschrijving || ')' plaats,
mld_melding_onderwerp onderwerp,
ins_discipline_omschrijving vakgroep,
mld_stdmelding_omschrijving melding,
mld_melding_omschrijving omschrijving,
mld_melding_opmerking afhandeling,
pfb.prs_perslid_naam_full behandelaar,
pfm.prs_perslid_naam_full melder,
st.mld_statuses_omschrijving status,
mafm.fac_tracking_datum,
mafm.fac_tracking_datum,
mafm.prs_perslid_naam_full,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft
WHERE fac_srtnotificatie_key = 37
AND m.mld_melding_key = ft.fac_tracking_refkey)
accept_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft
WHERE fac_srtnotificatie_key = 37
AND m.mld_melding_key = ft.fac_tracking_refkey)
accept_datum,
(SELECT prs_perslid_naam_full
FROM fac_tracking ft, prs_v_perslid_fullnames_all p
WHERE fac_srtnotificatie_key = 37
AND p.prs_perslid_key = ft.prs_perslid_key
AND m.mld_melding_key = ft.fac_tracking_refkey
AND ft.fac_tracking_key =
( SELECT MAX (fac_tracking_key)
FROM fac_tracking
WHERE fac_srtnotificatie_key = 37
AND ft.fac_tracking_refkey =
m.mld_melding_key
GROUP BY mld_melding_key))
accepteur,
(SELECT mld_melding_note_omschrijving
FROM mld_melding_note mn
WHERE mn.mld_melding_key = m.mld_melding_key
AND mn.mld_melding_note_key =
(SELECT MAX (mld_melding_note_key)
FROM mld_melding_note mn
WHERE mn.mld_melding_key = m.mld_melding_key))
notitie,
(SELECT prs_afdeling_naam
FROM prs_v_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
(SELECT prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT prs_perslid_naam_full
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
asdl_v_list_locatiebeheerder lb
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 121
AND mld_kenmerkmelding_waarde = TO_CHAR (prs_perslid_key)
AND mk.mld_melding_key = m.mld_melding_key)
stationsmanager,
(SELECT TO_DATE (mk.mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 122
AND m.mld_melding_key = mk.mld_melding_key)
uitvoerdatum,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 161
AND m.mld_melding_key = mk.mld_melding_key)
geplande_uitvoeringsweek,
CASE
WHEN (SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 201
AND m.mld_melding_key = mk.mld_melding_key) IS NOT NULL
THEN
(SELECT f.fac_usrdata_omschr
FROM fac_usrdata f,
(SELECT mk.mld_kenmerkmelding_waarde waarde,
mk.mld_melding_key sleutel
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key =
k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 201) sub
WHERE f.fac_usrdata_key = fac.safe_to_number(sub.waarde)
AND m.mld_melding_key = sub.sleutel)
ELSE
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 141
AND m.mld_melding_key = mk.mld_melding_key)
END
uitvoerder
FROM mld_melding m,
mld_stdmelding std,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_district d,
prs_v_perslid_fullnames_all pfb,
prs_v_perslid_fullnames_all pfm,
mld_statuses st,
prs_perslid p,
(SELECT fac_tracking_datum, fac_tracking_refkey, prs_perslid_naam_full
FROM fac_tracking ft, prs_v_perslid_fullnames_all pft
WHERE fac_srtnotificatie_key IN (38, 44)
AND ft.prs_perslid_key = pft.prs_perslid_key) mafm
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_melding_behandelaar_key = pfb.prs_perslid_key(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = pfm.prs_perslid_key
AND st.mld_statuses_key = m.mld_melding_status
AND m.mld_melding_key = mafm.fac_tracking_refkey(+)
AND sd.ins_srtdiscipline_key = 141;
CREATE OR REPLACE PROCEDURE ASDL_IMPORT_GLASBON (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000);
v_header VARCHAR2 (1000);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER :=1;
v_count_melding NUMBER :=1;
v_count_alglocatie NUMBER :=1;
v_count_weeknr NUMBER :=1;
v_count_stationsmanager NUMBER :=1;
v_count_uitvoerder NUMBER :=1;
-- De importvelden:
v_fac_import_key VARCHAR (256);
v_fac_import_index VARCHAR (256);
v_mld_stdmelding_key VARCHAR (256);
v_mld_stdmelding_oms VARCHAR (256);
v_alg_locatie_code VARCHAR (256);
v_alg_locatie_oms VARCHAR (256);
v_stationsmanager_key VARCHAR (256);
v_stationsmanager VARCHAR (256);
v_uitvoerjaar VARCHAR (256);
v_uitvoerweek VARCHAR (256);
v_uitvoermaand VARCHAR (256);
v_uitvoerder VARCHAR (256);
v_uitvoerdernaam VARCHAR(256);
v_serviceordernr VARCHAR (256);
v_onderwerp VARCHAR (256);
v_omschrijving VARCHAR (256);
v_datum_melding VARCHAR (256);
v_meldingnr VARCHAR (256);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
CURSOR l
IS
SELECT *
FROM alg_locatie;
BEGIN
DELETE FROM asdl_imp_glas;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_fac_import_key := rec.fac_import_key;
v_fac_import_index := rec.fac_imp_file_index;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
v_count := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_mld_stdmelding_key); -- Soort melding key
fac.imp_getfield (v_newline, c_fielddelimitor, v_mld_stdmelding_oms); -- Soort melding omschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code); -- Locatie key
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_oms); -- Locatieomschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_stationsmanager_key); -- Key Stationsmanager
fac.imp_getfield (v_newline, c_fielddelimitor, v_stationsmanager); -- Stationsmanager
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerjaar); -- Uitvoerjaar
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerweek); -- Uitvoerweek
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerder); -- Uitvoerder
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerdernaam); -- Uitvoerdernaam
fac.imp_getfield (v_newline, c_fielddelimitor, v_serviceordernr); -- Nummer serviceorder
fac.imp_getfield (v_newline, c_fielddelimitor, v_onderwerp); -- Onderwerp
fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving); -- Omschrijving
v_aanduiding :=
'['
|| v_mld_stdmelding_key
|| '|'
|| v_alg_locatie_code
|| '|'
|| v_uitvoerjaar
|| '|'
|| v_uitvoerweek
|| '] ';
v_count_tot := v_count_tot + 1;
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF
UPPER (v_mld_stdmelding_key) = 'MELDING'
AND UPPER (v_mld_stdmelding_oms) = 'MELDINGOMSCHRIJVING'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_locatie_oms) = 'LOCATIE'
AND UPPER (v_stationsmanager_key) = 'SMNR'
AND UPPER (v_stationsmanager) = 'STATIONSMANAGER'
AND UPPER (v_uitvoerjaar) = 'UITVOERJAAR'
AND UPPER (v_uitvoerweek) = 'UITVOERWEEK'
AND UPPER (v_uitvoerder) = 'UITVOERDER'
AND UPPER (v_uitvoerdernaam) = 'UITVOERDERNAAM'
AND UPPER (v_serviceordernr) = 'SERVICEORDERNUMMER' --Lengte max 50
AND UPPER (v_onderwerp) = 'ONDERWERP' --Lengte max 80
AND UPPER (v_omschrijving) = 'OMSCHRIJVING' --Lengte max 4000
THEN
header_is_valid := 1;
END IF;
ELSE
--Controle of de opgegeven stdmelding wel aanwezig is
SELECT COUNT ( * )
INTO v_count_melding
FROM mld_stdmelding sm
WHERE v_mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 241; -- Vakgroep GL-Glasbewassing
IF v_count_melding = 0
THEN v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Meldingnummer bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de opgegeven locatie (postcode) wel aanwezig is
SELECT COUNT ( * )
INTO v_count_alglocatie
FROM alg_locatie l
WHERE l.alg_locatie_postcode = v_alg_locatie_code;
IF v_count_alglocatie = 0
THEN v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Locatie (postcode) bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de opgegeven stationsmanager wel aanwezig is
SELECT COUNT ( * )
INTO v_count_stationsmanager
FROM asdl_v_list_locatiebeheerder lb
WHERE lb.prs_perslid_key = v_stationsmanager_key
AND lb.prs_perslid_verwijder IS NULL;
IF v_count_stationsmanager = 0
THEN v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Stationsmanager bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de opgegeven uitvoerder wel aanwezig is
SELECT COUNT ( * )
INTO v_count_uitvoerder
FROM fac_usrdata uv
WHERE uv.fac_usrdata_key = v_uitvoerder
AND uv.fac_usrtab_key = 21
AND uv.fac_usrdata_verwijder IS NULL;
IF v_count_uitvoerder = 0
THEN v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Uitvoerder bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de melding al is aangemaakt.
--IF TO_NUMBER(TO_CHAR(v_uitvoerjaar)||TO_CHAR(v_uitvoerweek)) <= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')||TO_CHAR(SYSDATE, 'WW'))+1
--THEN v_ongeldig := 1;
-- fac.imp_writelog (
-- p_import_key,
-- 'W',
-- v_aanduiding || 'Melding in volgende of voorgaande weken',
-- 'Melding wordt niet ingelezen!');
--END IF;
IF LENGTH (v_serviceordernr) > 50
THEN
v_serviceordernr := SUBSTR (v_serviceordernr, 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Nummer serviceorder te lang',
'Nummer serviceorder wordt afgebroken tot ['
|| v_serviceordernr
|| ']');
END IF;
IF LENGTH (v_onderwerp) > 80
THEN
v_onderwerp := SUBSTR (v_onderwerp, 1, 80);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Onderwerp te lang',
'Onderwerp wordt afgebroken tot ['
|| v_onderwerp
|| ']');
END IF;
IF LENGTH (v_omschrijving) > 4000
THEN
v_onderwerp := SUBSTR (v_omschrijving, 1, 4000);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Omschrijving te lang',
'Omschrijving wordt afgebroken tot ['
|| v_omschrijving
|| ']');
END IF;
-- Insert geformatteerde import record
IF header_is_valid = 1
AND v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel ASDL_IMP_GLAS';
INSERT INTO ASDL_IMP_GLAS (
fac_import_key,
fac_import_index,
fac_import_datum,
mld_stdmelding_key,
mld_stdmelding_oms,
alg_locatie_code,
alg_locatie_oms,
stationsmanager_key,
stationsmanager,
uitvoerdatum,
uitvoerweek,
uitvoermaand,
uitvoerjaar,
uitvoerder,
serviceordernr,
onderwerp,
omschrijving)
VALUES (
v_fac_import_key,
v_fac_import_index,
SYSDATE,
TO_NUMBER(v_mld_stdmelding_key),
v_mld_stdmelding_oms,
v_alg_locatie_code,
v_alg_locatie_oms,
TO_NUMBER(v_stationsmanager_key),
v_stationsmanager,
NEXT_DAY(TO_DATE('04-jan-' || v_uitvoerjaar, 'dd-mm-yyyy' ) + (v_uitvoerweek-2)*7, 'maan'),
v_uitvoerweek,
v_uitvoermaand,
v_uitvoerjaar,
TO_NUMBER(v_uitvoerder),
v_serviceordernr,
v_onderwerp,
v_omschrijving);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'GLASBON/#ingelezen importregels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'GLASBON/#ongeldige niet ingelezen importregels incl header: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces GLASBON afgebroken!');
END ASDL_IMPORT_GLASBON;
/
CREATE OR REPLACE PROCEDURE ASDL_UPDATE_GLASBON (p_import_key IN NUMBER)
IS
BEGIN
DELETE FROM asdl_imp_glas2
WHERE asdl_imp_glas2.mld_melding_key IS NULL;
COMMIT;
INSERT INTO asdl_imp_glas2 (
fac_import_key,
fac_import_index,
fac_import_datum,
mld_stdmelding_key,
mld_stdmelding_oms,
alg_locatie_key,
alg_locatie_oms,
stationsmanager_key,
stationsmanager,
uitvoerdatum,
uitvoerweek,
uitvoermaand,
uitvoerjaar,
uitvoerder,
serviceordernr,
onderwerp,
omschrijving,
mld_melding_key)
SELECT fac_import_key,
fac_import_index,
fac_import_datum,
mld_stdmelding_key,
mld_stdmelding_oms,
l.alg_locatie_key,
alg_locatie_oms,
stationsmanager_key,
stationsmanager,
uitvoerdatum,
uitvoerweek,
uitvoermaand,
uitvoerjaar,
uitvoerder,
serviceordernr,
onderwerp,
omschrijving,
mld_melding_key
FROM asdl_imp_glas imp, alg_locatie l
WHERE l.alg_locatie_code = imp.alg_locatie_code;
END;
/
CREATE OR REPLACE PROCEDURE ASDL_EXPORT_GLASBON_MELDING
(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cmld
IS
SELECT *
FROM asdl_imp_glas2
WHERE TRUNC(TO_DATE(uitvoerdatum)) <= SYSDATE+7
AND mld_melding_key IS NULL;
v_fac_import_key NUMBER(10);
v_fac_import_index NUMBER(10);
v_fac_import_datum DATE;
v_mld_melding_key NUMBER(10);
v_mld_stdmelding_key NUMBER(10);
v_mld_melding_datum DATE;
v_mld_error VARCHAR(256);
BEGIN
FOR recmld IN cmld
LOOP
BEGIN
INSERT INTO mld_melding (prs_perslid_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_einddatum,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp)
VALUES (3,
'MLD',
6, --Bron = Systeem
recmld.alg_locatie_key,
SYSDATE,
recmld.omschrijving,
recmld.mld_stdmelding_key,
SYSDATE + 7,
2, --Status = Nieuw
3, --Prioriteit = Normaal
recmld.onderwerp)
RETURNING mld_melding_key, mld_stdmelding_key, mld_melding_datum INTO v_mld_melding_key, v_mld_stdmelding_key, v_mld_melding_datum;
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
recmld.stationsmanager_key -- Waarde Stationsmanager uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 121; -- Kenmerksoort Stationsmanager
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
TO_CHAR(recmld.uitvoerdatum,'DD-MM-YYYY') -- Waarde Uitvoerdatum uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 122; -- Kenmerksoort Uitvoerdatum
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
recmld.uitvoerweek -- Waarde Uitvoerweek uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 161; -- Kenmerksoort Uitvoerweek
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
recmld.serviceordernr -- Waarde Nummer serviceorder uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 181; -- Kenmerksoort Nummer serviceorder
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
recmld.uitvoerder -- Waarde Uitvoerder uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 201; -- Kenmerksoort Uitvoerder
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
SELECT v_mld_melding_key,
k.mld_kenmerk_key,
recmld.uitvoermaand -- Waarde Uitvoeringsmaand uit import-tabel
FROM mld_stdmelding s, mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_stdmelding_key = s.mld_stdmelding_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND s.mld_ins_discipline_key = 241 -- Discipline Glasbewassing
AND mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = 221; -- Kenmerksoort Uitvoeringsmaand
UPDATE asdl_imp_glas imp1
SET imp1.mld_melding_key = v_mld_melding_key,
imp1.mld_melding_datum = v_mld_melding_datum
WHERE imp1.fac_import_key = recmld.fac_import_key
AND imp1.fac_import_index = recmld.fac_import_index;
UPDATE asdl_imp_glas2 imp2
SET imp2.mld_melding_key = v_mld_melding_key,
imp2.mld_melding_datum = v_mld_melding_datum
WHERE imp2.fac_import_key = recmld.fac_import_key
AND imp2.fac_import_index = recmld.fac_import_index;
END;
END LOOP;
END;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile