Files
Customer/CSUN/CSUN.sql
Sander Schepers 607a839fe8 CSUN#68556 Ondersteuning bij vervanging koppeling AS400
Aanroep csun_export_set_werkplek zonder p_import_key

svn path=/Customer/trunk/; revision=68947
2025-05-08 10:07:40 +00:00

9117 lines
391 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;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE 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
-- CSUN#74612. Onderscheid is gemaakt in notificatie-tekst, soms BBer en soms Rayonmanager
-- 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.
-- ook worden meldingen uitgesloten als ze de standaardmelding in de meldinggroep Geen notificatie zit.
-- Deze export wordt voorin putorders.bat aangeroepen zodat hij net op tijd is om extra e-mail
-- notificaties aan te maken. Anderzijds door de putorders verwerking is zowel het origineel als
-- de nieuwe weg zodat een volgende ronde het niet in herhaling valt.
-- Wanneer de Politie Haaglanden gekoppeld kan worden aan een melding (via werkplek) moet de notificatie NIET naar andere personen met een werkplek op die locatie.
CREATE OR REPLACE PROCEDURE csun_export_mailnoti
AS
CURSOR c IS
SELECT DISTINCT
x.mld_melding_key,
DECODE (
COUNT (haaglanden) OVER (PARTITION BY mld_melding_key),
1, 'Politie.Haaglanden@csu.nl',
x.prs_perslid_email) prs_perslid_email,
x.functie
FROM (SELECT DISTINCT
mld_melding_key,
prs_perslid_email,
DECODE (UPPER (prs_perslid_email),
'POLITIE.HAAGLANDEN@CSU.NL', 1,
NULL) haaglanden,
functie
FROM (SELECT m.mld_melding_key,
alg_onrgoedkenmerk_waarde
prs_perslid_email,
mld_melding_status,
mld_stdmelding_key,
'BBer'
functie
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,
mld_melding_status,
mld_stdmelding_key,
'BBer' AS functie
FROM prs_perslid p,
mld_melding m,
alg_locatie l,
alg_locatie l2,
prs_v_werkplekperslid_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 prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_stdmelding_key IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_default_disc IN
(1181, 1183) -- Behandelteams BB en RM/PM & BB
AND mld_stdmelding_verwijder
IS NULL)
UNION ALL --Extra Union in CSUN#85584 (ook bij de WHERE hieronder statussen)
SELECT m.mld_melding_key,
prs_perslid_email,
mld_melding_status,
mld_stdmelding_key,
'BBer' AS functie
FROM prs_perslid p,
mld_melding m,
alg_locatie l,
alg_locatie l2,
prs_v_werkplekperslid_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 prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_stdmelding_key IN
(SELECT m.mld_stdmelding_key
FROM mld_stdmelding m, ins_tab_discipline d
WHERE m.mld_stdmelding_default_disc IN
(1461) -- Behandelteam mutatiebeheer
AND m.mld_ins_discipline_key =
d.ins_discipline_key
AND d.ins_srtdiscipline_key = 2 -- Vakgroeptype Aanvraag
AND m.mld_stdmelding_verwijder IS NULL)
UNION ALL
SELECT m.mld_melding_key,
prs_perslid_email,
mld_melding_status,
mld_stdmelding_key,
DECODE (p.prs_srtperslid_key,
50, 'Rayonmanager',
4041, 'Objectleider') AS functie
FROM prs_perslid p,
mld_melding m,
prs_v_werkplekperslid_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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_stdmelding_key IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_default_disc IN
(1182, 1183) -- Behandelteams RM en RM/PM & BB
AND mld_stdmelding_verwijder
IS NULL)
UNION ALL
SELECT m.mld_melding_key,
'klantsupport@csu.nl',
mld_melding_status,
mld_stdmelding_key,
'Klantsupport' AS functie
FROM mld_melding m
WHERE m.mld_stdmelding_key != 41 -- ontvangen berichten
AND m.mld_stdmelding_key IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_default_disc IN
(1181, 1183) -- Behandelteams BB en RM/PM & BB
AND mld_stdmelding_verwijder
IS NULL)
AND m.mld_alg_locatie_key NOT IN
(SELECT l.alg_locatie_key
FROM prs_perslid p,
alg_locatie l,
alg_locatie l2,
prs_v_werkplekperslid_gegevens
pwpg,
prs_kenmerklink kl
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 prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde =
'1'
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_perslid_email
IS NOT NULL
AND p.prs_perslid_verwijder
IS NULL)
UNION ALL
SELECT m.mld_melding_key,
'klantsupport@csu.nl',
mld_melding_status,
mld_stdmelding_key,
'Klantsupport' AS functie
FROM mld_melding m
WHERE m.mld_stdmelding_key != 41 -- ontvangen berichten
AND m.mld_stdmelding_key IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_default_disc IN
(1182, 1183) -- Behandelteams RM en RM/PM & BB
AND mld_stdmelding_verwijder
IS NULL)
AND m.mld_alg_locatie_key NOT IN
(SELECT pwpg.alg_locatie_key
FROM prs_perslid p,
prs_v_werkplekperslid_gegevens
pwpg,
prs_kenmerklink kl
WHERE 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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde =
'1'
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_perslid_email
IS NOT NULL
AND p.prs_perslid_verwijder
IS NULL)) g
WHERE ( g.mld_melding_status IN (2,
3,
4,
7) -- Ivm CSUN#59537 moet deze notificatie ook pas wanneer deze bij Backoffice staat (status 2/3/4/7) ipv alleen nog in planning bij Frontoffice (status 0)
OR ( g.mld_melding_status IN (5, 6) -- Ivm CSUN#85584 mag de notificatie ook naar BB'ers bij status afgemeld/afgerond, indien de aanvraag/storing/melding tbv behandelteam Mutatiebeheer is.
AND g.functie = 'BBer'
AND g.mld_stdmelding_key IN
(SELECT m.mld_stdmelding_key
FROM mld_stdmelding m,
ins_tab_discipline d
WHERE m.mld_stdmelding_default_disc IN
(1461) -- Behandelteam mutatiebeheer
AND m.mld_ins_discipline_key =
d.ins_discipline_key
AND d.ins_srtdiscipline_key = 2 -- Vakgroeptype Aanvraag
AND m.mld_stdmelding_verwijder
IS NULL)))
AND mld_stdmelding_key NOT IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmeldinggroep_key = 1 OR mld_stdmelding_autoorder = 1) -- Groep 'Niet notificeren' of automatische opdracht (#88126)
AND ( (NOT EXISTS
( SELECT MAX (fac_tracking_key)
FROM fac_tracking t
WHERE ( ( ( fac_tracking_oms LIKE
'Gemaild naar BBer:%'
OR fac_tracking_oms LIKE
'Gemaild naar Rayonmanager:%'
OR fac_tracking_oms LIKE
'Gemaild naar Objectleider:%'
OR fac_tracking_oms LIKE
'Gemaild naar Klantsupport:%')
AND fac_srtnotificatie_key =
111) -- MLDMAI
OR ( UPPER (
fac_tracking_oms) LIKE
'%PLAATS:%'
AND fac_srtnotificatie_key =
41)) -- MLDUPD
AND t.fac_srtnotificatie_key =
111
AND t.fac_tracking_refkey =
g.mld_melding_key
GROUP BY fac_tracking_refkey))
OR ((SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey =
g.mld_melding_key
AND fac_srtnotificatie_key = 41 --MLDUPD
AND UPPER (fac_tracking_oms) LIKE
'%PLAATS:%') >
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey =
g.mld_melding_key
AND fac_srtnotificatie_key = 111 --MLDMAI
AND ( fac_tracking_oms LIKE
'Gemaild naar BBer:%'
OR fac_tracking_oms LIKE
'Gemaild naar Rayonmanager:%'
OR fac_tracking_oms LIKE
'Gemaild naar Objectleider:%'
OR fac_tracking_oms LIKE
'Gemaild naar Klantsupport:%')))))
x;
v_dummy VARCHAR2 (128);
v_pattach VARCHAR2 (4000);
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 DISTINCT n.fac_srtnotificatie_key,
2, -- e-mail
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,
mld_melding m,
prs_perslid p
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 = 'MLDREJ')
AND BITAND (fac_notificatie_status, 2) = 2 -- Alleen als het een e-mail notificatie was
AND km.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND UPPER (mld_kenmerkmelding_waarde) <>
UPPER (p.prs_perslid_email)
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
AND NOT EXISTS --CSUN#79474: Mocht putorders vastlopen, niet onbedoelde (exponentiele) dubbelingen
(SELECT x.fac_notificatie_refkey
FROM fac_notificatie x
WHERE x.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND x.fac_notificatie_refkey =
n.fac_notificatie_refkey
AND x.prs_perslid_key_receiver IS NULL);
FOR rec IN c
LOOP
BEGIN
v_pattach := NULL;
IF rec.prs_perslid_email IS NOT NULL
THEN
SELECT LISTAGG (fac_bijlagen_key, '|')
WITHIN GROUP (ORDER BY fac_bijlagen_key)
INTO v_pattach
FROM fac_bijlagen
WHERE fac_bijlagen_refkey = rec.mld_melding_key
AND fac_bijlagen_module = 'MLD'
AND fac_bijlagen_verwijder IS NULL;
fac.putnotificationsrtprio (
NULL,
NULL,
'MLDMAI',
rec.mld_melding_key,
'BB: Melding '
|| rec.mld_melding_key
|| ' is aan u ('
|| rec.functie
|| ') in behandeling gegeven',
2,
rec.prs_perslid_email,
NULL,
NULL,
2,
NULL,
v_pattach);
fac.trackaction (
'MLDMAI',
rec.mld_melding_key,
4,
NULL,
'Gemaild naar '
|| rec.functie
|| ': '
|| rec.prs_perslid_email);
ELSE
fac.trackaction (
'MLDMAI',
rec.mld_melding_key,
4,
NULL,
'Gemaild naar '
|| rec.functie
|| ': <Geen info gevonden>');
END IF;
END;
END LOOP;
-- Op verzoek van SVB worden mail notificaties naar een mailadres dat bij de locatie geconfigureerd is gestuurd.
UPDATE fac_notificatie n
SET prs_perslid_key_receiver = NULL,
fac_notificatie_receiver_email =
(SELECT aogk.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk, mld_melding m
WHERE aogk.alg_onrgoed_key = m.mld_alg_locatie_key
AND aogk.alg_kenmerk_key = 1320 -- alternatief email adres.
AND n.fac_notificatie_refkey = m.mld_melding_key)
WHERE EXISTS
(SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn,
mld_melding m,
alg_onrgoedkenmerk aogk
WHERE n.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND fac_notificatie_oms NOT LIKE 'BB: %'
AND fac_notificatie_oms NOT LIKE 'Rayonmanager: %'
AND fac_notificatie_oms NOT LIKE 'Objectleider: %'
AND ( sn.fac_srtnotificatie_code = 'MLDNEW'
OR sn.fac_srtnotificatie_code = 'MLDAFM'
OR sn.fac_srtnotificatie_code = 'MLDACP'
OR sn.fac_srtnotificatie_code = 'MLDAFR'
OR sn.fac_srtnotificatie_code = 'MLDUPD'
OR sn.fac_srtnotificatie_code = 'MLDREJ')
AND fac_notificatie_refkey = m.mld_melding_key
AND m.mld_alg_locatie_key = aogk.alg_onrgoed_key
AND aogk.alg_kenmerk_key = 1320);
COMMIT;
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;
-- Hook functie die na het invoeren van een melding aangeroepen wordt.
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_stdmelding_key_old NUMBER;
v_stdmelding_key_new NUMBER;
v_melding_oms_old VARCHAR2(100);
v_melding_oms_new VARCHAR2(100);
v_mld_uitvoertijd_old mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_old mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_mld_uitvoertijd_new mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_mld_accepttijd_new mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_melding_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
v_melding_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
v_melding_einddatum_std DATE;
v_melding_acceptdatum_std DATE;
v_melding_einddatum_old DATE;
v_melding_datum DATE;
v_dienst_key NUMBER(10);
v_typeopdr_key NUMBER(10);
v_bedrijf_key NUMBER(10);
v_opdr_key NUMBER(10);
v_stdmelding_autoorder mld_stdmelding.mld_stdmelding_autoorder%TYPE;
v_locatie_change NUMBER(1);
v_melding_cat VARCHAR2(400);
v_locatie_code VARCHAR2(100);
v_locatie VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_errormsg VARCHAR2(100);
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
BEGIN
v_locatie_change := 0;
SELECT mld_melding_status, mld_alg_locatie_key, prs_perslid_key, mld_stdmelding_key, mld_melding_einddatum, mld_melding_datum, mld_melding_omschrijving
INTO v_melding_status, v_locatie_key, v_perslid_key, v_stdmelding_key_old, v_melding_einddatum_old, v_melding_datum, v_melding_omschrijving
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;
-- Nu gaan we kijken of we de melding aan een locatie kunnen koppelen
-- Hiervoor hebben we een locatiecode en gebouwcode bij de mail melding
-- Bij sommige klanten is de gebouwcode gevuld en bij sommige de locatiecode
v_errormsg := 'Bepalen locatie';
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)
OR v_client = 902 -- Hudson Bay
or v_client = 1262 -- Volksbank
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;
v_locatie_change := 1;
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, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code);
END;
END IF;
-- Nu gaan we kijken of we ook de stdmelding kunnen invullen. Normaal staat deze op mail.
-- Via de koppeling wordt het kenmerk meldingcategorie (key 361) gevuld. Dit is de tekst
-- zoals de klant de melding gekwalificeerd heeft. In de eigen tabel 'Map klantmelding' wordt deze
-- vertaald naar een stdmelding_key.
v_errormsg := 'Bepalen stdmelding';
SELECT MAX(mld_kenmerkmelding_waarde)
INTO v_melding_cat
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = p_key
AND km.mld_kenmerk_key = 361;
-- CSUN#54801 Wanneer geen locatie bij mailmeldingen, dan ook niet de vakgroep herbepalen. Vervolgens notificatie.
IF v_locatie <> 28581 AND v_locatie IS NOT NULL AND v_melding_cat IS NOT NULL -- Locatie key van locatie ONBEKEND
THEN
BEGIN
v_errormsg := 'Bepalen stdmelding (zoek in eigen tabel)';
SELECT fac_usrdata_volgnr
INTO v_stdmelding_key_new
FROM fac_usrdata ud
WHERE ud.fac_usrdata_parentkey = v_client
AND ud.fac_usrtab_key = 101
AND UPPER(ud.fac_usrdata_omschr) = UPPER(SUBSTR(v_melding_cat,1,60));
IF v_stdmelding_key_new <> v_stdmelding_key_old
THEN
v_errormsg := 'Bepalen stdmelding (ophalen omschrijving nieuwe melding)';
SELECT ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving, mld_stdmelding_t_uitvoertijd, mld_stdmelding_t_accepttijd
INTO v_melding_oms_new, v_mld_uitvoertijd_new, v_mld_accepttijd_new
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_stdmelding_key = v_stdmelding_key_new
AND std.mld_ins_discipline_key = d.ins_discipline_key;
v_errormsg := 'Bepalen stdmelding (ophalen omschrijving oude melding)';
SELECT ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving, mld_stdmelding_t_uitvoertijd, mld_stdmelding_t_accepttijd
INTO v_melding_oms_old, v_mld_uitvoertijd_old, v_mld_accepttijd_old
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_stdmelding_key = v_stdmelding_key_old
AND std.mld_ins_discipline_key = d.ins_discipline_key;
v_errormsg := 'Bepalen stdmelding (pas stdmeldingkey aan)';
UPDATE mld_melding SET mld_stdmelding_key = v_stdmelding_key_new,
mld_melding_t_uitvoertijd = v_mld_uitvoertijd_new,
mld_melding_t_accepttijd = v_mld_accepttijd_new
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (bepaal einddatum en accept)';
SELECT mld.geteinddatum(mld_melding_key), mld.getacceptdatum (mld_melding_datum, mld_stdmelding_key, NULL)
INTO v_melding_einddatum_std, v_melding_acceptdatum_std
FROM mld_melding
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (pas std tijden aan)';
UPDATE mld_melding SET mld_melding_einddatum_std = v_melding_einddatum_std,
mld_melding_acceptdatum_std = v_melding_acceptdatum_std
WHERE mld_melding_key = p_key;
v_errormsg := 'Bepalen stdmelding (update tracking)';
fac.trackaction('MLDUPD', p_key, 4, NULL, 'Melding M' || p_key || ' (' || v_melding_oms_new ||') is gewijzigd' || CHR(10) ||
'Melding: ' || v_melding_oms_old || ' --> ' || v_melding_oms_new || CHR(10) ||
'Gereed: ' || TO_CHAR(v_melding_einddatum_old, 'dd-mm-yyyy hh24:mi') || ' --> ' || TO_CHAR(v_melding_einddatum_std, 'dd-mm-yyyy hh24:mi'));
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, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code || '-' || v_melding_cat);
END;
END IF;
BEGIN
-- Nu kijken of we automatisch een opdracht kunnen aanmaken.
IF v_locatie_change = 1 AND v_stdmelding_key_old = 41 AND v_stdmelding_key_new <> 41 -- 41 = Ontvangen mail.
THEN
SELECT mld_stdmelding_autoorder,
ms.prs_dienst_key,
ms.mld_typeopdr_key
INTO v_stdmelding_autoorder,
v_dienst_key,
v_typeopdr_key
FROM mld_stdmelding ms
WHERE mld_stdmelding_key = v_stdmelding_key_new;
-- Heb ik genoeg informatie om een opdracht aan te kunnen maken.
IF v_stdmelding_autoorder = 1 AND v_dienst_key IS NOT NULL AND v_typeopdr_key IS NOT NULL
THEN
SELECT MIN (bdl.prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijfdienstlocatie bdl, prs_v_aanwezigbedrijf b
WHERE bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND bdl.prs_dienst_key = v_dienst_key
AND (bdl.alg_locatie_key = v_locatie_key OR bdl.alg_locatie_key IS NULL);
IF v_bedrijf_key IS NOT NULL
THEN
mld.setmeldingstatus(p_key, 4, v_perslid_key);
INSERT INTO mld_opdr (mld_uitvoerende_keys,
mld_opdr_kosten,
mld_opdr_uurloon,
mld_melding_key,
mld_opdr_module,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_typeopdr_key,
prs_perslid_key,
mld_opdr_omschrijving,
mld_opdr_uren,
mld_opdr_teverzenden)
VALUES (v_bedrijf_key,
0,
0,
p_key,
'MLD',
mld.bepaalopdrmeldingvolgnr (p_key),
v_melding_datum,
v_melding_einddatum_std,
v_typeopdr_key,
v_perslid_key,
v_melding_onderwerp || CHR(10) || v_melding_omschrijving,
0,
1)
RETURNING mld_opdr_key INTO v_opdr_key;
mld.setopdrachtstatus(v_opdr_key, 5, v_perslid_key); -- Uitgegeven
mld.updatemeldingstatus (p_key, 0, v_perslid_key);
END IF;
END IF;
END IF;
EXCEPTION WHEN OTHERS
THEN
-- Waarschijnlijk iets fout gegaan in de configuratie. Opdracht wordt niet aangemaakt.
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving)
VALUES (p_key, 4, 'Opdracht kan niet aangemaakt worden: ' || v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code || '-' || v_melding_cat);
END;
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, v_errormsg || ': ' || v_locatie_code || '-' || v_gebouw_code || '-' || v_melding_cat);
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,
pemailkey IN NUMBER)
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;
v_new NUMBER; -- vlag om te testen of het om een nieuwe melding gaat.
BEGIN
v_new := 0;
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 --CSUN#76149: Niet meer kijken naar prs_perslid_email
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@%' OR UPPER (pto) LIKE 'KLANTSUPPORT@%'
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, '&#x20;', ' '); -- spatie
v_body := REPLACE(v_body, '&#x21;', '!');
v_body := REPLACE(v_body, '&#x22;', CHR(34)); -- double quote
v_body := REPLACE(v_body, '&#x23;', '#');
v_body := REPLACE(v_body, '&#x24;', '$');
v_body := REPLACE(v_body, '&#x25;', '%');
v_body := REPLACE(v_body, '&#x26;', '&');
v_body := REPLACE(v_body, '&#x27;', CHR(39)); -- single quote
v_body := REPLACE(v_body, '&#x28;', '(');
v_body := REPLACE(v_body, '&#x29;', ')');
v_body := REPLACE(v_body, '&#x2a;', '*');
v_body := REPLACE(v_body, '&#x2b;', '+');
v_body := REPLACE(v_body, '&#x2c;', ','); -- komma
v_body := REPLACE(v_body, '&#x2d;', '-'); -- min teken
v_body := REPLACE(v_body, '&#x2e;', '.'); -- punt
v_body := REPLACE(v_body, '&#x2f;', '/');
v_body := REPLACE(v_body, '&#x3a;', ':'); -- dubbele punt
v_body := REPLACE(v_body, '&#x3b;', ';'); -- punt komma
v_body := REPLACE(v_body, '&#x3c;', '<');
v_body := REPLACE(v_body, '&#x3d;', '=');
v_body := REPLACE(v_body, '&#x3e;', '>');
v_body := REPLACE(v_body, '&#x3f;', '?');
v_body := REPLACE(v_body, '&#x40;', '@');
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;
-- bij Engie gaan we de html body nog even opschonen
IF sender = 23221
THEN
-- pas de omschrijving van de melding aan. Verwijder onnodige html ballast.
v_body := REPLACE(v_body, '&#x20;', ' '); -- spatie
v_body := REPLACE(v_body, '&#x21;', '!');
v_body := REPLACE(v_body, '&#x22;', CHR(34)); -- double quote
v_body := REPLACE(v_body, '&#x23;', '#');
v_body := REPLACE(v_body, '&#x24;', '$');
v_body := REPLACE(v_body, '&#x25;', '%');
v_body := REPLACE(v_body, '&#x26;', '&');
v_body := REPLACE(v_body, '&#x27;', CHR(39)); -- single quote
v_body := REPLACE(v_body, '&#x28;', '(');
v_body := REPLACE(v_body, '&#x29;', ')');
v_body := REPLACE(v_body, '&#x2a;', '*');
v_body := REPLACE(v_body, '&#x2b;', '+');
v_body := REPLACE(v_body, '&#x2c;', ','); -- komma
v_body := REPLACE(v_body, '&#x2d;', '-'); -- min teken
v_body := REPLACE(v_body, '&#x2e;', '.'); -- punt
v_body := REPLACE(v_body, '&#x2f;', '/');
v_body := REPLACE(v_body, '&#x3a;', ':'); -- dubbele punt
v_body := REPLACE(v_body, '&#x3b;', ';'); -- punt komma
v_body := REPLACE(v_body, '&#x3c;', '<');
v_body := REPLACE(v_body, '&#x3d;', '=');
v_body := REPLACE(v_body, '&#x3e;', '>');
v_body := REPLACE(v_body, '&#x3f;', '?');
v_body := REPLACE(v_body, '&#x40;', '@');
v_body := REPLACE(v_body, ' ' || CHR (10) || CHR (13), CHR (10) || CHR (13)); -- soms komt er ineens een een spatie achter de tag.
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;
-- 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;
-- CSUN#83838:
-- Bij Artez proberen we het meldingsnummer op te zoeken in de body, achter 'Meldingnummer: '. Daar staat dan het Topdesk-nr.
-- Dan willen we daarmee het onderwerp van de melding gaan vullen
-- Bovendien willen we dit dan ook vullen in het veld extern nr
-- Het meldingnummer vanuit Topdesk kent ook spaties, daar wordt rekening mee gehouden.
IF v_client = 4241 -- Artez
THEN
v_externnr := REGEXP_SUBSTR(v_body, 'Meldingnummer: ([0-9 ]+)', 1, 1, NULL, 1);
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;
EXCEPTION WHEN OTHERS
THEN
mldkey := NULL;
stdmelding := NULL;
END;
END IF;
-- Onderstaande query los van bovenstaande voor de performance (CSUN#80929)
IF mldkey IS NULL
THEN
BEGIN
-- controleren of we deze melding al eerder ontvangen hebben en dit een update / reminder betreft.
SELECT m.mld_melding_key, m.mld_stdmelding_key
INTO mldkey, stdmelding
FROM mld_melding m, mld_kenmerkmelding km, mld_kenmerk k
WHERE m.prs_perslid_key = sender
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2 -- Werkbon/Opdracht nr. klant
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
UPDATE mld_melding
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
WHERE mld_melding_key = mldkey;
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'));
v_new := 1; -- nieuwe melding
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
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,
DECODE(v_client, 4241, v_externnr, NULL), --Client 4241 = Artez (CSUN#83838)
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;
-- originele email wordt opgeslagen bij de melding
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkorgmailpath',
'MLD\M' || TO_CHAR (TRUNC (mldkey / 1000), 'FM0000') || '___\M' || mldkey || '\' || 1561 || '\');
END IF;
ELSE
errormsg := '(0x187)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Uw email kan niet worden verwerkt. Neem contact op met klantsupport@csu.nl voor meer informatie. Foutcode '
|| errormsg);
END CASE;
-- alleen locatiekenmerk aanmaken als het een nieuwe melding betreft. Anders krijgen we dubbele kenmerken.
IF v_locatie_code IS NOT NULL AND v_new = 1
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
-- Verwijder records uit de fac_rapport tabel omdat de key uniek moet zijn.
DELETE fac_rapport WHERE fac_rapport_volgnr = mldkey;
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',
'Uw email kan niet worden verwerkt. Neem contact op met klantsupport@csu.nl voor meer informatie. Foutcode '
|| 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 FORCE 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,
uitgevoerd_door,
status,
afhandeltijd_dagen,
afhandeltijd_uren,
afmeld_tekst,
afmeld_key,
oorzaakvanproblemen,
adhocoplossing,
boetevoorkomen
)
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,
tr2.prs_perslid_naam_full,
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,
m.mld_melding_opmerking,
COALESCE (
(SELECT MAX (ma.mld_afmeldtekst_key)
FROM mld_afmeldtekst ma
WHERE m.mld_stdmelding_key = ma.mld_stdmelding_key
AND TRIM (m.mld_melding_opmerking) =
TRIM (ma.mld_afmeldtekst_omschrijving)),
(SELECT MAX (ma.mld_afmeldtekst_key)
FROM mld_afmeldtekst ma
WHERE d.ins_discipline_key = ma.mld_ins_discipline_key
AND TRIM (m.mld_melding_opmerking) =
TRIM (ma.mld_afmeldtekst_omschrijving)))
AS afmeld_key,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key IN (1601,
1944,
1902,
1941,
1961,
1841,
1842,
1843,
1844,
1845,
1781))
oorzaakvanproblemen,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key IN (1602,
1945,
1903,
1924,
1962,
1861,
1862,
1863,
1881,
1883,
1782))
adhocoplossing,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key IN (1603,
1946,
1904,
1923,
1963,
1884,
1885,
1886,
1887,
1888,
1783))
boetevoorkomen
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,
p.prs_perslid_naam_full
FROM fac_tracking t,
fac_srtnotificatie srt,
prs_v_perslid_fullnames p
WHERE t.fac_srtnotificatie_key = srt.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'MLDAFM'
AND p.prs_perslid_key = t.prs_perslid_key) 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 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,
rm_pm
)
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,
(SELECT MAX (prs_perslid_naam_full)
|| DECODE (COUNT (p.prs_perslid_key), 1, '', '*')
FROM csun_imp_project i,
alg_locatie l1,
prs_perslid p,
prs_v_perslid_fullnames pf,
alg_v_ruimte_gegevens rg
WHERE (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120 -- Kostenplaats CSU
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || i.rayonl_persnr || '%'
AND 'P' || i.project = l1.alg_locatie_code
AND l1.alg_locatie_key = rg.alg_locatie_key
AND rg.alg_ruimte_nr = '-'
AND prs_srtperslid_key IN (50, 4041) -- rayonleider
AND prs_perslid_verwijder IS NULL
AND pf.prs_perslid_key = p.prs_perslid_key
AND l.alg_locatie_key = l1.alg_locatie_key) RM_PM
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 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;
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_rayonl_mail VARCHAR2 (255); -- 200
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 (voorheen 'Geocode', nu kostenplaats(en))
fac.imp_getfield (v_newline, c_fielddelimitor, v_rayonl_naam); -- FPRLNM
--fac.imp_getfield (v_newline, c_fielddelimitor, v_rayonl_mail);
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),
--SUBSTR(TRIM(v_rayonl_mail),1,200),
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:de
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
AND l.alg_locatie_key NOT IN
(SELECT b.fac_bijlagen_refkey
FROM fac_bijlagen b, alg_kenmerk bkm
WHERE b.fac_bijlagen_refkey = l.alg_locatie_key
AND bkm.alg_kenmerk_key =
b.fac_bijlagen_kenmerk_key
AND bkm.alg_kenmerk_niveau = 'L' --Enkel wanneer er op locatieniveau kenmerken zijn toegevoegd.
AND b.fac_bijlagen_module = 'ALG' -- Enkel bijlagen komend uit deze module (geen res/mld/etc).
AND bkm.alg_kenmerk_kenmerktype IN ('M', 'F') -- Enkel kenmerksoorten obv map met bijlage of enkele bijlage
AND b.fac_bijlagen_verwijder IS NULL);
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--,
--kenmerk1 AS rayonl_mail
FROM csun_imp_project
WHERE rayonl_naam IS NOT NULL;
CURSOR c_rayon_wp
IS
SELECT p.prs_perslid_key, rg.alg_ruimte_key
FROM csun_imp_project i,
alg_locatie l,
prs_perslid p,
alg_v_ruimte_gegevens rg
WHERE --i.kenmerk1 = p.prs_perslid_email
(SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120 -- Kostenplaats CSU
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P')
LIKE
'%' || i.rayonl_persnr || '%'
AND 'P' || i.project = l.alg_locatie_code
AND l.alg_locatie_key = rg.alg_locatie_key
AND rg.alg_ruimte_nr = '-'
AND prs_srtperslid_key = 50 -- rayonleider
AND prs_perslid_verwijder IS NULL
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);
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
AND fac_usrdata_verwijder IS NULL;
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;
--Eerst leegmaken
v_district_key := NULL;
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_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE SUBSTR (alg_locatie_code, 2, 50) =
rec.project
AND alg_locatie_verwijder IS NULL
AND alg_locatie_vervaldatum 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, binnen hetzelfde district.
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;
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_gebouw_verwijder IS NULL
AND 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
v_perslid_key := NULL;
-- Een rayonleider kan meerdere kostenplaatsen hebben
SELECT MAX (p.prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
--AND p.prs_perslid_email = rec_ray.rayonl_mail;
AND
(SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120 -- Kostenplaats CSU
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || rec_ray.rayonl_persnr || '%';
IF v_perslid_key IS NULL
THEN
-- nieuwe rayonleider aanmaken tijdelijk onder CSU NA.
--v_error_hint :=
-- 'Aanmaken Rayonmanager: '
-- || rec_ray.voornaam
-- || ' '
-- || rec_ray.achternaam;
INSERT INTO prs_perslid (prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_voornaam --,
--prs_perslid_email
)
VALUES (50,
1,
rec_ray.achternaam,
rec_ray.voornaam --,
--rec_ray.rayonl_mail
)
RETURNING prs_perslid_key
INTO v_perslid_key;
IF v_perslid_key IS NOT NULL -- Met CSUN#87067 schrijven we kostenplaats niet meer als persnr weg, maar in een kenmerkveld
THEN
csun_set_kenmerk ('PRS',
1120,
v_perslid_key,
rec_ray.rayonl_persnr,
0);
fac.trackaction ('PRSUPD',
v_perslid_key,
4, -- Facilitor
NULL,
'Kostenplaats CSU -> ' || rec_ray.rayonl_persnr);
END IF;
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;
-- v_error_hint :=
-- 'Notificatie nieuwe Rayonmanager: '
-- || rec_ray.voornaam
-- || ' '
-- || v_tussenv
-- || ' '
-- || rec_ray.achternaam;
--
-- fac.trackaction ('CUST13',
-- v_perslid_key,
-- 4, --Facilitor
-- NULL,
-- 'Er is voor u een account aangemaakt');
END IF;
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.
FOR rec IN c_rayon_wp
LOOP
prs.movetoruimte (rec.prs_perslid_key,
rec.alg_ruimte_key,
'L',
1);
END LOOP;
-- 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,
alg_locatie l
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
AND p.prs_srtperslid_key = 50 -- Rayonleider
AND l.alg_locatie_key = pwpg.alg_locatie_key
AND l.alg_locatie_code LIKE 'P%'
AND NOT EXISTS
(SELECT i.project
FROM csun_imp_project i, alg_locatie l
WHERE (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120 -- Kostenplaats CSU
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || i.rayonl_persnr || '%'
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
CREATE OR REPLACE PROCEDURE csun_export_set_werkplek (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT prs_perslid_key, rg.alg_ruimte_key
FROM prs_v_aanwezigperslid p,
prs_afdeling a,
alg_onrgoedkenmerk aogk,
fac_usrdata ud,
alg_v_ruimte_gegevens rg,
alg_locatie l
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 -- Klant
AND gg.prs_perslid_key =
p.prs_perslid_key))
OR ( EXISTS
(SELECT alg_onrgoedkenmerk_key
FROM alg_onrgoedkenmerk aog,
prs_kenmerklink kl
WHERE ( ( aog.alg_onrgoedkenmerk_waarde =
kl.prs_kenmerklink_waarde
AND aog.alg_kenmerk_key = 1123 -- klantspecifieke regioindeling
AND aog.alg_onrgoed_key =
rg.alg_locatie_key)
OR (UPPER(kl.prs_kenmerklink_waarde) =
'ALLES'))
AND kl.prs_link_key = p.prs_perslid_key
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 = rg.alg_locatie_key
AND UPPER (prs_afdeling_omschrijving) LIKE
UPPER (fac_usrdata_omschr) || '%'
AND fac_usrtab_key = 1
AND rg.alg_ruimte_nr = '-'
AND l.alg_locatie_key = rg.alg_locatie_key
AND l.alg_locatie_verwijder IS NULL
AND NOT EXISTS
(SELECT prs_perslidwerkplek_key
FROM prs_perslidwerkplek pwp, prs_werkplek wp
WHERE pwp.prs_perslid_key = p.prs_perslid_key
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_alg_ruimte_key = rg.alg_ruimte_key);
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 g.alg_gebouw_verwijder IS NULL)
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
AND v.alg_verdieping_verwijder IS NULL);
-- 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
AND r.alg_ruimte_verwijder IS NULL);
FOR rec IN c
LOOP
prs.movetoruimte (rec.prs_perslid_key,
rec.alg_ruimte_key,
'L',
1);
END LOOP;
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;
CREATE OR REPLACE VIEW CSUN_V_UDR_MELDING
(
MELDING_KEY,
MELDINGNUMMER,
MELDING_START_KEY,
EXTERNNUMMER,
MELDING_REGIO,
MELDING_DISTRICT,
MELDING_LOCATIECODE,
MELDING_LOCATIE,
MELDING_LOCATIEPLAATS,
FCLT_3D_LOCATIE_KEY,
MELDING_GEBOUWCODE,
MELDING_GEBOUW,
MELDING_VERDIEPING,
MELDING_RUIMTENR,
MELDING_RUIMTE,
MELDING_ORDERNR,
KOSTENSOORTGROEP,
KOSTENSOORT,
KOSTENPLAATS,
KOSTENPLAATS_OMS,
MELDER,
MELDER_KEY,
AFDELING,
AFDELING_OMSCHRIJVING,
FCLT_3D_AFDELING_KEY,
BEDRIJF_KEY,
INVOERDER,
MELDBRON,
SOORTMELDING,
FCLT_3D_DISCIPLINE_KEY,
PRODUCTGROEP,
SUBPRODUCTGROEP,
BEHANDELGROEP,
BEHANDELAAR,
BEHANDELAAR_KEY,
SUBPRODUCTGROEPGROEP,
FCLT_3D_DISCIPLINE2_KEY,
ACTIEVE_BEHANDELGROEP,
ACTIEVE_BEHANDELAAR_KEY,
ACTIEVE_BEHANDELAAR,
MELDING_STATUS,
SLA_NVT,
SLA_WERKDGN,
SLA_WERKUREN,
SLA_RESPIJTDGN,
SLA_RESPIJTUREN,
SLA_ACCPTDGN,
SLA_ACCPTUREN,
PLAN_UITVOERTIJD_SLA,
MELDING_DATUM,
MELDING_EINDDATUM,
MELDING_EINDDATUM_STD,
MELDING_ACCEPTDATUM,
MELDING_AFGEMELD,
MELDING_ACCEPTED,
DOORLOOPTIJD_WERKDGN,
DOORLOOPTIJD_WERKUREN,
ONDERWERP,
VOMSCHRIJVING,
MELDING_OPMERKING,
PRIORITEIT,
PRIORITEITTXT,
RATING,
RATING_OPMERKING,
BOLLETJE,
ACTIECODE,
ACCEPT_SLA_DAGEN,
ACCEPT_SLA_UREN,
UITVOERING_SLA_DAGEN,
UITVOERING_SLA_UREN,
AFSPRAAK_SLA_DAGEN,
AFSPRAAK_SLA_UREN,
ACCEPT_SLA_OPTIJD,
UITVOERING_SLA_OPTIJD,
AFSPRAAK_SLA_OPTIJD,
SELFSERVICE,
WERKBON_OPDRACHT_NR,
KOSTEN,
OFFERTE_BEDRAG,
EINDDATUM_KLANT,
KLANTKENMERK,
KLANTSPEC_REGIO_INDELING,
OPDRACHTNUMMER_CSU,
AKKOORD_KLANT,
DATUM_AFRONDING,
DATUM_FACTURATIE,
ACCOUNTCODE,
FCLT_F_CLIENT,
TIJDSTIP,
AFHANDELTIJD_DAGEN,
AFHANDELTIJD_UREN,
REACTIE,
REACTIE_OPTIJD,
UITGEVOERD,
UITGEVOERD_DOOR,
AFMELD_KEY,
GEGROND_ONGEGROND,
FUNCTIE_AFMELDER,
STARTMELDING
)
AS
SELECT m."MELDING_KEY",
m."MELDINGNUMMER",
m."MELDING_START_KEY",
m."EXTERNNUMMER",
m."MELDING_REGIO",
m."MELDING_DISTRICT",
m."MELDING_LOCATIECODE",
m."MELDING_LOCATIE",
m."MELDING_LOCATIEPLAATS",
m."FCLT_3D_LOCATIE_KEY",
m."MELDING_GEBOUWCODE",
m."MELDING_GEBOUW",
m."MELDING_VERDIEPING",
m."MELDING_RUIMTENR",
m."MELDING_RUIMTE",
m."MELDING_ORDERNR",
m."KOSTENSOORTGROEP",
m."KOSTENSOORT",
m."KOSTENPLAATS",
m."KOSTENPLAATS_OMS",
m."MELDER",
m."MELDER_KEY",
m."AFDELING",
m."AFDELING_OMSCHRIJVING",
m."FCLT_3D_AFDELING_KEY",
m."BEDRIJF_KEY",
m."INVOERDER",
m."MELDBRON",
m."SOORTMELDING",
m."FCLT_3D_DISCIPLINE_KEY",
m."PRODUCTGROEP",
m."SUBPRODUCTGROEP",
m."BEHANDELGROEP",
m."BEHANDELAAR",
m."BEHANDELAAR_KEY",
m."SUBPRODUCTGROEPGROEP",
m."FCLT_3D_DISCIPLINE2_KEY",
m."ACTIEVE_BEHANDELGROEP",
m."ACTIEVE_BEHANDELAAR_KEY",
m."ACTIEVE_BEHANDELAAR",
m."MELDING_STATUS",
m."SLA_NVT",
m."SLA_WERKDGN",
m."SLA_WERKUREN",
m."SLA_RESPIJTDGN",
m."SLA_RESPIJTUREN",
m."SLA_ACCPTDGN",
m."SLA_ACCPTUREN",
m."PLAN_UITVOERTIJD_SLA",
m."MELDING_DATUM",
m."MELDING_EINDDATUM",
m."MELDING_EINDDATUM_STD",
m."MELDING_ACCEPTDATUM",
m."MELDING_AFGEMELD",
m."MELDING_ACCEPTED",
m."DOORLOOPTIJD_WERKDGN",
m."DOORLOOPTIJD_WERKUREN",
m."ONDERWERP",
m."VOMSCHRIJVING",
m."MELDING_OPMERKING",
m."PRIORITEIT",
m."PRIORITEITTXT",
m."RATING",
m."RATING_OPMERKING",
m."BOLLETJE",
m."ACTIECODE",
m."ACCEPT_SLA_DAGEN",
m."ACCEPT_SLA_UREN",
m."UITVOERING_SLA_DAGEN",
m."UITVOERING_SLA_UREN",
m."AFSPRAAK_SLA_DAGEN",
m."AFSPRAAK_SLA_UREN",
m."ACCEPT_SLA_OPTIJD",
m."UITVOERING_SLA_OPTIJD",
m."AFSPRAAK_SLA_OPTIJD",
m."SELFSERVICE",
(SELECT DISTINCT (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 2
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
werkbon_opdracht_nr,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 101
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
kosten,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 141
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
offerte_bedrag,
(SELECT DISTINCT (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 161
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
einddatum_klant,
(SELECT DISTINCT (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aok
WHERE alg_kenmerk_key = 1240
AND aok.alg_onrgoed_key = fclt_3d_locatie_key
AND alg_onrgoedkenmerk_verwijder IS NULL)
klantkenmerk,
(SELECT DISTINCT (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aok
WHERE alg_kenmerk_key = 1123
AND aok.alg_onrgoed_key = fclt_3d_locatie_key
AND alg_onrgoedkenmerk_verwijder IS NULL)
klantspec_regio_indeling,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 661
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
opdrachtnummer_csu,
(SELECT DISTINCT (ud.fac_usrdata_omschr)
FROM mld_kenmerkmelding mk, mld_kenmerk k, fac_usrdata ud
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 681
AND ud.fac_usrtab_key = 261 -- Eigen tabel ja/nee
AND ud.fac_usrdata_key =
fac.safe_to_number (mld_kenmerkmelding_waarde)
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
akkoord_klant,
fac.gettrackingdate ('MLDAFR', m.melding_key),
TO_DATE (DECODE (fac.gettrackingdate ('MLDAFR', m.melding_key),
NULL, DECODE ((SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 101
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL), NULL, NULL, m."MELDING_AFGEMELD"),
fac.gettrackingdate ('MLDAFR', m.melding_key))) datum_facturatie,
mc.accountcode,
mc.fclt_f_client,
mc.tijdstip,
mc.afhandeltijd_dagen,
mc.afhandeltijd_uren,
mc.reactie,
mc.reactie_optijd,
mc.uitgevoerd,
mc.uitgevoerd_door,
mc.afmeld_key,
(SELECT DISTINCT (ud.fac_usrdata_omschr)
FROM mld_kenmerkmelding mk, mld_kenmerk k, fac_usrdata ud
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 741 -- Kenmerksoort Gegrond/ongegrond
AND ud.fac_usrtab_key = 301 -- Eigen tabel Gegrond/ongegrond
AND ud.fac_usrdata_key =
fac.safe_to_number (mld_kenmerkmelding_waarde)
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
gegrond_ongegrond,
(SELECT x.prs_srtperslid_omschrijving
FROM (SELECT MAX (sp.prs_srtperslid_omschrijving)
AS prs_srtperslid_omschrijving,
m.mld_melding_key
FROM fac_tracking t,
prs_perslid p,
prs_srtperslid sp,
mld_melding m
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = t.prs_perslid_key(+)
AND t.fac_tracking_refkey = m.mld_melding_key
AND fac_srtnotificatie_key = 35
GROUP BY m.mld_melding_key) x
WHERE x.mld_melding_key = m.melding_key)
functie_afmelder,
(DECODE (m.melding_start_key, m.melding_key, 1, NULL, 1, 0))
startmelding
FROM mld_v_udr_melding m, csun_v_rap_melding mc
WHERE mc.melding = m.melding_key;
-- CSUN#54801 Wanneer geen locatie bij mailmeldingen, dan ook niet de vakgroep herbepalen. Vervolgens notificatie.
CREATE OR REPLACE VIEW csun_v_rap_mldmail_nobo
(
melding_nr,
melding_datum,
melding_omschrijving,
melding_opmerking,
lockey,
locatie,
voor,
melding_externnr,
gebouwcode_klant,
locatiecode_klant
)
AS
SELECT m.mld_melding_key,
m.mld_melding_datum,
SUBSTR (m.mld_melding_omschrijving,
1,
INSTR (m.mld_melding_omschrijving, CHR (13)))
AS omschrijving,
m.mld_melding_opmerking,
m.mld_alg_locatie_key,
l.alg_locatie_omschrijving,
p.prs_perslid_naam AS voor,
m.mld_melding_externnr,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key = m.mld_melding_key
AND mk.mld_kenmerk_key = mkm.mld_kenmerk_key
AND mk.mld_srtkenmerk_key = 201)
AS gebouwcode_klant, -- Key voor kenmerksoort Gebouwcode klant
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm, mld_kenmerk mk
WHERE mkm.mld_melding_key = m.mld_melding_key
AND mk.mld_kenmerk_key = mkm.mld_kenmerk_key
AND mk.mld_srtkenmerk_key = 181)
AS locatiecode_klant -- Key voor kenmerksoort Locatiecode klant
FROM mld_melding m, alg_locatie l, prs_perslid p
WHERE m.mld_melding_status NOT IN (1, 5)
AND m.mld_stdmelding_key = 41
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND m.prs_perslid_key_voor = p.prs_perslid_key;
CREATE OR REPLACE VIEW csun_v_noti_mldmail_nobo
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT
'CUST01' AS code,
NULL,
13141, -- Persoon Servicedesk NA (voor emailadres: Servicedesk.na@csu.nl).
'Attentie: deze meldingen zijn niet automatisch doorgezet naar de juiste vakgroep en/of locatie',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'CSUN_V_RAP_MLDMAIL_NOBO')
rapportnr,
NULL
FROM csun_v_rap_mldmail_nobo;
--CSUN#53832 Deze notificatie zorgt ervoor dat de districtmanager wordt genotificeerd over alle notities die worden ingevoerd bij meldingen waaraan geen behandelaar is gekoppeld.
CREATE OR REPLACE VIEW csun_v_noti_mldnote_nobo
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST02' AS code,
NULL AS sender,
(SELECT fac.safe_to_number (km.alg_onrgoedkenmerk_waarde)
FROM alg_v_aanwezigonrgoedkenmerk km
WHERE km.alg_onrgoed_niveau = 'D'
AND km.alg_kenmerk_key = 1021
AND km.alg_onrgoed_key = l.alg_district_key)
AS receiver,
'Er is een opmerking geplaatst bij melding '
|| m.mld_melding_key
|| ' ('
|| COALESCE (m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving)
|| ')'
AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM mld_melding_note n,
mld_melding m,
alg_v_locatie_gegevens l,
mld_stdmelding sm
WHERE n.mld_melding_key = m.mld_melding_key
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_behandelaar_key IS NULL
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND ( (TO_CHAR (n.mld_melding_note_aanmaak, 'HH24') =
TO_CHAR (SYSDATE, 'HH24') - 1 --Vandaag, een uur geleden
AND TRUNC (n.mld_melding_note_aanmaak) = TRUNC (SYSDATE))
OR (TO_CHAR (n.mld_melding_note_aanmaak, 'HH24') =
TO_CHAR (SYSDATE, 'HH24') - 1 --Gisteren, een uur geleden
AND TRUNC (n.mld_melding_note_aanmaak) =
TRUNC (SYSDATE) - 1));
-- CSUN#60798 Notificatie om gebruikers te berichten wanneer een klant akkoord heeft gegeven in een workflow aanvraag contractmutatie
CREATE OR REPLACE VIEW csun_v_rap_wfcntraanvraag
(
melding_nr,
melding_datum,
melding_einddatum,
melding_onderwerp,
standaardmelding,
melding_omschrijving,
melding_opmerking
)
AS
SELECT m.mld_melding_key,
m.mld_melding_datum,
m.mld_melding_einddatum,
m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving,
m.mld_melding_omschrijving,
m.mld_melding_opmerking
FROM mld_melding m,
mld_kenmerkmelding kmm,
mld_kenmerk km,
mld_srtkenmerk sk,
mld_stdmelding sm,
fac_tracking t,
fac_srtnotificatie sn
WHERE m.mld_stdmelding_key IN (1241,1281) -- Klant, ontvangst calculatie & herkansing
AND m.mld_melding_status = 5 -- Afgemeld
AND sk.mld_srtkenmerk_key = 601 -- Klant akkoord
AND kmm.mld_kenmerkmelding_waarde = '1861' -- Ja
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sk.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
AND kmm.mld_melding_key = m.mld_melding_key
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM';
--CSUN#60798 Notificatie aan medewerker bedrijfsbureau en calculators indien klant akkoord is.
CREATE OR REPLACE VIEW csun_v_noti_wfcntraanvraag
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST03' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Klant heeft akkoord gegeven op calculatie bij melding: '
|| m.melding_nr
|| ' ('
|| COALESCE (m.melding_onderwerp, m.standaardmelding)
|| ')'
AS text,
m.melding_nr AS key,
NULL AS extra_key
FROM csun_v_rap_wfcntraanvraag m,
prs_perslid p,
fac_v_rap_groepleden agl,
fac_groep g
WHERE p.prs_perslid_oslogin = agl.fclt_f_login
AND g.fac_groep_key IN (461) --autorisatiegroep BB NA
AND g.fac_groep_omschrijving = agl.fclt_f_groep
AND m.melding_nr NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms LIKE '%CUST03%'
AND t.fac_tracking_refkey = m.melding_nr)
ORDER BY key, receiver;
--CSUN#60798 Notificatie aan accountmanagers als er voor zijn klant/locatie een actie openstaat
CREATE OR REPLACE VIEW csun_v_noti_wfcntr_accm
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST04' AS code,
NULL AS sender,
(SELECT ud_a.fac_usrdata_prijs -- Hier wordt de prs_perslid_key van de betreffende accountmanager vastgelegd.
FROM alg_onrgoedkenmerk aogc, fac_usrdata ud_a
WHERE aogc.alg_onrgoed_key = m.mld_alg_locatie_key
AND aogc.alg_kenmerk_key = 1000 --Kenmerk Client bij locatie (1801 in ACCP)
AND aogc.alg_onrgoed_niveau = 'L'
and ud_a.fac_usrtab_key = 1 -- Eigen tabel 'Client'
and ud_a.fac_usrdata_key = aogc.alg_onrgoedkenmerk_waarde)
AS receiver,
('Er staat een actie voor u klaar mbt een aanvraag contractmutatie')
AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM mld_melding m, mld_stdmelding sm
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 862 -- Vakgroep Accountmanagers
AND m.mld_melding_status IN (2, 3, 4) -- Nieuw, Te accepteren, In behandeling
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms like '%CUST04%'
AND t.fac_tracking_refkey = m.mld_melding_key);
--CSUN#60798 Notificatie aan accountmanagers (via kenmerk bij locatie) en calculators (via autorisatiegroep) indien klant niet akkoord is.
CREATE OR REPLACE VIEW csun_v_noti_wfcntr_cancel
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST05' AS code,
NULL AS sender,
(SELECT ud_a.fac_usrdata_prijs -- Hier wordt de prs_perslid_key van de betreffende accountmanager vastgelegd.
FROM alg_onrgoedkenmerk aogc, fac_usrdata ud_a
WHERE aogc.alg_onrgoed_key = m.mld_alg_locatie_key
AND aogc.alg_kenmerk_key = 1000 --Kenmerk Client bij locatie (1801 in ACCP)
AND aogc.alg_onrgoed_niveau = 'L'
and ud_a.fac_usrtab_key = 1 -- Eigen tabel 'Client'
and ud_a.fac_usrdata_key = aogc.alg_onrgoedkenmerk_waarde)
AS receiver,
('Een klant heeft een calculatie mbt een aanvraag contractmutatie niet akkoord bevonden')
AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM mld_melding m,
mld_stdmelding sm,
mld_kenmerkmelding kmm,
mld_kenmerk km
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = kmm.mld_melding_key
AND sm.mld_ins_discipline_key = 861 --Vakgroep klant
AND km.mld_srtkenmerk_key = 601 -- Kenmerksoort Klant akkoord
AND kmm.mld_kenmerkmelding_waarde = '1862' -- Niet akkoord
AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
AND m.mld_melding_status IN (1, 5) --Afgewezen, Afgemeld
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms like '%CUST05%'
AND t.fac_tracking_refkey = m.mld_melding_key)
UNION ALL
SELECT 'CUST05' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
('Een klant heeft een calculatie mbt een aanvraag contractmutatie niet akkoord bevonden')
AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM mld_melding m,
mld_stdmelding sm,
mld_kenmerkmelding kmm,
mld_kenmerk km,
prs_perslid p,
fac_v_rap_groepleden agl,
fac_groep g
WHERE p.prs_perslid_oslogin = agl.fclt_f_login
AND g.fac_groep_key IN (441) --autorisatiegroep Calculators
AND g.fac_groep_omschrijving = agl.fclt_f_groep
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = kmm.mld_melding_key
AND sm.mld_ins_discipline_key = 861 --Vakgroep klant
AND km.mld_srtkenmerk_key = 601 -- Kenmerksoort Klant akkoord
AND kmm.mld_kenmerkmelding_waarde = '1862' -- Niet akkoord
AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
AND m.mld_melding_status IN (1, 5) --Afgewezen, Afgemeld
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms like '%CUST05%'
AND t.fac_tracking_refkey = m.mld_melding_key);
--CSUN#59537
CREATE OR REPLACE PROCEDURE csun_import_planning (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count_melding NUMBER := 1;
v_count_alglocatie NUMBER := 1;
v_year_method NUMBER := 1;
-- De importvelden:
v_fac_import_key VARCHAR (256);
v_fac_import_index VARCHAR (256);
v_mld_stdmelding_key VARCHAR (256);
v_mld_stdmelding_oms VARCHAR (256);
v_alg_locatie_code VARCHAR (256);
v_alg_locatie_oms VARCHAR (256);
v_uitvoerjaar VARCHAR (256);
v_uitvoerweek VARCHAR (256);
v_onderwerp VARCHAR (256);
v_omschrijving VARCHAR (4000);
v_aanvrageremail VARCHAR (256);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
-- Eerst opschonen voor we beginnen
DELETE FROM csun_imp_planning;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_fac_import_key := rec.fac_import_key;
v_fac_import_index := rec.fac_imp_file_index;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
IF SUBSTR (v_newline, 1, 3) = '??A???A>??A?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_mld_stdmelding_key); -- Soort melding key
fac.imp_getfield (v_newline, c_fielddelimitor, v_mld_stdmelding_oms); -- Soort melding omschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code); -- Locatie key
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_oms); -- Locatieomschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerjaar); -- Uitvoerjaar
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerweek); -- Uitvoerweek
fac.imp_getfield (v_newline, c_fielddelimitor, v_onderwerp); -- Onderwerp
fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving); -- Omschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_aanvrageremail); --Emailadres aanvrager
IF (fac.safe_to_number (v_uitvoerweek) < 10)
THEN
v_uitvoerweek := (0 || v_uitvoerweek);
END IF;
v_aanduiding :=
'['
|| v_mld_stdmelding_key
|| '|'
|| v_alg_locatie_code
|| '|'
|| v_uitvoerjaar
|| '|'
|| v_uitvoerweek
|| '] ';
v_count_tot := v_count_tot + 1;
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_mld_stdmelding_key) = 'MELDING'
AND UPPER (v_mld_stdmelding_oms) = 'MELDINGOMSCHRIJVING'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_locatie_oms) = 'LOCATIE'
AND UPPER (v_uitvoerjaar) = 'UITVOERJAAR'
AND UPPER (v_uitvoerweek) = 'UITVOERWEEK'
AND UPPER (v_onderwerp) = 'ONDERWERP' --Lengte max 80
AND UPPER (v_omschrijving) = 'OMSCHRIJVING' --Lengte max 4000
AND UPPER (v_aanvrageremail) = 'AANVRAGEREMAIL' --Lengte max 4000
THEN
header_is_valid := 1;
END IF;
ELSE
--Controle of de opgegeven stdmelding wel aanwezig is
SELECT COUNT ( * )
INTO v_count_melding
FROM mld_stdmelding sm
WHERE v_mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL;
IF v_count_melding = 0
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Meldingnummer bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de opgegeven locatiecode wel aanwezig is
SELECT COUNT ( * )
INTO v_count_alglocatie
FROM alg_locatie l
WHERE l.alg_locatie_code = v_alg_locatie_code
AND l.alg_locatie_verwijder IS NULL;
IF v_count_alglocatie = 0
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Locatie (locatiecode) bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Bepalen methode van inlezen. Verderop bij de import wordt obv weeknummer een datum bepaald (met NEXT_DAY).
CASE
WHEN TO_CHAR (TO_DATE ('04-jan-' || v_uitvoerjaar, 'dd-mm-yyyy'),
'Day') like '%Vrijdag%'
OR TO_CHAR (TO_DATE ('04-jan-' || v_uitvoerjaar, 'dd-mm-yyyy'),
'Day') like '%Zaterdag%'
OR TO_CHAR (TO_DATE ('04-jan-' || v_uitvoerjaar, 'dd-mm-yyyy'),
'Day') like '%Zondag%'
THEN
v_year_method := 2;
ELSE
v_year_method := 1;
END CASE;
-- Controle of de melding wel ingelezen moet worden. Meldingen moeten worden ingelezen na volgende week.
-- Dus stel het is week 8, dan moeten meldingen ingelezen worden in week 10 en verder.
-- De routine om meldingen automatisch aan te maken (csun_export_meldingen) maakt namelijk op maandag meldingen voor volgende week aan.
IF TO_NUMBER (TO_CHAR (v_uitvoerjaar) || TO_CHAR (v_uitvoerweek)) <=
TO_NUMBER (
TO_CHAR (SYSDATE, 'YYYY') || TO_CHAR (SYSDATE, 'WW'))
+ 1
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Melding niet in toekomst',
'Melding wordt niet ingelezen!');
END IF;
IF LENGTH (v_onderwerp) > 80
THEN
v_onderwerp := SUBSTR (v_onderwerp, 1, 80);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Onderwerp te lang',
'Onderwerp wordt afgebroken tot [' || v_onderwerp || ']');
END IF;
IF LENGTH (v_omschrijving) > 4000
THEN
v_omschrijving := SUBSTR (v_omschrijving, 1, 4000);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Omschrijving te lang',
'Omschrijving wordt afgebroken tot ['
|| v_omschrijving
|| ']');
END IF;
IF LENGTH (v_aanvrageremail) > 200
THEN
v_aanvrageremail := SUBSTR (v_aanvrageremail, 1, 200);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Emailadres aanvrager te lang',
'Emailadres aanvrager wordt afgebroken tot ['
|| v_aanvrageremail
|| ']');
END IF;
IF LENGTH (v_alg_locatie_oms) > 60
THEN
v_alg_locatie_oms := SUBSTR (v_alg_locatie_oms, 1, 60);
END IF;
-- Insert geformatteerde import record
IF header_is_valid = 1 AND v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel csun_imp_planning';
INSERT INTO csun_imp_planning (fac_import_key,
fac_import_index,
fac_import_datum,
mld_stdmelding_key,
mld_stdmelding_oms,
alg_locatie_code,
alg_locatie_oms,
uitvoerdatum,
uitvoerweek,
uitvoerjaar,
onderwerp,
omschrijving,
aanvrageremail)
VALUES (v_fac_import_key,
v_fac_import_index,
SYSDATE,
TO_NUMBER (v_mld_stdmelding_key),
v_mld_stdmelding_oms,
v_alg_locatie_code,
v_alg_locatie_oms,
NEXT_DAY (
TO_DATE ('04-jan-' || v_uitvoerjaar,
'dd-mm-yyyy')
+ (v_uitvoerweek - v_year_method) * 7,
'vrijd'),
v_uitvoerweek,
v_uitvoerjaar,
v_onderwerp,
v_omschrijving,
v_aanvrageremail);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'CSUN_PLANNING/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'CSUN_PLANNING/#ongeldige niet ingelezen importregels incl header: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces CSUN_IMPORT_PLANNING afgebroken!');
END csun_import_planning;
/
--CSUN#59537
CREATE OR REPLACE PROCEDURE csun_update_planning (p_import_key IN NUMBER)
AS
v_fac_import_key NUMBER (10);
v_fac_import_index NUMBER (10);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_mld_melding_key NUMBER (10);
v_mld_stdmelding_key NUMBER (10);
v_mld_melding_datum DATE;
v_opdr_key NUMBER (10);
v_perslid_key NUMBER (10) := 4; -- Facilitor
v_aanvrager_key NUMBER (10);
v_stdmelding_autoorder VARCHAR2 (200);
v_dienst_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_bedrijf_key NUMBER (10);
-- Haal alle meldingen op uit de tussentabel van volgende week en die nog niet zijn aangemaakt. Deze hebben een datum op de vrijdag volgende week.
CURSOR cmld
IS
SELECT m.*,
(SELECT fac.safe_to_number (km.alg_onrgoedkenmerk_waarde)
FROM alg_v_aanwezigonrgoedkenmerk km
WHERE km.alg_onrgoed_niveau = 'D'
AND km.alg_kenmerk_key = 1300 --Kenmerk bij district : Medewerker bedrijfsbureau
AND km.alg_onrgoed_key = l.alg_district_key)
AS mld_behandelaar_key,
COALESCE (
(SELECT MAX (prs_perslid_key) --prs_perslid_key van geimporteerde emailadres of anders Facilitor (perslid_key 4)
FROM prs_perslid
WHERE UPPER (prs_perslid_email) = UPPER (m.aanvrageremail)),
4)
AS aanvrager_key,
l.alg_locatie_key
FROM csun_imp_planning m, alg_v_locatie_gegevens l
WHERE l.alg_locatie_code = m.alg_locatie_code
AND m.mld_melding_key IS NULL;
BEGIN
FOR recmld IN cmld
LOOP
BEGIN
v_errorhint := 'Insert melding';
INSERT INTO mld_melding (prs_perslid_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_melding_datum,
mld_stdmelding_key,
mld_melding_einddatum,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_behandelaar_key)
VALUES (recmld.aanvrager_key,
'MLD',
6, --Bron = Systeem
recmld.alg_locatie_key,
SYSDATE,
recmld.mld_stdmelding_key,
TO_DATE(CONCAT (
TO_CHAR (recmld.uitvoerdatum, 'YYYY-MM-DD'),
' 17:00:00')),
0, --Status = Bij Frontoffice
3, --Prioriteit = Normaal
recmld.onderwerp,
recmld.omschrijving,
NULL) --Op verzoek (CSUN#59537) toch niet vullen
RETURNING mld_melding_key, mld_stdmelding_key, mld_melding_datum
INTO v_mld_melding_key,
v_mld_stdmelding_key,
v_mld_melding_datum;
v_errorhint := 'Tracking MLDNEW';
--PROCEDURE trackaction (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2);
--Dit zorgt voor een juiste datum 'Laatste actiedatum' in het meldingsoverzicht.
fac.trackaction ('MLDNEW',
v_mld_melding_key,
v_perslid_key,
SYSDATE,
'Melding is aangemaakt vanuit planning');
v_errorhint := 'Insert kenmerk Import Planning';
-- We zetten een vinkje om aan de melding te herkennen dat deze uit deze import komt.
-- Daarmee kunnen we de status ook aanpassen van de meldingen die gepland staan over 2 weken (status van 0 naar 4) in een export-procedure
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde) -- Vinkje aan.
VALUES (v_mld_melding_key, 1301, -- Kenmerk 'Import planning'
1); -- Vinkje aan.
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'W',
v_errorhint || ' ' || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces CSUN_UPDATE_PLANNING afgebroken!');
END csun_update_planning;
/
--CSUN#59537
CREATE OR REPLACE PROCEDURE csun_export_planning (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_fac_import_key NUMBER (10);
v_fac_import_index NUMBER (10);
v_mld_melding_key NUMBER (10);
v_perslid_key NUMBER (10) := 4; -- Facilitor
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_opdr_key NUMBER (10);
v_stdmelding_autoorder VARCHAR2 (200);
v_dienst_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_bedrijf_key NUMBER (10);
-- Haal alle meldingen op die nog in behandeling (status 0) staan en met kenmerk 'Planning melding' aan heeft. .
CURSOR cmld
IS
SELECT m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
m.mld_melding_datum,
m.mld_melding_einddatum,
m.mld_alg_locatie_key,
(SELECT DISTINCT (wf.mld_stdmelding_key)
FROM mld_workflowstep wf
WHERE m.mld_stdmelding_key = wf.mld_stdmelding_key(+)
AND wf.mld_workflowstep_start_key IS NULL)
AS stdmelding_key, --Alleen bij een startmelding van een workflow
(SELECT DISTINCT (wf.mld_workflowstep_key)
FROM mld_workflowstep wf
WHERE m.mld_stdmelding_key = wf.mld_stdmelding_key(+)
AND wf.mld_workflowstep_start_key IS NULL)
AS workflowstep_key --Alleen bij een startmelding van een workflow
FROM mld_melding m,
mld_kenmerkmelding km,
mld_stdmelding sm,
ins_tab_discipline disc
WHERE km.mld_melding_key = m.mld_melding_key
AND TRUNC (m.mld_melding_einddatum) <= TRUNC (SYSDATE) + 11
AND km.mld_kenmerk_key = 1301 --Kenmerk 'Import planning' (checkbox die bij het importeren op 1 wordt gezet zodat herkend wordt dat deze vanuit de import komt).
AND km.mld_kenmerkmelding_waarde = 1
AND m.mld_melding_status = 0
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND disc.ins_srtdiscipline_key <> 201; --Vakgroeptype 'JDE'
BEGIN
FOR recmld IN cmld
LOOP
BEGIN
UPDATE mld_melding
SET mld_melding_status = 2, --Nieuw ipv Frontoffice (0)
mld_melding_datum = SYSDATE --CSUN#71827
WHERE mld_melding_key = recmld.mld_melding_key
RETURNING mld_melding_key
INTO v_mld_melding_key;
--Tracking voor het doorzetten van Frontoffice naar Backoffice
fac.trackaction ('MLDDOO',
v_mld_melding_key,
v_perslid_key,
SYSDATE,
NULL);
v_errorhint := 'Select opdracht';
COMMIT;
-- Betreft het een workflowmelding?
IF recmld.stdmelding_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_workflowstep_key = recmld.workflowstep_key,
mld_melding_start_key = mld_melding_key
WHERE mld_melding_key = recmld.mld_melding_key;
-- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden.
mld.mld_nextworkflowstep (recmld.mld_melding_key, -1);
END IF;
-- Nu kijken of we automatisch een opdracht kunnen aanmaken.
SELECT ms.mld_stdmelding_autoorder,
ms.prs_dienst_key,
ms.mld_typeopdr_key
INTO v_stdmelding_autoorder, v_dienst_key, v_typeopdr_key
FROM mld_stdmelding ms
WHERE ms.mld_stdmelding_key = recmld.mld_stdmelding_key;
-- Heb ik genoeg informatie om een opdracht aan te kunnen maken.
IF v_stdmelding_autoorder = 1
AND v_dienst_key IS NOT NULL
AND v_typeopdr_key IS NOT NULL
THEN
v_errorhint := 'Select bedrijfkey';
SELECT MIN (bdl.prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijfdienstlocatie bdl, prs_v_aanwezigbedrijf b
WHERE bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND bdl.prs_dienst_key = v_dienst_key
AND (bdl.alg_locatie_key = recmld.mld_alg_locatie_key
OR bdl.alg_locatie_key IS NULL);
IF v_bedrijf_key IS NOT NULL
THEN
v_errorhint := 'Insert opdracht';
--Eerst de melding in behandeling zetten, op status 0 of 2 kunnen geen opdrachten worden aangemaakt.
UPDATE mld_melding
SET mld_melding_status = 4 --Nieuw ipv Frontoffice (0)
WHERE mld_melding_key = recmld.mld_melding_key
RETURNING mld_melding_key
INTO v_mld_melding_key;
INSERT INTO mld_opdr (mld_uitvoerende_keys,
mld_opdr_kosten,
mld_opdr_uurloon,
mld_melding_key,
mld_opdr_module,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_typeopdr_key,
prs_perslid_key,
mld_opdr_omschrijving,
mld_opdr_uren,
mld_opdr_teverzenden)
VALUES (v_bedrijf_key,
0,
0,
v_mld_melding_key,
'MLD',
mld.bepaalopdrmeldingvolgnr (v_mld_melding_key),
recmld.mld_melding_datum,
recmld.mld_melding_einddatum,
v_typeopdr_key,
v_perslid_key,
recmld.mld_melding_onderwerp
|| CHR (10)
|| recmld.mld_melding_omschrijving,
0,
1)
RETURNING mld_opdr_key
INTO v_opdr_key;
mld.setopdrachtstatus (v_opdr_key, 5, v_perslid_key); -- Uitgegeven
END IF;
mld.updatemeldingstatus (v_mld_melding_key, 0, v_perslid_key);
END IF;
END;
END LOOP;
END csun_export_planning;
/
CREATE OR REPLACE VIEW csun_v_noti_wfcntr_klant
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile,
xsender,
attachments
)
AS
SELECT DISTINCT
'CUST06' AS code, --Distinct zodat bij meerdere bijlagen toch maar 1 regel/notificatie wordt gemaakt
NULL AS sender,
p.prs_perslid_key AS receiver,
'Er is een calculatie voor uw aanvraag contractmutatie: '
|| m.mld_melding_key
|| ' ('
|| COALESCE (m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving)
|| ')'
AS text,
m.mld_melding_key AS key,
NULL AS extra_key,
NULL,
NULL,
NULL,
'/' || b.fac_bijlagen_disk_directory || '/*' -- Zo (*) worden alle bijlagen bijgevoegd, van dezelfde kenmerk_key van de melding waar de bijlage is bijgevoegd (Calculatie)
FROM mld_melding m,
mld_stdmelding sm,
prs_perslid p,
mld_melding bm,
mld_stdmelding bsm,
fac_bijlagen b
WHERE p.prs_perslid_key = m.prs_perslid_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 861 -- Vakgroep klant
AND m.mld_stdmelding_key <> 1201 -- Startmelding workflow
AND m.mld_melding_status NOT IN (1, 5, 6) -- Afgewezen, afgemeld, historie
AND bm.mld_melding_start_key = m.mld_melding_start_key
AND bm.mld_stdmelding_key = bsm.mld_stdmelding_key
AND bsm.mld_ins_discipline_key = 863 -- Vakgroep calculatie
AND b.fac_bijlagen_module = 'MLD'
AND b.fac_bijlagen_refkey = bm.mld_melding_key
AND b.fac_bijlagen_verwijder IS NULL
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms LIKE '%CUST06%'
AND t.fac_tracking_refkey = m.mld_melding_key)
ORDER BY key, receiver;
CREATE OR REPLACE VIEW csun_v_noti_actie_klant
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile,
xsender,
attachments
)
AS
SELECT
'CUST07' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Er staat een actie voor u klaar m.b.t. melding '
|| m.mld_melding_key
|| ' ('
|| COALESCE (m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving)
|| ')'
AS text,
m.mld_melding_key AS key,
NULL AS extra_key,
NULL,
NULL,
NULL,
null
FROM mld_melding m,
mld_stdmelding sm,
prs_perslid p
WHERE p.prs_perslid_key = m.prs_perslid_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 903 -- Vakgroep Periodieke werkzaamheden controle klant
AND m.mld_melding_status NOT IN (1, 5, 6) -- Afgewezen, afgemeld, historie
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms LIKE '%CUST07%'
AND t.fac_tracking_refkey = m.mld_melding_key)
ORDER BY key, receiver;
--CSUN#64697 Notificatie naar BB'er wanneer klant akkoord is met de uitgevoerde glasbewassing
CREATE OR REPLACE VIEW csun_v_rap_glas_akkoord
(
melding_nr,
melding_datum,
melding_einddatum,
melding_onderwerp,
standaardmelding,
melding_omschrijving,
melding_opmerking,
mld_alg_locatie_key
)
AS
SELECT m.mld_melding_key,
m.mld_melding_datum,
m.mld_melding_einddatum,
m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving,
m.mld_melding_omschrijving,
m.mld_melding_opmerking,
m.mld_alg_locatie_key
FROM mld_melding m,
mld_kenmerkmelding kmm,
mld_kenmerk km,
mld_srtkenmerk sk,
mld_stdmelding sm,
fac_tracking t,
fac_srtnotificatie sn
WHERE m.mld_stdmelding_key IN (1363, 1381, 1382) -- Glasbewassing akkoord & herkansingen
AND m.mld_melding_status = 5 -- Afgemeld
AND sk.mld_srtkenmerk_key = 681 -- Kenmerk Akkoord
AND kmm.mld_kenmerkmelding_waarde = '1861' -- Ja
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sk.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
AND kmm.mld_melding_key = m.mld_melding_key
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM';
CREATE OR REPLACE VIEW csun_v_noti_glas_akkoord
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST08' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Klant heeft akkoord gegeven op de uitgevoerde werkzaamheden bij melding: '
|| m.melding_nr
|| ' ('
|| COALESCE (m.melding_onderwerp, m.standaardmelding)
|| ')'
AS text,
m.melding_nr AS key,
NULL AS extra_key
FROM csun_v_rap_glas_akkoord m,
prs_perslid p,
fac_v_rap_groepleden agl,
fac_groep g,
alg_locatie l,
alg_locatie l2,
prs_v_perslidwerkplek_gegevens pwpg,
prs_kenmerklink kl
WHERE p.prs_perslid_oslogin = agl.fclt_f_login
AND g.fac_groep_key = 21 --autorisatiegroep BB
AND g.fac_groep_omschrijving = agl.fclt_f_groep
AND m.melding_nr NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE fac_tracking_oms LIKE '%CUST08%'
AND t.fac_tracking_refkey = m.melding_nr)
AND m.mld_alg_locatie_key = l.alg_locatie_key
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
AND p.prs_perslid_verwijder IS NULL
AND 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
AND p.prs_perslid_verwijder IS NULL
ORDER BY key, receiver;
CREATE OR REPLACE PROCEDURE csun_import_jde (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count_melding NUMBER := 1;
v_count_alglocatie NUMBER := 1;
v_year_method NUMBER := 1;
-- De importvelden:
v_fac_import_key VARCHAR (256);
v_fac_import_index VARCHAR (256);
v_mld_stdmelding_key VARCHAR (256);
v_alg_locatie_code VARCHAR (256);
v_uitvoerdatum VARCHAR (256);
v_onderwerp VARCHAR (256);
v_omschrijving VARCHAR (4000);
v_opdrachtnr VARCHAR (256);
v_meldinglocatie VARCHAR (4000);
v_kosten VARCHAR (256);
v_aanvrageremail VARCHAR (256);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
-- Eerst opschonen voor we beginnen
DELETE FROM csun_imp_jde;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_fac_import_key := rec.fac_import_key;
v_fac_import_index := rec.fac_imp_file_index;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
IF SUBSTR (v_newline, 1, 3) = '??A???A>??A?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_mld_stdmelding_key); -- Soort melding key
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code); -- Locatie key
fac.imp_getfield (v_newline, c_fielddelimitor, v_uitvoerdatum); -- Uitvoerdatum
fac.imp_getfield (v_newline, c_fielddelimitor, v_onderwerp); -- Onderwerp
fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving); -- Omschrijving
fac.imp_getfield (v_newline, c_fielddelimitor, v_opdrachtnr); -- Opdrachtnr/werkbon
fac.imp_getfield (v_newline, c_fielddelimitor, v_meldinglocatie); -- Meldinglocatie
fac.imp_getfield (v_newline, c_fielddelimitor, v_kosten); -- Kosten
fac.imp_getfield (v_newline, c_fielddelimitor, v_aanvrageremail); --Emailadres aanvrager
v_aanduiding :=
'['
|| v_mld_stdmelding_key
|| '|'
|| v_alg_locatie_code
|| '|'
|| v_opdrachtnr
|| '|'
|| v_uitvoerdatum
|| '] ';
v_count_tot := v_count_tot + 1;
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_mld_stdmelding_key) = 'MELDING'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_uitvoerdatum) = 'UITVOERDATUM'
AND UPPER (v_onderwerp) = 'ONDERWERP' --Lengte max 80
AND UPPER (v_omschrijving) = 'OMSCHRIJVING' --Lengte max 4000
AND UPPER (v_opdrachtnr) = 'WERKBON/OPDRACHTNR KLANT'
AND UPPER (v_meldinglocatie) = 'MELDINGLOCATIE'
AND UPPER (v_kosten) = 'KOSTEN'
AND UPPER (v_aanvrageremail) = 'AANVRAGEREMAIL' --Lengte max 200
THEN
header_is_valid := 1;
END IF;
ELSE
--Controle of de opgegeven stdmelding wel aanwezig is
SELECT COUNT ( * )
INTO v_count_melding
FROM mld_stdmelding sm
WHERE v_mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL;
IF v_count_melding = 0
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Meldingnummer bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
--Controle of de opgegeven locatiecode wel aanwezig is
SELECT COUNT ( * )
INTO v_count_alglocatie
FROM alg_locatie l
WHERE l.alg_locatie_code = v_alg_locatie_code
AND l.alg_locatie_verwijder IS NULL;
IF v_count_alglocatie = 0
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Locatie (locatiecode) bestaat niet',
'Melding wordt niet ingelezen!');
END IF;
IF LENGTH (v_onderwerp) > 80
THEN
v_onderwerp := SUBSTR (v_onderwerp, 1, 80);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Onderwerp te lang',
'Onderwerp wordt afgebroken tot [' || v_onderwerp || ']');
END IF;
IF LENGTH (v_omschrijving) > 4000
THEN
v_omschrijving := SUBSTR (v_omschrijving, 1, 4000);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Omschrijving te lang',
'Omschrijving wordt afgebroken tot ['
|| v_omschrijving
|| ']');
END IF;
IF LENGTH (v_opdrachtnr) > 49
THEN
v_opdrachtnr := SUBSTR (v_opdrachtnr, 1, 49);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Opdrachtnr/werkbon te lang',
'Opdrachtnr/werkbon wordt afgebroken tot ['
|| v_opdrachtnr
|| ']');
END IF;
IF LENGTH (v_meldinglocatie) > 49
THEN
v_meldinglocatie := SUBSTR (v_meldinglocatie, 1, 49);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Meldinglocatie te lang',
'Meldinglocatie wordt afgebroken tot ['
|| v_meldinglocatie
|| ']');
END IF;
IF LENGTH (v_kosten) > 11
THEN
v_kosten := SUBSTR (v_kosten, 1, 11);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Kosten te lang',
'Kosten wordt afgebroken tot [' || v_onderwerp || ']');
END IF;
IF LENGTH (v_aanvrageremail) > 200
THEN
v_aanvrageremail := SUBSTR (v_aanvrageremail, 1, 200);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Emailadres aanvrager te lang',
'Emailadres aanvrager wordt afgebroken tot ['
|| v_aanvrageremail
|| ']');
END IF;
-- Insert geformatteerde import record
IF header_is_valid = 1 AND v_ongeldig = 0
--Als er een geldige header is en een kloppende stdmelding en locatiecode, dan mag de melding worden aangemaakt.
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel csun_imp_jde';
INSERT INTO csun_imp_jde (fac_import_key,
fac_import_index,
fac_import_datum,
mld_stdmelding_key,
alg_locatie_code,
uitvoerdatum,
onderwerp,
omschrijving,
opdrachtnr,
meldinglocatie,
kosten,
aanvrageremail)
VALUES (v_fac_import_key,
v_fac_import_index,
SYSDATE,
fac.safe_to_number (v_mld_stdmelding_key),
v_alg_locatie_code,
fac.safe_to_date (v_uitvoerdatum, 'dd-mm-yyyy'),
v_onderwerp,
v_omschrijving,
v_opdrachtnr,
v_meldinglocatie,
v_kosten,
v_aanvrageremail);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'CSUN_JDE/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'CSUN_JDE/#ongeldige niet ingelezen importregels incl header: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces CSUN_IMPORT_JDE afgebroken!');
END csun_import_jde;
/
CREATE OR REPLACE PROCEDURE csun_update_jde (p_import_key IN NUMBER)
AS
v_fac_import_key NUMBER (10);
v_fac_import_index NUMBER (10);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_mld_melding_key NUMBER (10);
v_mld_stdmelding_key NUMBER (10);
v_mld_melding_datum DATE;
v_perslid_key NUMBER (10) := 4; -- Facilitor
v_aanvrager_key NUMBER (10);
-- Haal alle meldingen op uit de tussentabel en die nog niet zijn aangemaakt. Deze hebben een datum op de vrijdag volgende week.
CURSOR cmld
IS
SELECT m.*,
(SELECT fac.safe_to_number (km.alg_onrgoedkenmerk_waarde)
FROM alg_v_aanwezigonrgoedkenmerk km
WHERE km.alg_onrgoed_niveau = 'D'
AND km.alg_kenmerk_key = 1300 --Kenmerk bij district : Medewerker bedrijfsbureau
AND km.alg_onrgoed_key = l.alg_district_key)
AS mld_behandelaar_key,
COALESCE (
(SELECT MAX (prs_link_key) --prs_perslid_key van geimporteerde emailadres, of anders Facilitor (perslid_key 4)
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'P'
AND prs_kenmerklink_verwijder IS NULL
AND UPPER (prs_kenmerklink_waarde) =
UPPER (m.aanvrageremail)),
v_perslid_key)
AS aanvrager_key,
l.alg_locatie_key,
REPLACE(REPLACE(kosten, '.'), ',', '.') as kosten_n
FROM csun_imp_jde m, alg_v_locatie_gegevens l
WHERE l.alg_locatie_code = m.alg_locatie_code
AND m.mld_melding_key IS NULL;
BEGIN
FOR recmld IN cmld
LOOP
BEGIN
v_errorhint := 'Insert melding';
INSERT INTO mld_melding (prs_perslid_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_melding_datum,
mld_stdmelding_key,
mld_melding_einddatum,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_omschrijving)
VALUES (recmld.aanvrager_key,
'MLD',
6, --Bron = Systeem
recmld.alg_locatie_key,
SYSDATE,
recmld.mld_stdmelding_key,
TO_DATE(CONCAT (
TO_CHAR (recmld.uitvoerdatum, 'YYYY-MM-DD'),
' 17:00:00')),
0, --Status = Bij Frontoffice
3, --Prioriteit = Normaal
recmld.onderwerp,
recmld.omschrijving)
RETURNING mld_melding_key, mld_stdmelding_key, mld_melding_datum
INTO v_mld_melding_key,
v_mld_stdmelding_key,
v_mld_melding_datum;
v_errorhint := 'Tracking MLDNEW';
--PROCEDURE trackaction (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2);
--Dit zorgt voor een juiste datum 'Laatste actiedatum' in het meldingsoverzicht.
fac.trackaction ('MLDNEW',
v_mld_melding_key,
v_perslid_key,
SYSDATE,
'Melding is aangemaakt vanuit planning JDE');
v_errorhint := 'Insert kenmerk Import Planning';
-- We zetten een vinkje om aan de melding te herkennen dat deze uit deze import komt.
-- Daarmee kunnen we de status ook aanpassen van de meldingen die gepland staan over 2 weken (status van 0 naar 4) in een export-procedure
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde) -- Vinkje aan.
VALUES (v_mld_melding_key, 1301, -- Kenmerk 'Import planning'
1); -- Vinkje aan.
v_errorhint := 'Kenmerk opdrachtnummer';
--Kenmerk opdrachtnummer
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_mld_melding_key, 1443, recmld.opdrachtnr);
v_errorhint := 'Kenmerk Meldinglocatie';
--Kenmerk meldinglocatie
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_mld_melding_key, 1481, recmld.meldinglocatie);
v_errorhint := 'Kenmerk kosten';
--Kenmerk kosten
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_mld_melding_key, 1501, recmld.kosten_n);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'W',
v_errorhint || ' ' || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces CSUN_UPDATE_JDE afgebroken!');
END csun_update_jde;
/
CREATE OR REPLACE PROCEDURE csun_export_jde (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_fac_import_key NUMBER (10);
v_fac_import_index NUMBER (10);
v_mld_melding_key NUMBER (10);
v_perslid_key NUMBER (10) := 4; -- Facilitor
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_opdr_key NUMBER (10);
v_stdmelding_autoorder VARCHAR2 (200);
v_dienst_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_bedrijf_key NUMBER (10);
-- Haal alle meldingen op die nog in behandeling (status 0) staan en met kenmerk 'Planning melding' aan heeft. .
CURSOR cmld
IS
SELECT m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
m.mld_melding_datum,
m.mld_melding_einddatum,
m.mld_alg_locatie_key,
(SELECT DISTINCT (wf.mld_stdmelding_key)
FROM mld_workflowstep wf
WHERE m.mld_stdmelding_key = wf.mld_stdmelding_key(+)
AND wf.mld_workflowstep_start_key IS NULL)
AS stdmelding_key, --Alleen bij een startmelding van een workflow
(SELECT DISTINCT (wf.mld_workflowstep_key)
FROM mld_workflowstep wf
WHERE m.mld_stdmelding_key = wf.mld_stdmelding_key(+)
AND wf.mld_workflowstep_start_key IS NULL)
AS workflowstep_key --Alleen bij een startmelding van een workflow
FROM mld_melding m,
mld_kenmerkmelding km,
mld_stdmelding sm,
ins_tab_discipline disc
WHERE km.mld_melding_key = m.mld_melding_key
AND TRUNC (m.mld_melding_einddatum) = TRUNC (SYSDATE)
AND km.mld_kenmerk_key = 1301 --Kenmerk 'Import planning' (checkbox die bij het importeren op 1 wordt gezet zodat herkend wordt dat deze vanuit de import komt).
AND km.mld_kenmerkmelding_waarde = 1
AND m.mld_melding_status = 0
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND disc.ins_srtdiscipline_key = 201; --Vakgroeptype 'JDE'
BEGIN
FOR recmld IN cmld
LOOP
BEGIN
UPDATE mld_melding
SET mld_melding_status = 2 --Nieuw ipv Frontoffice (0)
WHERE mld_melding_key = recmld.mld_melding_key
RETURNING mld_melding_key
INTO v_mld_melding_key;
--Tracking voor het doorzetten van Frontoffice naar Backoffice
fac.trackaction ('MLDDOO',
v_mld_melding_key,
v_perslid_key,
SYSDATE,
NULL);
v_errorhint := 'Select opdracht';
COMMIT;
-- Betreft het een workflowmelding?
IF recmld.stdmelding_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_workflowstep_key = recmld.workflowstep_key,
mld_melding_start_key = mld_melding_key
WHERE mld_melding_key = recmld.mld_melding_key;
-- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden.
mld.mld_nextworkflowstep (recmld.mld_melding_key, -1);
END IF;
-- Nu kijken of we automatisch een opdracht kunnen aanmaken.
SELECT ms.mld_stdmelding_autoorder,
ms.prs_dienst_key,
ms.mld_typeopdr_key
INTO v_stdmelding_autoorder, v_dienst_key, v_typeopdr_key
FROM mld_stdmelding ms
WHERE ms.mld_stdmelding_key = recmld.mld_stdmelding_key;
-- Heb ik genoeg informatie om een opdracht aan te kunnen maken.
IF v_stdmelding_autoorder = 1
AND v_dienst_key IS NOT NULL
AND v_typeopdr_key IS NOT NULL
THEN
v_errorhint := 'Select bedrijfkey';
SELECT MIN (bdl.prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijfdienstlocatie bdl, prs_v_aanwezigbedrijf b
WHERE bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND bdl.prs_dienst_key = v_dienst_key
AND (bdl.alg_locatie_key = recmld.mld_alg_locatie_key
OR bdl.alg_locatie_key IS NULL);
IF v_bedrijf_key IS NOT NULL
THEN
v_errorhint := 'Insert opdracht';
--Eerst de melding in behandeling zetten, op status 0 of 2 kunnen geen opdrachten worden aangemaakt.
UPDATE mld_melding
SET mld_melding_status = 4 --Nieuw ipv Frontoffice (0)
WHERE mld_melding_key = recmld.mld_melding_key
RETURNING mld_melding_key
INTO v_mld_melding_key;
INSERT INTO mld_opdr (mld_uitvoerende_keys,
mld_opdr_kosten,
mld_opdr_uurloon,
mld_melding_key,
mld_opdr_module,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_typeopdr_key,
prs_perslid_key,
mld_opdr_omschrijving,
mld_opdr_uren,
mld_opdr_teverzenden)
VALUES (v_bedrijf_key,
0,
0,
v_mld_melding_key,
'MLD',
mld.bepaalopdrmeldingvolgnr (v_mld_melding_key),
recmld.mld_melding_datum,
recmld.mld_melding_einddatum,
v_typeopdr_key,
v_perslid_key,
recmld.mld_melding_onderwerp
|| CHR (10)
|| recmld.mld_melding_omschrijving,
0,
1)
RETURNING mld_opdr_key
INTO v_opdr_key;
mld.setopdrachtstatus (v_opdr_key, 5, v_perslid_key); -- Uitgegeven
END IF;
mld.updatemeldingstatus (v_mld_melding_key, 0, v_perslid_key);
END IF;
END;
END LOOP;
END csun_export_jde;
/
CREATE OR REPLACE VIEW CSUN_V_UDR_DEELINSPECT
(
DEEL_KEY,
DISCIPLINE,
SOORT,
GROEP,
SOORTCODE,
OMSCHRIJVING,
PLAATSEIGENAAR,
PLAATSEIGENAARTYPE,
PLAATSAANDUIDING,
EIGENAAR,
EIGENAAR_KEY,
OPMERKING,
REGIO,
DISTRICT,
LOCATIE_CODE,
LOCATIE_OMSCHRIJVING,
LOCATIE_PLAATS,
GEBOUWCODE,
GEBOUW,
TERREINSECTORCODE,
TERREINSECTOR,
VERDIEPINGCODE,
RUIMTENR,
WERKPLEKVOLGNR,
WERKPLEK,
UITLEENBAAR,
UITGELEEND,
RES_OPMERKING,
BEHEERDER,
VERVALDATUM,
ACTIEF,
AANTAL,
STATE,
STATEDATE,
FCLT_3D_DISCIPLINE_KEY,
FCLT_3D_AFDELING_KEY,
FCLT_3D_LOCATIE_KEY,
INS_DEELSRTCONTROLE_KEY,
INS_SRTCONTROLE_KEY,
CTR_DISCIPLINE_OMSCHRIJVING,
SRTCONTROLE_OMSCHRIJVING,
INS_DEELSRTCONTROLE_DATUM,
CONTROLEMODE_OMSCHRIJVING,
INS_DEELSRTCONTROLE_OPMERKING,
PERSLID,
INS_DEELSRTCONTROLE_DATUM_ORG,
INS_DEELSRTCONTROLE_PLANDATUM,
DEELSRTCONTROLE_STATUS,
FREEZECOST,
KOSTEN
)
AS
SELECT d.deel_key,
d.discipline,
d.soort,
d.groep,
d.soortcode,
d.omschrijving,
d.plaatseigenaar,
d.plaatseigenaartype,
d.plaatsaanduiding,
d.eigenaar,
d.eigenaar_key,
d.opmerking,
d.regio,
d.district,
d.locatie_code,
d.locatie_omschrijving,
d.locatie_plaats,
d.gebouwcode,
d.gebouw,
d.terreinsectorcode,
d.terreinsector,
d.verdiepingcode,
d.ruimtenr,
d.werkplekvolgnr,
d.werkplek,
d.uitleenbaar,
d.uitgeleend,
d.res_opmerking,
d.beheerder,
d.vervaldatum,
d.actief,
d.aantal,
d.state,
d.statedate,
d.fclt_3d_discipline_key,
d.fclt_3d_afdeling_key,
d.fclt_3d_locatie_key,
idsc.ins_deelsrtcontrole_key,
idsc.ins_srtcontrole_key,
(SELECT cd.ins_discipline_omschrijving
FROM ctr_discipline cd, ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND isc.ctr_discipline_key = cd.ins_discipline_key)
ctr_discipline_omschrijving,
(SELECT isc.ins_srtcontrole_omschrijving
FROM ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key)
srtcontrole_omschrijving,
idsc.ins_deelsrtcontrole_datum,
(SELECT icm.ins_controlemode_oms
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = idsc.ins_controlemode_key)
controlemode_omschrijving,
idsc.ins_deelsrtcontrole_opmerking,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = idsc.prs_perslid_key)
perslid,
idsc.ins_deelsrtcontrole_datum_org,
idsc.ins_deelsrtcontrole_plandatum,
(SELECT lcl.x ('fc2l.fac_code2label_label',
fc2l.fac_code2label_key,
fc2l.fac_code2label_label)
FROM fac_code2label fc2l
WHERE fc2l.fac_code2label_domein = 'controle'
AND fc2l.fac_code2label_code =
idsc.ins_deelsrtcontrole_status)
deelsrtcontrole_status,
idsc.ins_deelsrtcontrole_freezecost,
k.ins_srtcontrole_kosten
FROM ins_v_udr_deel d, ins_deelsrtcontrole idsc, ins_srtcontrole k
WHERE d.deel_key = idsc.ins_deel_key
AND idsc.ins_srtcontrole_key = k.ins_srtcontrole_key;
CREATE OR REPLACE VIEW CSUN_V_UDR_DEELINSPECT_PLAN
(
DEEL_KEY,
DISCIPLINE,
SOORT,
GROEP,
SOORTCODE,
OMSCHRIJVING,
PLAATSEIGENAAR,
PLAATSEIGENAARTYPE,
PLAATSAANDUIDING,
EIGENAAR,
EIGENAAR_KEY,
OPMERKING,
REGIO,
DISTRICT,
LOCATIE_CODE,
LOCATIE_OMSCHRIJVING,
LOCATIE_PLAATS,
GEBOUWCODE,
GEBOUW,
TERREINSECTORCODE,
TERREINSECTOR,
VERDIEPINGCODE,
RUIMTENR,
ZONE,
WERKPLEKVOLGNR,
WERKPLEK,
UITLEENBAAR,
UITGELEEND,
RES_OPMERKING,
BEHEERDER,
VERVALDATUM,
ACTIEF,
AANTAL,
STATE,
STATEDATE,
FCLT_3D_DISCIPLINE_KEY,
FCLT_3D_AFDELING_KEY,
FCLT_3D_LOCATIE_KEY,
TAAKCATEGORIE,
INS_DEELSRTCONTROLE_KEY,
INS_SRTCONTROLE_KEY,
SRTCONTROLE_OMSCHRIJVING,
INS_DEELSRTCONTROLE_DATUM,
CONTROLEMODE_OMSCHRIJVING,
INS_DEELSRTCONTROLE_OPMERKING,
PERSLID,
INS_DEELSRTCONTROLE_DATUM_ORG,
INS_DEELSRTCONTROLE_PLANDATUM,
DEELSRTCONTROLE_STATUS,
PLANJAAR,
PLANWEEK,
PLANPERIODE,
UITVOERJAAR,
UITVOERWEEK,
UITVOERPERIODE,
NEXTJAAR,
NEXTWEEK,
NEXTPERIODE,
PLANCOST,
FREEZECOST,
KOSTEN_MEETELLEN
)
AS
SELECT ud.deel_key,
ud.discipline,
ud.soort,
ud.groep,
ud.soortcode,
ud.omschrijving,
ud.plaatseigenaar,
ud.plaatseigenaartype,
ud.plaatsaanduiding,
ud.eigenaar,
ud.eigenaar_key,
ud.opmerking,
ud.regio,
ud.district,
ud.locatie_code,
ud.locatie_omschrijving,
ud.locatie_plaats,
ud.gebouwcode,
ud.gebouw,
ud.terreinsectorcode,
ud.terreinsector,
ud.verdiepingcode,
ud.ruimtenr,
z.ins_kenmerkdeel_waarde,
ud.werkplekvolgnr,
ud.werkplek,
ud.uitleenbaar,
ud.uitgeleend,
ud.res_opmerking,
ud.beheerder,
ud.vervaldatum,
ud.actief,
ud.aantal,
ud.state,
ud.statedate,
ud.fclt_3d_discipline_key,
ud.fclt_3d_afdeling_key,
ud.fclt_3d_locatie_key,
ctr.ins_discipline_omschrijving,
ud.ins_deelsrtcontrole_key,
ud.ins_srtcontrole_key,
ud.srtcontrole_omschrijving,
ud.ins_deelsrtcontrole_datum,
ud.controlemode_omschrijving,
ud.ins_deelsrtcontrole_opmerking,
ud.perslid,
ud.ins_deelsrtcontrole_datum_org,
ud.ins_deelsrtcontrole_plandatum,
ud.deelsrtcontrole_status,
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'YYYY'),
fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw'))
AS weeknummer,
(CASE
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 0
AND 5
THEN
1
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 4
AND 8
THEN
2
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 8
AND 12
THEN
3
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 12
AND 16
THEN
4
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 16
AND 20
THEN
5
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 20
AND 24
THEN
6
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 24
AND 28
THEN
7
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 28
AND 32
THEN
8
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 32
AND 36
THEN
9
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 36
AND 40
THEN
10
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 40
AND 44
THEN
11
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 44
AND 48
THEN
12
WHEN fac.safe_to_number (
TO_CHAR (
COALESCE (ud.ins_deelsrtcontrole_plandatum,
ud.ins_deelsrtcontrole_datum_org),
'iw')) BETWEEN 48
AND 53
THEN
13
ELSE
0
END)
periodenummer,
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'YYYY'),
fac.safe_to_number (TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw'))
AS weeknummer,
(CASE
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 0
AND 5
THEN
1
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 4
AND 8
THEN
2
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 8
AND 12
THEN
3
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 12
AND 16
THEN
4
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 16
AND 20
THEN
5
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 20
AND 24
THEN
6
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 24
AND 28
THEN
7
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 28
AND 32
THEN
8
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 32
AND 36
THEN
9
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 36
AND 40
THEN
10
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 40
AND 44
THEN
11
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 44
AND 48
THEN
12
WHEN fac.safe_to_number (
TO_CHAR (ud.ins_deelsrtcontrole_datum, 'iw')) BETWEEN 48
AND 53
THEN
13
ELSE
0
END)
periodenummer,
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'YYYY'),
fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw'))
AS weeknummer,
(CASE
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 0
AND 5
THEN
1
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 4
AND 8
THEN
2
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 8
AND 12
THEN
3
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 12
AND 16
THEN
4
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 16
AND 20
THEN
5
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 20
AND 24
THEN
6
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 24
AND 28
THEN
7
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 28
AND 32
THEN
8
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 32
AND 36
THEN
9
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 36
AND 40
THEN
10
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 40
AND 44
THEN
11
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 44
AND 48
THEN
12
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 48
AND 53
THEN
13
ELSE
0
END)
periodenummer,
sc.ins_srtcontrole_kosten,
idsc.ins_deelsrtcontrole_freezecost,
(CASE WHEN ud.controlemode_omschrijving = 'Niet uitgevoerd' THEN 0 ELSE 1 END)
FROM ins_v_udr_deelinspect ud,
ins_deelsrtcontrole idsc,
ins_deel d,
ins_kenmerkdeel z,
ins_kenmerk zk,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline disc,
ins_tab_discipline ctr,
ins_srtcontrole sc
WHERE ud.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND ud.ins_deelsrtcontrole_key = idsc.ins_deelsrtcontrole_key
AND d.ins_deel_key = ud.deel_key
AND idsc.INS_SRTCONTROLE_KEY = sc.ins_srtcontrole_key
AND idsc.INS_DEEL_KEY = ud.deel_key
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key
AND ctr.ins_discipline_key = sc.ctr_discipline_key
AND ( ( sd.ins_srtdeel_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'S')
OR ( sg.ins_srtgroep_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'G')
OR (disc.ins_discipline_key = sc.ins_srtinstallatie_key))
AND z.ins_deel_key = d.ins_deel_key(+)
AND z.ins_kenmerk_key = zk.ins_kenmerk_key
AND zk.ins_srtkenmerk_key = 41 -- kenmerk Zone bij objecten
AND z.ins_kenmerkdeel_verwijder IS NULL
UNION ALL
SELECT ud.deel_key,
ud.discipline,
ud.soort,
ud.groep,
ud.soortcode,
ud.omschrijving,
ud.plaatseigenaar,
ud.plaatseigenaartype,
ud.plaatsaanduiding,
ud.eigenaar,
ud.eigenaar_key,
ud.opmerking,
ud.regio,
ud.district,
ud.locatie_code,
ud.locatie_omschrijving,
ud.locatie_plaats,
ud.gebouwcode,
ud.gebouw,
ud.terreinsectorcode,
ud.terreinsector,
ud.verdiepingcode,
ud.ruimtenr,
z.ins_kenmerkdeel_waarde,
ud.werkplekvolgnr,
ud.werkplek,
ud.uitleenbaar,
ud.uitgeleend,
ud.res_opmerking,
ud.beheerder,
ud.vervaldatum,
ud.actief,
ud.aantal,
ud.state,
ud.statedate,
ud.fclt_3d_discipline_key,
ud.fclt_3d_afdeling_key,
ud.fclt_3d_locatie_key,
ctr.ins_discipline_omschrijving,
NULL,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_omschrijving,
NULL,
'Nog niet gepland',
NULL,
NULL,
NULL,
fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key),
'Nog te realiseren',
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'YYYY'),
fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw'))
AS weeknummer,
(CASE
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 0
AND 5
THEN
1
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 4
AND 8
THEN
2
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 8
AND 12
THEN
3
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 12
AND 16
THEN
4
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 16
AND 20
THEN
5
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 20
AND 24
THEN
6
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 24
AND 28
THEN
7
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 28
AND 32
THEN
8
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 32
AND 36
THEN
9
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 36
AND 40
THEN
10
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 40
AND 44
THEN
11
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 44
AND 48
THEN
12
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 48
AND 53
THEN
13
ELSE
0
END)
periodenummer,
NULL,
NULL,
NULL,
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'YYYY'),
fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw'))
AS weeknummer,
(CASE
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 0
AND 5
THEN
1
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 4
AND 8
THEN
2
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 8
AND 12
THEN
3
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 12
AND 16
THEN
4
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 16
AND 20
THEN
5
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 20
AND 24
THEN
6
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 24
AND 28
THEN
7
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 28
AND 32
THEN
8
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 32
AND 36
THEN
9
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 36
AND 40
THEN
10
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 40
AND 44
THEN
11
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 44
AND 48
THEN
12
WHEN fac.safe_to_number (
TO_CHAR (
fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key),
'iw')) BETWEEN 48
AND 53
THEN
13
ELSE
0
END)
periodenummer,
sc.ins_srtcontrole_kosten,
NULL,
1
FROM ins_v_udr_deel ud,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_kenmerkdeel z,
ins_kenmerk zk,
ins_tab_discipline disc,
ins_tab_discipline ctr,
ins_srtcontrole sc
WHERE d.ins_deel_key = ud.deel_key
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key
AND ctr.ins_discipline_key = sc.ctr_discipline_key
AND ( ( sd.ins_srtdeel_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'S')
OR ( sg.ins_srtgroep_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'G')
OR ( disc.ins_discipline_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'D'))
AND z.ins_deel_key = d.ins_deel_key(+)
AND z.ins_kenmerk_key = zk.ins_kenmerk_key
AND zk.ins_srtkenmerk_key = 41 -- kenmerk Zone bij objecten
AND z.ins_kenmerkdeel_verwijder IS NULL;
CREATE OR REPLACE VIEW CSUN_V_UDR_DEELINSPECT_BUDGET
(
PARK,
PLANJAAR,
BUDGET,
PLANNING,
KOSTEN
)
AS
SELECT groep,
planjaar,
SUM (plancost) - SUM (freezecost) AS te_realiseren,
SUM (plancost) AS planning,
SUM (freezecost) AS realisatie
FROM CSUN_V_UDR_DEELINSPECT_PLAN
WHERE kosten_meetellen = 1
GROUP BY groep, planjaar;
CREATE OR REPLACE VIEW CSUN_V_NOTI_DM
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XEMAIL,
XMOBILE,
XSENDER,
ATTACHMENTS
)
AS
SELECT 'CUST09'
AS code,
NULL
AS sender,
fac.safe_to_number (dmk.alg_onrgoedkenmerk_waarde)
AS receiver,
'Er is een nieuwe melding: '
|| m.mld_melding_key
|| ' ('
|| COALESCE (m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving)
|| ')'
AS text,
m.mld_melding_key
AS key,
NULL
AS extra_key,
NULL,
NULL,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
alg_locatie l,
alg_district d,
alg_onrgoedkenmerk dmk
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_district_key = dmk.alg_onrgoed_key
AND dmk.alg_onrgoed_niveau = 'D'
AND dmk.alg_onrgoedkenmerk_verwijder IS NULL
AND dmk.alg_kenmerk_key = 1021 -- Kenmerk Districtsmanager
AND sm.mld_stdmelding_key IN
(SELECT fac_usrdata_prijs
FROM fac_usrdata
WHERE fac_usrtab_key = 321 -- Eigen tabel 'Notificatie DM'
AND fac_usrdata_verwijder IS NULL)
AND m.mld_melding_datum BETWEEN (SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (
fac_notificatie_job_view) =
'CSUN_V_NOTI_DM')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (
fac_notificatie_job_view) =
'CSUN_V_NOTI_DM');
CREATE OR REPLACE VIEW CSUN_V_UDR_MELDING_KENTALIS
(
MELDING_KEY,
MELDINGNUMMER,
MELDING_START_KEY,
EXTERNNUMMER,
MELDING_REGIO,
MELDING_DISTRICT,
MELDING_LOCATIECODE,
MELDING_LOCATIE,
MELDING_LOCATIEPLAATS,
FCLT_3D_LOCATIE_KEY,
MELDING_GEBOUWCODE,
MELDING_GEBOUW,
MELDING_VERDIEPING,
MELDING_RUIMTENR,
MELDING_RUIMTE,
MELDING_ORDERNR,
KOSTENSOORTGROEP,
KOSTENSOORT,
KOSTENPLAATS,
KOSTENPLAATS_OMS,
MELDER,
MELDER_KEY,
AFDELING,
AFDELING_OMSCHRIJVING,
FCLT_3D_AFDELING_KEY,
BEDRIJF_KEY,
INVOERDER,
MELDBRON,
SOORTMELDING,
FCLT_3D_DISCIPLINE_KEY,
PRODUCTGROEP,
SUBPRODUCTGROEP,
BEHANDELGROEP,
BEHANDELAAR,
BEHANDELAAR_KEY,
SUBPRODUCTGROEPGROEP,
FCLT_3D_DISCIPLINE2_KEY,
ACTIEVE_BEHANDELGROEP,
ACTIEVE_BEHANDELAAR_KEY,
ACTIEVE_BEHANDELAAR,
MELDING_STATUS,
SLA_NVT,
SLA_WERKDGN,
SLA_WERKUREN,
SLA_RESPIJTDGN,
SLA_RESPIJTUREN,
SLA_ACCPTDGN,
SLA_ACCPTUREN,
PLAN_UITVOERTIJD_SLA,
MELDING_DATUM,
MELDING_EINDDATUM,
MELDING_EINDDATUM_STD,
MELDING_ACCEPTDATUM,
MELDING_AFGEMELD,
MELDING_ACCEPTED,
DOORLOOPTIJD_WERKDGN,
DOORLOOPTIJD_WERKUREN,
ONDERWERP,
VOMSCHRIJVING,
MELDING_OPMERKING,
PRIORITEIT,
PRIORITEITTXT,
RATING,
RATING_OPMERKING,
BOLLETJE,
ACTIECODE,
ACCEPT_SLA_DAGEN,
ACCEPT_SLA_UREN,
UITVOERING_SLA_DAGEN,
UITVOERING_SLA_UREN,
AFSPRAAK_SLA_DAGEN,
AFSPRAAK_SLA_UREN,
ACCEPT_SLA_OPTIJD,
UITVOERING_SLA_OPTIJD,
AFSPRAAK_SLA_OPTIJD,
SELFSERVICE,
WERKBON_OPDRACHT_NR,
KOSTEN,
OFFERTE_BEDRAG,
EINDDATUM_KLANT,
KLANTKENMERK,
KLANTSPEC_REGIO_INDELING,
OPDRACHTNUMMER_CSU,
AKKOORD_KLANT,
DATUM_AFRONDING,
DATUM_FACTURATIE,
ACCOUNTCODE,
FCLT_F_CLIENT,
TIJDSTIP,
AFHANDELTIJD_DAGEN,
AFHANDELTIJD_UREN,
REACTIE,
REACTIE_OPTIJD,
UITGEVOERD,
UITGEVOERD_DOOR,
AFMELD_KEY,
UITVOERINGSMELDING
)
AS
SELECT m."MELDING_KEY",
m."MELDINGNUMMER",
m."MELDING_START_KEY",
m."EXTERNNUMMER",
m."MELDING_REGIO",
m."MELDING_DISTRICT",
m."MELDING_LOCATIECODE",
m."MELDING_LOCATIE",
m."MELDING_LOCATIEPLAATS",
m."FCLT_3D_LOCATIE_KEY",
m."MELDING_GEBOUWCODE",
m."MELDING_GEBOUW",
m."MELDING_VERDIEPING",
m."MELDING_RUIMTENR",
m."MELDING_RUIMTE",
m."MELDING_ORDERNR",
m."KOSTENSOORTGROEP",
m."KOSTENSOORT",
m."KOSTENPLAATS",
m."KOSTENPLAATS_OMS",
m."MELDER",
m."MELDER_KEY",
m."AFDELING",
m."AFDELING_OMSCHRIJVING",
m."FCLT_3D_AFDELING_KEY",
m."BEDRIJF_KEY",
m."INVOERDER",
m."MELDBRON",
m."SOORTMELDING",
m."FCLT_3D_DISCIPLINE_KEY",
m."PRODUCTGROEP",
m."SUBPRODUCTGROEP",
m."BEHANDELGROEP",
m."BEHANDELAAR",
m."BEHANDELAAR_KEY",
m."SUBPRODUCTGROEPGROEP",
m."FCLT_3D_DISCIPLINE2_KEY",
m."ACTIEVE_BEHANDELGROEP",
m."ACTIEVE_BEHANDELAAR_KEY",
m."ACTIEVE_BEHANDELAAR",
m."MELDING_STATUS",
m."SLA_NVT",
m."SLA_WERKDGN",
m."SLA_WERKUREN",
m."SLA_RESPIJTDGN",
m."SLA_RESPIJTUREN",
m."SLA_ACCPTDGN",
m."SLA_ACCPTUREN",
m."PLAN_UITVOERTIJD_SLA",
m."MELDING_DATUM",
m."MELDING_EINDDATUM",
m."MELDING_EINDDATUM_STD",
m."MELDING_ACCEPTDATUM",
m."MELDING_AFGEMELD",
m."MELDING_ACCEPTED",
m."DOORLOOPTIJD_WERKDGN",
m."DOORLOOPTIJD_WERKUREN",
m."ONDERWERP",
m."VOMSCHRIJVING",
m."MELDING_OPMERKING",
m."PRIORITEIT",
m."PRIORITEITTXT",
m."RATING",
m."RATING_OPMERKING",
m."BOLLETJE",
m."ACTIECODE",
m."ACCEPT_SLA_DAGEN",
m."ACCEPT_SLA_UREN",
m."UITVOERING_SLA_DAGEN",
m."UITVOERING_SLA_UREN",
m."AFSPRAAK_SLA_DAGEN",
m."AFSPRAAK_SLA_UREN",
m."ACCEPT_SLA_OPTIJD",
m."UITVOERING_SLA_OPTIJD",
m."AFSPRAAK_SLA_OPTIJD",
m."SELFSERVICE",
(SELECT DISTINCT (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 2
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
werkbon_opdracht_nr,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 101
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
kosten,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 141
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
offerte_bedrag,
(SELECT DISTINCT (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 161
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
einddatum_klant,
(SELECT DISTINCT (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aok
WHERE alg_kenmerk_key = 1240
AND aok.alg_onrgoed_key = fclt_3d_locatie_key
AND alg_onrgoedkenmerk_verwijder IS NULL)
klantkenmerk,
(SELECT DISTINCT (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aok
WHERE alg_kenmerk_key = 1123
AND aok.alg_onrgoed_key = fclt_3d_locatie_key
AND alg_onrgoedkenmerk_verwijder IS NULL)
klantspec_regio_indeling,
(SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 661
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
opdrachtnummer_csu,
(SELECT DISTINCT (ud.fac_usrdata_omschr)
FROM mld_kenmerkmelding mk, mld_kenmerk k, fac_usrdata ud
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 681
AND ud.fac_usrtab_key = 261 -- Eigen tabel ja/nee
AND ud.fac_usrdata_key =
fac.safe_to_number (mld_kenmerkmelding_waarde)
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL)
akkoord_klant,
fac.gettrackingdate ('MLDAFR', m.melding_key),
TO_DATE (DECODE (fac.gettrackingdate ('MLDAFR', m.melding_key),
NULL, DECODE ((SELECT DISTINCT (fac.safe_to_number (mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding mk, mld_kenmerk k
WHERE mk.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 101
AND mk.mld_melding_key = m.melding_key
AND mk.mld_kenmerkmelding_verwijder IS NULL), NULL, NULL, m."MELDING_AFGEMELD"),
fac.gettrackingdate ('MLDAFR', m.melding_key))) datum_facturatie,
mc.accountcode,
mc.fclt_f_client,
mc.tijdstip,
mc.afhandeltijd_dagen,
mc.afhandeltijd_uren,
mc.reactie,
mc.reactie_optijd,
mc.uitgevoerd,
mc.uitgevoerd_door,
mc.afmeld_key,
(SELECT DISTINCT (m1.mld_melding_key)
FROM mld_melding m1
WHERE m1.mld_melding_start_key = m."MELDING_START_KEY"
AND m1.mld_workflowstep_key = 50)
FROM mld_v_udr_melding m, csun_v_rap_melding mc
WHERE mc.melding = m.melding_key
AND UPPER (mc.fclt_f_client) = 'KENTALIS';
CREATE OR REPLACE VIEW CSUN_V_NOTI_SLA24HR
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XEMAIL,
XMOBILE,
XSENDER,
ATTACHMENTS
)
AS
SELECT 'CUST10' AS code,
NULL AS sender,
NULL AS receiver,
'De SLA verloopt over 24 uur' AS text,
mld_melding_key AS key,
NULL AS extra_key,
prs_perslid_email AS xemail,
NULL,
NULL,
NULL
FROM (SELECT DISTINCT x.*
FROM (SELECT *
FROM (SELECT m.mld_melding_key,
sm.mld_ins_discipline_key,
alg_onrgoedkenmerk_waarde
prs_perslid_email,
mld_melding_status,
m.mld_stdmelding_key,
mld_melding_einddatum,
m.mld_melding_onderwerp,
TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000))
FROM mld_melding m,
mld_stdmelding sm,
(SELECT alg_onrgoed_key,
alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1260
AND alg_onrgoedkenmerk_verwijder
IS NULL) lse
WHERE m.mld_alg_locatie_key =
lse.alg_onrgoed_key
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
AND m.mld_stdmelding_key != 41 -- ontvangen berichten
AND m.mld_stdmelding_key IN
(SELECT fac.safe_to_number(fac_usrdata_code)
FROM fac_usrdata
WHERE fac_usrtab_key = 342 -- Eigen Tabel 'NotificerenBB'
AND fac_usrdata_verwijder
IS NULL)
UNION ALL
SELECT m.mld_melding_key,
sm.mld_ins_discipline_key,
prs_perslid_email,
mld_melding_status,
m.mld_stdmelding_key,
mld_melding_einddatum,
m.mld_melding_onderwerp,
TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000))
FROM prs_perslid p,
mld_melding m,
mld_stdmelding sm,
prs_v_perslidwerkplek_gegevens pwpg,
prs_kenmerklink kl
WHERE m.mld_stdmelding_key != 41 -- ontvangen berichten
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
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 (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
AND p.prs_perslid_verwijder IS NULL
AND m.mld_stdmelding_key IN
(SELECT fac.safe_to_number(fac_usrdata_code)
FROM fac_usrdata
WHERE fac_usrtab_key = 342 -- Eigen Tabel 'NotificerenBB'
AND fac_usrdata_verwijder
IS NULL)
UNION ALL
SELECT m.mld_melding_key,
sm.mld_ins_discipline_key,
prs_perslid_email,
mld_melding_status,
m.mld_stdmelding_key,
mld_melding_einddatum,
m.mld_melding_onderwerp,
TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000))
FROM prs_perslid p,
mld_melding m,
mld_stdmelding sm,
prs_v_perslidwerkplek_gegevens pwpg,
prs_kenmerklink kl
WHERE m.mld_stdmelding_key != 41 -- ontvangen berichten
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
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, 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
AND p.prs_perslid_verwijder IS NULL
AND m.mld_stdmelding_key IN
(SELECT fac.safe_to_number(fac_usrdata_code)
FROM fac_usrdata
WHERE fac_usrtab_key = 341 -- Eigen Tabel 'NotificerenRM/PM'
AND fac_usrdata_verwijder
IS NULL)) g
WHERE g.mld_melding_status IN (2,
3,
4,
7) -- Ivm CSUN#59537 moet deze notificatie ook pas wanneer deze bij Backoffice staat (status 2/3/4/7) ipv alleen nog in planning bij Frontoffice (status 0)
AND g.mld_stdmelding_key NOT IN
(SELECT mld_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmeldinggroep_key = 1) -- Geen notificatie
AND NOT EXISTS
(SELECT t.fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 821 -- CUST10 mag niet eerder zijn gestuurd, maar 1 keer sturen
AND t.fac_tracking_refkey =
g.mld_melding_key)
AND g.mld_melding_einddatum < SYSDATE + 1 --Binnen 24 uur vanaf nu
AND g.mld_ins_discipline_key IN
(SELECT fac.safe_to_number(fac_usrdata_code)
FROM fac_usrdata
WHERE fac_usrtab_key = 401 -- Eigen tabel 'Notificatie SLA'
AND fac_usrdata_verwijder IS NULL))
x
WHERE x.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_oms LIKE '%CUST10%'
AND t.fac_tracking_refkey = x.mld_melding_key));
CREATE OR REPLACE VIEW CSUN_V_NOTI_SLA_JDEKLACHT
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XEMAIL,
XMOBILE,
XSENDER,
ATTACHMENTS
)
AS
SELECT 'CUST11'
AS code,
NULL
AS sender,
fac.safe_to_number (dmk.alg_onrgoedkenmerk_waarde)
AS receiver,
'De SLA van de JDE klacht verloopt binnen 4 uur'
AS text,
m.mld_melding_key
AS key,
NULL
AS extra_key,
NULL,
NULL,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
alg_locatie l,
alg_district d,
alg_onrgoedkenmerk dmk
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_district_key = dmk.alg_onrgoed_key
AND dmk.alg_onrgoed_niveau = 'D'
AND dmk.alg_onrgoedkenmerk_verwijder IS NULL
AND dmk.alg_kenmerk_key = 1021 -- Kenmerk Districtsmanager
AND sm.mld_ins_discipline_key = 962 --JDE Klachten
AND m.mld_melding_einddatum < SYSDATE + (4 / 24) --Binnen 4 uur vanaf nu
AND m.mld_melding_status IN (2,
3,
4,
7)
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_oms LIKE '%CUST11%'
AND t.fac_tracking_refkey = m.mld_melding_key);
CREATE OR REPLACE VIEW CSUN_V_UDR_DEELINSPECT_JAARPLAN
(
GROEP,
PLANJAAR,
FCLT_3D_LOCATIE_KEY,
INS_SRTDEEL_KEY,
SRTCONTROLE_OMSCHRIJVING,
AANTAL_HUISJES,
INS_SRTCONTROLE_KEY,
TAAKCATEGORIE,
PRIJS_ENKEL,
EENHEID,
PERIODE,
FACTOR,
REALISATIE_P01,
REALISATIE_P02,
REALISATIE_P03,
REALISATIE_P04,
REALISATIE_P05,
REALISATIE_P06,
REALISATIE_P07,
REALISATIE_P08,
REALISATIE_P09,
REALISATIE_P10,
REALISATIE_P11,
REALISATIE_P12,
REALISATIE_P13,
REALISATIE,
PLANNING,
NOG_REALISEREN
)
AS
SELECT groep,
planjaar,
fclt_3d_locatie_key,
ins_srtdeel_key,
srtcontrole_omschrijving,
aantal_huisjes,
ins_srtcontrole_key,
taakcategorie,
prijs
AS prijs_enkel,
eenheid,
periode,
DECODE (eenheid, 4, 1 / periode, 3, 12 / periode)
AS factor,
realisatie_p01,
realisatie_p02,
realisatie_p03,
realisatie_p04,
realisatie_p05,
realisatie_p06,
realisatie_p07,
realisatie_p08,
realisatie_p09,
realisatie_p10,
realisatie_p11,
realisatie_p12,
realisatie_p13,
realisatie,
( aantal_huisjes
* prijs
* (DECODE (eenheid, 4, 1 / periode, 3, 12 / periode)))
AS planning,
((aantal_huisjes * prijs) - realisatie)
AS nog_realiseren
FROM (SELECT x.*,
(SELECT COUNT (*)
FROM ins_deel tel
WHERE tel.ins_srtdeel_key = x.ins_srtdeel_key)
AS aantal_huisjes,
(SELECT sc.ins_srtcontrole_eenheid
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key)
AS eenheid,
(SELECT sc.ins_srtcontrole_periode
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key)
AS periode,
(SELECT sc.ins_srtcontrole_kosten
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key)
AS prijs
FROM ( SELECT groep,
planjaar,
fclt_3d_locatie_key,
d.ins_srtdeel_key,
srtcontrole_omschrijving,
ins_srtcontrole_key,
taakcategorie,
-- SUM (plancost) - SUM (freezecost) AS te_realiseren,
-- SUM (plancost) AS planning,
SUM (freezecost)
AS realisatie,
SUM (
CASE WHEN planperiode = 1 THEN freezecost END)
AS realisatie_p01,
SUM (
CASE WHEN planperiode = 2 THEN freezecost END)
AS realisatie_p02,
SUM (
CASE WHEN planperiode = 3 THEN freezecost END)
AS realisatie_p03,
SUM (
CASE WHEN planperiode = 4 THEN freezecost END)
AS realisatie_p04,
SUM (
CASE WHEN planperiode = 5 THEN freezecost END)
AS realisatie_p05,
SUM (
CASE WHEN planperiode = 6 THEN freezecost END)
AS realisatie_p06,
SUM (
CASE WHEN planperiode = 7 THEN freezecost END)
AS realisatie_p07,
SUM (
CASE WHEN planperiode = 8 THEN freezecost END)
AS realisatie_p08,
SUM (
CASE WHEN planperiode = 9 THEN freezecost END)
AS realisatie_p09,
SUM (
CASE WHEN planperiode = 10 THEN freezecost END)
AS realisatie_p10,
SUM (
CASE WHEN planperiode = 11 THEN freezecost END)
AS realisatie_p11,
SUM (
CASE WHEN planperiode = 12 THEN freezecost END)
AS realisatie_p12,
SUM (
CASE WHEN planperiode = 13 THEN freezecost END)
AS realisatie_p13
FROM CSUN_V_UDR_DEELINSPECT_PLAN, ins_deel d
WHERE kosten_meetellen = 1
AND deel_key = ins_deel_key
GROUP BY groep,
planjaar,
fclt_3d_locatie_key,
d.ins_srtdeel_key,
ins_srtcontrole_key,
taakcategorie,
srtcontrole_omschrijving
ORDER BY fclt_3d_locatie_key, ins_srtcontrole_key) x);
CREATE OR REPLACE PROCEDURE csun_mld_verwerken
AS
c_applname VARCHAR2 (50) := 'MLD_VERWERK';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_mld_key NUMBER;
CURSOR c IS
SELECT mld_melding_key
FROM mld_melding
WHERE mld_melding_status = 5
AND mld_melding_afgerond = 1;
BEGIN
FOR rec IN c
LOOP
v_mld_key := rec.mld_melding_key;
mld.setmeldingstatus (rec.mld_melding_key,
6, -- Status Financieel verwerkt
4, -- Facilitor
NULL);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'E',
v_mld_key || ' ' || v_errormsg,
'Daily taak verwerken meldingen afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE CSUN_DAILY
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Meldingen die zijn afgemelde en afgerond mogen financieel worden verwerkt (status 6 / Archief)
csun_mld_verwerken ();
-- Verwerken projectgegevens vanuit Afas
--csun_update_afasproject ();
END;
/
CREATE OR REPLACE VIEW csun_v_rap_alginrichting
AS
SELECT prjnr,
fclt_f_regioomschrijving,
fclt_f_districtomschrijving,
locatiecode,
locatieomschrijving,
bezoekadres,
postcode,
plaats,
fclt_f_client,
bud,
bb,
rm_pm
FROM csun_v_rap_locatiegegevens
WHERE rm_pm = '*' OR bb = '*';
CREATE OR REPLACE VIEW csun_v_noti_alginrichting
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile,
xsender,
attachments
)
AS
SELECT DISTINCT
'CUST12' AS code,
NULL,
NULL,
'Attentie: Bij deze locatie is geen BBer, RMer of PMer/Objectleider ingesteld',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE UPPER(fac_usrrap_view_name) = 'CSUN_V_RAP_ALGINRICHTING')
rapportnr,
NULL,
'klantsupport@csu.nl',
NULL,
NULL,
NULL
FROM csun_v_rap_alginrichting
WHERE rm_pm = '*'
OR bb = '*';
CREATE OR REPLACE VIEW CSUN_V_MULESOFT_POSTNL
(
MELDINGNR,
WERKBONOPDRACHTNRMULESOFT,
CSUPROJECTNUMMER,
PONUMMER,
DATUMWERKBONVERSTUUR,
WERKBONGEVULD,
STATUS,
WIJZIGDATUM,
SYNCDATUM,
INSERTDATE,
ACCEPTDATE,
AFMELDDATE,
AFMELDTEKST,
KLANTTYPE,
PRS_PERSLID_KEY
)
AS
SELECT m.mld_melding_key
AS Meldingnr,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2004 --Technische opdracht nr. Klant
AND mld_melding_key = m.mld_melding_key)
AS WerkbonOpdrachtnrMulesoft,
l.alg_locatie_code
AS CSUProjectNummer,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2001 --PO-nummer
AND mld_melding_key = m.mld_melding_key)
AS werkbonOpdrachtnrKlant,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2002 --Datum werkbon verstuurd
AND mld_melding_key = m.mld_melding_key)
AS datumwerkbonverstuurd,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding, fac_usrdata
WHERE mld_kenmerkmelding_verwijder IS NULL
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mld_kenmerk_key = 2026 --PostNL werkbon gevuld (ja/nee)?
AND mld_melding_key = m.mld_melding_key)
AS werkbongevuld,
m.mld_melding_status
AS Status,
(SELECT MAX (datum)
FROM ( (SELECT MAX (t.fac_tracking_datum) AS datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t.fac_tracking_refkey = m.mld_melding_key)
UNION ALL
SELECT MAX (n.mld_melding_note_wijzigdatum) AS datum
FROM mld_melding_note n
WHERE n.mld_melding_note_flag = 1
AND n.mld_melding_key = m.mld_melding_key))
AS wijzigdatum,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2003 --Status bij klant (syncdate)
AND mld_melding_key = m.mld_melding_key)
AS SyncDatum,
COALESCE (fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
m.mld_melding_datum)
AS insertDate,
fac.gettrackingdate ('MLDACP', m.mld_melding_key)
AS acceptDate,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key)
AS afmeldDate,
m.mld_melding_opmerking
AS afmeldtekst,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2027 --Klanttype
AND mld_melding_key = m.mld_melding_key)
AS Klanttype,
m.prs_perslid_key
FROM mld_melding m, alg_locatie l
WHERE m.mld_melding_status NOT IN (1, 6) --Afgewezen of historie
--AND m.prs_perslid_key = 74361 -- API-user tbv POSTNL
AND l.alg_locatie_key = m.mld_alg_locatie_key;
CREATE OR REPLACE PROCEDURE csun_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
v_errorhint := 'Generieke import';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (
p_import_key,
'1;2;3;4;0;0;5;6;7;9;'
|| '8;0;0;0;0;16;17;10;0;0;'
|| '11;12;0;0;0;0;13;14;15;18;'
|| '19;20;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Email;Functie;Loginnaam;Klantautorisatie1;Klantautorisatie2;Klantautorisatie3;Telefoonnr;Mobiel;Binnenkomend_emailadres;Klantspecifieke_regio_autorisatie;Client');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END csun_import_perslid;
/
CREATE OR REPLACE PROCEDURE csun_update_perslid (p_import_key IN NUMBER)
IS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
v_errorhint := 'Toevoegen personen';
prs.update_perslid (p_import_key, 'LOGIN', NULL);
-- Klantspecifieke aanpassingen
v_errorhint := 'Klantspecifieke aanpassingen update';
csun_post_update_perslid (p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END csun_update_perslid;
/
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END csun_post_update_perslid;
/
CREATE OR REPLACE PROCEDURE csun_pre_putorders
AS
BEGIN
DELETE FROM
fac_notificatie
WHERE fac_notificatie_key IN
( SELECT n.fac_notificatie_key
FROM mld_melding m,
fac_notificatie n,
fac_srtnotificatie sn
WHERE n.fac_notificatie_refkey = m.mld_melding_key
AND n.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND LOWER (sn.fac_srtnotificatie_xmlnode) =
'melding'
AND n.fac_notificatie_systeemadres IS NOT NULL
AND m.mld_melding_externnr IS NULL
GROUP BY n.fac_notificatie_key);
csun_export_mailnoti;
--csun_noti_rm_noshow;
END;
/
CREATE OR REPLACE VIEW CSUN_V_NOTI_RM
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST14' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Nieuwe melding aangemaakt: '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM prs_perslid p,
mld_melding m,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status = 2
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST14'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%Nieuwe melding aangemaakt:%')
UNION ALL
SELECT 'CUST15' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'notificatie - Melding nog niet geaccepteerd na 4 uur; '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM prs_perslid p,
mld_melding m,
mld_v_udr_melding mm,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mm.melding_key = m.mld_melding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status = 2
AND mm.melding_acceptdatum < SYSDATE
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST15'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%notificatie - Melding nog niet geaccepteerd na 4 uur%')
UNION ALL
SELECT 'CUST16' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Melding nog niet afgemeld na 24 uur na registratie; '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM prs_perslid p,
mld_melding m,
mld_v_udr_melding mm,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mm.melding_key = m.mld_melding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status IN (4, 7, 99)
AND m.mld_melding_datum + 1 < SYSDATE
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST16'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%Melding nog niet afgemeld na 24 uur na registratie:%');
CREATE OR REPLACE PROCEDURE csun_noti_rm_noshow
AS
CURSOR CUST14 IS
SELECT p.prs_perslid_key AS receiver,
'Nieuwe melding aangemaakt: '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
sn.fac_srtnotificatie_key
FROM prs_perslid p,
mld_melding m,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl,
fac_srtnotificatie sn
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status = 2
AND sn.fac_srtnotificatie_code = 'CUST14'
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST14'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%Nieuwe melding aangemaakt:%');
CURSOR CUST15 IS
SELECT p.prs_perslid_key AS receiver,
'notificatie - Melding nog niet geaccepteerd na 4 uur; '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
sn.fac_srtnotificatie_key
FROM prs_perslid p,
mld_melding m,
mld_v_udr_melding mm,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl,
fac_srtnotificatie sn
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mm.melding_key = m.mld_melding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status = 2
AND sn.fac_srtnotificatie_code = 'CUST15'
AND mm.melding_acceptdatum < SYSDATE
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST15'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%notificatie - Melding nog niet geaccepteerd na 4 uur%');
CURSOR CUST16 IS
SELECT 'CUST16' AS code,
NULL AS sender,
p.prs_perslid_key AS receiver,
'Melding nog niet afgemeld na 24 uur na registratie; '
|| sm.mld_stdmelding_omschrijving
|| ' ('
|| m.mld_melding_key
|| ')' AS text,
m.mld_melding_key AS key,
sn.fac_srtnotificatie_key
FROM prs_perslid p,
mld_melding m,
mld_v_udr_melding mm,
mld_stdmelding sm,
prs_v_werkplekperslid_gegevens pwpg,
prs_kenmerklink kl,
fac_srtnotificatie sn
WHERE sm.mld_stdmelding_key = 61 -- No show
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mm.melding_key = m.mld_melding_key
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 Rayonmanager
AND prs_kenmerk_key = 1100 -- notificatie enable vinkje
AND prs_kenmerklink_waarde = '1'
AND kl.prs_link_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND m.mld_melding_status IN (4, 7, 99)
AND sn.fac_srtnotificatie_code = 'CUST16'
AND m.mld_melding_datum + 1 < SYSDATE
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST16'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_oms LIKE
'%Melding nog niet afgemeld na 24 uur na registratie:%');
BEGIN
FOR rec IN CUST14
LOOP
-- de notificatie klaarzetten
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (rec.fac_srtnotificatie_key,
2,
NULL,
rec.receiver,
rec.text,
rec.key,
NULL,
2);
END LOOP;
FOR rec IN CUST15
LOOP
-- de notificatie klaarzetten
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (rec.fac_srtnotificatie_key,
2,
NULL,
rec.receiver,
rec.text,
rec.key,
NULL,
2);
END LOOP;
FOR rec IN CUST16
LOOP
-- de notificatie klaarzetten
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (rec.fac_srtnotificatie_key,
2,
NULL,
rec.receiver,
rec.text,
rec.key,
NULL,
2);
END LOOP;
END csun_noti_rm_noshow;
/
CREATE OR REPLACE VIEW CSUN_V_PERSLID_GEGEVENS
(
FACILITOR_ID,
NAAM,
VOORLETTERS,
TUSSENVOEGSEL,
VOORNAAM,
INITIALEN,
EMAIL,
FCLT_3D_AFDELING_KEY,
AFDELING_NAAM,
AFDELING_OMSCHRIJVING
)
AS
SELECT PRS_P.prs_perslid_key,
PRS_P.prs_perslid_naam,
PRS_P.prs_perslid_voorletters,
PRS_P.prs_perslid_tussenvoegsel,
PRS_P.prs_perslid_voornaam,
PRS_P.prs_perslid_initialen,
PRS_P.prs_perslid_email,
PRS_P.prs_afdeling_key,
PRS_A.prs_afdeling_naam,
PRS_A.prs_afdeling_omschrijving
FROM prs_v_aanwezigperslid PRS_P,
prs_afdeling PRS_A,
prs_srtperslid PRS_S
WHERE PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key
AND PRS_P.prs_srtperslid_key = PRS_S.prs_srtperslid_key;
CREATE OR REPLACE PROCEDURE csun_update_afasproject
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
ac.alg_onrgoedkenmerk_waarde AS accountcode,
an.alg_onrgoedkenmerk_waarde AS accountnaam
FROM alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ac
ON l.alg_locatie_key = ac.alg_onrgoed_key
AND ac.alg_kenmerk_key = 1940 -- Accountcode
LEFT JOIN alg_v_aanwezigonrgoedkenmerk an
ON l.alg_locatie_key = an.alg_onrgoed_key
AND an.alg_kenmerk_key = 1941 -- Accountnaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vd
ON l.alg_locatie_key = vd.alg_onrgoed_key
AND vd.alg_kenmerk_key = 2120 --vervaldatum
WHERE alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND ( vd.alg_onrgoedkenmerk_waarde IS NULL
OR TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) >
TRUNC (SYSDATE));
CURSOR c_district (c_accountcode IN VARCHAR2)
IS
SELECT DISTINCT dm.alg_onrgoedkenmerk_waarde AS dm,
vn.alg_onrgoedkenmerk_waarde AS voornaam,
vl.alg_onrgoedkenmerk_waarde AS voorletters,
vv.alg_onrgoedkenmerk_waarde AS voorvoegsels,
naam.alg_onrgoedkenmerk_waarde AS achternaam
FROM alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ac
ON l.alg_locatie_key = ac.alg_onrgoed_key
AND ac.alg_kenmerk_key = 1940 -- Accountcode
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vd
ON l.alg_locatie_key = vd.alg_onrgoed_key
AND vd.alg_kenmerk_key = 2120 --vervaldatum
LEFT JOIN alg_v_aanwezigonrgoedkenmerk dm
ON l.alg_locatie_key = dm.alg_onrgoed_key
AND dm.alg_kenmerk_key = 2141 --dm_mail
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vn
ON l.alg_locatie_key = vn.alg_onrgoed_key
AND vn.alg_kenmerk_key = 1946 -- Voornaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vl
ON l.alg_locatie_key = vl.alg_onrgoed_key
AND vl.alg_kenmerk_key = 1947 -- Voorletters
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vv
ON l.alg_locatie_key = vv.alg_onrgoed_key
AND vv.alg_kenmerk_key = 1948 -- Voorvoegsel
LEFT JOIN alg_v_aanwezigonrgoedkenmerk naam
ON l.alg_locatie_key = naam.alg_onrgoed_key
AND naam.alg_kenmerk_key = 1949 --Achternaam
WHERE alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND ac.alg_onrgoedkenmerk_waarde = c_accountcode
AND ( vd.alg_onrgoedkenmerk_waarde IS NULL
OR TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) >
TRUNC (SYSDATE));
CURSOR c (c_accountcode IN VARCHAR2, c_dm IN VARCHAR2)
IS
SELECT alg_locatie_key,
alg_district_key,
alg_locatie_code,
alg_locatie_omschrijving AS omschrijving,
alg_locatie_verwijder,
alg_locatie_vervaldatum,
alg_locatie_adres AS adres,
alg_locatie_postcode AS postcode,
alg_locatie_plaats AS woonplaats,
alg_locatie_land AS land,
ac.alg_onrgoedkenmerk_waarde AS accountcode,
an.alg_onrgoedkenmerk_waarde AS accountnaam,
pr.alg_onrgoedkenmerk_waarde AS project,
bu.alg_onrgoedkenmerk_waarde AS bu,
vn.alg_onrgoedkenmerk_waarde AS voornaam,
vl.alg_onrgoedkenmerk_waarde AS voorletters,
vv.alg_onrgoedkenmerk_waarde AS voorvoegsels,
naam.alg_onrgoedkenmerk_waarde AS achternaam,
rp.alg_onrgoedkenmerk_waarde AS rayonl_persnr,
rn.alg_onrgoedkenmerk_waarde AS rayonl_naam,
rm.alg_onrgoedkenmerk_waarde AS rayonl_mail,
vd.alg_onrgoedkenmerk_waarde AS vervaldatum,
CASE
WHEN vd.alg_onrgoedkenmerk_waarde IS NOT NULL
AND TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) <
TRUNC (SYSDATE)
THEN
'J'
ELSE
NULL
END AS vervallen,
dm.alg_onrgoedkenmerk_waarde AS dm
FROM alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ac
ON l.alg_locatie_key = ac.alg_onrgoed_key
AND ac.alg_kenmerk_key = 1940 -- Accountcode
LEFT JOIN alg_v_aanwezigonrgoedkenmerk an
ON l.alg_locatie_key = an.alg_onrgoed_key
AND an.alg_kenmerk_key = 1941 -- Accountnaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk pr
ON l.alg_locatie_key = pr.alg_onrgoed_key
AND pr.alg_kenmerk_key = 1942 -- project
LEFT JOIN alg_v_aanwezigonrgoedkenmerk bu
ON l.alg_locatie_key = bu.alg_onrgoed_key
AND bu.alg_kenmerk_key = 1944 -- bu
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vn
ON l.alg_locatie_key = vn.alg_onrgoed_key
AND vn.alg_kenmerk_key = 1946 -- Voornaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vl
ON l.alg_locatie_key = vl.alg_onrgoed_key
AND vl.alg_kenmerk_key = 1947 -- Voorletters
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vv
ON l.alg_locatie_key = vv.alg_onrgoed_key
AND vv.alg_kenmerk_key = 1948 -- Voorvoegsel
LEFT JOIN alg_v_aanwezigonrgoedkenmerk naam
ON l.alg_locatie_key = naam.alg_onrgoed_key
AND naam.alg_kenmerk_key = 1949 --Achternaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rp
ON l.alg_locatie_key = rp.alg_onrgoed_key
AND rp.alg_kenmerk_key = 1955 -- Rayonl_persnr
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rn
ON l.alg_locatie_key = rn.alg_onrgoed_key
AND rn.alg_kenmerk_key = 1956 -- rayonl_naam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rm
ON l.alg_locatie_key = rm.alg_onrgoed_key
AND rm.alg_kenmerk_key = 2140 -- rayonl_mail
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vd
ON l.alg_locatie_key = vd.alg_onrgoed_key
AND vd.alg_kenmerk_key = 2120 --vervaldatum
LEFT JOIN alg_v_aanwezigonrgoedkenmerk dm
ON l.alg_locatie_key = dm.alg_onrgoed_key
AND dm.alg_kenmerk_key = 2141 --dm_mail
WHERE alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND ac.alg_onrgoedkenmerk_waarde = c_accountcode
AND dm.alg_onrgoedkenmerk_waarde = c_dm
AND ( vd.alg_onrgoedkenmerk_waarde IS NULL
OR TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) >
TRUNC (SYSDATE));
CURSOR c_verv (c_accountcode IN VARCHAR2)
IS
SELECT alg_locatie_key,
alg_district_key,
alg_locatie_code,
alg_locatie_omschrijving AS omschrijving,
alg_locatie_verwijder,
alg_locatie_vervaldatum,
vd.alg_onrgoedkenmerk_waarde AS vervaldatum,
CASE
WHEN vd.alg_onrgoedkenmerk_waarde IS NOT NULL
AND TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) <
TRUNC (SYSDATE)
THEN
'J'
ELSE
NULL
END AS vervallen
FROM alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vd
ON l.alg_locatie_key = vd.alg_onrgoed_key
AND vd.alg_kenmerk_key = 2120 --vervaldatum
WHERE alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND (TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde, 'DD-MM-YYYY')) <
TRUNC (SYSDATE))
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
AND l.alg_locatie_key NOT IN
(SELECT b.fac_bijlagen_refkey
FROM fac_bijlagen b, alg_kenmerk bkm
WHERE b.fac_bijlagen_refkey = l.alg_locatie_key
AND bkm.alg_kenmerk_key =
b.fac_bijlagen_kenmerk_key
AND bkm.alg_kenmerk_niveau = 'L' --Enkel wanneer er op locatieniveau kenmerken zijn toegevoegd.
AND b.fac_bijlagen_module = 'ALG' -- Enkel bijlagen komend uit deze module (geen res/mld/etc).
AND bkm.alg_kenmerk_kenmerktype IN ('M', 'F') -- Enkel kenmerksoorten obv map met bijlage of enkele bijlage
AND b.fac_bijlagen_verwijder IS NULL);
CURSOR c_rayonl IS
SELECT bu.alg_onrgoedkenmerk_waarde AS bu,
rp.alg_onrgoedkenmerk_waarde AS rayonl_persnr,
vn.alg_onrgoedkenmerk_waarde AS voornaam,
vl.alg_onrgoedkenmerk_waarde AS voorletters,
vv.alg_onrgoedkenmerk_waarde AS voorvoegsels,
naam.alg_onrgoedkenmerk_waarde AS achternaam,
rn.alg_onrgoedkenmerk_waarde AS rayonl_naam,
rm.alg_onrgoedkenmerk_waarde AS rayonl_mail
FROM alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk bu
ON l.alg_locatie_key = bu.alg_onrgoed_key
AND bu.alg_kenmerk_key = 1944 -- bu
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rp
ON l.alg_locatie_key = rp.alg_onrgoed_key
AND rp.alg_kenmerk_key = 1955 -- Rayonl_persnr
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vn
ON l.alg_locatie_key = vn.alg_onrgoed_key
AND vn.alg_kenmerk_key = 1946 -- Voornaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vl
ON l.alg_locatie_key = vl.alg_onrgoed_key
AND vl.alg_kenmerk_key = 1947 -- Voorletters
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vv
ON l.alg_locatie_key = vv.alg_onrgoed_key
AND vv.alg_kenmerk_key = 1948 -- Voorvoegsel
LEFT JOIN alg_v_aanwezigonrgoedkenmerk naam
ON l.alg_locatie_key = naam.alg_onrgoed_key
AND naam.alg_kenmerk_key = 1949 --Achternaam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rn
ON l.alg_locatie_key = rn.alg_onrgoed_key
AND rn.alg_kenmerk_key = 1956 -- rayonl_naam
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rm
ON l.alg_locatie_key = rm.alg_onrgoed_key
AND rm.alg_kenmerk_key = 2140 -- rayonl_mail
WHERE alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND rm.alg_onrgoedkenmerk_waarde IS NOT NULL;
CURSOR c_rayon_wp IS
SELECT p.prs_perslid_key, rg.alg_ruimte_key
FROM prs_perslid p,
alg_v_ruimte_gegevens rg,
alg_locatie l
LEFT JOIN alg_v_aanwezigonrgoedkenmerk rm
ON l.alg_locatie_key = rm.alg_onrgoed_key
AND rm.alg_kenmerk_key = 2140 -- rayonl_mail
LEFT JOIN alg_v_aanwezigonrgoedkenmerk vd
ON l.alg_locatie_key = vd.alg_onrgoed_key
AND vd.alg_kenmerk_key = 2120 --vervaldatum
WHERE l.alg_locatie_key IN
(SELECT alg_onrgoed_key
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = 1942
AND alg_onrgoed_niveau = 'L'
AND alg_onrgoedkenmerk_waarde IS NOT NULL)
AND ( vd.alg_onrgoedkenmerk_waarde IS NULL
OR TRUNC (
TO_DATE (vd.alg_onrgoedkenmerk_waarde,
'DD-MM-YYYY')) >
TRUNC (SYSDATE))
AND LOWER (rm.alg_onrgoedkenmerk_waarde) =
LOWER (p.prs_perslid_email)
AND l.alg_locatie_key = rg.alg_locatie_key
AND rg.alg_ruimte_nr = '-'
AND prs_srtperslid_key = 50 -- rayonleider
AND prs_perslid_verwijder IS NULL
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);
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
AND fac_usrdata_verwijder IS NULL;
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;
--Eerst leegmaken
v_district_key := NULL;
BEGIN
SELECT alg_onrgoed_key
INTO v_district_key
FROM prs_perslid p,
alg_onrgoedkenmerk aog,
alg_district d
WHERE LOWER (p.prs_perslid_email) =
LOWER (rec_d.dm)
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.writelog (
'UPDATE_AFASPROJECT',
'E',
'Import locaties afgebroken, distrinctmanager niet gevonden ( district mngr:'
|| rec_d.dm
|| '- account:'
|| rec_a.accountcode
|| '-'
|| rec_a.accountnaam
|| ')',
v_error_hint);
END;
--## Kan onderstaande IF helemaal weg en daarmee ook de cursor c?
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_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE SUBSTR (alg_locatie_code,
2,
50) =
rec.project
AND alg_locatie_verwijder IS NULL
AND alg_locatie_vervaldatum
IS NULL;
-- Met de import vanuit Afas hoeven we de locatie niet meer aan te maken.
-- EXCEPTION
-- WHEN NO_DATA_FOUND
-- THEN
-- 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.writelog (
-- 'UPDATE_AFASPROJECT',
-- 'E',
-- 'Import locaties afgebroken, locatie omschrijving bestaat al ( district mngr:'
-- || rec_d.dm
-- || '- account:'
-- || rec_a.accountcode
-- || '-'
-- || rec_a.accountnaam
-- || ' Projectnr: '
-- || rec.project
-- || ')',
-- 'Locatie met omschrijving: '
-- || rec.omschrijving
-- || ' bestaat al');
-- END IF;
END;
-- Met de import vanuit Afas hoeven we de locatie zelf niet meer aan te passen
-- 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.writelog (
'UPDATE_AFASPROJECT',
'E',
'Import locaties afgebroken ( district mngr:'
|| rec_d.dm
|| '- 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.writelog (
'UPDATE_AFASPROJECT',
'E',
'Import locaties afgebroken ( district mngr:'
|| rec_d.dm
|| '- 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.writelog (
'UPDATE_AFASPROJECT',
'E',
'Import locaties afgebroken ('
|| rec_a.accountcode
|| '):'
|| v_errormsg,
v_error_hint);
END;
END LOOP;
-- BEGIN
-- csun_export_set_werkplek;
-- END;
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_gebouw_verwijder IS NULL
AND 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.writelog ('UPDATE_AFASPROJECT',
'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
v_perslid_key := NULL;
-- Een rayonleider kan meerdere kostenplaatsen hebben
SELECT MAX (p.prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
--AND p.prs_perslid_email = rec_ray.rayonl_mail;
AND (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120 -- Kostenplaats CSU
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || rec_ray.rayonl_persnr || '%';
IF v_perslid_key IS NULL
THEN
-- nieuwe rayonleider aanmaken tijdelijk onder CSU NA.
v_error_hint :=
'Aanmaken Rayonmanager: ' || rec_ray.rayonl_mail;
INSERT INTO prs_perslid (prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_email)
VALUES (50,
1,
rec_ray.achternaam,
rec_ray.voornaam,
rec_ray.rayonl_mail)
RETURNING prs_perslid_key
INTO v_perslid_key;
IF v_perslid_key IS NOT NULL -- Met CSUN#87067 schrijven we kostenplaats niet meer als persnr weg, maar in een kenmerkveld
THEN
csun_set_kenmerk ('PRS',
1120,
v_perslid_key,
rec_ray.rayonl_persnr,
0);
fac.trackaction (
'PRSUPD',
v_perslid_key,
4, -- Facilitor
NULL,
'Kostenplaats CSU -> ' || rec_ray.rayonl_persnr);
END IF;
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;
-- v_error_hint :=
-- 'Notificatie nieuwe Rayonmanager: '
-- || rec_ray.voornaam
-- || ' '
-- || v_tussenv
-- || ' '
-- || rec_ray.achternaam;
--
-- fac.trackaction ('CUST13',
-- v_perslid_key,
-- 4, --Facilitor
-- NULL,
-- 'Er is voor u een account aangemaakt');
END IF;
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.writelog (
'UPDATE_AFASPROJECT',
'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.
FOR rec IN c_rayon_wp
LOOP
prs.movetoruimte (rec.prs_perslid_key,
rec.alg_ruimte_key,
'L',
1);
END LOOP;
-- 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,
alg_locatie l
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
AND p.prs_srtperslid_key = 50 -- Rayonleider
AND l.alg_locatie_key = pwpg.alg_locatie_key
AND l.alg_locatie_code LIKE 'P%'
AND NOT EXISTS
(SELECT i.project
FROM csun_imp_project i, alg_locatie l
WHERE (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder
IS NULL
AND pk.prs_kenmerk_key =
1120 -- Kostenplaats CSU
AND p.prs_perslid_key =
pk.prs_link_key
AND pk.prs_kenmerklink_niveau =
'P') LIKE
'%' || i.rayonl_persnr || '%'
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.writelog (
'UPDATE_AFASPROJECT',
'E',
'Fout tijdens importeren van onroerend goed (locatie en gebouw) ',
v_errormsg);
END csun_update_afasproject;
/
------ 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