3128 lines
131 KiB
SQL
3128 lines
131 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific configuration sql statements for CSUN: CSU National Accounts
|
|
|
|
DEFINE thisfile = 'CSUN.SQL'
|
|
DEFINE dbuser = '^CSUN'
|
|
|
|
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 PROCEDURE csun_imp_writelog (
|
|
p_import_key IN NUMBER,
|
|
p_severity IN VARCHAR2,
|
|
p_errormsg IN VARCHAR2,
|
|
p_errorhint IN VARCHAR2)
|
|
AS
|
|
PRAGMA AUTONOMOUS_TRANSACTION;
|
|
BEGIN
|
|
fac.imp_writelog (p_import_key,
|
|
p_severity,
|
|
p_errormsg,
|
|
p_errorhint);
|
|
COMMIT;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW csun_v_rap_errorlog
|
|
(
|
|
hide_f_imp_log_datum,
|
|
fclt_f_applicatie,
|
|
fclt_f_datum,
|
|
tijdstip,
|
|
fclt_f_niveau,
|
|
fclt_f_omschrijving,
|
|
hint
|
|
)
|
|
AS
|
|
SELECT imp_log_datum hide_f_imp_log_datum,
|
|
COALESCE(fac_import_app_code,imp_log_applicatie),
|
|
TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
|
|
TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
|
|
DECODE (imp_log_status,
|
|
'F', 'Fataal',
|
|
'E', 'Error',
|
|
'W', 'Waarschuwing',
|
|
'I', 'Informatief',
|
|
'S', 'Samenvatting',
|
|
'-')
|
|
fclt_f_niveau,
|
|
imp_log_omschrijving fclt_f_omschrijving,
|
|
imp_log_hint
|
|
FROM imp_log l, fac_import i, fac_import_app a
|
|
WHERE l.fac_import_key = i.fac_import_key(+)
|
|
AND i.fac_import_app_key = a.fac_import_app_key(+)
|
|
AND l.imp_log_datum > sysdate -10;
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_add_xml_row (
|
|
p_bestand IN VARCHAR2,
|
|
p_regel IN VARCHAR2)
|
|
AS
|
|
v_index NUMBER;
|
|
BEGIN
|
|
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
|
|
INTO v_index
|
|
FROM fac_rapport
|
|
WHERE fac_rapport_node = p_bestand;
|
|
|
|
INSERT INTO fac_rapport (
|
|
fac_rapport_node,
|
|
fac_rapport_volgnr,
|
|
fac_rapport_regel)
|
|
VALUES (p_bestand,
|
|
v_index,
|
|
p_regel);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_add_xml_element (
|
|
p_bestand IN VARCHAR2,
|
|
p_tag IN VARCHAR2,
|
|
p_value IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
csun_add_xml_row(p_bestand,
|
|
'<' || p_tag || '>'
|
|
|| xml.char_to_html(p_value)
|
|
|| '</' || p_tag || '>');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE CSUN_RAP
|
|
AS
|
|
-- PACKAGES voor de CSUN specifieke rapportages
|
|
TYPE t_cursor IS REF CURSOR;
|
|
|
|
PROCEDURE district_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
PROCEDURE regio_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
PROCEDURE client_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
PROCEDURE ns_district_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
PROCEDURE ns_regio_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
PROCEDURE ns_client_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY CSUN_RAP
|
|
AS
|
|
--
|
|
--Rapportages
|
|
--
|
|
PROCEDURE district_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT district,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
di.alg_district_upper district,
|
|
l.alg_locatie_code locatie,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
mld_discipline md,
|
|
alg_locatie l,
|
|
alg_district di,
|
|
prs_perslid p,
|
|
mld_stdmelding std
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND l.alg_district_key = di.alg_district_key
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
|
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY district;
|
|
END;
|
|
|
|
PROCEDURE regio_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT regio,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
di.alg_district_upper district,
|
|
l.alg_locatie_code locatie,
|
|
r.alg_regio_omschrijving regio,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
mld_discipline md,
|
|
alg_regio r,
|
|
alg_locatie l,
|
|
alg_district di,
|
|
prs_perslid p,
|
|
mld_stdmelding std
|
|
WHERE m.mld_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 m.prs_perslid_key = p.prs_perslid_key
|
|
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
|
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY regio;
|
|
END;
|
|
|
|
PROCEDURE client_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT fac_usrdata_omschr client,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
fac_usrdata_omschr ,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
alg_onrgoedkenmerk ogk,
|
|
mld_stdmelding std,
|
|
fac_usrdata ud
|
|
WHERE m.mld_alg_locatie_key = ogk.alg_onrgoed_key
|
|
AND ogk.alg_onrgoed_niveau = 'L'
|
|
AND ogk.alg_kenmerk_key = 1000
|
|
AND fac.safe_to_number(ogk.alg_onrgoedkenmerk_waarde) = fac_usrdata_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY fac_usrdata_omschr;
|
|
END;
|
|
|
|
PROCEDURE ns_district_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT district,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
di.alg_district_upper district,
|
|
l.alg_locatie_code locatie,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
mld_discipline md,
|
|
alg_locatie l,
|
|
alg_district di,
|
|
prs_perslid p,
|
|
mld_stdmelding std
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND m.mld_stdmelding_key = 61 -- Klacht No-Show
|
|
AND l.alg_district_key = di.alg_district_key
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
|
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY district;
|
|
END;
|
|
|
|
PROCEDURE ns_regio_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT regio,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
di.alg_district_upper district,
|
|
l.alg_locatie_code locatie,
|
|
r.alg_regio_omschrijving regio,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
mld_discipline md,
|
|
alg_regio r,
|
|
alg_locatie l,
|
|
alg_district di,
|
|
prs_perslid p,
|
|
mld_stdmelding std
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND m.mld_stdmelding_key = 61 -- Klacht No-Show
|
|
AND l.alg_district_key = di.alg_district_key
|
|
AND di.alg_regio_key = r.alg_regio_key
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
|
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY regio;
|
|
END;
|
|
|
|
PROCEDURE ns_client_periode (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
v_alg_level_read NUMBER;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy')+1;
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT fac_usrdata_omschr client,
|
|
COUNT (mld_key) aantal_meldingen,
|
|
SUM (acceptoptijd) acceptoptijd,
|
|
SUM (uitvoeringoptijd) uitvoeringoptijd
|
|
FROM (
|
|
SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
fac_usrdata_omschr ,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
|
|
std.mld_stdmelding_t_accepttijd.tijdsduur, --was sm.mld_stdmelding_urgentie,
|
|
std.mld_stdmelding_t_accepttijd.eenheid) --was 'UREN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
acceptoptijd,
|
|
CASE
|
|
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
|
THEN
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_t_uitvoertijd.tijdsduur, --was m.mld_melding_uitvoertijd,
|
|
m.mld_melding_t_uitvoertijd.eenheid) --was 'DAGEN')
|
|
- COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
|
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
|
SYSDATE))
|
|
WHEN -1 THEN 0
|
|
ELSE 1
|
|
END
|
|
ELSE 1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m,
|
|
alg_onrgoedkenmerk ogk,
|
|
mld_stdmelding std,
|
|
fac_usrdata ud
|
|
WHERE m.mld_alg_locatie_key = ogk.alg_onrgoed_key
|
|
AND m.mld_stdmelding_key = 61 -- Klacht No-Show
|
|
AND ogk.alg_onrgoed_niveau = 'L'
|
|
AND ogk.alg_kenmerk_key = 1000
|
|
AND fac.safe_to_number(ogk.alg_onrgoedkenmerk_waarde) = fac_usrdata_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
)
|
|
GROUP BY fac_usrdata_omschr;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
|
|
-- stuur mail notificatie naar alternatief emailadres dat bij de melding staat. srtkenmerk_key = 1
|
|
-- en stuur mail naar de BB-er die via een CSU locatie waar hij/zij een werkplek heeft onder hetzelfde
|
|
-- district als de locatie waar de melding op is ingevoerd. Uitzondering is het pand Gustav Mahlerlaan 10
|
|
-- in A'dam (hoofdgebouw ABN key = 6218) deze heeft een vast emailadres.
|
|
CREATE OR REPLACE PROCEDURE csun_export_mailnoti (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2,
|
|
p_filedir IN VARCHAR2,
|
|
p_filename IN VARCHAR2
|
|
)
|
|
AS
|
|
CURSOR c
|
|
IS
|
|
SELECT DISTINCT mld_melding_key, prs_perslid_email
|
|
FROM (SELECT m.mld_melding_key, alg_onrgoedkenmerk_waarde prs_perslid_email
|
|
FROM mld_melding m,
|
|
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde
|
|
FROM alg_onrgoedkenmerk aogk
|
|
WHERE alg_kenmerk_key = 1260) lse
|
|
WHERE m.mld_alg_locatie_key = lse.alg_onrgoed_key
|
|
AND m.mld_stdmelding_key != 41 -- ontvangen berichten
|
|
UNION ALL
|
|
SELECT m.mld_melding_key, prs_perslid_email
|
|
FROM prs_perslid p,
|
|
mld_melding m,
|
|
alg_locatie l,
|
|
alg_locatie l2,
|
|
prs_v_perslidwerkplek_gegevens pwpg,
|
|
prs_kenmerklink kl
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND m.mld_stdmelding_key != 41 -- ontvangen berichten
|
|
AND pwpg.alg_locatie_key = l2.alg_locatie_key
|
|
AND l.alg_district_key = l2.alg_district_key
|
|
AND pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_srtperslid_key = 32 -- BBer
|
|
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
|
|
AND fac.safe_to_number (prs_kenmerklink_waarde) = 1
|
|
AND kl.prs_link_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL
|
|
UNION ALL
|
|
SELECT m.mld_melding_key, prs_perslid_email
|
|
FROM prs_perslid p,
|
|
mld_melding m,
|
|
prs_v_perslidwerkplek_gegevens pwpg,
|
|
prs_kenmerklink kl
|
|
WHERE m.mld_stdmelding_key != 41 -- ontvangen berichten
|
|
AND pwpg.alg_locatie_key = m.mld_alg_locatie_key
|
|
AND pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_srtperslid_key IN (4041, 50) -- Objectleider en Rayonleider
|
|
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
|
|
AND fac.safe_to_number (prs_kenmerklink_waarde) = 1
|
|
AND kl.prs_link_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL) g
|
|
WHERE NOT EXISTS
|
|
(SELECT fac_tracking_key
|
|
FROM fac_tracking t
|
|
WHERE fac_tracking_oms LIKE 'Gemaild naar BBer:%'
|
|
AND t.fac_tracking_refkey = g.mld_melding_key);
|
|
|
|
v_dummy VARCHAR2 (128);
|
|
BEGIN
|
|
-- stuur de notificatie ook naar het emailadres kenmerk.
|
|
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
|
fac_notificatie_status,
|
|
fac_notificatie_receiver_email,
|
|
fac_notificatie_oms,
|
|
fac_notificatie_refkey,
|
|
fac_notificatie_prioriteit,
|
|
fac_notificatie_datum,
|
|
fac_notificatie_sender_email,
|
|
fac_notificatie_lang,
|
|
prs_perslid_key_sender)
|
|
SELECT n.fac_srtnotificatie_key,
|
|
fac_notificatie_status,
|
|
mld_kenmerkmelding_waarde,
|
|
fac_notificatie_oms,
|
|
fac_notificatie_refkey,
|
|
fac_notificatie_prioriteit,
|
|
fac_notificatie_datum,
|
|
fac_notificatie_sender_email,
|
|
fac_notificatie_lang,
|
|
prs_perslid_key_sender
|
|
FROM fac_notificatie n,
|
|
fac_srtnotificatie sn,
|
|
mld_kenmerkmelding km,
|
|
mld_kenmerk k
|
|
WHERE n.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND ( sn.fac_srtnotificatie_code = 'MLDAFM'
|
|
OR sn.fac_srtnotificatie_code = 'MLDUPD'
|
|
OR sn.fac_srtnotificatie_code = 'MLD_REJ')
|
|
AND n.fac_notificatie_refkey = km.mld_melding_key
|
|
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_srtkenmerk_key = 1; -- email notificatie
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
IF rec.prs_perslid_email IS NOT NULL
|
|
THEN
|
|
fac.putnotificationsrtprio(null, null, 'MLDMAI', rec.mld_melding_key, 'Melding ' || rec.mld_melding_key || ' is aan u in behandeling gegeven', 2, rec.prs_perslid_email, null, null, 2, null);
|
|
fac.trackaction('MLDMAI', rec.mld_melding_key, 4, NULL, 'Gemaild naar BBer: ' || rec.prs_perslid_email);
|
|
ELSE
|
|
fac.trackaction('MLDMAI', rec.mld_melding_key, 4, NULL, 'Gemaild naar BBer: <Geen info gevonden>');
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE csun
|
|
AS
|
|
FUNCTION convert_esc (p_str VARCHAR2)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE mld_after_insert (p_key IN NUMBER);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY csun
|
|
AS
|
|
FUNCTION convert_esc (p_str VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_str VARCHAR2 (4000);
|
|
v_pos NUMBER;
|
|
v_chr VARCHAR2 (1);
|
|
v_asc NUMBER;
|
|
v_hex VARCHAR2 (2);
|
|
BEGIN
|
|
v_str := p_str;
|
|
v_pos := INSTR (p_str, '&#x');
|
|
|
|
IF v_pos <> 0
|
|
THEN
|
|
v_hex := SUBSTR (p_str, v_pos + 3, 2);
|
|
v_asc := TO_NUMBER (v_hex, 'XX');
|
|
v_chr := CHR (v_asc);
|
|
v_str := REPLACE (p_str, '&#x' || v_hex || ';', v_chr);
|
|
|
|
IF v_str <> p_str
|
|
THEN
|
|
v_str := convert_esc (v_str);
|
|
END IF;
|
|
END IF;
|
|
|
|
RETURN (v_str);
|
|
END;
|
|
|
|
PROCEDURE mld_after_insert (p_key IN NUMBER)
|
|
AS
|
|
v_melding_status NUMBER;
|
|
v_locatie_key NUMBER;
|
|
v_client NUMBER; -- klantcode
|
|
v_perslid_key NUMBER; -- melder
|
|
v_locatie_code VARCHAR2(100);
|
|
v_gebouw_code VARCHAR2(100);
|
|
BEGIN
|
|
BEGIN
|
|
SELECT mld_melding_status, mld_alg_locatie_key, prs_perslid_key
|
|
INTO v_melding_status, v_locatie_key, v_perslid_key
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = p_key;
|
|
|
|
BEGIN
|
|
SELECT fac.safe_to_number (prs_kenmerklink_waarde)
|
|
INTO v_client
|
|
FROM prs_kenmerklink
|
|
WHERE prs_kenmerk_key = 1080 AND prs_link_key = v_perslid_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_client := NULL;
|
|
END;
|
|
|
|
SELECT mld_kenmerkmelding_waarde
|
|
INTO v_locatie_code
|
|
FROM ( SELECT mld_kenmerkmelding_waarde, mld_melding_key
|
|
FROM mld_kenmerkmelding km,
|
|
mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = 181 -- Klant locatiecode
|
|
AND km.mld_kenmerk_key = k.mld_kenmerk_key) kl,
|
|
mld_melding m
|
|
WHERE m.mld_melding_key = kl.mld_melding_key(+)
|
|
AND m.mld_melding_key = p_key;
|
|
|
|
SELECT mld_kenmerkmelding_waarde
|
|
INTO v_gebouw_code
|
|
FROM ( SELECT mld_kenmerkmelding_waarde, mld_melding_key
|
|
FROM mld_kenmerkmelding km,
|
|
mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = 201 -- Klant gebouwcode
|
|
AND km.mld_kenmerk_key = k.mld_kenmerk_key) kg,
|
|
mld_melding m
|
|
WHERE m.mld_melding_key = kg.mld_melding_key(+)
|
|
AND m.mld_melding_key = p_key;
|
|
|
|
IF v_locatie_key = 28581 AND v_client IS NOT NULL -- Locatie key van locatie ONBEKEND
|
|
THEN
|
|
BEGIN
|
|
IF v_client = 462 -- pilot voor RWS
|
|
OR v_client = 241 -- Arcadis
|
|
OR v_client = 801 -- PostNL Pakket
|
|
OR v_client = 344 -- ABN Amro
|
|
OR v_client = 381 -- Mayfield
|
|
OR v_client = 301 -- Humanitas
|
|
OR v_client = 382 -- KPN Retail
|
|
OR v_client = 321 -- Tennet
|
|
OR v_client = 602 -- KPMG Meijburg
|
|
OR v_client = 601 -- KPMG
|
|
OR v_client = 701 -- Sanquin
|
|
THEN
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_locatie l,
|
|
mld_kenmerkmelding km,
|
|
mld_kenmerk k,
|
|
alg_onrgoedkenmerk aogkk,
|
|
alg_onrgoedkenmerk aogkc
|
|
WHERE k.mld_srtkenmerk_key = 181 -- Klant locatiecode
|
|
AND k.mld_kenmerk_key = km.mld_kenmerk_key
|
|
AND km.mld_melding_key = p_key
|
|
AND UPPER (trim(aogkk.alg_onrgoedkenmerk_waarde)) =
|
|
UPPER (km.mld_kenmerkmelding_waarde)
|
|
AND aogkk.alg_onrgoed_key = l.alg_locatie_key
|
|
AND l.alg_locatie_verwijder is null
|
|
AND aogkk.alg_kenmerk_key = 1203 -- Klant locatiecode
|
|
AND fac.safe_to_number (aogkc.alg_onrgoedkenmerk_waarde) = v_client
|
|
AND aogkc.alg_onrgoed_key = l.alg_locatie_key
|
|
AND aogkc.alg_kenmerk_key = 1000; -- Client
|
|
ELSIF v_client = 621 -- DB Schenker
|
|
OR v_client = 641 -- Alliance
|
|
OR v_client = 841 -- KPN (Yask)
|
|
THEN
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_locatie l,
|
|
mld_kenmerkmelding km,
|
|
mld_kenmerk k,
|
|
alg_onrgoedkenmerk aogkk,
|
|
alg_onrgoedkenmerk aogkc
|
|
WHERE k.mld_srtkenmerk_key = 201 -- Klant gebouwcode
|
|
AND k.mld_kenmerk_key = km.mld_kenmerk_key
|
|
AND km.mld_melding_key = p_key
|
|
AND UPPER (trim(aogkk.alg_onrgoedkenmerk_waarde)) =
|
|
UPPER (km.mld_kenmerkmelding_waarde)
|
|
AND aogkk.alg_onrgoed_key = l.alg_locatie_key
|
|
AND l.alg_locatie_verwijder is null
|
|
AND aogkk.alg_kenmerk_key = 1203 -- Klant locatiecode
|
|
AND fac.safe_to_number (aogkc.alg_onrgoedkenmerk_waarde) = v_client
|
|
AND aogkc.alg_onrgoed_key = l.alg_locatie_key
|
|
AND aogkc.alg_kenmerk_key = 1000; -- Client
|
|
END IF;
|
|
|
|
DBMS_OUTPUT.put_line (v_locatie_key);
|
|
|
|
UPDATE mld_melding
|
|
SET mld_alg_locatie_key = v_locatie_key
|
|
WHERE mld_melding_key = p_key;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
-- Geen geldige locatie gevonden. Dan blijven we op onbekend staan.
|
|
-- 4 - Facilitor
|
|
INSERT INTO mld_melding_note (mld_melding_key,
|
|
prs_perslid_key,
|
|
mld_melding_note_omschrijving)
|
|
VALUES (p_key, 4, 'Locatie kan niet gekoppeld worden: ' || v_locatie_code || '-' || v_gebouw_code);
|
|
END;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
-- Waarschijnlijk iets fout gegaan in de configuratie. Locatie wordt niet aangepast.
|
|
INSERT INTO mld_melding_note (mld_melding_key,
|
|
prs_perslid_key,
|
|
mld_melding_note_omschrijving)
|
|
VALUES (p_key, 4, 'Locatie kan niet gekoppeld worden: ' || v_locatie_code || '-' || v_gebouw_code);
|
|
END;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE FUNCTION csun_get_html_valuepair (p_text IN VARCHAR2,
|
|
p_start IN VARCHAR2,
|
|
p_eind IN VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_pos NUMBER;
|
|
v_pos_begin NUMBER;
|
|
v_pos_eind NUMBER;
|
|
v_result VARCHAR2(4000);
|
|
BEGIN
|
|
-- controleer of de begintag aanwezig is. Zo nee, dan hebben we niets te tonen.
|
|
v_pos := INSTR (p_text, p_start);
|
|
|
|
--dbms_output.put_line('v_pos start:' || v_pos);
|
|
IF v_pos = 0
|
|
THEN
|
|
RETURN NULL;
|
|
END IF;
|
|
|
|
|
|
v_pos_begin :=
|
|
INSTR (p_text, CHR (10) || CHR (13) || p_start || CHR (10) || CHR (13))
|
|
+ LENGTH (p_start)
|
|
+ 4;
|
|
--dbms_output.put_line('v_pos_begin:' || v_pos_begin);
|
|
|
|
-- controleer of de eindtag aanwezig is. Zo nee, dan gaan we opzoek naar de volgende.
|
|
v_pos := INSTR (p_text, p_eind);
|
|
|
|
--dbms_output.put_line('v_pos eind:' || v_pos);
|
|
IF v_pos = 0
|
|
THEN
|
|
v_pos_eind :=
|
|
INSTR (p_text,
|
|
CHR (10) || CHR (13),
|
|
v_pos_begin,
|
|
1);
|
|
ELSE
|
|
v_pos_eind :=
|
|
INSTR (p_text,
|
|
CHR (10) || CHR (13) || p_eind || CHR (10) || CHR (13));
|
|
END IF;
|
|
|
|
-- dbms_output.put_line('v_pos_eind:' || v_pos_eind);
|
|
v_result := p_start
|
|
|| ': '
|
|
|| SUBSTR (p_text, v_pos_begin, v_pos_eind - v_pos_begin);
|
|
|
|
-- Soms wordt een tag niet gevonden. Dan wordt de hele body inclusief CSS meegestuurd.
|
|
-- Dat willen we natuurlijk niet. Daarom maken we daar maar een lege tag van.
|
|
IF LENGTH(v_result) > 1000
|
|
THEN
|
|
v_result := p_start || ':';
|
|
END IF;
|
|
|
|
RETURN v_result;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_processemail (pfrom IN VARCHAR2,
|
|
pto IN VARCHAR2,
|
|
psubject IN VARCHAR2,
|
|
pbody IN VARCHAR2,
|
|
psessionid IN VARCHAR2,
|
|
puserkey IN NUMBER DEFAULT NULL)
|
|
AS
|
|
sender prs_perslid.prs_perslid_key%TYPE;
|
|
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
|
mldkey mld_melding.mld_melding_key%TYPE;
|
|
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
|
|
subject_regexp fac_setting.fac_setting_default%TYPE;
|
|
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
errormsg fac_result.fac_result_waarde%TYPE;
|
|
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
|
|
mldnum VARCHAR2 (4000);
|
|
srtdisc VARCHAR2 (4000);
|
|
cnt NUMBER (10);
|
|
v_flag_on_fenote NUMBER (10);
|
|
v_flag_on_bonote NUMBER (10);
|
|
v_from VARCHAR2 (4000);
|
|
v_body VARCHAR2 (4000);
|
|
m_body VARCHAR2 (4000);
|
|
v_locatie_code VARCHAR2 (1000); -- om te voorkomen dat we foutmeldingen krijgen als de locatie niet bepaald kan worden.
|
|
v_pos NUMBER;
|
|
v_externnr VARCHAR2 (1000);
|
|
v_omschrijving_ruimte VARCHAR2(1000);
|
|
v_client NUMBER;
|
|
BEGIN
|
|
errormsg := '(0x143)';
|
|
v_externnr := NULL;
|
|
|
|
-- Verwijder de Bounce Address Tag Validation
|
|
IF pfrom LIKE 'prvs=%'
|
|
THEN
|
|
v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1);
|
|
ELSE
|
|
v_from := pfrom;
|
|
END IF;
|
|
|
|
v_body := pbody;
|
|
m_body := pbody;
|
|
|
|
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
|
|
|
|
-- Valideer de sender in pfrom: kennen we deze?
|
|
SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key)
|
|
INTO sender, kostenplaats
|
|
FROM prs_perslid p, prs_afdeling d
|
|
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
|
AND prs_perslid_verwijder IS NULL
|
|
AND (UPPER (prs_perslid_email) = UPPER (v_from)
|
|
OR EXISTS
|
|
(SELECT *
|
|
FROM prs_kenmerklink kl
|
|
WHERE prs_kenmerk_key = 1020
|
|
AND prs_link_key = p.prs_perslid_key
|
|
AND UPPER (kl.prs_kenmerklink_waarde) = UPPER (v_from)));
|
|
|
|
BEGIN
|
|
SELECT fac.safe_to_number (prs_kenmerklink_waarde)
|
|
INTO v_client
|
|
FROM prs_kenmerklink
|
|
WHERE prs_kenmerk_key = 1080 AND prs_link_key = sender;
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_client := NULL;
|
|
END;
|
|
|
|
|
|
CASE
|
|
WHEN UPPER (pto) LIKE 'SERVICEDESK@%' OR UPPER (pto) LIKE 'DJI@%'
|
|
THEN
|
|
errormsg := '(0x145)';
|
|
|
|
BEGIN
|
|
-- bij abnamro gaan we de html body nog even opschonen
|
|
IF sender = 23
|
|
THEN
|
|
-- pas de omschrijving van de melding aan. Verwijder onnodige html ballast.
|
|
v_body := REPLACE(v_body, ' ', ' '); -- spatie
|
|
v_body := REPLACE(v_body, '!', '!');
|
|
v_body := REPLACE(v_body, '"', CHR(34)); -- double quote
|
|
v_body := REPLACE(v_body, '#', '#');
|
|
v_body := REPLACE(v_body, '$', '$');
|
|
v_body := REPLACE(v_body, '%', '%');
|
|
v_body := REPLACE(v_body, '&', '&');
|
|
v_body := REPLACE(v_body, ''', CHR(39)); -- single quote
|
|
v_body := REPLACE(v_body, '(', '(');
|
|
v_body := REPLACE(v_body, ')', ')');
|
|
v_body := REPLACE(v_body, '*', '*');
|
|
v_body := REPLACE(v_body, '+', '+');
|
|
v_body := REPLACE(v_body, ',', ','); -- komma
|
|
v_body := REPLACE(v_body, '-', '-'); -- min teken
|
|
v_body := REPLACE(v_body, '.', '.'); -- punt
|
|
v_body := REPLACE(v_body, '/', '/');
|
|
v_body := REPLACE(v_body, ':', ':'); -- dubbele punt
|
|
v_body := REPLACE(v_body, ';', ';'); -- punt komma
|
|
v_body := REPLACE(v_body, '<', '<');
|
|
v_body := REPLACE(v_body, '=', '=');
|
|
v_body := REPLACE(v_body, '>', '>');
|
|
v_body := REPLACE(v_body, '?', '?');
|
|
v_body := REPLACE(v_body, '@', '@');
|
|
v_body := REPLACE(v_body, ' ' || CHR (10) || CHR (13), CHR (10) || CHR (13)); -- soms komt er ineens een een spatie achter de tag.
|
|
-- gaat het om een normale werkbon, dan is v_pos > 0; anders gaat het om een klacht.
|
|
v_pos := INSTR (v_body, '--> Werkbon');
|
|
|
|
IF v_pos = 0
|
|
THEN
|
|
v_omschrijving_ruimte := csun_get_html_valuepair (v_body,
|
|
'Omschrijving ruimte',
|
|
'Klacht! Wat moet je doen?');
|
|
ELSE
|
|
v_omschrijving_ruimte := csun_get_html_valuepair (v_body,
|
|
'Omschrijving ruimte',
|
|
'Met vriendelijke groet');
|
|
END IF;
|
|
|
|
v_externnr := csun_get_html_valuepair (v_body,
|
|
'Aanvraagnr.',
|
|
'Omschrijving aanvraag');
|
|
m_body :=
|
|
csun_get_html_valuepair (v_body,
|
|
'Naam',
|
|
'Telefoonnr.')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Telefoonnr.',
|
|
'Mobiel nr.')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Mobiel nr.',
|
|
'E-mail')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'E-mail',
|
|
'Melddatum')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Melddatum',
|
|
'Aanvraagnr.')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Aanvraagnr.',
|
|
'Omschrijving aanvraag')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Omschrijving aanvraag',
|
|
'Toelichting')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Toelichting',
|
|
'Object')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Object',
|
|
'Postcode')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Postcode',
|
|
'Plaats')
|
|
|| CHR (10)
|
|
|| csun_get_html_valuepair (v_body,
|
|
'Plaats',
|
|
'Omschrijving ruimte')
|
|
|| CHR (10)
|
|
|| v_omschrijving_ruimte;
|
|
|
|
-- zoek de locatie
|
|
v_locatie_code := csun_get_html_valuepair (v_body, 'Object', 'Postcode');
|
|
v_locatie_code := SUBSTR(v_locatie_code, 9, INSTR(v_locatie_code, ' ',1,2)-9);
|
|
END IF;
|
|
|
|
-- Humanitas / KPMG Meijburg heeft de locatiecode ergens in het onderwerp staan
|
|
IF v_client = 301 OR v_client = 602
|
|
THEN
|
|
BEGIN
|
|
SELECT lc.alg_onrgoedkenmerk_waarde
|
|
INTO v_locatie_code
|
|
FROM alg_onrgoedkenmerk lc,
|
|
alg_onrgoedkenmerk cl
|
|
WHERE lc.alg_onrgoed_key = cl.alg_onrgoed_key
|
|
AND lc.alg_kenmerk_key = 1203 -- Klant locatiecode
|
|
AND fac.safe_to_number (cl.alg_onrgoedkenmerk_waarde) = v_client
|
|
AND cl.alg_kenmerk_key = 1000 -- Client
|
|
AND UPPER(psubject) LIKE '%' || UPPER(lc.alg_onrgoedkenmerk_waarde) || '%';
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
v_locatie_code := NULL;
|
|
END;
|
|
END IF;
|
|
|
|
-- Mayfield bericht bevat een regel als: Betreft locatie : Apeldoorn, Wapenrustlaan 11-31 (NLV03001)
|
|
IF v_client = 381 -- Mayfield
|
|
THEN
|
|
-- eerst de regel vinden
|
|
v_locatie_code := SUBSTR(v_body, INSTR(v_body, 'Betreft locatie'), -- start vd regel
|
|
INSTR(v_body, CHR(13), -- op zoek naar het einde vd regel
|
|
INSTR(v_body, 'Betreft locatie') -- waarbij we beginnen te zoeken aan het begin vd regel
|
|
)-
|
|
INSTR(v_body, 'Betreft locatie')); -- verminderd met het begin vd regel omdat we alleen het verschil mee moeten geven.
|
|
-- nu de locatiecode
|
|
v_locatie_code := SUBSTR(v_locatie_code, INSTR(v_locatie_code, '(')+1, INSTR(v_locatie_code, ')')-1 - (INSTR(v_locatie_code, '(')+1));
|
|
END IF;
|
|
|
|
IF v_client = 601 -- KPMG
|
|
THEN
|
|
-- eerst de regel vinden
|
|
v_locatie_code := SUBSTR(v_body, INSTR(v_body, 'Locatie: '), -- start vd regel
|
|
INSTR(v_body, CHR(13), -- op zoek naar het einde vd regel
|
|
INSTR(v_body, 'Locatie: ') -- waarbij we beginnen te zoeken aan het begin vd regel
|
|
)-
|
|
INSTR(v_body, 'Locatie: ')); -- verminderd met het begin vd regel omdat we alleen het verschil mee moeten geven.
|
|
-- nu de locatiecode
|
|
v_locatie_code := TRIM(SUBSTR(v_locatie_code, 9));
|
|
END IF;
|
|
|
|
-- KPN Retail geeft de locatie aan op de regel: Filiaalnummer: 702
|
|
IF v_client = 382 -- KPN Retail
|
|
THEN
|
|
-- eerst de regel vinden
|
|
v_locatie_code := SUBSTR(v_body, INSTR(v_body, 'Filiaalnummer: ') + LENGTH ('Filiaalnummer: '), -- start vd regel
|
|
INSTR(v_body, CHR(13), -- op zoek naar het einde vd regel
|
|
INSTR(v_body, 'Filiaalnummer:') -- waarbij we beginnen te zoeken aan het begin vd regel
|
|
)-
|
|
(INSTR(v_body, 'Filiaalnummer: ') + LENGTH ('Filiaalnummer: '))); -- verminderd met het begin vd regel omdat we alleen het verschil mee moeten geven.
|
|
END IF;
|
|
|
|
-- Bij Sanquin komt de locatie ergens achter de tekst Locatie: te staan
|
|
IF v_client = 701 -- Sanquin
|
|
THEN
|
|
BEGIN
|
|
SELECT lc.alg_onrgoedkenmerk_waarde
|
|
INTO v_locatie_code
|
|
FROM alg_onrgoedkenmerk lc,
|
|
alg_onrgoedkenmerk cl
|
|
WHERE lc.alg_onrgoed_key = cl.alg_onrgoed_key
|
|
AND lc.alg_kenmerk_key = 1203 -- Klant locatiecode
|
|
AND fac.safe_to_number (cl.alg_onrgoedkenmerk_waarde) = v_client
|
|
AND cl.alg_kenmerk_key = 1000 -- Client
|
|
AND UPPER(v_body) LIKE '%LOCATIE: ' || UPPER(lc.alg_onrgoedkenmerk_waarde) || '%';
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
v_locatie_code := NULL;
|
|
END;
|
|
END IF;
|
|
|
|
|
|
|
|
-- Tennet
|
|
-- Afleveradres: TenneT TSO B.V.
|
|
-- Frankeneng 116
|
|
-- 6716 AA EDE
|
|
IF v_client = 321 -- Tennet
|
|
THEN
|
|
v_pos := INSTR(v_body, 'Afleveradres: TenneT TSO B.V.'); -- We zoeken de postcode onder het afleveradres
|
|
v_pos := INSTR(v_body, CHR(10), v_pos, 2); -- Vervolgens zoeken we de tweede line feed vanaf het afleveradres
|
|
v_locatie_code := UPPER(SUBSTR(v_body, v_pos +1, 7));
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.writelog (
|
|
'PROCESSEMAIL',
|
|
'W',
|
|
'Mail kon niet geformateerd worden afzender:'
|
|
|| pfrom
|
|
|| '['
|
|
|| errormsg
|
|
|| ']',
|
|
'OTHERS (error '
|
|
|| SQLCODE
|
|
|| '/'
|
|
|| SUBSTR (SQLERRM, 1, 100)
|
|
|| ')');
|
|
END;
|
|
|
|
-- append (as a note?) to an existing melding if #key is found in the subject
|
|
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
|
|
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
|
|
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
|
|
mldnum :=
|
|
REGEXP_SUBSTR (psubject,
|
|
subject_regexp,
|
|
1,
|
|
1,
|
|
'i'); -- MA12345
|
|
srtdisc :=
|
|
REGEXP_SUBSTR (mldnum,
|
|
'[[:alpha:]]',
|
|
1,
|
|
1,
|
|
'i'); -- MA
|
|
mldkey := fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1));
|
|
|
|
-- DBMS_OUTPUT.PUT_LINE('mldnum: ' || mldnum);
|
|
-- DBMS_OUTPUT.PUT_LINE('srtdisc: ' || srtdisc);
|
|
-- DBMS_OUTPUT.PUT_LINE('mldkey: ' || mldkey);
|
|
-- We eisen
|
|
-- - Goed meldingnummer
|
|
-- - Goede srtdiscipline
|
|
-- - Afzender is degene voor wie de melding was
|
|
-- suggested extensions: ook collega's toestaan?
|
|
SELECT MIN (mm.mld_stdmelding_key)
|
|
INTO stdmelding
|
|
FROM mld_melding mm,
|
|
mld_stdmelding msm,
|
|
ins_tab_discipline insd,
|
|
ins_srtdiscipline isd
|
|
WHERE mm.mld_melding_key = mldkey
|
|
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
|
|
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
|
|
AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
|
|
-- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet
|
|
-- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de
|
|
-- prefix letter
|
|
--AND isd.ins_srtdiscipline_prefix = srtdisc
|
|
AND mm.prs_perslid_key_voor = sender;
|
|
|
|
-- DBMS_OUTPUT.PUT_LINE('mld_stdmelding_key: ' || TO_CHAR(stdmelding));
|
|
|
|
IF mldkey IS NULL
|
|
THEN
|
|
BEGIN
|
|
-- controleren of we deze melding al eerder ontvangen hebben en dit een update / reminder betreft.
|
|
SELECT mld_melding_key, mld_stdmelding_key
|
|
INTO mldkey, stdmelding
|
|
FROM mld_melding m
|
|
WHERE m.prs_perslid_key = sender
|
|
AND ( (psubject LIKE '%' || m.mld_melding_externnr || '%'
|
|
AND m.mld_melding_externnr IS NOT NULL)
|
|
OR (EXISTS
|
|
(SELECT mld_kenmerkmelding_key
|
|
FROM mld_kenmerkmelding km, mld_kenmerk k
|
|
WHERE km.mld_melding_key = m.mld_melding_key
|
|
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_srtkenmerk_key = 2
|
|
AND psubject LIKE '%' || km.mld_kenmerkmelding_waarde || '%')));
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
mldkey := NULL;
|
|
stdmelding := NULL;
|
|
END;
|
|
END IF;
|
|
BEGIN
|
|
SELECT mld_melding_behandelaar_key
|
|
INTO behandelaar_key
|
|
FROM mld_melding m, prs_perslid p
|
|
WHERE mld_melding_key = mldkey
|
|
AND mld_melding_behandelaar_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL
|
|
AND p.prs_perslid_verwijder IS NULL;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
behandelaar_key := NULL;
|
|
END;
|
|
|
|
IF stdmelding IS NOT NULL
|
|
AND behandelaar_key IS NOT NULL
|
|
AND sender <> 23
|
|
THEN -- Bestaande melding en behandelaar is bekend en niet ABN AMRO (23)
|
|
INSERT INTO mld_melding_note (mld_melding_key,
|
|
mld_melding_note_omschrijving,
|
|
prs_perslid_key,
|
|
mld_melding_note_flag)
|
|
VALUES (mldkey,
|
|
SUBSTR (
|
|
psubject || CHR (13) || CHR (10)
|
|
|| REPLACE (
|
|
SUBSTR (v_body,
|
|
1,
|
|
4000 - (LENGTH (psubject) + 2)),
|
|
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
|
CHR (13) || CHR (10)),
|
|
1,
|
|
4000), -- verwijder onnodige witregels
|
|
sender,
|
|
1); -- 1 is zichtbaar FE want zelf ingevoerd.
|
|
|
|
-- Default tracking is even goed genoeg
|
|
fac.trackaction ('MLDNOT',
|
|
mldkey,
|
|
sender,
|
|
NULL,
|
|
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
|
-- DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.');
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || mldkey);
|
|
|
|
-- Notificatie naar behandelaar
|
|
fac.putnotificationsrtprio (
|
|
NULL,
|
|
behandelaar_key,
|
|
'MLDNOB',
|
|
mldkey,
|
|
'Melding ' || mldkey || ' is door de klant aangepast.',
|
|
2,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
2,
|
|
NULL);
|
|
|
|
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
|
|
BEGIN
|
|
v_flag_on_fenote := fac.getsetting('mld_flag_on_fenote');
|
|
v_flag_on_bonote := fac.getsetting('mld_flag_on_bonote');
|
|
|
|
IF v_flag_on_fenote <> 0 AND v_flag_on_fenote IS NOT NULL
|
|
THEN
|
|
UPDATE mld_melding
|
|
SET mld_melding_flag = v_flag_on_fenote
|
|
WHERE mld_melding_key = mldkey
|
|
AND ( (mld_melding_flag = v_flag_on_bonote)
|
|
OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL));
|
|
-- DBMS_OUTPUT.PUT_LINE('Flag: ' || v_flag_on_fenote || ' gezet.');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|
|
|| v_flag_on_fenote
|
|
|| ' te zetten.');
|
|
END;
|
|
ELSE
|
|
-- suggested extensions:
|
|
-- check for MLDUSE-write autorisations
|
|
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
|
errormsg := '(0x148)';
|
|
|
|
BEGIN
|
|
stdmelding :=
|
|
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
|
|
|
|
INSERT INTO mld_melding (mld_melding_module,
|
|
mld_meldbron_key,
|
|
mld_melding_datum,
|
|
mld_melding_omschrijving,
|
|
mld_melding_status,
|
|
mld_melding_t_uitvoertijd,
|
|
mld_stdmelding_key,
|
|
mld_alg_locatie_key,
|
|
mld_melding_externnr,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
prs_kostenplaats_key,
|
|
mld_melding_spoed)
|
|
VALUES ('MLD',
|
|
4, -- email
|
|
SYSDATE,
|
|
SUBSTR (
|
|
psubject || CHR (13)
|
|
|| REPLACE (
|
|
SUBSTR (m_body,
|
|
1,
|
|
4000 - (LENGTH (psubject) + 1)),
|
|
CHR (13)
|
|
|| CHR (10)
|
|
|| CHR (13)
|
|
|| CHR (10),
|
|
CHR (13) || CHR (10)),
|
|
1,
|
|
4000), -- verwijder onnodige witregels
|
|
NULL,
|
|
MLD_T_UITVOERTIJD (2, 'D'),
|
|
stdmelding,
|
|
28581, -- Locatie onbekend.
|
|
SUBSTR(v_externnr,1,30),
|
|
sender,
|
|
sender,
|
|
kostenplaats,
|
|
3)
|
|
RETURNING mld_melding_key
|
|
INTO mldkey;
|
|
|
|
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
|
|
errormsg := '(0x165)';
|
|
mld.setmeldingstatus (mldkey, 2, sender);
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || mldkey);
|
|
|
|
END;
|
|
|
|
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
|
|
errormsg := '(0x151)';
|
|
|
|
SELECT MIN (mld_kenmerk_key)
|
|
INTO kkey
|
|
FROM mld_kenmerk k,
|
|
mld_srtkenmerk sk,
|
|
mld_stdmelding std,
|
|
ins_tab_discipline d
|
|
WHERE mld_srtkenmerk_kenmerktype = 'M'
|
|
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
|
|
AND std.mld_stdmelding_key = stdmelding
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND k.mld_kenmerk_niveau = 'S')
|
|
OR (k.mld_stdmelding_key = d.ins_discipline_key
|
|
AND k.mld_kenmerk_niveau = 'D')
|
|
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
|
|
AND k.mld_kenmerk_niveau = 'T'))
|
|
AND k.mld_kenmerk_verwijder IS NULL
|
|
AND NOT EXISTS
|
|
(SELECT mld_kenmerk_volgnummer
|
|
FROM mld_kenmerk k1,
|
|
mld_srtkenmerk sk1,
|
|
mld_stdmelding std1,
|
|
ins_tab_discipline d1
|
|
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
|
|
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
|
|
AND std1.mld_stdmelding_key = stdmelding
|
|
AND std1.mld_ins_discipline_key =
|
|
d1.ins_discipline_key
|
|
AND ( (k1.mld_stdmelding_key =
|
|
std1.mld_stdmelding_key
|
|
AND k1.mld_kenmerk_niveau = 'S')
|
|
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
|
|
AND k1.mld_kenmerk_niveau = 'D')
|
|
OR (k1.mld_stdmelding_key =
|
|
d1.ins_srtdiscipline_key
|
|
AND k1.mld_kenmerk_niveau = 'T'))
|
|
AND k1.mld_kenmerk_verwijder IS NULL
|
|
AND k1.mld_kenmerk_volgnummer >
|
|
k.mld_kenmerk_volgnummer);
|
|
|
|
errormsg := '(0x153)';
|
|
|
|
IF kkey IS NOT NULL
|
|
THEN
|
|
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
|
|
errormsg := '(0x157)';
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid,
|
|
'kenmerkpath',
|
|
'MLD\M'
|
|
|| TO_CHAR (TRUNC (mldkey / 1000), 'FM0000')
|
|
|| '___\M'
|
|
|| mldkey
|
|
|| '\'
|
|
|| kkey
|
|
|| '\');
|
|
END IF;
|
|
END IF;
|
|
ELSE
|
|
errormsg := '(0x187)';
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid,
|
|
'errormsg',
|
|
'Database fout - Neem contact op met uw systeembeheerder '
|
|
|| errormsg);
|
|
END CASE;
|
|
|
|
IF v_locatie_code IS NOT NULL
|
|
THEN
|
|
csun_set_kenmerk('MLD',281, mldkey, v_locatie_code, 0); -- locatie_code klant kenmerk
|
|
CSUN.mld_after_insert (mldkey);
|
|
END IF;
|
|
-- Log het binnenkomende bericht als dat nodig is.
|
|
-- IF sender = 23 THEN -- ABNAMRO
|
|
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel, fac_rapport_soort)
|
|
VALUES (SUBSTR('MELDING_' || v_client, 1, 12), mldkey, SUBSTR(pbody, 1, 1990), 1);
|
|
-- END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid,
|
|
'errormsg',
|
|
'Database fout - Neem contact op met uw systeembeheerder '
|
|
|| errormsg);
|
|
|
|
fac.writelog (
|
|
'PROCESSEMAIL',
|
|
'E',
|
|
'Mail kon niet ingelezen worden afzender:'
|
|
|| pfrom
|
|
|| '['
|
|
|| errormsg
|
|
|| ']',
|
|
'OTHERS (error '
|
|
|| SQLCODE
|
|
|| '/'
|
|
|| SUBSTR (SQLERRM, 1, 100)
|
|
|| ')');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW CSUN_V_RAP_MAIL_ERROR
|
|
(
|
|
hide_f_offset,
|
|
datum,
|
|
hint,
|
|
error
|
|
)
|
|
AS
|
|
SELECT SYSDATE - imp_log_datum,
|
|
imp_log_datum,
|
|
imp_log_hint,
|
|
imp_log_omschrijving
|
|
FROM imp_log
|
|
WHERE imp_log_applicatie = 'PROCESSEMAIL'
|
|
AND imp_log_datum > SYSDATE - 30;
|
|
|
|
|
|
|
|
CREATE OR REPLACE VIEW CSUN_V_RAP_MELDING
|
|
(
|
|
ACCOUNTCODE,
|
|
FCLT_F_CLIENT,
|
|
WERKBEDRIJF,
|
|
DATUM,
|
|
TIJDSTIP,
|
|
SOORT_MELDING,
|
|
WERKBON,
|
|
MELDING,
|
|
TYPE,
|
|
SOORT,
|
|
FCLT_F_BEHANDELAAR,
|
|
OMSCHRIJVING,
|
|
LOCATIE,
|
|
LOCATIE_ADRES,
|
|
LOCATIE_PLAATS,
|
|
OPLOSTIJD,
|
|
DATUM_REACTIE,
|
|
REACTIE_OPTIJD,
|
|
REACTIE,
|
|
UITVOERTIJD,
|
|
UITGEVOERD,
|
|
STATUS,
|
|
AFHANDELTIJD_DAGEN,
|
|
AFHANDELTIJD_UREN
|
|
)
|
|
AS
|
|
SELECT (SELECT fac_usrdata_code
|
|
FROM alg_onrgoedkenmerk, fac_usrdata ud
|
|
WHERE alg_kenmerk_key = 1000
|
|
AND alg_onrgoed_key = l.alg_locatie_key
|
|
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
|
|
fac_usrdata_key)
|
|
accountcode,
|
|
(SELECT fac_usrdata_omschr
|
|
FROM alg_onrgoedkenmerk, fac_usrdata ud
|
|
WHERE alg_kenmerk_key = 1000
|
|
AND alg_onrgoed_key = l.alg_locatie_key
|
|
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
|
|
fac_usrdata_key)
|
|
client,
|
|
own.fac_usrdata_omschr werkbedrijf,
|
|
mld_melding_datum Datum,
|
|
TO_CHAR (mld_melding_datum, 'HH24:MI') Tijdstip,
|
|
sd.ins_srtdiscipline_omschrijving Soort_melding,
|
|
(SELECT mld_kenmerkmelding_waarde
|
|
FROM mld_kenmerkmelding km, mld_kenmerk k
|
|
WHERE km.mld_melding_key = m.mld_melding_key
|
|
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_srtkenmerk_key = 2)
|
|
werkbon,
|
|
m.mld_melding_key Melding,
|
|
sd.ins_srtdiscipline_prefix
|
|
|| ' - '
|
|
|| d.ins_discipline_omschrijving
|
|
TYPE,
|
|
std.mld_stdmelding_omschrijving Soort,
|
|
p.prs_perslid_naam_full,
|
|
m.mld_melding_omschrijving Omschrijving,
|
|
l.alg_locatie_omschrijving Locatie,
|
|
l.alg_locatie_adres locatie_adres,
|
|
l.alg_locatie_plaats locatie_plaats,
|
|
TO_CHAR (m.mld_melding_acceptdatum_std, 'dd-mm-yyyy hh24:mi')
|
|
oplostijd,
|
|
TO_CHAR (tr.fac_tracking_datum, 'dd-mm-yyyy hh24:mi')
|
|
datum_reactie,
|
|
DECODE (
|
|
SIGN (tr.fac_tracking_datum - m.mld_melding_acceptdatum_std),
|
|
-1,
|
|
'ja',
|
|
NULL
|
|
)
|
|
reactie_optijd,
|
|
mld_melding_opmerking reactie,
|
|
TO_CHAR (m.mld_melding_einddatum_std, 'dd-mm-yyyy hh24:mi')
|
|
uitvoertijd,
|
|
TO_CHAR (tr2.fac_tracking_datum, 'dd-mm-yyyy hh24:mi') uitgevoerd,
|
|
st.mld_statuses_omschrijving,
|
|
ROUND (
|
|
DECODE (mld.getactualuitvoer (m.mld_melding_key).eenheid,
|
|
'D',
|
|
mld.getactualuitvoer (m.mld_melding_key).tijdsduur,
|
|
NULL),
|
|
2
|
|
)
|
|
doorlooptijd_werkdgn,
|
|
ROUND (
|
|
DECODE (
|
|
mld.getactualuitvoer (m.mld_melding_key).eenheid,
|
|
'U',
|
|
mld.getactualuitvoer (m.mld_melding_key).tijdsduur,
|
|
'D',
|
|
(mld.getactualuitvoer (m.mld_melding_key).tijdsduur
|
|
* (SELECT COALESCE (e.fac_setting_pvalue,
|
|
e.fac_setting_default)
|
|
- COALESCE (s.fac_setting_pvalue,
|
|
s.fac_setting_default)
|
|
FROM fac_setting s, fac_setting e
|
|
WHERE s.fac_setting_name = 'fac_t_startofworkday'
|
|
AND e.fac_setting_name = 'fac_t_endofworkday')),
|
|
NULL
|
|
),
|
|
2
|
|
)
|
|
doorlooptijd_werkuren
|
|
FROM mld_melding m,
|
|
alg_locatie l,
|
|
mld_stdmelding std,
|
|
ins_tab_discipline d,
|
|
ins_srtdiscipline sd,
|
|
prs_v_perslid_fullnames p,
|
|
mld_statuses st,
|
|
(SELECT fac_usrdata_omschr, aok.alg_onrgoed_key
|
|
FROM alg_onrgoedkenmerk aok,
|
|
alg_kenmerk ak,
|
|
fac_kenmerkdomein fc,
|
|
fac_usrdata fu,
|
|
fac_usrtab ft
|
|
WHERE ak.alg_kenmerk_key = 1001
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL
|
|
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
|
|
AND ak.fac_kenmerkdomein_key = fc.fac_kenmerkdomein_key
|
|
AND ft.fac_usrtab_key = fc.fac_usrtab_key
|
|
AND fu.fac_usrtab_key = ft.fac_usrtab_key
|
|
AND alg_onrgoedkenmerk_waarde = fac_usrdata_key) own,
|
|
(SELECT fac_tracking_datum, fac_tracking_refkey
|
|
FROM fac_tracking t
|
|
WHERE t.fac_tracking_oms LIKE '%Afhandeling: (leeg) -->%') tr,
|
|
(SELECT fac_tracking_datum, fac_tracking_refkey
|
|
FROM fac_tracking t, fac_srtnotificatie srt
|
|
WHERE t.fac_srtnotificatie_key = srt.fac_srtnotificatie_key
|
|
AND srt.fac_srtnotificatie_code = 'MLDAFM') tr2
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
|
|
AND m.mld_melding_key = tr.fac_tracking_refkey(+)
|
|
AND m.mld_melding_key = tr2.fac_tracking_refkey(+)
|
|
AND m.mld_melding_status = st.mld_statuses_key
|
|
AND alg_locatie_key = own.alg_onrgoed_key(+)
|
|
AND m.mld_melding_behandelaar_key = p.prs_perslid_key(+);
|
|
|
|
CREATE OR REPLACE VIEW CSUN_V_RAP_MELDING_SANQ
|
|
(
|
|
MELDING,
|
|
RL,
|
|
DM,
|
|
LOCATIE,
|
|
RC,
|
|
RC_TELEFOON,
|
|
RC_MAIL,
|
|
FCLT_D_DATUM_MELDING,
|
|
TIJDSTIP_MELDING,
|
|
MAAND_MELDING,
|
|
MELDER,
|
|
AARD_MELDING,
|
|
OMSCHRIJVING,
|
|
RUIMTE_CATEGORIE,
|
|
RUIMTE_NUMMER,
|
|
URGENTIEKLASSE,
|
|
ONDERNOMEN_ACTIES,
|
|
RESULTAAT,
|
|
PREVENTIE,
|
|
STATUS,
|
|
DATUM_AFGEHANDELD,
|
|
TIJDSTIP_AFGEHANDELD,
|
|
AFHANDELTIJD_UREN,
|
|
AFHANDELTIJD_DAGEN,
|
|
BIJZONDERHEDEN
|
|
)
|
|
AS
|
|
SELECT mld_melding_key,
|
|
NULL rl,
|
|
NULL dm,
|
|
alg_locatie_omschrijving,
|
|
NULL rc_sanquin,
|
|
NULL telefoonnummer,
|
|
NULL mailadres,
|
|
TO_CHAR (mld_melding_datum, 'dd-mm-yyyy') datum,
|
|
TO_CHAR (mld_melding_datum, 'hh24:mi') tijdstip,
|
|
fac.safe_to_number (TO_CHAR (mld_melding_datum, 'mm')) maand,
|
|
pf.prs_perslid_naam_full melder,
|
|
std.mld_stdmelding_omschrijving aard,
|
|
mld_melding_omschrijving omschrijving,
|
|
NULL ruimte_categorie,
|
|
NULL ruimte_nummer,
|
|
mld_melding_spoed urgentieklasse,
|
|
-- decode (mld_melding_spoed, null vereistehersteltijd,
|
|
mld_melding_opmerking ondernomenacties,
|
|
NULL resultaat,
|
|
NULL preventie,
|
|
mld_statuses_omschrijving status,
|
|
TO_CHAR (einddatum.datum, 'dd-mm-yyyy') datumafgehandeld,
|
|
TO_CHAR (einddatum.datum, 'hh24:mi') tijdstipafgehandeld,
|
|
csu_count_WorkHours (mld_melding_datum, einddatum.datum)
|
|
afgehandelduren,
|
|
ROUND (
|
|
csu_count_WorkHours (mld_melding_datum, einddatum.datum) / 9,
|
|
2)
|
|
afgehandelddagen,
|
|
NULL bijzonderheden
|
|
FROM mld_melding m,
|
|
alg_locatie l,
|
|
prs_v_perslid_fullnames_all pf,
|
|
mld_stdmelding std,
|
|
mld_statuses st,
|
|
(SELECT fac_tracking_refkey, fac_tracking_datum datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key = 35) einddatum
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
|
AND m.prs_perslid_key = pf.prs_perslid_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND m.mld_melding_key = einddatum.fac_tracking_refkey(+)
|
|
AND m.mld_melding_status = st.mld_statuses_key;
|
|
|
|
|
|
CREATE OR REPLACE FORCE VIEW CSUN_V_RAP_DISTRICTGEGEVENS
|
|
(
|
|
FCLT_F_BUSINESSUNIT,
|
|
DISTRICT,
|
|
BBER
|
|
)
|
|
AS
|
|
SELECT alg_regio_omschrijving,
|
|
alg_district_omschrijving,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames pf
|
|
WHERE pf.prs_perslid_key = p.prs_perslid_key)
|
|
BBer
|
|
FROM alg_district d,
|
|
alg_regio r,
|
|
prs_perslid p,
|
|
alg_locatie l2,
|
|
prs_v_perslidwerkplek_gegevens pwpg
|
|
WHERE d.alg_regio_key = r.alg_regio_key
|
|
AND pwpg.alg_locatie_key = l2.alg_locatie_key
|
|
AND d.alg_district_key = l2.alg_district_key
|
|
AND pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_srtperslid_key = 32; -- BBer
|
|
|
|
CREATE OR REPLACE VIEW csun_v_rap_locatiegegevens
|
|
(
|
|
prjnr,
|
|
fclt_f_regioomschrijving,
|
|
fclt_f_districtomschrijving,
|
|
locatiecode,
|
|
locatieomschrijving,
|
|
bezoekadres,
|
|
postcode,
|
|
plaats,
|
|
fclt_f_client,
|
|
bud,
|
|
bb
|
|
)
|
|
AS
|
|
SELECT (SELECT alg_onrgoedkenmerk_waarde
|
|
FROM alg_onrgoedkenmerk ogk
|
|
WHERE alg_kenmerk_key = 1040
|
|
AND ogk.alg_onrgoed_key = l.alg_locatie_key)
|
|
prjnr,
|
|
alg_regio_omschrijving,
|
|
alg_district_omschrijving,
|
|
l.alg_locatie_code,
|
|
l.alg_locatie_omschrijving,
|
|
l.alg_locatie_adres,
|
|
l.alg_locatie_postcode,
|
|
l.alg_locatie_plaats,
|
|
(SELECT u.fac_usrdata_omschr
|
|
FROM fac_usrdata u, alg_onrgoedkenmerk ogk
|
|
WHERE alg_kenmerk_key = 1000
|
|
AND ogk.alg_onrgoed_key = l.alg_locatie_key
|
|
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
|
|
u.fac_usrdata_key)
|
|
client,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames pf, alg_onrgoedkenmerk ogk
|
|
WHERE alg_kenmerk_key = 1006
|
|
AND ogk.alg_onrgoed_key = l.alg_locatie_key
|
|
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
|
|
pf.prs_perslid_key)
|
|
bud,
|
|
(SELECT max(prs_perslid_naam_full) || DECODE (count(p.prs_perslid_key), 1, '', '*')
|
|
FROM prs_v_perslid_fullnames pf,
|
|
prs_perslid p,
|
|
alg_locatie l2,
|
|
prs_v_perslidwerkplek_gegevens pwpg
|
|
WHERE pwpg.alg_locatie_key = l2.alg_locatie_key
|
|
AND l.alg_district_key = l2.alg_district_key
|
|
AND pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_srtperslid_key = 32 -- BBer
|
|
AND p.prs_perslid_key = pf.prs_perslid_key) bb
|
|
FROM alg_locatie l, alg_district d, alg_regio r
|
|
WHERE l.alg_district_key = d.alg_district_key
|
|
AND d.alg_regio_key = r.alg_regio_key
|
|
AND alg_locatie_verwijder IS NULL;
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_set_kenmerk(p_module IN VARCHAR2,
|
|
p_kenmerk_key IN NUMBER,
|
|
p_link_key IN NUMBER,
|
|
p_kenmerk_waarde IN VARCHAR2,
|
|
p_history IN NUMBER)
|
|
AS
|
|
v_count NUMBER;
|
|
v_niveau VARCHAR2 (1);
|
|
BEGIN
|
|
CASE p_module
|
|
WHEN 'PRS'
|
|
THEN
|
|
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
|
-- opgeslagen (da's dus redundant..?)
|
|
SELECT prs_kenmerk_niveau
|
|
INTO v_niveau
|
|
FROM prs_kenmerk
|
|
WHERE prs_kenmerk_key = p_kenmerk_key;
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p_link_key
|
|
AND prs_kenmerk_key = p_kenmerk_key
|
|
AND prs_kenmerklink_verwijder IS NULL;
|
|
|
|
IF v_count = 1
|
|
THEN
|
|
IF p_kenmerk_waarde IS NULL
|
|
THEN
|
|
DELETE prs_kenmerklink
|
|
WHERE prs_link_key = p_link_key
|
|
AND prs_kenmerk_key = p_kenmerk_key
|
|
AND prs_kenmerklink_verwijder IS NULL;
|
|
ELSE
|
|
UPDATE prs_kenmerklink
|
|
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
|
WHERE prs_link_key = p_link_key
|
|
AND prs_kenmerk_key = p_kenmerk_key
|
|
AND prs_kenmerklink_verwijder IS NULL;
|
|
END IF;
|
|
ELSE
|
|
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
|
THEN
|
|
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
|
|
prs_link_key,
|
|
prs_kenmerklink_niveau,
|
|
prs_kenmerklink_waarde)
|
|
VALUES (p_kenmerk_key,
|
|
p_link_key,
|
|
v_niveau,
|
|
p_kenmerk_waarde);
|
|
END IF;
|
|
END IF;
|
|
|
|
WHEN 'ALG'
|
|
THEN
|
|
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
|
-- opgeslagen (da's dus redundant..?)
|
|
SELECT alg_kenmerk_niveau
|
|
INTO v_niveau
|
|
FROM alg_kenmerk
|
|
WHERE alg_kenmerk_key = p_kenmerk_key;
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM alg_onrgoedkenmerk
|
|
WHERE alg_onrgoed_key = p_link_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
|
|
IF v_count = 1
|
|
THEN
|
|
IF p_kenmerk_waarde IS NULL
|
|
THEN
|
|
DELETE alg_onrgoedkenmerk
|
|
WHERE alg_onrgoed_key = p_link_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
ELSE
|
|
UPDATE alg_onrgoedkenmerk
|
|
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
|
|
WHERE alg_onrgoed_key = p_link_key
|
|
AND alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
|
END IF;
|
|
ELSE
|
|
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
|
THEN
|
|
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
|
|
alg_onrgoed_key,
|
|
alg_onrgoed_niveau,
|
|
alg_onrgoedkenmerk_waarde)
|
|
VALUES (p_kenmerk_key,
|
|
p_link_key,
|
|
v_niveau,
|
|
p_kenmerk_waarde);
|
|
END IF;
|
|
END IF;
|
|
|
|
WHEN 'MLD'
|
|
THEN
|
|
-- melding- of opdrachtkenmerk?
|
|
SELECT mld_kenmerk_niveau
|
|
INTO v_niveau
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = p_kenmerk_key;
|
|
|
|
CASE v_niveau
|
|
WHEN 'O'
|
|
THEN
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM mld_kenmerkopdr
|
|
WHERE mld_opdr_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkopdr_verwijder IS NULL;
|
|
|
|
IF v_count = 1
|
|
THEN
|
|
IF p_kenmerk_waarde IS NULL
|
|
THEN
|
|
DELETE mld_kenmerkopdr
|
|
WHERE mld_opdr_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkopdr_verwijder IS NULL;
|
|
ELSE
|
|
UPDATE mld_kenmerkopdr
|
|
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
|
|
WHERE mld_opdr_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkopdr_verwijder IS NULL;
|
|
END IF;
|
|
ELSE
|
|
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
|
THEN
|
|
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
|
mld_opdr_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (p_kenmerk_key,
|
|
p_link_key,
|
|
p_kenmerk_waarde);
|
|
END IF;
|
|
END IF;
|
|
ELSE
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_melding_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkmelding_verwijder IS NULL;
|
|
|
|
IF v_count = 1
|
|
THEN
|
|
IF p_kenmerk_waarde IS NULL
|
|
THEN
|
|
DELETE mld_kenmerkmelding
|
|
WHERE mld_melding_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkmelding_verwijder IS NULL;
|
|
ELSE
|
|
UPDATE mld_kenmerkmelding
|
|
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
|
|
WHERE mld_melding_key = p_link_key
|
|
AND mld_kenmerk_key = p_kenmerk_key
|
|
AND mld_kenmerkmelding_verwijder IS NULL;
|
|
END IF;
|
|
ELSE
|
|
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
|
THEN
|
|
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
|
|
mld_melding_key,
|
|
mld_kenmerkmelding_waarde)
|
|
VALUES (p_kenmerk_key,
|
|
p_link_key,
|
|
p_kenmerk_waarde);
|
|
END IF;
|
|
END IF;
|
|
END CASE;
|
|
END CASE;
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_import_project (p_import_key IN NUMBER)
|
|
AS
|
|
c_fielddelimitor VARCHAR2 (1) := ',';
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_error_hint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER;
|
|
v_count NUMBER;
|
|
v_error NUMBER (1);
|
|
v_aanduiding VARCHAR2 (200);
|
|
-- De importvelden:
|
|
v_accountcode VARCHAR2 (255); -- 14
|
|
v_accountnaam VARCHAR2 (255); -- 60
|
|
v_project VARCHAR2 (255); -- 8
|
|
|
|
v_locatie_omschrijving VARCHAR2 (255); -- 30
|
|
v_locatie_adres VARCHAR2 (255); -- 35
|
|
v_locatie_postcode VARCHAR2 (255); -- 12
|
|
v_locatie_plaats VARCHAR2 (255); -- 30
|
|
v_dm VARCHAR2 (255); -- 100
|
|
v_voornaam VARCHAR2 (255); -- 30
|
|
v_voorletters VARCHAR2 (255); -- 10
|
|
v_tussenvoegsels VARCHAR2 (255); -- 15
|
|
v_achternaam VARCHAR2 (255); -- 60
|
|
v_bu VARCHAR2 (255);
|
|
v_vervallen VARCHAR2 (255);
|
|
v_rayonl_persnr VARCHAR2 (255); -- 16
|
|
v_rayonl_naam VARCHAR2 (255); -- 60
|
|
v_kenmerk1 VARCHAR2 (255);
|
|
v_kenmerk2 VARCHAR2 (255);
|
|
v_kenmerk3 VARCHAR2 (255);
|
|
v_kenmerk4 VARCHAR2 (255);
|
|
v_kenmerk5 VARCHAR2 (255);
|
|
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
v_error_hint := 'Verwijderen oude records';
|
|
-- Eerst opruiming
|
|
DELETE
|
|
FROM imp_log l
|
|
WHERE EXISTS
|
|
(SELECT i.fac_import_key
|
|
FROM fac_import i, fac_import i2
|
|
WHERE l.fac_import_key = i.fac_import_key
|
|
AND i.fac_import_app_key = i2.fac_import_app_key
|
|
AND i2.fac_import_key = p_import_key)
|
|
AND l.fac_import_key <> p_import_key;
|
|
|
|
DELETE FROM csun_imp_project;
|
|
|
|
header_is_valid := 0;
|
|
v_count := 0;
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_error_hint := 'Fout FETCH te importeren rij';
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_error_hint := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_error := 0;
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_accountcode); -- FPACCC
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_accountnaam); -- FPACCO
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_project); -- FPPRJ#
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_bu); -- FPREGO
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_dm); -- FPDISC
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_voorletters); -- FPDIVL
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_voornaam); -- FPDIVN
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_tussenvoegsels); -- FPDIVV
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_achternaam); -- FPDINM
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_omschrijving); -- FPLOCO
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_adres); -- FPADBA
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_postcode); -- FPPKBA
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_plaats); -- FPPLBA
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_vervallen); -- FPVERV
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_rayonl_persnr); -- FPGEOK
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_rayonl_naam); -- FPRLNM
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerk1);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerk2);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerk3);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerk4);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerk5);
|
|
|
|
v_aanduiding :=
|
|
v_project || '|' || v_locatie_omschrijving || '| ';
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_accountcode) = 'FPACCC'
|
|
AND UPPER (v_project) = 'FPPRJ#'
|
|
AND UPPER (v_achternaam) = 'FPDINM'
|
|
AND UPPER (v_bu) = 'FPREGO'
|
|
AND UPPER (v_locatie_omschrijving) = 'FPLOCO'
|
|
AND UPPER (v_locatie_plaats) = 'FPPLBA'
|
|
THEN
|
|
header_is_valid := 1;
|
|
ELSE
|
|
IF rec1.fac_imp_file_index = 1 THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Header FPACCC:'||v_accountcode||'-FPPRJ#:'||v_project||'-FPDINM:'||v_achternaam||'-FPREGO:'||v_bu||'-FPLOCO:'||v_locatie_omschrijving||'-FPPLBA:'||v_locatie_plaats,
|
|
'Geen geldige headerregel aanwezig');
|
|
END IF;
|
|
END IF;
|
|
ELSE
|
|
-- Insert geformatteerde import record
|
|
IF v_error = 0
|
|
THEN
|
|
|
|
v_error_hint :=
|
|
'Fout bij toevoegen te impoteren locatie ['
|
|
|| v_project
|
|
|| ']';
|
|
|
|
INSERT INTO csun_imp_project (accountcode,
|
|
accountnaam,
|
|
project,
|
|
vervallen,
|
|
bu,
|
|
dm,
|
|
voornaam,
|
|
voorletters,
|
|
tussenvoegsels,
|
|
achternaam,
|
|
code,
|
|
omschrijving,
|
|
adres,
|
|
postcode,
|
|
woonplaats,
|
|
rayonl_persnr,
|
|
rayonl_naam,
|
|
kenmerk1,
|
|
kenmerk2,
|
|
kenmerk3,
|
|
kenmerk4,
|
|
kenmerk5)
|
|
VALUES (SUBSTR(TRIM(v_accountcode),1,14),
|
|
SUBSTR(TRIM(v_accountnaam),1,60),
|
|
SUBSTR(TRIM(v_project),1,14),
|
|
SUBSTR(TRIM(v_vervallen),1,1),
|
|
SUBSTR(TRIM(v_bu),1,14),
|
|
TO_NUMBER(TRIM(v_dm)),
|
|
SUBSTR(TRIM(v_voornaam),1,14),
|
|
SUBSTR(TRIM(v_voorletters),1,14),
|
|
SUBSTR(TRIM(v_tussenvoegsels),1,14),
|
|
SUBSTR(TRIM(v_achternaam),1,60),
|
|
NULL, -- Wordt niet meer gebruikt.
|
|
SUBSTR(TRIM(v_locatie_omschrijving),1,60),
|
|
SUBSTR(TRIM(v_locatie_adres),1,35),
|
|
SUBSTR(TRIM(v_locatie_postcode),1,9),
|
|
SUBSTR(TRIM(v_locatie_plaats),1,35),
|
|
SUBSTR(TRIM(v_rayonl_persnr),1,16),
|
|
SUBSTR(TRIM(v_rayonl_naam),1,60),
|
|
v_kenmerk1,
|
|
v_kenmerk2,
|
|
v_kenmerk3,
|
|
v_kenmerk4,
|
|
v_kenmerk5);
|
|
v_count := v_count + 1;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Ongeldig importbestand',
|
|
'Geen geldige headerregel aanwezig');
|
|
ELSE
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Locaties: aantal ingelezen regels: ' || TO_CHAR (v_count),
|
|
'');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_error_hint);
|
|
END csun_import_project;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_update_project (p_import_key IN NUMBER)
|
|
IS
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_error_hint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (1000);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count NUMBER (10);
|
|
v_ongeldig NUMBER (1);
|
|
v_count_update NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
|
|
-- De importvelden:
|
|
v_locatie_key NUMBER (10);
|
|
v_bud_key NUMBER (10);
|
|
v_account_key NUMBER (10);
|
|
v_district_key NUMBER (10);
|
|
v_perslid_key NUMBER (10);
|
|
v_afdeling_key NUMBER (10);
|
|
v_tussenv VARCHAR2 (15);
|
|
v_achternaam VARCHAR2 (60);
|
|
|
|
CURSOR c_account
|
|
IS
|
|
SELECT distinct accountcode, accountnaam
|
|
FROM csun_imp_project
|
|
WHERE COALESCE(UPPER(vervallen), 'N') <> 'J';
|
|
|
|
CURSOR c_district (c_accountcode IN VARCHAR2)
|
|
IS
|
|
SELECT distinct dm, voornaam, voorletters, tussenvoegsels, achternaam
|
|
FROM csun_imp_project
|
|
WHERE accountcode = c_accountcode
|
|
AND COALESCE(UPPER(vervallen), 'N') <> 'J';
|
|
|
|
CURSOR c (c_accountcode IN VARCHAR2, c_dm IN NUMBER)
|
|
IS
|
|
SELECT * FROM csun_imp_project
|
|
WHERE accountcode = c_accountcode
|
|
AND dm = c_dm
|
|
AND COALESCE(UPPER(vervallen), 'N') <> 'J';
|
|
|
|
CURSOR c_verv (c_accountcode IN VARCHAR2)
|
|
IS
|
|
SELECT alg_locatie_key, fac_usrdata_code
|
|
FROM alg_locatie l,
|
|
alg_onrgoedkenmerk aogka,
|
|
alg_onrgoedkenmerk aogkp,
|
|
fac_usrdata u
|
|
WHERE aogka.alg_kenmerk_key = 1000 -- client
|
|
AND l.alg_locatie_key = aogka.alg_onrgoed_key
|
|
AND fac.safe_to_number (aogka.alg_onrgoedkenmerk_waarde) =
|
|
u.fac_usrdata_key
|
|
AND aogkp.alg_kenmerk_key = 1040 -- projectnummer
|
|
AND l.alg_locatie_key = aogkp.alg_onrgoed_key
|
|
AND NOT EXISTS
|
|
(SELECT project
|
|
FROM csun_imp_project
|
|
WHERE project = aogkp.alg_onrgoedkenmerk_waarde
|
|
AND COALESCE (UPPER (vervallen), 'N') = 'N')
|
|
AND NOT EXISTS
|
|
(SELECT alg_onrgoedkenmerk_waarde
|
|
FROM alg_onrgoedkenmerk aogkv
|
|
WHERE aogkv.alg_kenmerk_key = 1160 -- vervaldatum
|
|
AND l.alg_locatie_key = aogkv.alg_onrgoed_key);
|
|
|
|
CURSOR c_del
|
|
IS
|
|
SELECT alg_locatie_key, alg_locatie_code
|
|
FROM alg_locatie l, alg_onrgoedkenmerk aogk
|
|
WHERE alg_locatie_verwijder IS NULL
|
|
AND aogk.alg_kenmerk_key = 1160 -- vervaldatum
|
|
AND l.alg_locatie_key = aogk.alg_onrgoed_key
|
|
AND fac.safe_to_date(aogk.alg_onrgoedkenmerk_waarde, 'dd-mm-yyyy') < SYSDATE - 10;
|
|
|
|
CURSOR c_rayonl
|
|
IS
|
|
SELECT DISTINCT
|
|
bu,
|
|
rayonl_persnr,
|
|
TRIM (SUBSTR (rayonl_naam, 1, INSTR (rayonl_naam, ' ')))
|
|
voornaam,
|
|
TRIM (SUBSTR (rayonl_naam, INSTR (rayonl_naam, ' '), 60))
|
|
achternaam,
|
|
rayonl_naam
|
|
FROM csun_imp_project
|
|
WHERE rayonl_naam IS NOT NULL;
|
|
|
|
|
|
FUNCTION get_alg_kenmerk (p_kenmerk_key IN NUMBER, p_onrgoed_key IN NUMBER) RETURN VARCHAR2
|
|
AS
|
|
v_waarde VARCHAR2(255);
|
|
BEGIN
|
|
SELECT alg_onrgoedkenmerk_waarde
|
|
INTO v_waarde
|
|
FROM alg_onrgoedkenmerk
|
|
WHERE alg_kenmerk_key = p_kenmerk_key
|
|
AND alg_onrgoed_key = p_onrgoed_key;
|
|
|
|
RETURN v_waarde;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
RETURN NULL;
|
|
END;
|
|
BEGIN
|
|
-- v_count_update := 0;
|
|
-- v_count_tot := 0;
|
|
v_error_hint := 'Start met doorlopen accounts';
|
|
|
|
|
|
FOR rec_a IN c_account
|
|
LOOP
|
|
BEGIN
|
|
v_error_hint := 'Ophalen data voor accountcode: ' || rec_a.accountcode;
|
|
BEGIN
|
|
SELECT fac_usrdata_key
|
|
INTO v_account_key
|
|
FROM fac_usrdata
|
|
WHERE fac_usrtab_key = 1 -- Eigentabel met client
|
|
AND fac_usrdata_code = rec_a.accountcode;
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
INSERT INTO fac_usrdata
|
|
( fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr )
|
|
VALUES
|
|
( 1, rec_a.accountcode, rec_a.accountnaam)
|
|
RETURNING fac_usrdata_key INTO v_account_key;
|
|
END;
|
|
|
|
FOR rec_d IN c_district(rec_a.accountcode)
|
|
LOOP
|
|
BEGIN
|
|
v_error_hint := 'Ophalen data voor dm: ' || rec_d.dm || ' Naam:' || rec_d.achternaam;
|
|
|
|
BEGIN
|
|
SELECT alg_onrgoed_key
|
|
INTO v_district_key
|
|
FROM prs_perslid p,
|
|
alg_onrgoedkenmerk aog,
|
|
alg_district d
|
|
WHERE p.prs_perslid_naam = rec_d.achternaam
|
|
AND p.prs_perslid_voorletters = rec_d.voorletters
|
|
AND COALESCE(p.prs_perslid_tussenvoegsel, '.') = COALESCE(rec_d.tussenvoegsels, '.')
|
|
AND alg_kenmerk_key = 1021 -- key van districtmanager
|
|
AND prs_perslid_key = fac.safe_to_number(alg_onrgoedkenmerk_waarde)
|
|
AND aog.alg_onrgoed_key = d.alg_district_key
|
|
AND d.alg_district_verwijder IS NULL
|
|
AND aog.alg_onrgoedkenmerk_verwijder IS NULL;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Import locaties afgebroken, distrinctmanager niet gevonden ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ')',
|
|
v_error_hint);
|
|
END;
|
|
|
|
IF v_district_key IS NOT NULL THEN
|
|
FOR rec IN c(rec_a.accountcode, rec_d.dm)
|
|
LOOP
|
|
BEGIN
|
|
v_locatie_key := NULL;
|
|
-- Get BUD reference
|
|
v_error_hint := 'Bepalen bb referentie: ' || rec.dm;
|
|
v_bud_key := get_alg_kenmerk (1060, v_district_key);
|
|
|
|
BEGIN
|
|
v_error_hint := 'Kijk of de locatie al bestaat: ' || rec.project;
|
|
SELECT alg_onrgoed_key
|
|
INTO v_locatie_key
|
|
FROM alg_onrgoedkenmerk, alg_locatie
|
|
WHERE alg_kenmerk_key = 1040 -- projectnummer
|
|
AND alg_onrgoedkenmerk_waarde = rec.project
|
|
AND alg_onrgoed_key = alg_locatie_key
|
|
AND alg_locatie_verwijder IS NULL;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
-- Kijk of de locatieomschrijving al voorkomt. Als dat het geval is mogen we de
|
|
-- nieuwe locatie niet aanmaken.
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM alg_locatie
|
|
WHERE alg_locatie_upper = UPPER(SUBSTR(rec.omschrijving,1,50))
|
|
AND alg_locatie_verwijder IS NULL;
|
|
|
|
IF v_count = 0 THEN
|
|
|
|
INSERT INTO alg_locatie (alg_district_key, alg_locatie_code, alg_locatie_omschrijving)
|
|
VALUES (v_district_key, 'P' || rec.project, SUBSTR(rec.omschrijving,1,50))
|
|
RETURNING alg_locatie_key
|
|
INTO v_locatie_key;
|
|
ELSE
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Import locaties afgebroken, locatie omschrijving bestaat al ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ' Projectnr: ' || rec.project || ')',
|
|
'Locatie met omschrijving: ' || rec.omschrijving || ' bestaat al');
|
|
END IF;
|
|
END;
|
|
|
|
IF v_locatie_key IS NOT NULL THEN
|
|
UPDATE alg_locatie
|
|
SET alg_locatie_omschrijving = SUBSTR(rec.omschrijving,1,50),
|
|
alg_district_key = v_district_key,
|
|
alg_locatie_adres = rec.adres,
|
|
alg_locatie_postcode = rec.postcode,
|
|
alg_locatie_plaats = rec.woonplaats
|
|
WHERE alg_locatie_key = v_locatie_key;
|
|
|
|
csun_set_kenmerk ('ALG', 1006, v_locatie_key, v_bud_key, 0);
|
|
csun_set_kenmerk ('ALG', 1000, v_locatie_key, v_account_key, 0);
|
|
csun_set_kenmerk ('ALG', 1040, v_locatie_key, rec.project, 0);
|
|
-- reanimeer verwijderde locaties
|
|
csun_set_kenmerk ('ALG', 1160, v_locatie_key, NULL, 0);
|
|
END IF;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
|
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Import locaties afgebroken ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || ' Projectnr: ' || rec.project || '):' || v_errormsg,
|
|
v_error_hint);
|
|
|
|
END;
|
|
END LOOP;
|
|
END IF;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
|
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Import locaties afgebroken ( district mngr:' || rec_d.dm || '(' || rec_d.voorletters || ' ' || rec_d.tussenvoegsels || ' ' || rec_d.achternaam || ')' || '- account:' || rec_a.accountcode || '-' || rec_a.accountnaam || '):' || v_errormsg,
|
|
v_error_hint);
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR rec_verv IN c_verv(rec_a.accountcode)
|
|
LOOP
|
|
BEGIN
|
|
-- zet de vervaldatum bij de locatie zodat deze na 6 maanden verwijderd kan worden.
|
|
csun_set_kenmerk ('ALG', 1160, rec_verv.alg_locatie_key, TO_CHAR(SYSDATE, 'dd-mm-yyyy'), 0);
|
|
END;
|
|
END LOOP;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
|
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Import locaties afgebroken (' || rec_a.accountcode || '):' || v_errormsg,
|
|
v_error_hint);
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
csun_export_set_werkplek (p_import_key);
|
|
|
|
FOR rec_del IN c_del
|
|
LOOP
|
|
BEGIN
|
|
v_error_hint := 'Verwijderen gebouwen - Locatie_code: ' || rec_del.alg_locatie_code;
|
|
UPDATE alg_gebouw SET alg_gebouw_verwijder = SYSDATE WHERE alg_locatie_key = rec_del.alg_locatie_key;
|
|
|
|
v_error_hint := 'Verwijderen locatie - Locatie_code: ' || rec_del.alg_locatie_code;
|
|
UPDATE alg_locatie SET alg_locatie_verwijder = SYSDATE WHERE alg_locatie_key = rec_del.alg_locatie_key;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
|
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Verwijderen locaties:' || v_errormsg,
|
|
v_error_hint);
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
-- voeg de rayonleiders toe als ze nog niet bestaan
|
|
FOR rec_ray IN c_rayonl
|
|
LOOP
|
|
BEGIN
|
|
SELECT prs_perslid_key
|
|
INTO v_perslid_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_verwijder IS NULL
|
|
AND prs_perslid_nr = rec_ray.rayonl_persnr;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
-- nieuwe rayonleider aanmaken tijdelijk onder CSU NA.
|
|
INSERT INTO prs_perslid (prs_srtperslid_key,
|
|
prs_afdeling_key,
|
|
prs_perslid_nr,
|
|
prs_perslid_naam,
|
|
prs_perslid_voornaam)
|
|
VALUES (50,
|
|
1,
|
|
rec_ray.rayonl_persnr,
|
|
rec_ray.achternaam,
|
|
rec_ray.voornaam)
|
|
RETURNING prs_perslid_key
|
|
INTO v_perslid_key;
|
|
|
|
v_achternaam := rec_ray.achternaam;
|
|
v_tussenv := '';
|
|
|
|
IF INSTR (v_achternaam, 'van der ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 9); v_tussenv := 'van der'; END IF;
|
|
IF INSTR (v_achternaam, 'van den ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 9); v_tussenv := 'van den'; END IF;
|
|
IF INSTR (v_achternaam, 'van de ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 8); v_tussenv := 'van de'; END IF;
|
|
IF INSTR (v_achternaam, 'van ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 5); v_tussenv := 'van'; END IF;
|
|
IF INSTR (v_achternaam, 'de ') = 1 THEN v_achternaam := SUBSTR (v_achternaam, 4); v_tussenv := 'de'; END IF;
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam = v_achternaam,
|
|
prs_perslid_tussenvoegsel = v_tussenv
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
END;
|
|
|
|
BEGIN
|
|
-- Eigen tabel met key 61 wordt gebruikt om de mapping tussen business unit en CSU afdeling vast te leggen.
|
|
SELECT prs_afdeling_key
|
|
INTO v_afdeling_key
|
|
FROM prs_afdeling a, fac_usrdata ud
|
|
WHERE ud.fac_usrtab_key = 61
|
|
AND prs_afdeling_omschrijving =
|
|
'CSU ' || fac_usrdata_omschr
|
|
AND fac_usrdata_code = rec_ray.bu;
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_afdeling_key = v_afdeling_key
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Afdeling van Rayonleider kan niet gevonden worden ( Rayonleider:' || rec_ray.voornaam || ' - ' || rec_ray.achternaam || ')',
|
|
'');
|
|
END;
|
|
END LOOP;
|
|
|
|
-- Geef de rayonleiders een werkplek als ze deze nog niet hebben.
|
|
INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_perslidwerkplek_bezetting, prs_werkplek_key)
|
|
SELECT p.prs_perslid_key, 100, wpg.prs_werkplek_key
|
|
FROM csun_imp_project i,
|
|
alg_locatie l,
|
|
prs_perslid p,
|
|
prs_v_werkplek_gegevens wpg
|
|
WHERE i.rayonl_persnr = p.prs_perslid_nr
|
|
AND 'P' || i.PROJECT = l.alg_locatie_code
|
|
AND l.alg_locatie_key = wpg.alg_locatie_key
|
|
AND wpg.alg_ruimte_nr = '-'
|
|
AND prs_srtperslid_key = 50 -- rayonleider
|
|
AND NOT EXISTS
|
|
(SELECT *
|
|
FROM prs_v_perslidwerkplek_gegevens pwpg
|
|
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND pwpg.alg_locatie_key = l.alg_locatie_key);
|
|
|
|
|
|
-- Verwijder de werkplek van een rayonleider als deze niet meer gekoppeld is.
|
|
DELETE prs_perslidwerkplek
|
|
WHERE prs_perslidwerkplek_key IN
|
|
(SELECT prs_perslidwerkplek_key
|
|
FROM prs_v_perslidwerkplek_gegevens pwpg, prs_perslid p
|
|
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_srtperslid_key = 50 -- Rayonleider
|
|
AND NOT EXISTS
|
|
(SELECT i.project
|
|
FROM csun_imp_project i, alg_locatie l
|
|
WHERE i.rayonl_persnr = p.prs_perslid_nr
|
|
AND 'P' || i.project = l.alg_locatie_code
|
|
AND l.alg_locatie_key =
|
|
pwpg.alg_locatie_key
|
|
AND pwpg.alg_ruimte_nr = '-'));
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
|
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Fout tijdens importeren van onroerend goed (locatie en gebouw) ',
|
|
v_errormsg);
|
|
END csun_update_project;
|
|
/
|
|
|
|
-- rapport om de ingelezen gegevens op te zoeken.
|
|
CREATE OR REPLACE VIEW csun_v_rap_imp_project
|
|
(
|
|
accountcode,
|
|
accountnaam,
|
|
project,
|
|
vervallen,
|
|
bu,
|
|
dm,
|
|
voornaam,
|
|
voorletters,
|
|
tussenvoegsels,
|
|
achternaam,
|
|
code,
|
|
omschrijving,
|
|
adres,
|
|
postcode,
|
|
woonplaats
|
|
)
|
|
AS
|
|
SELECT accountcode,
|
|
accountnaam,
|
|
project,
|
|
vervallen,
|
|
bu,
|
|
dm,
|
|
voornaam,
|
|
voorletters,
|
|
tussenvoegsels,
|
|
achternaam,
|
|
code,
|
|
omschrijving,
|
|
adres,
|
|
postcode,
|
|
woonplaats
|
|
FROM csun_imp_project;
|
|
|
|
--
|
|
-- Procedures en functies om de doorlooptijd van meldingen te bepalen
|
|
--
|
|
CREATE OR REPLACE FUNCTION csu_find_next_workingday (pdate1 IN DATE)
|
|
RETURN DATE
|
|
IS
|
|
result DATE;
|
|
v_vrije_dagen NUMBER;
|
|
v_date DATE;
|
|
BEGIN
|
|
v_date := pdate1;
|
|
|
|
IF pdate1 < (TRUNC (v_date) + 8 / 24)
|
|
THEN
|
|
v_date := TRUNC (v_date) + 8 / 24;
|
|
END IF;
|
|
|
|
IF pdate1 > (TRUNC (v_date) + 17 / 24)
|
|
THEN
|
|
v_date := TRUNC (v_date) + 17 / 24;
|
|
END IF;
|
|
|
|
IF TO_CHAR (v_date, 'd') IN (1, 7)
|
|
THEN
|
|
result := csu_find_next_workingday (TRUNC (v_date) + 1 + 8 / 24);
|
|
ELSE
|
|
SELECT COUNT ( * )
|
|
INTO v_vrije_dagen
|
|
FROM mld_vrije_dagen
|
|
WHERE mld_vrije_dagen_datum = TRUNC (v_date);
|
|
|
|
IF v_vrije_dagen = 1
|
|
THEN
|
|
result := csu_find_next_workingday (TRUNC (v_date) + 1 + 8 / 24);
|
|
ELSE
|
|
result := v_date;
|
|
END IF;
|
|
END IF;
|
|
|
|
RETURN result;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE FUNCTION csu_find_prev_workingday (pdate1 IN DATE)
|
|
RETURN DATE
|
|
IS
|
|
result DATE;
|
|
v_vrije_dagen NUMBER;
|
|
v_date DATE;
|
|
BEGIN
|
|
v_date := pdate1;
|
|
|
|
IF pdate1 < (TRUNC (v_date) + 8 / 24)
|
|
THEN
|
|
v_date := TRUNC (v_date) + 8 / 24;
|
|
END IF;
|
|
|
|
IF pdate1 > (TRUNC (v_date) + 17 / 24)
|
|
THEN
|
|
v_date := TRUNC (v_date) + 17 / 24;
|
|
END IF;
|
|
|
|
IF TO_CHAR (v_date, 'd') IN (1, 7)
|
|
THEN
|
|
result := csu_find_prev_workingday (TRUNC (v_date) - 1 + 17 / 24);
|
|
ELSE
|
|
SELECT COUNT ( * )
|
|
INTO v_vrije_dagen
|
|
FROM mld_vrije_dagen
|
|
WHERE mld_vrije_dagen_datum = TRUNC (v_date);
|
|
|
|
IF v_vrije_dagen = 1
|
|
THEN
|
|
result := csu_find_prev_workingday (TRUNC (v_date) - 1 + 17 / 24);
|
|
ELSE
|
|
result := v_date;
|
|
END IF;
|
|
END IF;
|
|
|
|
RETURN result;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE FUNCTION csu_count_WorkHours (pdate_from IN DATE,
|
|
pdate_to IN DATE)
|
|
RETURN NUMBER
|
|
IS
|
|
eikdag NUMBER;
|
|
v_date_from DATE;
|
|
v_date_to DATE;
|
|
v_week NUMBER;
|
|
v_mod NUMBER;
|
|
v_holidays NUMBER;
|
|
v_beginuur NUMBER (5, 2);
|
|
v_einduur NUMBER (5, 2);
|
|
v_correction NUMBER;
|
|
BEGIN
|
|
-- Dit is een maandag, is dat volgens de huidige territory dag 2?
|
|
SELECT TO_NUMBER (TO_CHAR (TO_DATE ('01-01-2007', 'DD-MM-YYYY'), 'D'))
|
|
INTO eikdag
|
|
FROM DUAL;
|
|
|
|
IF eikdag <> 2
|
|
THEN
|
|
-- WE MOETEN met zondag=1 werken (geen nieuwe eis, wel duidelijker probleem)
|
|
raise_application_error (-20000, 'Facilitor: Invalid NLS_TERRITORY');
|
|
END IF;
|
|
|
|
v_date_from := csu_find_prev_workingday (pdate_from);
|
|
v_date_to := csu_find_next_workingday (pdate_to);
|
|
|
|
DBMS_OUTPUT.put_line (
|
|
'v_date_from:' || v_date_from || ' v_date_to:' || v_date_to);
|
|
|
|
-- Determine whole weeks (v_week) and remaining days (v_mod) between FROM and TO
|
|
v_week := TRUNC ( (TRUNC (v_date_to) - TRUNC (v_date_from)) / 7);
|
|
v_mod := MOD ( (TRUNC (v_date_to) - TRUNC (v_date_from)), 7);
|
|
|
|
-- Determine the registered holidays between FROM and TO
|
|
SELECT COUNT ( * )
|
|
INTO v_holidays
|
|
FROM MLD_VRIJE_DAGEN
|
|
WHERE MLD_VRIJE_DAGEN_DATUM BETWEEN v_date_from AND v_date_to;
|
|
|
|
v_beginuur := (TRUNC (v_date_from, 'MI') - TRUNC (v_date_from)) * 24;
|
|
v_einduur := (TRUNC (v_date_to, 'MI') - TRUNC (v_date_to)) * 24;
|
|
|
|
DBMS_OUTPUT.put_line (
|
|
'v_beginuur:' || v_beginuur || ' v_einduur:' || v_einduur);
|
|
|
|
IF v_einduur - v_beginuur > 0
|
|
THEN
|
|
v_correction := v_einduur - v_beginuur;
|
|
ELSE
|
|
v_correction := v_einduur - v_beginuur;
|
|
END IF;
|
|
|
|
DBMS_OUTPUT.put_line( 'v_week:'
|
|
|| v_week
|
|
|| ' v_mod:'
|
|
|| v_mod
|
|
|| ' v_holidays:'
|
|
|| v_holidays
|
|
|| ' v_correction: '
|
|
|| v_correction);
|
|
RETURN 9 * ( (5 * v_week) + v_mod - v_holidays) + v_correction;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
RETURN NULL;
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_export_set_werkplek (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
-- toevoegen gebouwen
|
|
INSERT INTO alg_gebouw (alg_locatie_key,
|
|
alg_srtgebouw_key,
|
|
alg_gebouw_naam,
|
|
alg_gebouw_code)
|
|
SELECT alg_locatie_key,
|
|
40,
|
|
'Onbekend',
|
|
'O'
|
|
FROM alg_locatie l
|
|
WHERE NOT EXISTS (SELECT alg_locatie_key
|
|
FROM alg_gebouw g
|
|
WHERE g.alg_locatie_key = l.alg_locatie_key)
|
|
AND alg_locatie_omschrijving NOT LIKE 'CSU%';
|
|
|
|
-- toevoegen verdiepingen
|
|
INSERT INTO alg_verdieping (alg_gebouw_key,
|
|
alg_verdieping_omschrijving,
|
|
alg_verdieping_volgnr,
|
|
alg_verdieping_code)
|
|
SELECT alg_gebouw_key,
|
|
'Onbekend',
|
|
1,
|
|
'O'
|
|
FROM alg_gebouw g
|
|
WHERE NOT EXISTS (SELECT alg_gebouw_key
|
|
FROM alg_verdieping v
|
|
WHERE v.alg_gebouw_key = g.alg_gebouw_key);
|
|
|
|
-- toevoegen ruimten
|
|
INSERT INTO alg_ruimte (alg_verdieping_key,
|
|
alg_ruimte_nr,
|
|
alg_srtruimte_key,
|
|
alg_ruimte_omschrijving)
|
|
SELECT alg_verdieping_key,
|
|
'-',
|
|
1,
|
|
'Onbekend'
|
|
FROM alg_v_aanwezigverdieping v
|
|
WHERE NOT EXISTS (SELECT alg_verdieping_key
|
|
FROM alg_ruimte r
|
|
WHERE r.alg_verdieping_key = v.alg_verdieping_key);
|
|
|
|
-- toevoegen werkplekken
|
|
INSERT INTO prs_werkplek (prs_werkplek_volgnr, prs_werkplek_virtueel, prs_alg_ruimte_key)
|
|
SELECT 1, 0, alg_ruimte_key
|
|
FROM alg_v_aanwezigruimte r
|
|
WHERE NOT EXISTS
|
|
(SELECT wp.prs_alg_ruimte_key
|
|
FROM prs_werkplek wp
|
|
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
|
AND prs_werkplek_volgnr = 1);
|
|
|
|
-- toevoegen prs_perslidwerkplekken
|
|
INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_perslidwerkplek_bezetting, prs_werkplek_key)
|
|
SELECT prs_perslid_key, 100, prs_werkplek_key
|
|
FROM prs_v_aanwezigperslid p,
|
|
prs_afdeling a,
|
|
alg_onrgoedkenmerk aogk,
|
|
fac_usrdata ud,
|
|
prs_v_werkplek_gegevens wpg
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_afdeling_verwijder IS NULL
|
|
AND (a.prs_afdeling_naam IN
|
|
('Adecco',
|
|
'Manpower',
|
|
'Luba',
|
|
'Servex',
|
|
'USG PA',
|
|
'USG People',
|
|
'NS Retail',
|
|
'DJI')
|
|
AND (EXISTS
|
|
(SELECT gg.prs_perslid_key
|
|
FROM fac_gebruikersgroep gg
|
|
WHERE fac_groep_key = 61
|
|
AND gg.prs_perslid_key = p.prs_perslid_key))
|
|
OR
|
|
( a.prs_afdeling_naam = 'Kentalis'
|
|
AND EXISTS (SELECT alg_onrgoedkenmerk_key
|
|
FROM alg_onrgoedkenmerk aog,
|
|
prs_kenmerklink kl
|
|
WHERE (aog.alg_onrgoedkenmerk_waarde = kl.prs_kenmerklink_waarde
|
|
OR kl.prs_kenmerklink_waarde = 'alles')
|
|
AND aog.alg_onrgoed_key = wpg.alg_locatie_key
|
|
AND kl.prs_link_key = p.prs_perslid_key
|
|
AND aog.alg_kenmerk_key = 1123 -- klantspecifieke regioindeling
|
|
AND kl.prs_kenmerk_key = 1060))) -- klantspecifieke regioautorisatie)
|
|
AND fac.safe_to_number (aogk.alg_onrgoedkenmerk_waarde) =
|
|
fac_usrdata_key
|
|
AND aogk.alg_kenmerk_key = 1000
|
|
AND aogk.alg_onrgoed_key = wpg.alg_locatie_key
|
|
AND wpg.prs_werkplek_volgnr = 1
|
|
AND UPPER (prs_afdeling_naam) LIKE UPPER (fac_usrdata_omschr) || '%'
|
|
AND fac_usrtab_key = 1
|
|
AND NOT EXISTS
|
|
(SELECT prs_perslidwerkplek_key
|
|
FROM prs_perslidwerkplek pwp
|
|
WHERE pwp.prs_perslid_key = p.prs_perslid_key
|
|
AND wpg.prs_werkplek_key = pwp.prs_werkplek_key);
|
|
END;
|
|
/
|
|
|
|
|
|
-- Statusberichten die voor de koppeling met Axxerion op de SFTP server geplaatst worden.
|
|
-- Is copy van RABO
|
|
CREATE OR REPLACE VIEW csun_v_export_status_axxerion (
|
|
result,
|
|
result_order
|
|
)
|
|
AS
|
|
SELECT fac_rapport_regel, fac_rapport_volgnr
|
|
FROM fac_rapport
|
|
WHERE fac_rapport_node = SUBSTR ('STATUS_AXXERION', 1, 12);
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE csun_select_status_axxerion (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
CURSOR c (
|
|
p_from DATE,
|
|
p_to DATE)
|
|
IS
|
|
SELECT mld_melding_externnr,
|
|
fac_tracking_datum,
|
|
DECODE (sn.fac_srtnotificatie_code,
|
|
'MLDACP', 'ACCEPT',
|
|
'MLDREJ', 'REJECT',
|
|
'MLDAFM', 'CLOSE',
|
|
'MLDAFR', 'FINCLOSE',
|
|
'MLDUPD', 'UPDATE',
|
|
'Invalid')
|
|
status,
|
|
mld_melding_einddatum,
|
|
mld_melding_opmerking,
|
|
DECODE (fac_srtnotificatie_code, 'MLDUPD', 1, 0) volgorde
|
|
FROM fac_tracking t, fac_srtnotificatie sn, mld_melding m
|
|
WHERE fac_tracking_datum BETWEEN p_from AND p_to
|
|
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND t.fac_tracking_refkey = m.mld_melding_key
|
|
AND m.mld_melding_externnr IS NOT NULL
|
|
AND m.prs_perslid_key = 8902 -- melding is geinitieerd via de PostNL koppeling.
|
|
AND (sn.fac_srtnotificatie_code = 'MLDACP'
|
|
OR sn.fac_srtnotificatie_code = 'MLDREJ'
|
|
OR sn.fac_srtnotificatie_code = 'MLDAFM'
|
|
OR sn.fac_srtnotificatie_code = 'MLDAFR'
|
|
OR sn.fac_srtnotificatie_code = 'MLDUPD')
|
|
ORDER BY mld_melding_externnr, volgorde, fac_tracking_datum;
|
|
|
|
v_from DATE;
|
|
v_to DATE;
|
|
v_count NUMBER;
|
|
v_externnr VARCHAR2 (10);
|
|
v_bestand VARCHAR2 (100);
|
|
v_empty NUMBER;
|
|
BEGIN
|
|
v_count := 0;
|
|
v_empty := 1;
|
|
v_externnr := '9999';
|
|
v_bestand := SUBSTR (p_applname, 1, 12);
|
|
|
|
-- de laatste synchronisatietijd wordt opgeslagen in fac_rapport met een speciale node naam eindigend op een 1.
|
|
-- mocht deze niet gevuld zijn (initieel) dan gebruiken we het huidige uur.
|
|
BEGIN
|
|
SELECT fac.safe_to_date (fac_rapport_regel, 'yyyy-mm-dd hh24:mi')
|
|
INTO v_from
|
|
FROM fac_rapport
|
|
WHERE SUBSTR (v_bestand, 1, 11) || '1' = fac_rapport_node;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_from := TRUNC (SYSDATE, 'HH24');
|
|
END;
|
|
|
|
-- het einde van de periode mag niet verder liggen dan de huidige tijd
|
|
v_to := v_from + 1 / (24 * 4);
|
|
|
|
IF v_to > SYSDATE
|
|
THEN
|
|
v_to := v_from;
|
|
END IF;
|
|
|
|
-- Eerst opruiming
|
|
DELETE FROM imp_log
|
|
WHERE imp_log_applicatie = p_applname;
|
|
|
|
DELETE fac_rapport
|
|
WHERE fac_rapport_node = v_bestand;
|
|
|
|
-- als de export een tijdje niet gedraaid is dan halen we dit weer in door de periode groter te maken.
|
|
WHILE v_to + 1 / (24 * 4) < SYSDATE AND v_count < 10
|
|
LOOP
|
|
v_to := v_to + 1 / (24 * 4);
|
|
v_count := v_count + 1;
|
|
END LOOP;
|
|
|
|
-- header
|
|
csun_add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
|
csun_add_xml_row (v_bestand, '<facilitor>');
|
|
csun_add_xml_row (v_bestand, '<meldingstatusses>');
|
|
|
|
FOR rec IN c (v_from, v_to)
|
|
LOOP
|
|
v_empty := 0;
|
|
|
|
IF NOT (rec.mld_melding_externnr = v_externnr AND rec.status = 'UPDATE')
|
|
THEN
|
|
v_externnr := rec.mld_melding_externnr;
|
|
csun_add_xml_row (v_bestand, '<meldingstatus key="' || rec.mld_melding_externnr || '">');
|
|
csun_add_xml_element (v_bestand,
|
|
'timestamp',
|
|
TO_CHAR (rec.fac_tracking_datum, 'dd-mm-yyyy hh24:mi'));
|
|
csun_add_xml_element (v_bestand, 'status', rec.status);
|
|
csun_add_xml_element (v_bestand, 'afhandeling', rec.mld_melding_opmerking);
|
|
csun_add_xml_element (v_bestand,
|
|
'oplosdatum',
|
|
TO_CHAR (rec.mld_melding_einddatum, 'dd-mm-yyyy hh24:mi'));
|
|
csun_add_xml_row (v_bestand, '</meldingstatus>');
|
|
END IF;
|
|
END LOOP;
|
|
|
|
csun_add_xml_row (v_bestand, '</meldingstatusses>');
|
|
csun_add_xml_row (v_bestand, '</facilitor>');
|
|
|
|
-- Als er niet geexporteerd is dan gaan we alle regels verwijderen
|
|
-- zodat er niet een leeg xml bestand komt te staan met alleen de facilitor tags.
|
|
IF v_empty = 1
|
|
THEN
|
|
DELETE fac_rapport
|
|
WHERE fac_rapport_node = v_bestand;
|
|
END IF;
|
|
|
|
DELETE fac_rapport
|
|
WHERE fac_rapport_node = SUBSTR (v_bestand, 1, 11) || '1';
|
|
|
|
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel)
|
|
VALUES (SUBSTR (v_bestand, 1, 11) || '1', TO_CHAR (v_to, 'yyyy-mm-dd hh24:mi'));
|
|
END;
|
|
/
|
|
|
|
---- CSUN#25915: Portaal specials...
|
|
---- Drie Grafieken, scope op afdelingnivo1 (BU):
|
|
-- 1. openstaande meldingen per vakgroep.
|
|
-- 2. meldingen per maand.
|
|
-- 3. gemiddelde uitvoertijd per maand.
|
|
|
|
-- 1. openstaande meldingen per vakgroep.
|
|
CREATE OR REPLACE VIEW csun_v_graph_vakgroep_open
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
FCLT_URL,
|
|
FCLT_3D_AFDELING_KEY
|
|
)
|
|
AS
|
|
SELECT sd.ins_srtdiscipline_prefix || '-' || d.ins_discipline_omschrijving,
|
|
COUNT (d.ins_discipline_omschrijving),
|
|
'appl/mld/mld_search.asp?urole=fo' || '&' || 'autosearch=1' || '&' || 'disc_key_str=' || d.ins_discipline_key || '&' || 'dep_key=' || p.prs_afdeling_key,
|
|
p.prs_afdeling_key
|
|
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, prs_perslid p
|
|
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
GROUP BY d.ins_discipline_key, sd.ins_srtdiscipline_prefix || '-' || d.ins_discipline_omschrijving, p.prs_afdeling_key;
|
|
|
|
|
|
-- 2. meldingen per maand.
|
|
CREATE OR REPLACE VIEW csun_v_graph_meldingpm
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
VOLGORDE,
|
|
FCLT_3D_AFDELING_KEY
|
|
)
|
|
AS
|
|
SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
|
|
'01', 'Januari',
|
|
'02', 'Februari',
|
|
'03', 'Maart',
|
|
'04', 'April',
|
|
'05', 'Mei',
|
|
'06', 'Juni',
|
|
'07', 'Juli',
|
|
'08', 'Augustus',
|
|
'09', 'September',
|
|
'10', 'Oktober',
|
|
'11', 'November',
|
|
'December'),
|
|
COUNT (d.ins_discipline_omschrijving),
|
|
TO_CHAR (mld_melding_datum, 'yyyymm'),
|
|
p.prs_afdeling_key
|
|
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, prs_perslid p
|
|
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
|
|
TO_DATE (
|
|
TO_CHAR (SYSDATE, 'yyyymm') || '01',
|
|
'yyyymmdd'),
|
|
-11)
|
|
AND SYSDATE
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm'),p.prs_afdeling_key;
|
|
|
|
-- 3. gemiddelde uitvoertijd per maand.
|
|
CREATE OR REPLACE VIEW csun_v_graph_uitvtijd_pm
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
VOLGORDE,
|
|
FCLT_3D_AFDELING_KEY
|
|
)
|
|
AS
|
|
SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
|
|
'01', 'Januari',
|
|
'02', 'Februari',
|
|
'03', 'Maart',
|
|
'04', 'April',
|
|
'05', 'Mei',
|
|
'06', 'Juni',
|
|
'07', 'Juli',
|
|
'08', 'Augustus',
|
|
'09', 'September',
|
|
'10', 'Oktober',
|
|
'11', 'November',
|
|
'December'),
|
|
AVG(COALESCE (fac.gettrackingdate ('MLDREJ', m.mld_melding_key), COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE)) - m.mld_melding_datum),
|
|
TO_CHAR (mld_melding_datum, 'yyyymm'),
|
|
p.prs_afdeling_key
|
|
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, prs_perslid p
|
|
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
|
|
TO_DATE (
|
|
TO_CHAR (SYSDATE, 'yyyymm') || '01',
|
|
'yyyymmdd'),
|
|
-11)
|
|
AND SYSDATE
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm'),p.prs_afdeling_key;
|
|
|
|
|
|
|
|
------ 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
|
|
|