3986 lines
180 KiB
SQL
3986 lines
180 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for SVRZ.
|
||
DEFINE thisfile = 'SVRZ.SQL'
|
||
DEFINE dbuser = '^SVRZ'
|
||
|
||
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 VIEW svrz_v_rap_import_log
|
||
(
|
||
fclt_f_applicatie,
|
||
datum,
|
||
fclt_f_status,
|
||
omschrijving,
|
||
hint
|
||
)
|
||
AS
|
||
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
|
||
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
|
||
imp_log_status,
|
||
imp_log_omschrijving,
|
||
imp_log_hint
|
||
FROM imp_log il1, fac_import fi1, fac_import_app fia1
|
||
WHERE il1.fac_import_key = fi1.fac_import_key(+)
|
||
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM imp_log il2, fac_import fi2
|
||
WHERE il2.fac_import_key = fi2.fac_import_key
|
||
AND fi2.fac_import_app_key = fi1.fac_import_app_key
|
||
AND il2.fac_import_key > il1.fac_import_key);
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE svrz_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
v_errorhint VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_errorhint := 'Generieke import';
|
||
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;7;2;3;5;'
|
||
|| '4;0;0;0;0;15;16;17;0;1;'
|
||
|| '8;18;19;6;0;0;20;21;0;0;'
|
||
|| '0;0;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'personeelsnummer;achternaam;tussenvoegsel;voorletters;voornaam;titel_aanhef;afdelingscode;functie;locatiecode;gebouwcode;bouwlaagvolgnummer;ruimtenummer;werkplekvolgnummer;omschrijving;telefoonnummer;mobiel;email;loginnaam;password;indienstdatum;uitdienstdatum%');
|
||
COMMIT;
|
||
|
||
v_errorhint := 'Fout bepalen stamplaats';
|
||
|
||
-- Klantspecifieke aanpassingen.
|
||
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Afd.code-kolom -> Eigen tabel (key=101) ->
|
||
-- Locatiecode en daaronder de alfabetisch eerste Fictieve ruimte!
|
||
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze
|
||
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
|
||
-- naar de bepaalde Ruimte op import-locatie!
|
||
-- Eventuele WPs onder andere vestigingen dan import-vestiging blijven ook ongewijzigd!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.alg_locatie_code =
|
||
(SELECT il.alg_locatie_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie il
|
||
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)),
|
||
i.alg_gebouw_code =
|
||
(SELECT g1.alg_gebouw_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie l1,
|
||
alg_v_aanweziggebouw g1,
|
||
alg_v_aanwezigverdieping v1,
|
||
alg_v_aanwezigruimte r1
|
||
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
|
||
AND l1.alg_locatie_key = g1.alg_locatie_key
|
||
AND g1.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v1.alg_verdieping_key = r1.alg_verdieping_key
|
||
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r2,
|
||
alg_verdieping v2,
|
||
alg_gebouw g2
|
||
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND r2.alg_verdieping_key = v2.alg_verdieping_key
|
||
AND v2.alg_gebouw_key = g2.alg_gebouw_key
|
||
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
|
||
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
|
||
AND g2.alg_locatie_key = g1.alg_locatie_key)),
|
||
i.alg_verdieping_volgnr =
|
||
(SELECT v1.alg_verdieping_volgnr
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie l1,
|
||
alg_v_aanweziggebouw g1,
|
||
alg_v_aanwezigverdieping v1,
|
||
alg_v_aanwezigruimte r1
|
||
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
|
||
AND l1.alg_locatie_key = g1.alg_locatie_key
|
||
AND g1.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v1.alg_verdieping_key = r1.alg_verdieping_key
|
||
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r2,
|
||
alg_verdieping v2,
|
||
alg_gebouw g2
|
||
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND r2.alg_verdieping_key = v2.alg_verdieping_key
|
||
AND v2.alg_gebouw_key = g2.alg_gebouw_key
|
||
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
|
||
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
|
||
AND g2.alg_locatie_key = g1.alg_locatie_key)),
|
||
i.alg_ruimte_nr =
|
||
(SELECT r1.alg_ruimte_nr
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie l1,
|
||
alg_v_aanweziggebouw g1,
|
||
alg_v_aanwezigverdieping v1,
|
||
alg_v_aanwezigruimte r1
|
||
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
|
||
AND l1.alg_locatie_key = g1.alg_locatie_key
|
||
AND g1.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v1.alg_verdieping_key = r1.alg_verdieping_key
|
||
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r2,
|
||
alg_verdieping v2,
|
||
alg_gebouw g2
|
||
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
|
||
AND r2.alg_verdieping_key = v2.alg_verdieping_key
|
||
AND v2.alg_gebouw_key = g2.alg_gebouw_key
|
||
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
|
||
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
|
||
AND g2.alg_locatie_key = g1.alg_locatie_key))
|
||
WHERE NOT EXISTS -- Nog geen WP op Locatie!
|
||
(SELECT 1
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie il,
|
||
prs_v_aanwezigperslid p,
|
||
prs_perslidwerkplek pw,
|
||
prs_werkplek cw,
|
||
alg_v_aanwezigruimte cr,
|
||
alg_verdieping cv,
|
||
alg_gebouw cg,
|
||
alg_locatie cl
|
||
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
|
||
AND p.prs_perslid_nr = i.prs_perslid_nr
|
||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw.prs_werkplek_key = cw.prs_werkplek_key
|
||
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
|
||
AND cr.alg_verdieping_key = cv.alg_verdieping_key
|
||
AND cv.alg_gebouw_key = cg.alg_gebouw_key
|
||
AND cg.alg_locatie_key = il.alg_locatie_key);
|
||
COMMIT;
|
||
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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Inleesproces personen afgebroken!');
|
||
END svrz_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE svrz_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
v_errorhint VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
|
||
CURSOR c_flex
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_kenmerk1, i.prs_kenmerk2
|
||
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
||
WHERE p.prs_perslid_nr = i.prs_perslid_nr
|
||
AND i.prs_kenmerk2 IS NOT NULL
|
||
AND fac.safe_to_date (prs_kenmerk2, 'dd-mm-yyyy') > p.prs_perslid_ingangsdatum -- Uitdienstdatum moet v<><76>r indienstdatum liggen!
|
||
ORDER BY 2;
|
||
|
||
-- Let op! Personen die niet meer in dienst zijn -> niet in fac_imp_perslid!
|
||
-- Dubbele perslid_nr? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid i
|
||
WHERE UPPER (i.prs_perslid_nr) = UPPER (p.prs_perslid_nr))
|
||
ORDER BY 2;
|
||
|
||
-- SVRZ#78202: Toekennen extra WP op TS of TSMAX.
|
||
-- Voor personen volgens import HR-WP op Ter Schorre: Extra WP op Maxima,
|
||
-- namelijk 5488=MAX-BG-A.0001 (tenzij al andere WP ergens op Maxima).
|
||
-- Voor personen volgens import HR-WP op Maxima: Extra WP op Ter Schorre,
|
||
-- namelijk 3041=TS-BG-A.0001 (tenzij al andere WP ergens op Ter Schorre).
|
||
CURSOR c_ts_max
|
||
IS
|
||
SELECT DISTINCT p.prs_perslid_key, p.prs_perslid_nr, DECODE (wpg.alg_locatie_key, 141, 5488, 3041) extra_ruimte_key
|
||
FROM prs_v_aanwezigperslid p, prs_perslidwerkplek pw, prs_v_werkplek_gegevens wpg
|
||
WHERE p.prs_perslid_key = pw.prs_perslid_key
|
||
ANd pw.prs_perslidwerkplek_volgnr = 2 -- Alleen de medewerkers met een HR-WP op TS of TSMAX!
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key
|
||
AND wpg.alg_locatie_key IN (141, 311) -- TS/TSMAX
|
||
AND NOT EXISTS -- Nog geen WP op extra TS-locatie
|
||
(SELECT 1
|
||
FROM prs_v_werkplekperslid_gegevens
|
||
WHERE prs_perslid_key = p.prs_perslid_key
|
||
AND alg_locatie_key = DECODE (wpg.alg_locatie_key, 141, 311, 141))
|
||
ORDER BY 2;
|
||
BEGIN
|
||
-- Generieke update.
|
||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
||
|
||
IF v_count < 1000
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', 'Zie specificatie');
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Generieke update, waarbij - alleen vaste en niet virtuele - WP(s) tot op
|
||
-- District-niveau worden verwijderd.
|
||
v_errorhint := 'Fout generieke update';
|
||
prs.update_perslid (p_import_key, 'NR', 'D');
|
||
|
||
-- Update flexvelden.
|
||
-- SVRZ#59828: Registreren uitdienstdatum (tbv. bezittingen-noti).
|
||
v_errorhint := 'Fout bijwerken uitdienstdatum';
|
||
FOR rec IN c_flex
|
||
LOOP
|
||
--PRS.upsertkenmerk (-1, rec.prs_perslid_key, TO_CHAR (fac.safe_to_date (rec.prs_kenmerk1, 'dd-mm-yyyy'), 'dd-mm-yyyy')); -- Indienst
|
||
--PRS.upsertkenmerk (-1, rec.prs_perslid_key, TO_CHAR (fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'), 'dd-mm-yyyy')); -- Uitdienst
|
||
--UPDATE prs_perslid
|
||
-- SET prs_perslid_ingangsdatum = COALESCE (fac.safe_to_date (rec.prs_kenmerk1, 'dd-mm-yyyy'), prs_perslid_ingangsdatum),
|
||
-- prs_perslid_einddatum = COALESCE (fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'), prs_perslid_einddatum)
|
||
-- WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_einddatum = COALESCE (fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'), prs_perslid_einddatum)
|
||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
v_errorhint := 'Fout verwijderen persoon';
|
||
FOR rec IN c_del
|
||
LOOP
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
|
||
-- SVRZ#73838: Ook verwijderen e-mail adres bij/vanaf inactivatie, want
|
||
-- dit gebeurt (nog) niet in prs.delete_perslid().
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_email = NULL
|
||
WHERE prs_perslid_key = rec.prs_perslid_key
|
||
AND prs_perslid_email IS NOT NULL;
|
||
|
||
-- SVRZ#76558: Ook verwijderen autorisaties bij/vanaf inactivatie, want
|
||
-- dit gebeurt (nog) niet in prs.delete_perslid().
|
||
DELETE FROM fac_gebruikersgroep
|
||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
END LOOP;
|
||
COMMIT;
|
||
|
||
-- Elke PRS-import alle HR-WP opnieuw bepalen (dus eerst alle 2-WP wissen)!
|
||
v_errorhint := 'Fout bijwerken HR-WP';
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_perslidwerkplek_volgnr = NULL
|
||
WHERE prs_perslidwerkplek_volgnr = 2;
|
||
COMMIT;
|
||
|
||
UPDATE prs_perslidwerkplek pw1
|
||
SET pw1.prs_perslidwerkplek_volgnr = 2
|
||
WHERE EXISTS -- Alleen WP op HR-locatie van import-personen waarvoor afdeling in mapping!
|
||
(SELECT 1
|
||
FROM fac_imp_perslid i,
|
||
prs_v_aanwezigperslid p,
|
||
fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie l,
|
||
alg_v_aanweziggebouw g,
|
||
alg_v_aanwezigverdieping v,
|
||
alg_v_aanwezigruimte r,
|
||
prs_werkplek wp,
|
||
prs_perslidwerkplek pw2
|
||
WHERE i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND UPPER (i.prs_afdeling_naam) = ud.fac_usrdata_upper
|
||
AND ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l.alg_locatie_code)
|
||
AND l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND wp.prs_werkplek_virtueel = 0 -- Echte WP!
|
||
AND wp.prs_werkplek_key = pw2.prs_werkplek_key
|
||
AND pw2.prs_perslid_key = p.prs_perslid_key
|
||
AND pw2.prs_perslid_key = pw1.prs_perslid_key
|
||
AND pw2.prs_werkplek_key = pw1.prs_werkplek_key)
|
||
AND NOT EXISTS -- Geen hogere/oudere echte WP op HR-locatie!
|
||
(SELECT 1
|
||
FROM fac_imp_perslid i,
|
||
prs_v_aanwezigperslid p,
|
||
fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
|
||
alg_v_aanweziglocatie l,
|
||
alg_v_aanweziggebouw g,
|
||
alg_v_aanwezigverdieping v,
|
||
alg_v_aanwezigruimte r,
|
||
prs_werkplek wp,
|
||
prs_perslidwerkplek pw2
|
||
WHERE i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND UPPER (i.prs_afdeling_naam) = ud.fac_usrdata_upper
|
||
AND ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l.alg_locatie_code)
|
||
AND l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
AND wp.prs_werkplek_virtueel = 0 -- Echte WP!
|
||
AND wp.prs_werkplek_key = pw2.prs_werkplek_key
|
||
AND pw2.prs_perslid_key = p.prs_perslid_key
|
||
AND pw2.prs_perslid_key = pw1.prs_perslid_key
|
||
AND COALESCE (pw2.prs_perslidwerkplek_volgnr, pw2.prs_perslidwerkplek_key + 10000) <
|
||
COALESCE (pw1.prs_perslidwerkplek_volgnr, pw1.prs_perslidwerkplek_key + 10000));
|
||
COMMIT;
|
||
|
||
-- Toekennen extra WP op TS of TSMAX.
|
||
-- De bij voorgaande import toegekende extra WPs zijn hierboven met
|
||
-- prs.update_perslid (p_import_key, 'NR', 'D') weer verwijderd, omdat TS
|
||
-- en MAX onder hetzelfde District vallen!
|
||
v_errorhint := 'Fout toekennen extra WP op TS of MAX';
|
||
FOR rec IN c_ts_max
|
||
LOOP
|
||
prs.movetoruimte (rec.prs_perslid_key, rec.extra_ruimte_key, NULL);
|
||
END LOOP;
|
||
COMMIT;
|
||
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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Importproces personen afgebroken!');
|
||
END svrz_update_perslid;
|
||
/
|
||
|
||
|
||
/* Formatted on 16-6-2014 21:48:12 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE svrz_import_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
fac_import_ext_bedrijf (p_import_key);
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Inleesproces relaties afgebroken!');
|
||
END svrz_import_bedrijf;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE svrz_update_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
v_errorhint VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_new NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
v_count_del NUMBER (10);
|
||
v_aanduiding VARCHAR2 (200) := '-';
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_ext_bedrijf ib
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE UPPER (prs_bedrijf_naam) =
|
||
UPPER (ib.prs_bedrijf_naam)
|
||
AND prs_leverancier_nr < ib.prs_leverancier_nr);
|
||
|
||
v_bedrijf_key NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.prs_bedrijf_naam
|
||
|| '|'
|
||
|| rec.prs_leverancier_nr
|
||
|| '] ';
|
||
|
||
v_errorhint := 'Fout bepalen bedrijf';
|
||
|
||
IF rec.prs_leverancier_nr IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Leveranciernummer ongedefinieerd!',
|
||
v_errorhint);
|
||
COMMIT;
|
||
ELSE
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE UPPER (prs_leverancier_nr) =
|
||
UPPER (rec.prs_leverancier_nr);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errorhint := 'Fout toevoegen bedrijf';
|
||
|
||
INSERT INTO prs_bedrijf (prs_bedrijf_naam,
|
||
prs_leverancier_nr,
|
||
prs_bedrijf_bezoek_adres,
|
||
prs_bedrijf_bezoek_postcode,
|
||
prs_bedrijf_bezoek_plaats,
|
||
prs_bedrijf_bezoek_land,
|
||
prs_bedrijf_post_adres,
|
||
prs_bedrijf_post_postcode,
|
||
prs_bedrijf_post_plaats,
|
||
prs_bedrijf_post_land,
|
||
prs_bedrijf_telefoon,
|
||
prs_bedrijf_fax,
|
||
prs_bedrijf_email,
|
||
prs_bedrijf_contact_persoon,
|
||
prs_bedrijf_contact_telefoon,
|
||
prs_bedrijf_contact_fax,
|
||
prs_bedrijf_leverancier,
|
||
prs_bedrijf_uitvoerende,
|
||
prs_bedrijf_contract,
|
||
prs_bedrijf_huurder,
|
||
prs_bedrijf_ingids,
|
||
prs_bedrijf_uurloon,
|
||
prs_overeenkomst_nr,
|
||
prs_overeenkomst_datum,
|
||
prs_bedrijf_opmerking)
|
||
VALUES (rec.prs_bedrijf_naam,
|
||
rec.prs_leverancier_nr,
|
||
rec.prs_bedrijf_bezoek_adres,
|
||
rec.prs_bedrijf_bezoek_postcode,
|
||
rec.prs_bedrijf_bezoek_plaats,
|
||
rec.prs_bedrijf_bezoek_land,
|
||
rec.prs_bedrijf_post_adres,
|
||
rec.prs_bedrijf_post_postcode,
|
||
rec.prs_bedrijf_post_plaats,
|
||
rec.prs_bedrijf_post_land,
|
||
rec.prs_bedrijf_telefoon,
|
||
rec.prs_bedrijf_fax,
|
||
rec.prs_bedrijf_email,
|
||
rec.prs_bedrijf_contact_persoon,
|
||
rec.prs_bedrijf_contact_telefoon,
|
||
rec.prs_bedrijf_contact_fax,
|
||
DECODE (rec.prs_bedrijf_leverancier,
|
||
1, 1,
|
||
NULL),
|
||
DECODE (rec.prs_bedrijf_uitvoerende,
|
||
1, 1,
|
||
NULL),
|
||
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
|
||
rec.prs_bedrijf_uurloon,
|
||
rec.prs_overeenkomst_nr,
|
||
rec.prs_overeenkomst_datum,
|
||
rec.prs_bedrijf_opmerking);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
ELSE -- v_count > 0
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE UPPER (prs_leverancier_nr) =
|
||
UPPER (rec.prs_leverancier_nr);
|
||
|
||
v_errorhint := 'Fout bijwerken bedrijf';
|
||
|
||
UPDATE prs_bedrijf
|
||
SET prs_bedrijf_naam =
|
||
COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam),
|
||
prs_bedrijf_bezoek_adres =
|
||
COALESCE (rec.prs_bedrijf_bezoek_adres,
|
||
prs_bedrijf_bezoek_adres),
|
||
prs_bedrijf_bezoek_postcode =
|
||
COALESCE (rec.prs_bedrijf_bezoek_postcode,
|
||
prs_bedrijf_bezoek_postcode),
|
||
prs_bedrijf_bezoek_plaats =
|
||
COALESCE (rec.prs_bedrijf_bezoek_plaats,
|
||
prs_bedrijf_bezoek_plaats),
|
||
prs_bedrijf_bezoek_land =
|
||
COALESCE (rec.prs_bedrijf_bezoek_land,
|
||
prs_bedrijf_bezoek_land),
|
||
prs_bedrijf_post_adres =
|
||
COALESCE (rec.prs_bedrijf_post_adres,
|
||
prs_bedrijf_post_adres),
|
||
prs_bedrijf_post_postcode =
|
||
COALESCE (rec.prs_bedrijf_post_postcode,
|
||
prs_bedrijf_post_postcode),
|
||
prs_bedrijf_post_plaats =
|
||
COALESCE (rec.prs_bedrijf_post_plaats,
|
||
prs_bedrijf_post_plaats),
|
||
prs_bedrijf_post_land =
|
||
COALESCE (rec.prs_bedrijf_post_land,
|
||
prs_bedrijf_post_land),
|
||
prs_bedrijf_telefoon =
|
||
COALESCE (rec.prs_bedrijf_telefoon,
|
||
prs_bedrijf_telefoon),
|
||
prs_bedrijf_fax =
|
||
COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax),
|
||
prs_bedrijf_email =
|
||
COALESCE (rec.prs_bedrijf_email,
|
||
prs_bedrijf_email),
|
||
prs_bedrijf_contact_persoon =
|
||
COALESCE (rec.prs_bedrijf_contact_persoon,
|
||
prs_bedrijf_contact_persoon),
|
||
prs_bedrijf_contact_telefoon =
|
||
COALESCE (rec.prs_bedrijf_contact_telefoon,
|
||
prs_bedrijf_contact_telefoon),
|
||
prs_bedrijf_contact_fax =
|
||
COALESCE (rec.prs_bedrijf_contact_fax,
|
||
prs_bedrijf_contact_fax),
|
||
prs_bedrijf_leverancier =
|
||
DECODE (rec.prs_bedrijf_leverancier, 1, 1, prs_bedrijf_leverancier),
|
||
prs_bedrijf_uitvoerende =
|
||
DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
|
||
prs_bedrijf_contract =
|
||
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
prs_bedrijf_huurder =
|
||
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
|
||
prs_bedrijf_ingids =
|
||
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
|
||
prs_bedrijf_uurloon =
|
||
COALESCE (rec.prs_bedrijf_uurloon,
|
||
prs_bedrijf_uurloon),
|
||
prs_overeenkomst_nr =
|
||
COALESCE (rec.prs_overeenkomst_nr,
|
||
prs_overeenkomst_nr),
|
||
prs_overeenkomst_datum =
|
||
COALESCE (rec.prs_overeenkomst_datum,
|
||
prs_overeenkomst_datum),
|
||
prs_bedrijf_opmerking =
|
||
COALESCE (rec.prs_bedrijf_opmerking,
|
||
prs_bedrijf_opmerking)
|
||
WHERE prs_bedrijf_key = v_bedrijf_key;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
--COMMIT;
|
||
END IF;
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE del_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM prs_v_aanwezigbedrijf b
|
||
WHERE b.prs_bedrijf_intern IS NULL
|
||
AND b.prs_leverancier_nr IS NOT NULL
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE prs_leverancier_nr = b.prs_leverancier_nr);
|
||
|
||
v_bedrijf_key NUMBER (10);
|
||
BEGIN
|
||
v_count_del := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rec.prs_bedrijf_naam || '] ';
|
||
|
||
v_errorhint := 'Fout verwijderen bedrijf';
|
||
|
||
UPDATE prs_bedrijf
|
||
SET prs_bedrijf_verwijder = SYSDATE
|
||
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
v_count_del := v_count_del + 1;
|
||
|
||
COMMIT;
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_ext_bedrijf;
|
||
|
||
IF v_count < 500
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Het aantal te importeren relaties is te klein ('
|
||
|| TO_CHAR (v_count)
|
||
|| ')',
|
||
'Zie specificatie');
|
||
RETURN;
|
||
END IF;
|
||
|
||
add_bedrijf (p_import_key);
|
||
--del_bedrijf (p_import_key);
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Importproces relaties afgebroken!');
|
||
END svrz_update_bedrijf;
|
||
/
|
||
|
||
|
||
-- Multi variant voor automatische import via gen_import van Quarto POs.
|
||
/* Formatted on 12-11-2014 16:30:30 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE svrz_import_quarto (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1);
|
||
-- De importvelden
|
||
v_receiver VARCHAR2 (255); -- C25/prs_leverancier_nr
|
||
v_receiverName VARCHAR2 (255); -- C100/ignore
|
||
v_customer VARCHAR2 (255); -- C30/prs_perslid_voornaam?
|
||
v_customerName VARCHAR2 (255); -- C100/ignore
|
||
v_orderdatum VARCHAR2 (255); -- C50/bes_kenmerkbestell_waarde
|
||
v_bestelnr VARCHAR2 (255); -- C50/bes_kenmerkbestell_waarde
|
||
v_nummer VARCHAR2 (255); -- C32/bes_srtdeel_nr
|
||
v_questornummer VARCHAR2 (255); -- C50/ignore (bes_srtdeel_opmerking?)
|
||
v_questoromschrijving VARCHAR2 (255); -- C100/bes_srtdeel_omschrijving
|
||
v_inkoopprijs VARCHAR2 (255); --N8,2/ignore (= prijs_per_verpakking / aantal_per_verpakking)
|
||
v_aantal VARCHAR2 (255); --N5/bes_bestelling(/bestelopdr)_item_aantal
|
||
v_prijs_per_verpakking VARCHAR2 (255); --N8,2/bes_srtdeel_prijs_prijs
|
||
v_aantal_per_verpakking VARCHAR2 (255); --N6/bes_srtdeel_veelvoud
|
||
v_btwperc VARCHAR2 (255); --N3/bes_srtdeel_btw
|
||
v_uom VARCHAR2 (255); -- C30/bes_srtdeel_eenheid
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
--DELETE FROM svrz_imp_quartomulti q
|
||
-- WHERE q.imp_log_run <> p_import_key
|
||
-- OR EXISTS (SELECT 1
|
||
-- FROM fac_imp_file
|
||
-- WHERE SUBSTR (fac_imp_file_line,
|
||
-- INSTR (fac_imp_file_line, ';', 1, 5)
|
||
-- + 1,
|
||
-- INSTR (fac_imp_file_line, ';', 1, 6)
|
||
-- - INSTR (fac_imp_file_line, ';', 1, 5)
|
||
-- - 1) = q.bestelnr);
|
||
DELETE FROM svrz_imp_quartomulti
|
||
WHERE imp_log_run <> p_import_key;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
-- receiver;receiverName;customer;customerName;orderdatum;bestelnr;nummer;questornummer;questoromschrijving;inkoopprijs;aantal;prijs_per_verpakking;aantal_per_verpakking;btwperc;uom
|
||
fac.imp_getfield (v_newline, c_delim, v_receiver);
|
||
fac.imp_getfield (v_newline, c_delim, v_receiverName);
|
||
fac.imp_getfield (v_newline, c_delim, v_customer);
|
||
fac.imp_getfield (v_newline, c_delim, v_customerName);
|
||
fac.imp_getfield (v_newline, c_delim, v_orderdatum);
|
||
fac.imp_getfield (v_newline, c_delim, v_bestelnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_nummer);
|
||
fac.imp_getfield (v_newline, c_delim, v_questornummer);
|
||
fac.imp_getfield (v_newline, c_delim, v_questoromschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_inkoopprijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_aantal);
|
||
fac.imp_getfield (v_newline, c_delim, v_prijs_per_verpakking);
|
||
fac.imp_getfield (v_newline, c_delim, v_aantal_per_verpakking);
|
||
fac.imp_getfield (v_newline, c_delim, v_btwperc);
|
||
fac.imp_getfield (v_newline, c_delim, v_uom);
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_receiver
|
||
|| '|'
|
||
|| v_customer
|
||
|| '|'
|
||
|| v_orderdatum
|
||
|| '|'
|
||
|| v_bestelnr
|
||
|| '|'
|
||
|| v_nummer
|
||
|| '] ';
|
||
|
||
-- 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 (TRIM (v_receiver)) = 'RECEIVER'
|
||
AND UPPER (TRIM (v_receiverName)) = 'RECEIVERNAME'
|
||
AND UPPER (TRIM (v_customer)) = 'CUSTOMER'
|
||
AND UPPER (TRIM (v_customerName)) = 'CUSTOMERNAME'
|
||
AND UPPER (TRIM (v_orderdatum)) = 'ORDERDATUM'
|
||
AND UPPER (TRIM (v_bestelnr)) = 'BESTELNR'
|
||
AND UPPER (TRIM (v_nummer)) = 'NUMMER'
|
||
AND UPPER (TRIM (v_questornummer)) = 'QUESTORNUMMER'
|
||
AND UPPER (TRIM (v_questoromschrijving)) = 'QUESTOROMSCHRIJVING'
|
||
AND UPPER (TRIM (v_inkoopprijs)) = 'INKOOPPRIJS'
|
||
AND UPPER (TRIM (v_aantal)) = 'AANTAL'
|
||
AND UPPER (TRIM (v_prijs_per_verpakking)) = 'PRIJS_PER_VERPAKKING'
|
||
AND UPPER (TRIM (v_aantal_per_verpakking)) = 'AANTAL_PER_VERPAKKING'
|
||
AND UPPER (TRIM (v_btwperc)) = 'BTWPERC'
|
||
AND UPPER (TRIM (v_uom)) = 'UOM'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Receiver ongeldig/ongedefinieerd of te lang';
|
||
v_receiver := TRIM (v_receiver);
|
||
|
||
IF v_receiver IS NULL OR LENGTH (v_receiver) > 25
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ReceiverName ongeldig/ongedefinieerd of te lang';
|
||
v_receiverName := TRIM (v_receiverName);
|
||
|
||
IF v_receiverName IS NULL OR LENGTH (v_receiverName) > 28
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Customer ongeldig/ongedefinieerd of te lang';
|
||
v_customer := TRIM (v_customer);
|
||
|
||
IF v_customer IS NULL OR LENGTH (v_customer) > 30
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Don't care
|
||
v_errormsg := 'CustomerName ongeldig';
|
||
v_customerName := TRIM (v_customerName);
|
||
|
||
--
|
||
v_errormsg := 'Orderdatum ongeldig';
|
||
v_orderdatum := TRIM (v_orderdatum);
|
||
|
||
IF fac.safe_to_date (v_orderdatum, 'yyyymmdd hh24:mi:ss') IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Orderdatum wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Bestelnr ongeldig/ongedefinieerd of te lang';
|
||
v_bestelnr := TRIM (v_bestelnr);
|
||
|
||
IF v_bestelnr IS NULL OR LENGTH (v_bestelnr) > 50
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Artikelnummer ongeldig/ongedefinieerd of te lang';
|
||
v_nummer := TRIM (v_nummer);
|
||
|
||
IF v_nummer IS NULL OR LENGTH (v_nummer) > 32
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Don't care
|
||
v_errormsg := 'Questornummer ongeldig';
|
||
v_questornummer := TRIM (v_questornummer);
|
||
|
||
--
|
||
v_errormsg := 'Artikelomschrijving ongeldig/ongedefinieerd';
|
||
v_questoromschrijving := TRIM (v_questoromschrijving);
|
||
|
||
IF v_questoromschrijving IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Inkoopprijs ongeldig';
|
||
v_inkoopprijs := REPLACE (v_inkoopprijs, ',', '.');
|
||
|
||
IF fac.safe_to_number (v_inkoopprijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Inkoopprijs wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Aantal ongeldig';
|
||
v_aantal := REPLACE (v_aantal, ',', '.');
|
||
|
||
IF fac.safe_to_number (v_aantal) IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'PrijsPerVerpakking ongeldig';
|
||
v_prijs_per_verpakking := REPLACE (v_prijs_per_verpakking, ',', '.');
|
||
|
||
IF fac.safe_to_number (v_prijs_per_verpakking) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'PrijsPerVerpakking wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'AantalPerVerpakking ongeldig';
|
||
v_aantal_per_verpakking := REPLACE (v_aantal_per_verpakking, ',', '.');
|
||
|
||
IF fac.safe_to_number (v_aantal_per_verpakking) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'AantalPerVerpakking wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'BTW-percentage ongeldig';
|
||
v_btwperc := REPLACE (v_btwperc, ',', '.');
|
||
|
||
IF fac.safe_to_number (v_btwperc) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'BTW-percentage wordt genegeerd!');
|
||
END IF;
|
||
|
||
|
||
-- Don't care
|
||
v_errormsg := 'Eenheid ongeldig';
|
||
v_uom := TRIM (v_uom);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
|
||
INSERT INTO svrz_imp_quartomulti (imp_log_run,
|
||
receiver,
|
||
receiverName,
|
||
customer,
|
||
customerName,
|
||
orderdatum,
|
||
bestelnr,
|
||
nummer,
|
||
questornummer,
|
||
questoromschrijving,
|
||
inkoopprijs,
|
||
aantal,
|
||
prijs_per_verpakking,
|
||
aantal_per_verpakking,
|
||
btwperc,
|
||
uom)
|
||
VALUES (p_import_key,
|
||
SUBSTR (v_receiver, 1, 25),
|
||
SUBSTR (v_receiverName, 1, 100),
|
||
SUBSTR (v_customer, 1, 30),
|
||
SUBSTR (v_customerName, 1, 100),
|
||
fac.safe_to_date (v_orderdatum,
|
||
'yyyymmdd hh24:mi:ss'),
|
||
SUBSTR (v_bestelnr, 1, 50),
|
||
SUBSTR (v_nummer, 1, 32),
|
||
SUBSTR (v_questornummer, 1, 50),
|
||
SUBSTR (v_questoromschrijving, 1, 100),
|
||
fac.safe_to_number (v_inkoopprijs),
|
||
fac.safe_to_number (v_aantal),
|
||
fac.safe_to_number (v_prijs_per_verpakking),
|
||
fac.safe_to_number (v_aantal_per_verpakking),
|
||
fac.safe_to_number (v_btwperc),
|
||
SUBSTR (v_uom, 1, 30));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
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,
|
||
'');
|
||
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',
|
||
'Inleesproces/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces/#ongeldige niet ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
'');
|
||
END IF;
|
||
|
||
DELETE FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
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 Quarto afgebroken!');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE svrz_update_quarto (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt - op bestelnr! - over alle nieuw ingelezen Quarto POs.
|
||
CURSOR c1
|
||
IS
|
||
SELECT x.receiver,
|
||
x.receiverName,
|
||
b.lev_key,
|
||
b.aantal lev_aant,
|
||
d.cat_key,
|
||
d.aantal cat_aant,
|
||
x.customer,
|
||
x.customerName,
|
||
p.prs_key,
|
||
p.afl_key,
|
||
p.aantal prs_aant,
|
||
k.bes_kenmerk_key,
|
||
TO_CHAR (x.orderdatum, 'dd-mm-yyyy') orderdatum,
|
||
x.bestelnr
|
||
FROM (SELECT DISTINCT receiver, receiverName, customer, customerName, orderdatum, bestelnr
|
||
FROM svrz_imp_quartomulti
|
||
WHERE imp_log_run = p_import_key) x
|
||
LEFT JOIN ( SELECT TRIM (prs_bedrijf_naam_upper) lev_id_upper,
|
||
MAX (prs_bedrijf_key) lev_key,
|
||
COUNT ( * ) aantal
|
||
FROM prs_v_aanwezigbedrijf
|
||
GROUP BY TRIM (prs_bedrijf_naam_upper)) b
|
||
ON UPPER (x.receiverName) = b.lev_id_upper
|
||
LEFT JOIN ( SELECT UPPER(TRIM(SUBSTR (ins_discipline_omschrijving, 3))) cat_id_upper,
|
||
MAX (ins_discipline_key) cat_key,
|
||
COUNT ( * ) aantal
|
||
FROM bes_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
GROUP BY UPPER(TRIM(SUBSTR (ins_discipline_omschrijving, 3)))) d
|
||
ON UPPER (SUBSTR (x.receiverName, 1, 28)) = d.cat_id_upper
|
||
LEFT JOIN ( SELECT UPPER (TRIM (prs_perslid_voornaam)) prs_id_upper,
|
||
MAX (prs_perslid_key) prs_key,
|
||
MAX (mld_adres_key) afl_key,
|
||
COUNT ( * ) aantal
|
||
FROM prs_v_aanwezigperslid
|
||
GROUP BY UPPER (TRIM (prs_perslid_voornaam))) p
|
||
ON UPPER (x.customer) = p.prs_id_upper
|
||
LEFT JOIN (SELECT bes_srtinstallatie_key, bes_kenmerk_key
|
||
FROM bes_kenmerk
|
||
WHERE bes_kenmerk_verwijder IS NULL
|
||
AND bes_srtkenmerk_key = 1 -- Opmerking intern
|
||
AND bes_kenmerk_niveau = 'D') k
|
||
ON UPPER (d.cat_key) = k.bes_srtinstallatie_key
|
||
ORDER BY bestelnr;
|
||
|
||
c_grp_oms VARCHAR2 (200) := 'Onbekend';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_new NUMBER (10) := 0;
|
||
v_count NUMBER;
|
||
v_autoaccept bes_disc_params.bes_disc_params_autoacceptrfo%TYPE;
|
||
v_auto_order bes_disc_params.bes_disc_params_auto_order%TYPE;
|
||
v_leverdagen bes_disc_params.bes_disc_params_leverdagen%TYPE;
|
||
v_kpn_key prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
||
v_bes_key bes_bestelling.bes_bestelling_key%TYPE;
|
||
v_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
|
||
BEGIN
|
||
-- Loop over alle nieuw ingelezen Quarto POs.
|
||
FOR po IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| po.receiverName
|
||
|| '|'
|
||
|| po.customer
|
||
|| '|'
|
||
|| po.orderdatum
|
||
|| '|'
|
||
|| po.bestelnr
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Valideer dat configuratie 1-duidig is!
|
||
v_errormsg := 'Fout controleren configuratie.';
|
||
|
||
IF po.lev_aant = 1
|
||
AND po.cat_aant = 1
|
||
AND po.prs_aant = 1
|
||
AND po.bes_kenmerk_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bepalen catalogus.';
|
||
|
||
SELECT bes_disc_params_autoacceptrfo,
|
||
bes_disc_params_auto_order,
|
||
bes_disc_params_leverdagen
|
||
INTO v_autoaccept, v_auto_order, v_leverdagen
|
||
FROM bes_disc_params
|
||
WHERE bes_ins_discipline_key = po.cat_key;
|
||
|
||
v_errormsg := 'Fout bepalen kostenplaats.';
|
||
|
||
SELECT a.prs_kostenplaats_key
|
||
INTO v_kpn_key
|
||
FROM prs_perslid p, prs_afdeling a
|
||
WHERE p.prs_perslid_key = po.prs_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key;
|
||
|
||
v_errormsg := 'Fout controleren Quarto-bestelnr.';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM bes_kenmerkbestell bk, bes_kenmerk k
|
||
WHERE bk.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 1 -- Opmerking intern
|
||
AND INSTR (bk.bes_kenmerkbestell_waarde, po.bestelnr) > 0 ;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen bestelling.';
|
||
|
||
INSERT INTO bes_bestelling (prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
bes_bestelling_leverdatum,
|
||
mld_adres_key_lev,
|
||
bes_bestelling_plaats,
|
||
bes_bestelling_module,
|
||
bes_bestelling_levkosten,
|
||
bes_bestelling_korting)
|
||
VALUES (po.prs_key,
|
||
po.prs_key,
|
||
v_kpn_key,
|
||
TRUNC(fac.datumtijdplusuitvoertijd (SYSDATE,
|
||
v_leverdagen,
|
||
'DAGEN')),
|
||
po.afl_key,
|
||
NULL,
|
||
'BES',
|
||
0,
|
||
0)
|
||
RETURNING bes_bestelling_key
|
||
INTO v_bes_key;
|
||
|
||
-- Vul 'Opmerking intern'-kenmerkveld met bestelnr (orderdatum)
|
||
-- uit Quarto!
|
||
v_errormsg := 'Fout toevoegen kenmerk.';
|
||
|
||
INSERT INTO bes_kenmerkbestell (bes_bestelling_key,
|
||
bes_kenmerk_key,
|
||
bes_kenmerkbestell_waarde)
|
||
VALUES (v_bes_key,
|
||
po.bes_kenmerk_key,
|
||
'Quarto-bestelnr: '
|
||
|| po.bestelnr
|
||
|| ' ('
|
||
|| po.orderdatum
|
||
|| ')');
|
||
|
||
-- Loop over alle orderitems per Quarto PO.
|
||
FOR item
|
||
IN ( SELECT nummer,
|
||
questornummer,
|
||
questoromschrijving,
|
||
inkoopprijs,
|
||
aantal,
|
||
prijs_per_verpakking,
|
||
aantal_per_verpakking,
|
||
btwperc,
|
||
uom
|
||
FROM svrz_imp_quartomulti
|
||
WHERE imp_log_run = p_import_key
|
||
AND bestelnr = po.bestelnr
|
||
ORDER BY nummer)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout toevoegen artikel.';
|
||
|
||
bes.upsert_srtdeel (po.cat_key, -- ins_discipline_key
|
||
c_grp_oms, -- bes_srtgroep_omschrijving
|
||
item.questoromschrijving,
|
||
item.prijs_per_verpakking,
|
||
item.btwperc,
|
||
item.uom,
|
||
item.nummer,
|
||
po.lev_key,
|
||
NULL, -- Vervaldatum
|
||
'', -- Image
|
||
item.aantal_per_verpakking,
|
||
'', -- Opmerking
|
||
'', -- details_loc
|
||
v_srtdeel_key); -- nieuwe bes_srtdeel_key
|
||
|
||
v_errormsg := 'Fout toevoegen bestelling-item.';
|
||
|
||
INSERT INTO bes_bestelling_item (bes_bestelling_key,
|
||
bes_srtdeel_key,
|
||
bes_bestelling_item_aantal,
|
||
bes_bestelling_item_brutoprijs,
|
||
bes_bestelling_item_inkprijs,
|
||
bes_bestelling_item_prijs)
|
||
VALUES ( v_bes_key,
|
||
v_srtdeel_key,
|
||
item.aantal,
|
||
bes.getsrtdeelprijs (v_srtdeel_key, NULL),
|
||
bes.getsrtdeelinkprijs (v_srtdeel_key, NULL),
|
||
item.prijs_per_verpakking
|
||
);
|
||
|
||
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,
|
||
'ITEM-loop');
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
fac.trackaction ('BESNEW',
|
||
v_bes_key,
|
||
po.prs_key,
|
||
NULL,
|
||
NULL);
|
||
bes.setbestellingstatus (v_bes_key, po.prs_key, po.prs_key);
|
||
|
||
IF v_auto_order = 1
|
||
THEN
|
||
bes.makeOrders (po.prs_key, v_bes_key);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
v_count_new := v_count_new + 1;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Quarto-bestelnr bestaat al');
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Inrichtingsfout');
|
||
END IF;
|
||
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,
|
||
'PO-loop');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'POs/#ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'POs/#toegevoegd: ' || TO_CHAR (v_count_new),
|
||
'');
|
||
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_errormsg,
|
||
'Importproces Quarto afgebroken!');
|
||
END;
|
||
/
|
||
|
||
-- SVRZ#60631: Import van gescande ruimte-objecten en input om objecten te
|
||
-- verplaatsen naar de correcte ruimte en per gescande ruimte te
|
||
-- loggen welke objecten daar volgens Facilitor nog meer staan).
|
||
CREATE OR REPLACE PROCEDURE svrz_import_ins_scan (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden:
|
||
v_plaatsofobjectid VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM svrz_imp_ins_scan;
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 1; -- Geen header, dus altijd valid!
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_plaatsofobjectid);
|
||
|
||
v_aanduiding := '[' || v_plaatsofobjectid || '] ';
|
||
|
||
-- 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_plaatsofobjectid) = ''
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'PlaatsOfObjectId ongeldig; ongedefinieerd of te lang';
|
||
v_plaatsofobjectid := TRIM (v_plaatsofobjectid);
|
||
|
||
IF v_plaatsofobjectid IS NULL OR LENGTH (v_plaatsofobjectid) > 60
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
|
||
INSERT INTO svrz_imp_ins_scan (plaatsofobjectid, volgorde)
|
||
VALUES (v_plaatsofobjectid, v_count_tot);
|
||
COMMIT;
|
||
|
||
v_count_import := v_count_import + 1;
|
||
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, 'W', v_aanduiding || v_errormsg, '');
|
||
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', 'Ruimteobject/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Ruimteobject/#ongeldige niet ingelezen importregels: ' || 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 INS-scan afgebroken!');
|
||
END svrz_import_ins_scan;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE svrz_update_ins_scan (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_importeur_key NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
v_count_tmp NUMBER (10);
|
||
v_plaatsofobjectid VARCHAR2 (255);
|
||
v_cur_ruimte_key NUMBER (10) := NULL;
|
||
v_cur_aanduiding VARCHAR2 (255) := '';
|
||
|
||
-- Bijwerken ruimteobjecten!
|
||
CURSOR c1
|
||
IS
|
||
SELECT i.volgorde, i.plaatsofobjectid, pa.alg_onroerendgoed_keys alg_ruimte_key,
|
||
MIN (d.ins_deel_key) ins_deel_key, COUNT ( * ) aantal
|
||
FROM (SELECT volgorde, plaatsofobjectid FROM svrz_imp_ins_scan) i
|
||
LEFT JOIN alg_v_plaatsaanduiding pa
|
||
ON UPPER (i.plaatsofobjectid) = UPPER (pa.alg_plaatsaanduiding)
|
||
AND pa.alg_onroerendgoed_type = 'R'
|
||
LEFT JOIN ins_v_aanwezigdeel d
|
||
ON UPPER (i.plaatsofobjectid) = d.ins_deel_upper
|
||
AND d.ins_alg_ruimte_type = 'R'
|
||
GROUP BY i.volgorde, i.plaatsofobjectid, pa.alg_onroerendgoed_keys
|
||
ORDER BY 1;
|
||
|
||
CURSOR c2
|
||
IS
|
||
SELECT DISTINCT alg_ruimte_key
|
||
FROM svrz_imp_ins_scan
|
||
ORDER BY 1;
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen importeur';
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_importeur_key
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
v_count_upd := 0;
|
||
v_count_tmp := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || TO_CHAR (rec.volgorde) || '|' || rec.plaatsofobjectid || '] ';
|
||
|
||
IF v_cur_ruimte_key IS NULL -- Op zoek naar ruimte#1
|
||
THEN
|
||
IF rec.alg_ruimte_key IS NOT NULL -- Ruimte#1
|
||
THEN
|
||
v_errormsg := 'Store ruimte#1';
|
||
v_cur_ruimte_key := rec.alg_ruimte_key; -- Store ruimte#1
|
||
v_cur_aanduiding := rec.plaatsofobjectid;
|
||
ELSIF rec.ins_deel_key IS NOT NULL -- Objectregel
|
||
THEN
|
||
v_errormsg := 'Ruimte#1 verwacht, object gevonden';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Skip object');
|
||
ELSE -- Geen ruimteregel en ook geen objectregel
|
||
v_errormsg := 'Ruimte#1 verwacht en niet gevonden';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Skip ruimte');
|
||
END IF;
|
||
ELSE -- Ruimte#1 gevonden en op zoek naar ruimte#2
|
||
IF rec.alg_ruimte_key IS NOT NULL -- Ruimte#2
|
||
THEN
|
||
IF v_cur_aanduiding = rec.plaatsofobjectid -- Ruimte-match?
|
||
THEN
|
||
v_errormsg := 'Reset ruimte#1';
|
||
v_cur_ruimte_key := NULL; -- Reset ruimte#1
|
||
v_cur_aanduiding := '';
|
||
COMMIT;
|
||
|
||
v_count_upd := v_count_upd + v_count_tmp;
|
||
v_count_tmp := 0;
|
||
ELSE -- Uit sync (ontbrekende ruimteregel?)
|
||
v_errormsg := 'Ruimte#2 verwacht en niet gevonden';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Sync ruimte');
|
||
|
||
v_cur_ruimte_key := rec.alg_ruimte_key; -- Store ruimte#1
|
||
v_cur_aanduiding := rec.plaatsofobjectid;
|
||
ROLLBACK;
|
||
|
||
v_count_tmp := 0;
|
||
END IF;
|
||
ELSIF rec.ins_deel_key IS NOT NULL -- Objectregel
|
||
THEN
|
||
IF rec.aantal = 1 -- Object uniek?
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken object';
|
||
UPDATE ins_deel
|
||
SET ins_alg_ruimte_key = v_cur_ruimte_key
|
||
WHERE ins_deel_key = rec.ins_deel_key;
|
||
|
||
fac.trackaction ('INSUPD', rec.ins_deel_key, v_importeur_key, NULL, 'Via scanner-import ruimte bijgewerkt naar: ' || v_cur_aanduiding);
|
||
|
||
v_errormsg := 'Fout bijwerken import';
|
||
UPDATE svrz_imp_ins_scan
|
||
SET alg_ruimte_key = v_cur_ruimte_key,
|
||
ins_deel_key = rec.ins_deel_key
|
||
WHERE volgorde = rec.volgorde;
|
||
|
||
v_count_tmp := v_count_tmp + 1;
|
||
ELSE
|
||
v_errormsg := 'ObjectID niet uniek';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Skip object');
|
||
END IF;
|
||
ELSE
|
||
v_errormsg := 'Fout bepalen ruimte- of object';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Skip regel');
|
||
END IF;
|
||
END IF;
|
||
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, 'Scan-loop');
|
||
ROLLBACK;
|
||
|
||
v_count_tmp := 0;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- SVRZ#62674: Tot slot nog controleren dat de laatste regel de correcte
|
||
-- ruimte#2 (heeft) bevat en anders ROLLBACK!
|
||
IF v_cur_ruimte_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Ruimte#2 verwacht en einde bestand';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Sync ruimte');
|
||
|
||
ROLLBACK;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Ruimteobject/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
|
||
COMMIT;
|
||
|
||
v_count_upd := 0;
|
||
|
||
FOR rc1 IN c2
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || TO_CHAR (rc1.alg_ruimte_key) || '] ';
|
||
|
||
FOR rc2
|
||
IN ( SELECT pa.alg_onroerendgoed_keys alg_ruimte_key, pa.alg_plaatsaanduiding,
|
||
d.ins_deel_key, d.ins_deel_upper
|
||
FROM alg_v_plaatsaanduiding pa, ins_v_aanwezigdeel d
|
||
WHERE pa.alg_onroerendgoed_keys = rc1.alg_ruimte_key
|
||
AND pa.alg_onroerendgoed_type = 'R'
|
||
AND pa.alg_onroerendgoed_keys = d.ins_alg_ruimte_key
|
||
AND d.ins_alg_ruimte_type = 'R'
|
||
AND NOT EXISTS (SELECT 1 FROM svrz_imp_ins_scan WHERE ins_deel_key = d.ins_deel_key)
|
||
ORDER BY 1, 2, 3)
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rc2.alg_plaatsaanduiding || '|' || rc2.ins_deel_upper || '] ';
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Niet gescand en volgens CMDB ook in ruimte ' || rc2.alg_plaatsaanduiding || ': ' || rc2.ins_deel_upper, '');
|
||
v_count_upd := v_count_upd + 1;
|
||
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_aanduiding || v_errormsg, 'Rest-loop');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Ruimteobject/#misgelopen: ' || TO_CHAR (v_count_upd), '');
|
||
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_errormsg, 'Importproces INS-scan afgebroken!');
|
||
END svrz_update_ins_scan;
|
||
/
|
||
|
||
/* Formatted on 30-3-2015 23:36:24 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW svrz_v_export_nachtwerk
|
||
(
|
||
RESULT,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT 'CALL GENEREER1BESOPDRPDF.BAT '
|
||
|| TO_CHAR (bo.bes_bestelopdr_key)
|
||
|| ' PUR-C1'
|
||
|| REPLACE (
|
||
SUBSTR ('0000000' || bo.bes_bestelopdr_id,
|
||
INSTR ('0000000' || bo.bes_bestelopdr_id, '/') - 6),
|
||
'/',
|
||
'-'),
|
||
bes_bestelopdr_key
|
||
FROM bes_bestelopdr bo, fac_tracking t
|
||
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
|
||
AND bo.bes_bestelopdr_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = 142 -- BES2SN
|
||
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1)
|
||
UNION ALL
|
||
SELECT 'CALL GENEREER1MLDOPDRPDF.BAT '
|
||
|| TO_CHAR (o.mld_opdr_key)
|
||
|| ' PUR-N1'
|
||
|| SUBSTR ('0000000' || TO_CHAR (o.mld_melding_key), -6)
|
||
|| '-'
|
||
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
|
||
mld_opdr_key
|
||
FROM mld_opdr o, fac_tracking t
|
||
WHERE o.mld_statusopdr_key = 5 -- Uitgegeven
|
||
AND o.mld_opdr_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = 91 -- ORDSNT
|
||
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1);
|
||
|
||
-- Dummy export NACHTWERK!
|
||
CREATE OR REPLACE PROCEDURE svrz_select_nachtwerk (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
c_lev_cond_srtk NUMBER (10) := 81;
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
|
||
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
|
||
CURSOR cboi
|
||
IS
|
||
SELECT DISTINCT bo.bes_bestelopdr_key
|
||
FROM bes_bestelopdr bo,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_disc_params dp
|
||
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
--AND sg.ins_discipline_key = -1
|
||
AND sg.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND dp.bes_disc_params_noti_dagen IS NOT NULL
|
||
AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, dp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE);
|
||
|
||
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
|
||
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
|
||
-- gesloten!
|
||
CURSOR cbi
|
||
IS
|
||
SELECT DISTINCT b.bes_bestelling_key
|
||
FROM bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item boi
|
||
WHERE b.bes_bestelling_status = 5 -- Besteld
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv;
|
||
|
||
-- SVRZ#55788: Cursor loopt over de bestel-catalogi en maakt Label-kenmerk
|
||
-- aan met (een kopie van) de Leveringscondities zoals bij de
|
||
-- betreffende relatie ingevuld (en indien nog niet aangemaakt).
|
||
CURSOR ccat
|
||
IS
|
||
SELECT dp.bes_ins_discipline_key, kl.prs_kenmerklink_waarde lev_condities
|
||
FROM bes_disc_params dp,
|
||
prs_kenmerklink kl
|
||
WHERE dp.bes_disc_params_punch_bedr_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1000 -- Leveringscondities
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_kenmerk
|
||
WHERE bes_srtkenmerk_key = c_lev_cond_srtk
|
||
AND bes_srtinstallatie_key = dp.bes_ins_discipline_key)
|
||
UNION ALL
|
||
SELECT DISTINCT dp.bes_ins_discipline_key, kl.prs_kenmerklink_waarde lev_condities
|
||
FROM bes_disc_params dp,
|
||
bes_srtgroep sg1,
|
||
bes_srtdeel sd1,
|
||
prs_kenmerklink kl
|
||
WHERE dp.bes_disc_params_punch_bedr_key IS NULL
|
||
AND dp.bes_ins_discipline_key = sg1.ins_discipline_key
|
||
AND sg1.bes_srtgroep_key = sd1.bes_srtgroep_key
|
||
AND sd1.prs_bedrijf_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1000 -- Leveringscondities
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_srtgroep sg2, bes_srtdeel sd2
|
||
WHERE sg2.bes_srtgroep_key = sd2.bes_srtgroep_key
|
||
AND sg2.ins_discipline_key = sg1.ins_discipline_key
|
||
AND sd2.prs_bedrijf_key != sd1.prs_bedrijf_key)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_kenmerk
|
||
WHERE bes_srtkenmerk_key = c_lev_cond_srtk
|
||
AND bes_srtinstallatie_key = dp.bes_ins_discipline_key);
|
||
BEGIN
|
||
v_errormsg := 'Fout leveren bestelopdracht';
|
||
|
||
FOR rec IN cboi
|
||
LOOP
|
||
-- Zeg dat alles geleverd is wat besteld is.
|
||
UPDATE bes_bestelopdr_item
|
||
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
|
||
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
|
||
|
||
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
|
||
END LOOP;
|
||
|
||
v_errormsg := 'Fout sluiten bestelaanvraag';
|
||
|
||
FOR rec IN cbi
|
||
LOOP
|
||
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
|
||
UPDATE bes_bestelling_item
|
||
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
|
||
WHERE bes_bestelling_key = rec.bes_bestelling_key;
|
||
|
||
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
v_errormsg := 'Fout toevoegen leveringscondities';
|
||
|
||
FOR rec IN ccat
|
||
LOOP
|
||
INSERT INTO bes_kenmerk (bes_srtkenmerk_key,
|
||
bes_srtinstallatie_key,
|
||
bes_kenmerk_type,
|
||
bes_kenmerk_niveau,
|
||
bes_kenmerk_volgnummer,
|
||
bes_kenmerk_default)
|
||
VALUES (c_lev_cond_srtk,
|
||
rec.bes_ins_discipline_key,
|
||
'B',
|
||
'D',
|
||
1,
|
||
rec.lev_condities);
|
||
END LOOP;
|
||
|
||
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.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
|
||
END svrz_select_nachtwerk;
|
||
/
|
||
|
||
/* Formatted on 12-9-2014 17:42:24 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW svrz_v_imp_bes_artikel_sync
|
||
(
|
||
fclt_f_catalogusnaam,
|
||
leverancier,
|
||
catdatum,
|
||
artikelnr,
|
||
groep,
|
||
omschrijving,
|
||
prijs,
|
||
eenheid,
|
||
picture,
|
||
orderaantal,
|
||
tax,
|
||
duedate,
|
||
inkoopprijs,
|
||
minimum,
|
||
staffeltabel,
|
||
wijzigdagen,
|
||
annuleerdagen,
|
||
opmerking
|
||
)
|
||
AS
|
||
SELECT td.ins_discipline_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
|
||
sd.bes_srtdeel_nr,
|
||
sg.bes_srtgroep_omschrijving,
|
||
sd.bes_srtdeel_omschrijving,
|
||
TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
|
||
sd.bes_srtdeel_eenheid,
|
||
sd.bes_srtdeel_image,
|
||
TO_CHAR (sd.bes_srtdeel_veelvoud),
|
||
TO_CHAR (sd.bes_srtdeel_btw),
|
||
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
|
||
TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
|
||
NULL,
|
||
bs.bes_staffeltabel_naam,
|
||
TO_CHAR (sd.bes_srtdeel_wijzigdagen),
|
||
TO_CHAR (sd.bes_srtdeel_annuleerdagen),
|
||
sd.bes_srtdeel_opmerking
|
||
FROM ins_tab_discipline td,
|
||
bes_srtgroep sg,
|
||
bes_srtdeel sd,
|
||
prs_bedrijf b,
|
||
bes_staffeltabel bs
|
||
WHERE td.ins_discipline_module = 'BES'
|
||
AND td.ins_discipline_verwijder IS NULL
|
||
AND td.ins_discipline_key = sg.ins_discipline_key
|
||
AND sg.bes_srtgroep_verwijder IS NULL
|
||
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
|
||
|
||
/* Formatted on 3-11-2014 16:36:24 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW svrz_v_afleveradres_lijst
|
||
(
|
||
adres_id,
|
||
adres_naam,
|
||
adres,
|
||
postcode,
|
||
plaats,
|
||
land
|
||
)
|
||
AS
|
||
SELECT COALESCE (a.mld_adres_gebouw_ruimte, l.alg_locatie_code)
|
||
|| SUBSTR (
|
||
a.mld_adres_bezoek_adres,
|
||
DECODE (INSTR (a.mld_adres_bezoek_adres, ' ', -1),
|
||
0, 100,
|
||
INSTR (a.mld_adres_bezoek_adres, ' ', -1) + 1))
|
||
adres_id,
|
||
a.mld_adres_naam adres_naam,
|
||
a.mld_adres_bezoek_adres adres,
|
||
a.mld_adres_bezoek_postcode postcode,
|
||
a.mld_adres_bezoek_plaats plaats,
|
||
a.mld_adres_bezoek_land land
|
||
FROM mld_adres a, alg_locatie l
|
||
WHERE a.mld_adres_verwijder IS NULL
|
||
AND a.mld_adres_afleveradres = 1
|
||
AND a.alg_locatie_key = l.alg_locatie_key;
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_afleveradres_check
|
||
(
|
||
loc_key,
|
||
loc_code,
|
||
loc_oms,
|
||
loc_badres,
|
||
loc_bposcode,
|
||
loc_bplaats,
|
||
loc_bland,
|
||
loc_padres,
|
||
loc_ppostcode,
|
||
loc_pplaats,
|
||
loc_pland,
|
||
geb_key,
|
||
geb_code,
|
||
geb_naam,
|
||
afl_key,
|
||
afl_loc_key,
|
||
afl_naam,
|
||
afl_geb_ruimte,
|
||
afl_badres,
|
||
afl_bpostcode,
|
||
afl_bplaats,
|
||
afl_bland,
|
||
afl_padres,
|
||
afl_ppostcode,
|
||
afl_pplaats,
|
||
afl_pland
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (x.alg_locatie_key) loc_key,
|
||
x.alg_locatie_code loc_code,
|
||
x.alg_locatie_omschrijving loc_oms,
|
||
x.alg_locatie_adres loc_badres,
|
||
x.alg_locatie_postcode loc_bposcode,
|
||
x.alg_locatie_plaats loc_bplaats,
|
||
x.alg_locatie_land loc_bland,
|
||
x.alg_locatie_post_adres loc_padres,
|
||
x.alg_locatie_post_postcode loc_ppostcode,
|
||
x.alg_locatie_post_plaats loc_pplaats,
|
||
x.alg_locatie_post_land loc_pland,
|
||
TO_CHAR (x.alg_gebouw_key) geb_key,
|
||
x.alg_gebouw_upper geb_code,
|
||
x.alg_gebouw_naam geb_naam,
|
||
TO_CHAR (y.mld_adres_key) afl_key,
|
||
TO_CHAR (y.alg_locatie_key) afl_loc_key,
|
||
y.mld_adres_naam afl_naam,
|
||
y.mld_adres_gebouw_ruimte gebouw_ruimte,
|
||
y.mld_adres_bezoek_adres afl_badres,
|
||
y.mld_adres_bezoek_postcode afl_bpostcode,
|
||
y.mld_adres_bezoek_plaats afl_bplaats,
|
||
y.mld_adres_bezoek_land afl_bland,
|
||
y.mld_adres_post_adres afl_padres,
|
||
y.mld_adres_post_postcode afl_ppostcode,
|
||
y.mld_adres_post_plaats afl_pplaats,
|
||
y.mld_adres_post_land afl_pland
|
||
FROM (SELECT l.alg_locatie_key,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_adres,
|
||
l.alg_locatie_postcode,
|
||
l.alg_locatie_plaats,
|
||
l.alg_locatie_land,
|
||
l.alg_locatie_post_adres,
|
||
l.alg_locatie_post_postcode,
|
||
l.alg_locatie_post_plaats,
|
||
l.alg_locatie_post_land,
|
||
g.alg_gebouw_key,
|
||
g.alg_gebouw_upper,
|
||
g.alg_gebouw_naam,
|
||
g.mld_adres_key
|
||
FROM alg_v_aanweziglocatie l, alg_v_aanweziggebouw g
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key) x
|
||
FULL JOIN
|
||
(SELECT ma.mld_adres_key,
|
||
ma.mld_adres_naam,
|
||
ma.mld_adres_gebouw_ruimte,
|
||
ma.mld_adres_bezoek_adres,
|
||
ma.mld_adres_bezoek_postcode,
|
||
ma.mld_adres_bezoek_plaats,
|
||
ma.mld_adres_bezoek_land,
|
||
ma.mld_adres_post_adres,
|
||
ma.mld_adres_post_postcode,
|
||
ma.mld_adres_post_plaats,
|
||
ma.mld_adres_post_land,
|
||
ma.alg_locatie_key
|
||
FROM mld_adres ma
|
||
WHERE ma.mld_adres_afleveradres = 1
|
||
AND ma.mld_adres_verwijder IS NULL) y
|
||
ON x.mld_adres_key = y.mld_adres_key;
|
||
|
||
/* Formatted on 21-4-2015 15:52:25 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW svrz_v_noti_order_afschrift
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
par1,
|
||
par2,
|
||
xkey
|
||
)
|
||
AS -- Afschrift C-orders!
|
||
SELECT DISTINCT
|
||
sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
b.prs_perslid_key, -- Besteller
|
||
REPLACE (
|
||
sn.fac_srtnotificatie_oms,
|
||
'##CNR##',
|
||
'PUR-C1'
|
||
|| SUBSTR ('0000000' || bo.bes_bestelopdr_id, INSTR ('0000000' || bo.bes_bestelopdr_id, '/') - 6)),
|
||
bo.bes_bestelopdr_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM fac_tracking t,
|
||
bes_bestelopdr bo,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
fac_srtnotificatie sn,
|
||
fac_notificatie_job nj
|
||
WHERE t.fac_srtnotificatie_key = 142 -- BES2SN
|
||
AND t.fac_tracking_refkey = bo.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND sn.fac_srtnotificatie_code = 'CUST01'
|
||
AND nj.fac_notificatie_job_view = 'SVRZ_V_NOTI_ORDER_AFSCHRIFT'
|
||
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
|
||
UNION ALL -- Afschrift N-orders!
|
||
SELECT sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
m.prs_perslid_key, -- Aanvrager
|
||
REPLACE (
|
||
sn.fac_srtnotificatie_oms,
|
||
'##NNR##',
|
||
'PUR-N1'
|
||
|| SUBSTR ('0000000' || TO_CHAR (o.mld_melding_key), -6)
|
||
|| '/'
|
||
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)),
|
||
o.mld_opdr_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM fac_tracking t,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline td,
|
||
fac_srtnotificatie sn,
|
||
fac_notificatie_job nj
|
||
WHERE t.fac_srtnotificatie_key = 91 -- ORDSNT
|
||
AND t.fac_tracking_refkey = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_srtdiscipline_key = 1 -- Inkoop
|
||
AND sn.fac_srtnotificatie_code = 'CUST02'
|
||
AND nj.fac_notificatie_job_view = 'SVRZ_V_NOTI_ORDER_AFSCHRIFT'
|
||
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_noti_cntreminder
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT '',
|
||
NULL,
|
||
c.prs_perslid_key_beh,
|
||
'Rapp<EFBFBD>l: Contract '
|
||
|| c.cnt_contract_nummer_intern
|
||
|| ' ('
|
||
|| c.cnt_contract_omschrijving
|
||
|| ' '
|
||
|| b.prs_bedrijf_naam
|
||
|| ')'
|
||
|| ' moet uiterlijk per '
|
||
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|
||
|| ' worden verlengd of opgezegd',
|
||
c.cnt_contract_key,
|
||
NULL
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE c.ins_discipline_key != 1541 -- Onderhoudscontracten HO niet notificeren!
|
||
AND c.cnt_contract_status = 0 -- Actief
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key);
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_rap_contactafdeling
|
||
(
|
||
afdeling,
|
||
bedrijf,
|
||
post_adres,
|
||
post_postcode,
|
||
post_plaats,
|
||
post_land,
|
||
bezoek_adres,
|
||
bezoek_postcode,
|
||
bezoek_plaats,
|
||
bezoek_land,
|
||
telefoon,
|
||
fax,
|
||
telefoon2,
|
||
contactpersoon,
|
||
contactpersoon_telefoon,
|
||
contactpersoon_fax,
|
||
opmerking,
|
||
everancier_nr,
|
||
overeenkomst_nr,
|
||
overeenkomst_datum,
|
||
email,
|
||
fclt_h_afdeling_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT a.prs_afdeling_naam,
|
||
b.prs_bedrijf_naam,
|
||
b.prs_bedrijf_post_adres,
|
||
b.prs_bedrijf_post_postcode,
|
||
b.prs_bedrijf_post_plaats,
|
||
b.prs_bedrijf_post_land,
|
||
b.prs_bedrijf_bezoek_adres,
|
||
b.prs_bedrijf_bezoek_postcode,
|
||
b.prs_bedrijf_bezoek_plaats,
|
||
b.prs_bedrijf_bezoek_land,
|
||
b.prs_bedrijf_telefoon,
|
||
b.prs_bedrijf_fax,
|
||
b.prs_bedrijf_telefoon2,
|
||
b.prs_bedrijf_contact_persoon,
|
||
b.prs_bedrijf_contact_telefoon,
|
||
b.prs_bedrijf_contact_fax,
|
||
b.prs_bedrijf_opmerking,
|
||
b.prs_leverancier_nr,
|
||
b.prs_overeenkomst_nr,
|
||
b.prs_overeenkomst_datum,
|
||
b.prs_bedrijf_email,
|
||
a.prs_afdeling_key
|
||
FROM cnt_contract c, prs_bedrijf b, prs_v_afdeling a
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND c.cnt_contract_status = 0
|
||
AND a.prs_afdeling_key = c.prs_afdeling_key_eig
|
||
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key;
|
||
|
||
/* Formatted on 19-5-2016 10:42:24 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW svrz_v_rap_ho_contracten
|
||
(
|
||
hide_f_sortering,
|
||
fclt_x_eindjaar,
|
||
cnt_contract_key,
|
||
contractnr,
|
||
locatie,
|
||
beschrijving,
|
||
contractpartij,
|
||
contractbedrag, -- Toegevoegd met SVRZ#37644
|
||
einddatum
|
||
)
|
||
AS
|
||
SELECT x.prs_bedrijf_naam || x.cnt_contract_nummer_intern || '.' || x.cnt_contract_versie,
|
||
TO_CHAR (x.cnt_contract_looptijd_tot, 'yyyy'),
|
||
x.cnt_contract_key,
|
||
x.cnt_contract_nummer_intern || DECODE (x.cnt_contract_versie, NULL, '', 0, '', '.' || x.cnt_contract_versie),
|
||
cp.scope locatie,
|
||
x.cnt_contract_omschrijving,
|
||
x.prs_bedrijf_naam,
|
||
x.cnt_contract_kosten,
|
||
x.cnt_contract_looptijd_tot
|
||
FROM (SELECT c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
c.cnt_contract_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
c.cnt_contract_kosten,
|
||
c.cnt_contract_looptijd_tot
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE c.ins_discipline_key = 1541 -- Onderhoudscontracten HO
|
||
AND c.cnt_contract_status = 0 -- Actief
|
||
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'yyyy')
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) x
|
||
LEFT JOIN
|
||
( SELECT cp.cnt_contract_key, LISTAGG (cp.locatie, CHR (13) || CHR (10)) WITHIN GROUP (ORDER BY cp.locatie) scope
|
||
FROM (SELECT cp.cnt_contract_key,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
|
||
FROM cnt_contract_plaats cp, alg_locatie l
|
||
WHERE cp.cnt_alg_plaats_code = 'L'
|
||
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
|
||
UNION
|
||
SELECT cp.cnt_contract_key,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
|
||
FROM cnt_contract_plaats cp, alg_gebouw g, alg_locatie l
|
||
WHERE cp.cnt_alg_plaats_code = 'G'
|
||
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key) cp
|
||
GROUP BY cp.cnt_contract_key) cp
|
||
ON x.cnt_contract_key = cp.cnt_contract_key;
|
||
/*
|
||
-- SVRZ#38249
|
||
CREATE OR REPLACE VIEW svrz_v_rap_contractoverzicht
|
||
(
|
||
hide_f_sortering,
|
||
fclt_3d_discipline_key,
|
||
cnt_contract_key,
|
||
fclt_f_contractsoort,
|
||
fclt_x_eindjaar,
|
||
contractnr,
|
||
locatie,
|
||
beschrijving,
|
||
contractpartij,
|
||
contractbedrag,
|
||
einddatum
|
||
)
|
||
AS
|
||
SELECT x.ins_discipline_omschrijving || x.prs_bedrijf_naam || x.cnt_contract_nummer_intern || '.' || x.cnt_contract_versie,
|
||
x.ins_discipline_key,
|
||
x.cnt_contract_key,
|
||
x.ins_discipline_omschrijving,
|
||
TO_CHAR (x.cnt_contract_looptijd_tot, 'yyyy'),
|
||
x.cnt_contract_nummer_intern || DECODE (x.cnt_contract_versie, NULL, '', 0, '', '.' || x.cnt_contract_versie),
|
||
cp.scope locatie,
|
||
x.cnt_contract_omschrijving,
|
||
x.prs_bedrijf_naam,
|
||
x.cnt_contract_kosten,
|
||
x.cnt_contract_looptijd_tot
|
||
FROM (SELECT c.ins_discipline_key,
|
||
c.cnt_contract_key,
|
||
td.ins_discipline_omschrijving,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
c.cnt_contract_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
c.cnt_contract_kosten,
|
||
c.cnt_contract_looptijd_tot
|
||
FROM cnt_v_aanwezigcontract c, ins_tab_discipline td, prs_bedrijf b
|
||
WHERE c.cnt_contract_status = 0 -- Actief
|
||
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'yyyy')
|
||
AND c.ins_discipline_key = td.ins_discipline_key
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) x
|
||
LEFT JOIN
|
||
( SELECT cp.cnt_contract_key, LISTAGG (cp.locatie, CHR (13) || CHR (10)) WITHIN GROUP (ORDER BY cp.locatie) scope
|
||
FROM (SELECT cp.cnt_contract_key,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
|
||
FROM cnt_contract_plaats cp, alg_locatie l
|
||
WHERE cp.cnt_alg_plaats_code = 'L'
|
||
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
|
||
UNION
|
||
SELECT cp.cnt_contract_key,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
|
||
FROM cnt_contract_plaats cp, alg_gebouw g, alg_locatie l
|
||
WHERE cp.cnt_alg_plaats_code = 'G'
|
||
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key) cp
|
||
GROUP BY cp.cnt_contract_key) cp
|
||
ON x.cnt_contract_key = cp.cnt_contract_key;
|
||
*/
|
||
/* Formatted on 11-3-2016 9:42:24 (QP5 v5.136.908.31019) */
|
||
/* Tbv. demo Bedrijfskleding in Acceptatie; met SVRZ#36013 binnenkort misschien definitief (en anders weg)!!!
|
||
CREATE OR REPLACE VIEW svrz_v_kleding_artikelen
|
||
(
|
||
bes_srtdeel_key,
|
||
bes_srtdeel_oms,
|
||
bes_srtdeel_vvd
|
||
)
|
||
AS
|
||
SELECT sd.bes_srtdeel_key,
|
||
sd.bes_srtdeel_omschrijving,
|
||
sd.bes_srtdeel_verwijder
|
||
FROM bes_srtgroep sg, bes_srtdeel sd
|
||
WHERE sg.ins_discipline_key = 1721 -- Wessels B.V.
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key;
|
||
*/
|
||
|
||
|
||
-- SVRZ#51694: Notificatie bij update of verwijdering van objecten die vallen
|
||
-- onder de disciplines 'Uitleen personeel' en 'Werkkleding'.
|
||
-- SVRZ#59377: Of onder de objectsoorten 'Mobiel (svrz)' en 'Tablet (TB0)'.
|
||
CREATE OR REPLACE VIEW svrz_v_rap_bezittingen
|
||
(
|
||
ins_deel_key,
|
||
extra_key, -- Moet zo heten!
|
||
gebruiker,
|
||
identificatie,
|
||
objectsoort,
|
||
beschrijving,
|
||
registratiedatum,
|
||
verwijderdatum,
|
||
tonen,
|
||
inleverdatum
|
||
)
|
||
AS
|
||
SELECT d.ins_deel_key,
|
||
d.ins_alg_ruimte_key, -- Gebruiker
|
||
pf.prs_perslid_naam_friendly,
|
||
d.ins_deel_omschrijving,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_opmerking,
|
||
d.ins_deel_aanmaak,
|
||
d.ins_deel_verwijder,
|
||
DECODE (d.ins_deel_verwijder, NULL, DECODE (SIGN (ADD_MONTHS (d.ins_deel_vervaldatum, 1) - SYSDATE), -1, 0, 1), 0) tonen,
|
||
DECODE (SIGN (d.ins_deel_vervaldatum - SYSDATE), -1, d.ins_deel_vervaldatum, NULL) inleverdatum
|
||
FROM ins_deel d, -- Inclusief recent verwijderde objecten!
|
||
prs_v_perslid_fullnames_all pf,
|
||
ins_srtdeel sd
|
||
WHERE (d.ins_discipline_key IN (781, 2261) -- Uitleen Personeel/Werkkleding
|
||
OR d.ins_srtdeel_key IN (701, 707)) -- Mobiel (svrz)/Tablet (TB0)
|
||
AND d.ins_alg_ruimte_type = 'P'
|
||
AND d.ins_alg_ruimte_key = pf.prs_perslid_key
|
||
AND COALESCE (d.ins_deel_verwijder, SYSDATE) >= TRUNC (SYSDATE - 1)
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key;
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_noti_bezittingen
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
v.extra_key,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##AANT##', (SELECT COUNT ( * ) FROM svrz_v_rap_bezittingen WHERE extra_key = v.extra_key)),
|
||
r.fac_usrrap_key,
|
||
v.extra_key
|
||
FROM svrz_v_rap_bezittingen v, fac_tracking t, fac_usrrap r, fac_srtnotificatie sn
|
||
WHERE v.ins_deel_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key IN (93, 94) -- INSNEW/INSUPD
|
||
AND NOT EXISTS -- Niet tijdens een import gedaan!
|
||
(SELECT 1
|
||
FROM fac_import
|
||
WHERE fac_import_app_key = 42 -- INS
|
||
AND prs_perslid_key = t.prs_perslid_key
|
||
AND t.fac_tracking_datum BETWEEN fac_import_datum_gelezen AND fac_import_datum_verwerkt)
|
||
AND t.fac_tracking_datum >
|
||
DECODE (
|
||
TO_CHAR (SYSDATE + 5 / 1440, 'HH24'),
|
||
'09', TO_DATE (TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 18:00', 'dd-mm-yyyy hh24:mi'),
|
||
'12', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 09:00', 'dd-mm-yyyy hh24:mi'),
|
||
'15', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 12:00', 'dd-mm-yyyy hh24:mi'),
|
||
'18', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 15:00', 'dd-mm-yyyy hh24:mi'),
|
||
SYSDATE + 5 / 1440)
|
||
AND UPPER (r.fac_usrrap_view_name) = 'SVRZ_V_RAP_BEZITTINGEN'
|
||
AND sn.fac_srtnotificatie_code = 'CUST03'
|
||
AND BITAND (sn.fac_srtnotificatie_mode, 2) = 2
|
||
UNION -- INSDEL wordt niet getrackt, dus op basis van ins_deel_verwijder!
|
||
SELECT DISTINCT
|
||
sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
v.extra_key,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##AANT##', (SELECT COUNT ( * ) FROM svrz_v_rap_bezittingen WHERE extra_key = v.extra_key)),
|
||
r.fac_usrrap_key,
|
||
v.extra_key
|
||
FROM svrz_v_rap_bezittingen v,
|
||
( SELECT d1.ins_deel_key, COUNT ( * ) aantal
|
||
FROM ins_deel d1, ins_deel d2
|
||
WHERE d1.ins_discipline_key IN (781, 2261)
|
||
AND d1.ins_deel_verwijder > TRUNC (SYSDATE - 1) -- Sinds gisteren verwijderd tegelijk met andere objecten
|
||
AND d1.ins_deel_verwijder BETWEEN d2.ins_deel_verwijder - 1 / 86400 AND d2.ins_deel_verwijder + 1 / 86400
|
||
GROUP BY d1.ins_deel_key) d,
|
||
fac_usrrap r,
|
||
fac_srtnotificatie sn
|
||
WHERE v.ins_deel_key = d.ins_deel_key
|
||
AND d.aantal < 10
|
||
AND v.verwijderdatum >
|
||
DECODE (
|
||
TO_CHAR (SYSDATE + 5 / 1440, 'HH24'),
|
||
'09', TO_DATE (TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 18:00', 'dd-mm-yyyy hh24:mi'),
|
||
'12', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 09:00', 'dd-mm-yyyy hh24:mi'),
|
||
'15', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 12:00', 'dd-mm-yyyy hh24:mi'),
|
||
'18', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 15:00', 'dd-mm-yyyy hh24:mi'),
|
||
SYSDATE + 5 / 1440)
|
||
AND UPPER (r.fac_usrrap_view_name) = 'SVRZ_V_RAP_BEZITTINGEN'
|
||
AND sn.fac_srtnotificatie_code = 'CUST03'
|
||
AND BITAND (sn.fac_srtnotificatie_mode, 2) = 2
|
||
UNION -- SVRZ#59828: Precies 2 weken voor uitdienst de in te leveren bezittingen notificeren!
|
||
SELECT DISTINCT
|
||
sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
v.extra_key,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##AANT##', (SELECT COUNT ( * ) FROM svrz_v_rap_bezittingen WHERE extra_key = v.extra_key)),
|
||
r.fac_usrrap_key,
|
||
v.extra_key
|
||
FROM svrz_v_rap_bezittingen v,
|
||
prs_v_aanwezigperslid p,
|
||
fac_usrrap r,
|
||
fac_srtnotificatie sn
|
||
WHERE v.extra_key = p.prs_perslid_key
|
||
AND TRUNC (p.prs_perslid_einddatum) = TRUNC (SYSDATE + 14)
|
||
AND TO_CHAR (SYSDATE + 5 / 1440, 'HH24') = '07'
|
||
AND UPPER (r.fac_usrrap_view_name) = 'SVRZ_V_RAP_BEZITTINGEN'
|
||
AND sn.fac_srtnotificatie_code = 'CUST04'
|
||
AND BITAND (sn.fac_srtnotificatie_mode, 2) = 2;
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_perslid_nr_all
|
||
(
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam_friendly,
|
||
prs_perslid_verwijder
|
||
)
|
||
AS
|
||
SELECT pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_nr || ']',
|
||
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_nr || ']',
|
||
p.prs_perslid_verwijder
|
||
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
|
||
WHERE SUBSTR (p.prs_perslid_oslogin, 1, 1) != '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key;
|
||
|
||
CREATE OR REPLACE VIEW svrz_v_relaties_u_ict
|
||
(
|
||
prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_verwijder
|
||
)
|
||
AS
|
||
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_bedrijf_verwijder
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_uitvoerende = 1;
|
||
|
||
-- SVRZ#55239: Mail2Melding bij migratie Topdesk naar FACILITOR. Twee stromen:
|
||
-- - HELPDESK -: Soortmelding 1691 (Hardware/Computer) onder Vakgroep 3038
|
||
-- (Helpdesk I+A) onder Vakgroeptype 161!
|
||
-- - CLIENTPORTAAL -: Soortmelding 1697 (Clientportaal) onder Vakgroep 3042
|
||
-- (Servicedesk MijnCaress) onder Vakgroeptype 161!
|
||
-- SVRZ#71487: Nieuwe stroom: OWSTAB
|
||
-- SVRZ#72786: Nieuwe stroom: AFAS-BEHEER
|
||
-- SVRZ#75271: Nieuwe stroom: TELECOM-SVRZ
|
||
-- SVRZ#82889: Nieuwe stroom: PRIVACY-SVRZ
|
||
CREATE OR REPLACE PROCEDURE SVRZ_processemail (
|
||
pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER)
|
||
AS
|
||
c_onbekend_key NUMBER (10) := 36281; -- Onbekende gebruiker
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_exist_ticket VARCHAR2 (255) := '';
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
v_stdmelding_key NUMBER (10);
|
||
v_behandelteam_key NUMBER (10);
|
||
v_melding_key NUMBER (10);
|
||
v_folder_kkey NUMBER (10);
|
||
v_count NUMBER (10);
|
||
BEGIN
|
||
CASE
|
||
WHEN UPPER (pto) LIKE 'HELPDESK@%'
|
||
THEN
|
||
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=1691=Harware/Computer!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key
|
||
INTO v_discipline_key, v_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 1691;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
3141) -- BT Helpdesk I+A
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
WHEN UPPER (pto) LIKE 'CLIENTPORTAAL@%'
|
||
THEN
|
||
-- Melder/noteur per definitie Onbekend en 61=Servicecentrum!
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=1697=Clientportaal!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key
|
||
INTO v_discipline_key, v_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 1697;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
3061) -- BT Medewerkers Cli<6C>ntportaal
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
v_errormsg := 'Fout toevoegen Emailadres';
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key,
|
||
mld_kenmerk_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (v_melding_key,
|
||
1101, -- Emailadres
|
||
SUBSTR (pfrom, 1, 50));
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
WHEN UPPER (pto) LIKE 'OWSTAB@%'
|
||
THEN
|
||
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=2661=OWS / ESS (roosterprogramma)!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key, mld_stdmelding_default_disc
|
||
INTO v_discipline_key, v_stdmelding_key, v_behandelteam_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 2661;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
v_behandelteam_key) -- BT Logistiek & Planning
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
WHEN UPPER (pto) LIKE 'AFAS-BEHEER@%'
|
||
THEN
|
||
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=3121=Afas beheer!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key, mld_stdmelding_default_disc
|
||
INTO v_discipline_key, v_stdmelding_key, v_behandelteam_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 3121;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
v_behandelteam_key) -- BT Afas beheer
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
WHEN UPPER (pto) LIKE 'TELECOM-SVRZ@%'
|
||
THEN
|
||
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=1741=Zorgalarmering (deur-, bewegingssensoren, etc.)!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key, mld_stdmelding_default_disc
|
||
INTO v_discipline_key, v_stdmelding_key, v_behandelteam_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 1741;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
v_behandelteam_key) -- BT Telecom & Zorgalarmering
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
WHEN UPPER (pto) LIKE 'PRIVACY-SVRZ@%'
|
||
THEN
|
||
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 61=Servicecentrum!
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 61
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande melding';
|
||
v_exist_ticket := psubject;
|
||
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
||
THEN
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
||
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
||
ELSE
|
||
v_exist_ticket := 'x';
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
||
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
||
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
||
THEN -- Notitie bij bestaande melding!
|
||
SELECT mld_stdmelding_key, mld_melding_key
|
||
INTO v_stdmelding_key, v_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
||
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
prs_perslid_key,
|
||
mld_melding_note_omschrijving,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
v_perslid_key,
|
||
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
0);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
||
IF fac.getsetting ('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
END IF;
|
||
ELSE -- Nieuwe melding!
|
||
-- Bepaal de afgesproken soortmelding met key=3201=Privacy + Security!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key, mld_stdmelding_default_disc
|
||
INTO v_discipline_key, v_stdmelding_key, v_behandelteam_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 3201;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_locatie_key,
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
v_behandelteam_key) -- BT Telecom & Zorgalarmering
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
IF v_count = 0
|
||
THEN
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
END IF;
|
||
ELSE
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
|
||
END CASE;
|
||
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.writelog ('PROCESSEMAIL', 'E', 'SVRZ_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
-- Notificatie naar externe clientportaal-melders (per e-mail binnengelopen via
|
||
-- SVRZ_processemail()).
|
||
CREATE OR REPLACE VIEW svrz_v_noti_clientportaal
|
||
(
|
||
sender,
|
||
receiver,
|
||
text,
|
||
code,
|
||
key,
|
||
xkey,
|
||
xsender,
|
||
xemail,
|
||
xmobile,
|
||
attachments
|
||
)
|
||
AS
|
||
SELECT NULL,
|
||
NULL,
|
||
REPLACE (
|
||
REPLACE (
|
||
REPLACE (
|
||
lcl.x ('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms),
|
||
'##KEY##', TO_CHAR (x.mld_melding_key)),
|
||
'##STDMLD##', TO_CHAR (x.mld_stdmelding_omschrijving)),
|
||
'##DISC##', TO_CHAR (x.ins_discipline_omschrijving)),
|
||
sn.fac_srtnotificatie_code, -- TODO:Of CUSTxx?
|
||
x.mld_melding_key,
|
||
NULL,
|
||
'clientportaal@svrz.nl',
|
||
x.receiver,
|
||
NULL,
|
||
DECODE (
|
||
sn.fac_srtnotificatie_key,
|
||
341, 'MLD/M' || SUBSTR (LPAD (TO_CHAR (x.mld_melding_key), 7, '0'), 1, 4) || '___/M' || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (y.mld_kenmerk_key) || '/*', -- Bijlage(n) bij MLDNOT!
|
||
NULL)
|
||
FROM (SELECT m.mld_melding_key,
|
||
sm.mld_stdmelding_key,
|
||
md.ins_discipline_key,
|
||
md.ins_srtdiscipline_key,
|
||
sm.mld_stdmelding_omschrijving,
|
||
md.ins_discipline_omschrijving,
|
||
km.mld_kenmerkmelding_waarde receiver,
|
||
t.fac_srtnotificatie_key
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_discipline md,
|
||
mld_kenmerkmelding km,
|
||
(SELECT t1.fac_tracking_refkey,
|
||
t1.fac_tracking_datum,
|
||
t1.fac_srtnotificatie_key
|
||
FROM fac_tracking t1
|
||
WHERE t1.fac_srtnotificatie_key = 22 -- MLDAFM
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_tracking t2
|
||
WHERE t2.fac_srtnotificatie_key = 22
|
||
AND t2.fac_tracking_refkey = t1.fac_tracking_refkey
|
||
AND t2.fac_tracking_key > t1.fac_tracking_key)
|
||
UNION ALL
|
||
SELECT mn1.mld_melding_key fac_tracking_refkey,
|
||
mn1.mld_melding_note_aanmaak fac_tracking_datum,
|
||
341 fac_srtnotificatie_key -- MLDNOT
|
||
FROM mld_melding_note mn1
|
||
WHERE MOD (mn1.mld_melding_note_flag, 2) = 1
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_melding_note mn2
|
||
WHERE MOD (mn2.mld_melding_note_flag, 2) = 1
|
||
AND mn2.mld_melding_key = mn1.mld_melding_key
|
||
AND mn2.mld_melding_note_key > mn1.mld_melding_note_key)) t, -- Zichtbaar voor melder
|
||
fac_notificatie_job nj
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND m.mld_melding_key = km.mld_melding_key
|
||
AND km.mld_kenmerkmelding_verwijder IS NULL
|
||
AND km.mld_kenmerk_key = 1101 -- Emailadres
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND nj.fac_notificatie_job_view = 'SVRZ_V_NOTI_CLIENTPORTAAL'
|
||
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun) x
|
||
LEFT JOIN (SELECT mld_stdmelding_key, mld_kenmerk_niveau, mld_kenmerk_key
|
||
FROM mld_kenmerk
|
||
WHERE mld_kenmerk_verwijder IS NULL
|
||
AND mld_srtkenmerk_key = 521) y -- Naar cli<6C>nt te notificeren bijlagen (bij MLDNOT)
|
||
ON ((x.mld_stdmelding_key = y.mld_stdmelding_key AND y.mld_kenmerk_niveau = 'S')
|
||
OR (x.ins_discipline_key = y.mld_stdmelding_key AND y.mld_kenmerk_niveau = 'D')
|
||
OR (x.ins_srtdiscipline_key = y.mld_stdmelding_key AND y.mld_kenmerk_niveau = 'T'))
|
||
LEFT JOIN fac_srtnotificatie sn
|
||
ON x.fac_srtnotificatie_key = sn.fac_srtnotificatie_key;
|
||
|
||
-- SVRZ#62692: CMDB-objecten per plaats!
|
||
CREATE OR REPLACE VIEW svrz_v_rap_cmdb_plaats
|
||
(
|
||
ins_deel_key,
|
||
discipline,
|
||
groep,
|
||
objectsoort,
|
||
objectsoortcode,
|
||
objectid,
|
||
objectbeschr,
|
||
districtomschr,
|
||
locatiecode,
|
||
locatieomschr,
|
||
merk,
|
||
component
|
||
)
|
||
AS
|
||
SELECT x.ins_deel_key,
|
||
x.ins_discipline_omschrijving,
|
||
x.ins_srtgroep_omschrijving,
|
||
x.ins_srtdeel_omschrijving,
|
||
x.ins_srtdeel_code,
|
||
x.ins_deel_omschrijving,
|
||
x.ins_deel_opmerking,
|
||
x.district,
|
||
x.locatiecode,
|
||
x.locatieomschr,
|
||
COALESCE ((SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrdata_key = fac.safe_to_number (kd2.ins_kenmerkdeel_waarde)),
|
||
(SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrdata_key = fac.safe_to_number (kd3.ins_kenmerkdeel_waarde)))
|
||
merk,
|
||
DECODE (x.ins_discipline_key,
|
||
3082, DECODE (x.ins_srtdeel_code,
|
||
'PRT', 'Printer',
|
||
'PC', 'Werkstation - Desktop',
|
||
'LT', 'Werkstation - Laptop',
|
||
'TC', 'Werkstation - Terminal',
|
||
'Anders (Hardware)'),
|
||
DECODE (x.ins_srtdeel_code,
|
||
'TB',
|
||
DECODE (kd3.ins_kenmerkdeel_waarde,
|
||
'1142', 'iPad',
|
||
'1144', 'Dell Latitude',
|
||
'1148', 'Surface',
|
||
'1152', 'Samsung SM-T595',
|
||
'Anders (Telefonie/TB)'),
|
||
DECODE (kd3.ins_kenmerkdeel_waarde,
|
||
'1150', 'Telefoon - GSM',
|
||
'1152', 'Telefoon - Smartphone',
|
||
'Anders (Telefonie)')))
|
||
component
|
||
FROM (SELECT d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
d.ins_deel_opmerking,
|
||
td.ins_discipline_key,
|
||
td.ins_discipline_omschrijving,
|
||
sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
sd.ins_srtdeel_code,
|
||
'Onbekend' district,
|
||
'ONB' locatiecode,
|
||
'Onbekend' locatieomschr
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td
|
||
WHERE d.ins_deel_parent_key IS NULL
|
||
AND d.ins_alg_ruimte_type = 'A'
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key IN (3082, 3083) -- Hardware/Telefonie
|
||
UNION ALL
|
||
SELECT d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
d.ins_deel_opmerking,
|
||
td.ins_discipline_key,
|
||
td.ins_discipline_omschrijving,
|
||
sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
sd.ins_srtdeel_code,
|
||
--COALESCE (di.alg_district_omschrijving, 'Onbekend') district,
|
||
--l.alg_locatie_code locatiecode,
|
||
--l.alg_locatie_omschrijving locatieomschr
|
||
'Onbekend' district,
|
||
'ONB' locatiecode,
|
||
'Onbekend' locatieomschr
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td,
|
||
( SELECT p.prs_perslid_key,
|
||
MAX (pw.prs_werkplek_key) prs_werkplek_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_perslidwerkplek pwp,
|
||
prs_werkplek pw
|
||
WHERE p.prs_perslid_key = pwp.prs_perslid_key
|
||
AND pwp.prs_werkplek_key = pw.prs_werkplek_key
|
||
GROUP BY p.prs_perslid_key) pwp,
|
||
prs_v_werkplek_gegevens wpg,
|
||
alg_locatie l,
|
||
alg_district di
|
||
WHERE d.ins_deel_parent_key IS NULL
|
||
AND d.ins_alg_ruimte_type = 'P'
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key IN (3082, 3083) -- Hardware/Telefonie
|
||
AND d.ins_alg_ruimte_key = pwp.prs_perslid_key(+)
|
||
AND pwp.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
AND wpg.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = di.alg_district_key(+)
|
||
UNION ALL
|
||
SELECT d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
d.ins_deel_opmerking,
|
||
td.ins_discipline_key,
|
||
td.ins_discipline_omschrijving,
|
||
sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
sd.ins_srtdeel_code,
|
||
DECODE (d.ins_alg_ruimte_key, 8582, 'Voorraad SC', di.alg_district_omschrijving) district, -- 8582=b1.10 (Opslag I&A)
|
||
DECODE (d.ins_alg_ruimte_key, 8582, 'Voorraad SC', l.alg_locatie_code) locatiecode, -- 8582=b1.10 (Opslag I&A)
|
||
DECODE (d.ins_alg_ruimte_key, 8582, 'Voorraad SC', l.alg_locatie_code) locatieomschr -- 8582=b1.10 (Opslag I&A)
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td,
|
||
--ins_v_alg_overzicht o,
|
||
alg_locatie l,
|
||
alg_district di
|
||
WHERE d.ins_deel_parent_key IS NULL
|
||
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key IN (3082, 3083) -- Hardware/Telefonie
|
||
--AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
|
||
--AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
|
||
AND d.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key) x
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel kd1
|
||
ON x.ins_deel_key = kd1.ins_deel_key
|
||
AND kd1.ins_kenmerk_key IN (69, 82) -- Status (resp. Hardware en Telefonie)
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel kd2
|
||
ON x.ins_deel_key = kd2.ins_deel_key
|
||
AND kd2.ins_kenmerk_key = 62 -- MerkHardware (igv. Hardware)
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel kd3
|
||
ON x.ins_deel_key = kd3.ins_deel_key
|
||
AND kd3.ins_kenmerk_key = 75 -- MerkTelefonie (igv. Telefonie)
|
||
WHERE kd1.ins_kenmerkdeel_waarde = '841' -- Actief
|
||
;
|
||
/*
|
||
AND DECODE (x.ins_discipline_key,
|
||
3082, DECODE (x.ins_srtdeel_code,
|
||
'PRT', 'Printer',
|
||
'PC', 'Werkstation - Desktop',
|
||
'LT', 'Werkstation - Laptop',
|
||
'TC', 'Werkstation - Terminal',
|
||
'Anders (Hardware)'),
|
||
DECODE (kd2.ins_kenmerkdeel_waarde,
|
||
'Nokia', 'Telefoon - GSM',
|
||
'Samsung', 'Telefoons - Smartphone',
|
||
'Anders (Telefonie)')) NOT LIKE 'Anders%';
|
||
*/
|
||
-- SVRZ#66464: UDR_V_INS_DEEL inclusief organisatie (en personeelsnummer)!
|
||
CREATE OR REPLACE VIEW SVRZ_V_INS_DEEL
|
||
(
|
||
DEEL_KEY,
|
||
DISCIPLINE,
|
||
GROEP,
|
||
SOORTCODE,
|
||
SOORT,
|
||
OMSCHRIJVING,
|
||
PLAATSEIGENAAR,
|
||
PLAATSEIGENAARTYPE,
|
||
PLAATSAANDUIDING,
|
||
EIGENAAR_KEY,
|
||
EIGENAAR,
|
||
EIGENAAR_NR, -- Extra toegevoegd
|
||
EIGENAAR_AFDCODE, -- Extra toegevoegd
|
||
EIGENAAR_AFDOMS, -- Extra toegevoegd
|
||
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
|
||
)
|
||
AS
|
||
SELECT d.deel_key,
|
||
d.discipline,
|
||
d.groep,
|
||
d.soortcode,
|
||
d.soort,
|
||
d.omschrijving,
|
||
d.plaatseigenaar,
|
||
d.plaatseigenaartype,
|
||
d.plaatsaanduiding,
|
||
d.eigenaar_key,
|
||
d.eigenaar,
|
||
p.prs_perslid_nr,
|
||
a.prs_afdeling_naam,
|
||
a.prs_afdeling_omschrijving,
|
||
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
|
||
FROM ins_v_udr_deel d, prs_perslid p, prs_afdeling a
|
||
WHERE d.eigenaar_key = p.prs_perslid_key(+)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key(+);
|
||
|
||
CREATE OR REPLACE VIEW SVRZ_V_RAP_PRS_GEG
|
||
(
|
||
medewerker1,
|
||
medewerker2,
|
||
personeelsnummer,
|
||
functie,
|
||
profiel,
|
||
adres_naam,
|
||
adres_gebouw_ruimte,
|
||
bezoek_adres,
|
||
bezoek_postcode,
|
||
bezoek_plaats,
|
||
post_adres,
|
||
post_postcode,
|
||
post_plaats
|
||
)
|
||
AS
|
||
SELECT pf.prs_perslid_naam_full,
|
||
pf.prs_perslid_naam_friendly,
|
||
p.prs_perslid_nr,
|
||
sp.prs_srtperslid_omschrijving,
|
||
pr.fac_profiel_omschrijving,
|
||
a.mld_adres_naam,
|
||
a.mld_adres_gebouw_ruimte,
|
||
a.mld_adres_bezoek_adres,
|
||
a.mld_adres_bezoek_postcode,
|
||
a.mld_adres_bezoek_plaats,
|
||
a.mld_adres_post_adres,
|
||
a.mld_adres_post_postcode,
|
||
a.mld_adres_post_plaats
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_srtperslid sp,
|
||
fac_profiel pr,
|
||
mld_adres a
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key(+)
|
||
AND p.fac_profiel_key = pr.fac_profiel_key(+)
|
||
AND p.mld_adres_key = a.mld_adres_key(+);
|
||
|
||
-- SVRZ#76093: Rapportage Bedrijf!
|
||
CREATE OR REPLACE VIEW SVRZ_V_RAP_REL_GEG
|
||
(
|
||
bedrijf,
|
||
leveranciersnummer,
|
||
bezoek_adres,
|
||
bezoek_postcode,
|
||
bezoek_plaats,
|
||
bezoek_land,
|
||
post_adres,
|
||
post_postcode,
|
||
post_plaats,
|
||
post_land,
|
||
telefoon,
|
||
email,
|
||
l,
|
||
u,
|
||
c,
|
||
h,
|
||
kanaal_type,
|
||
kanaal_opdrachttype,
|
||
kanaal_url,
|
||
kanaal_xsl
|
||
)
|
||
AS
|
||
SELECT b.prs_bedrijf_naam,
|
||
b.prs_leverancier_nr,
|
||
b.prs_bedrijf_bezoek_adres,
|
||
b.prs_bedrijf_bezoek_postcode,
|
||
b.prs_bedrijf_bezoek_plaats,
|
||
b.prs_bedrijf_bezoek_land,
|
||
b.prs_bedrijf_post_adres,
|
||
b.prs_bedrijf_post_postcode,
|
||
b.prs_bedrijf_post_plaats,
|
||
b.prs_bedrijf_post_land,
|
||
b.prs_bedrijf_telefoon,
|
||
b.prs_bedrijf_email,
|
||
b.prs_bedrijf_leverancier l,
|
||
b.prs_bedrijf_uitvoerende u,
|
||
b.prs_bedrijf_contract c,
|
||
b.prs_bedrijf_huurder h,
|
||
ba.prs_bedrijfadres_type kanaal_type,
|
||
DECODE (ba.prs_bedrijfadres_type, 'O', DECODE (ot.mld_typeopdr_key, NULL, 'Overige', ot.mld_typeopdr_omschrijving), NULL) kanaal_opdrachttype,
|
||
ba.prs_bedrijfadres_url kanaal_url,
|
||
ba.prs_bedrijfadres_xsl kanaal_xsl
|
||
FROM prs_v_aanwezigbedrijf b, prs_bedrijfadres ba, mld_typeopdr ot
|
||
WHERE b.prs_bedrijf_key = ba.prs_bedrijf_key(+)
|
||
AND ba.mld_typeopdr_key = ot.mld_typeopdr_key(+);
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|