CSUN#30374 -- Koppeling AS400-FACILITOR (restpunten)

CSUN#30375 -- E-mail import ABN AMRO

svn path=/Customer/trunk/; revision=22568
This commit is contained in:
Arthur Egberink
2014-09-15 14:52:40 +00:00
parent f32a72e68b
commit fe46611405

View File

@@ -318,78 +318,193 @@ BEGIN
END;
/
CREATE OR REPLACE PROCEDURE CSUN_processemail (pfrom IN VARCHAR2,
CREATE OR REPLACE FUNCTION csun_get_html_valuepair (
p_text IN VARCHAR2,
p_start IN VARCHAR2,
p_eind IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN p_start || ': '
|| SUBSTR (
p_text,
INSTR (
p_text,
CHR (10) || CHR (13) || p_start || CHR (10) || CHR (13))
+ LENGTH (p_start)
+ 4,
INSTR (
p_text,
CHR (10) || CHR (13) || p_eind || CHR (10) || CHR (13))
- (INSTR (
p_text,
CHR (10) || CHR (13) || p_start || CHR (10) || CHR (13))
+ LENGTH (p_start)
+ 4));
END;
/
CREATE OR REPLACE PROCEDURE csun_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
pextra IN VARCHAR2)
AS
sender prs_perslid.prs_perslid_key%TYPE;
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
mldnum VARCHAR2(4000);
srtdisc VARCHAR2(4000);
cnt NUMBER(10);
v_flag_on_fenote NUMBER(10);
v_flag_on_bonote NUMBER(10);
v_from VARCHAR2(4000);
sender prs_perslid.prs_perslid_key%TYPE;
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
mldnum VARCHAR2 (4000);
srtdisc VARCHAR2 (4000);
cnt NUMBER (10);
v_flag_on_fenote NUMBER (10);
v_flag_on_bonote NUMBER (10);
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_pos NUMBER;
BEGIN
errormsg := '(0x143)';
-- Verwijder de Bounce Address Tag Validation
IF pfrom LIKE 'prvs=%'
THEN
v_from := SUBSTR(pfrom, INSTR(pfrom, '=', -1)+1);
v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1);
ELSE
v_from := pfrom;
END IF;
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
v_body := pbody;
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
-- Valideer de sender in pfrom: kennen we deze?
SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key)
INTO sender, kostenplaats
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND (UPPER (prs_perslid_email) = UPPER(v_from)
OR EXISTS
(SELECT *
FROM prs_kenmerklink kl
WHERE prs_kenmerk_key = 1020
AND prs_link_key = p.prs_perslid_key
AND UPPER (kl.prs_kenmerklink_waarde) =
UPPER (v_from)));
AND prs_perslid_verwijder IS NULL
AND (UPPER (prs_perslid_email) = UPPER (v_from)
OR EXISTS
(SELECT *
FROM prs_kenmerklink kl
WHERE prs_kenmerk_key = 1020
AND prs_link_key = p.prs_perslid_key
AND UPPER (kl.prs_kenmerklink_waarde) = UPPER (v_from)));
CASE
WHEN UPPER (pto) LIKE 'SERVICEDESK@%' OR UPPER (pto) LIKE 'DJI@%'
THEN
errormsg := '(0x145)';
-- bij abnamro gaan we de html body nog even opschonen
IF sender = 23
THEN
-- pas de omschrijving van de melding aan. Verwijder onnodige html ballast.
v_pos := INSTR (pbody, '--> Werkbon');
IF v_pos > 0
THEN
v_body :=
csun_get_html_valuepair (pbody,
'Planonnr.',
'Omschrijving')
|| CHR (10)
|| csun_get_html_valuepair (pbody,
'Omschrijving',
'Toelichting')
|| CHR (10)
|| csun_get_html_valuepair (pbody,
'Toelichting',
'Apparaatnummer')
|| CHR (10)
|| csun_get_html_valuepair (pbody,
'Apparaatnummer',
'Locatie')
|| CHR (10)
|| csun_get_html_valuepair (pbody, 'Gebouw', 'Adres')
|| CHR (10)
|| csun_get_html_valuepair (
pbody,
'Adres',
'Postcode ' || CHR (38) || 'amp; plaats')
|| CHR (10)
|| csun_get_html_valuepair (
pbody,
'Postcode ' || CHR (38) || 'amp; plaats',
'Ruimte')
|| CHR (10)
|| csun_get_html_valuepair (pbody, 'Ruimte', 'Melder')
|| CHR (10)
|| REPLACE (
csun_get_html_valuepair (pbody,
'Melder',
'Contactgegevens'),
'Melder' || CHR (10) || CHR (13))
|| CHR (10)
|| REPLACE (
csun_get_html_valuepair (pbody,
'Contactgegevens',
'Telefoonnummer extern'),
CHR (10) || CHR (13))
|| CHR (10)
|| REPLACE (
csun_get_html_valuepair (pbody,
'Telefoonnummer extern',
'E-mail'),
CHR (10) || CHR (13))
|| CHR (10)
|| csun_get_html_valuepair (pbody, 'E-mail', 'Melddatum')
|| CHR (10)
|| csun_get_html_valuepair (pbody, 'Melddatum', 'Urgentie')
|| CHR (10)
|| csun_get_html_valuepair (
pbody,
'Urgentie',
'ABN AMRO Bank N.V.Facility Desk020 - 6288060facility.desk@nl.abnamro.com')
|| CHR (10)
|| 'Origineel voor testdoeleinden:' || CHR(10)
|| pbody;
END IF;
END IF;
-- append (as a note?) to an existing melding if #key is found in the subject
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
mldnum := REGEXP_SUBSTR(psubject, subject_regexp, 1, 1, 'i'); -- MA12345
srtdisc := REGEXP_SUBSTR(mldnum, '[[:alpha:]]', 1, 1, 'i'); -- MA
mldkey := fac.safe_to_number(substr(mldnum, length(srtdisc) + 1));
-- DBMS_OUTPUT.PUT_LINE('mldnum: ' || mldnum);
-- DBMS_OUTPUT.PUT_LINE('srtdisc: ' || srtdisc);
-- DBMS_OUTPUT.PUT_LINE('mldkey: ' || mldkey);
mldnum :=
REGEXP_SUBSTR (psubject,
subject_regexp,
1,
1,
'i'); -- MA12345
srtdisc :=
REGEXP_SUBSTR (mldnum,
'[[:alpha:]]',
1,
1,
'i'); -- MA
mldkey := fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1));
-- DBMS_OUTPUT.PUT_LINE('mldnum: ' || mldnum);
-- DBMS_OUTPUT.PUT_LINE('srtdisc: ' || srtdisc);
-- DBMS_OUTPUT.PUT_LINE('mldkey: ' || mldkey);
-- We eisen
-- - Goed meldingnummer
-- - Goede srtdiscipline
-- - Afzender is degene voor wie de melding was
-- suggested extensions: ook collega's toestaan?
SELECT MIN(mm.mld_stdmelding_key)
SELECT MIN (mm.mld_stdmelding_key)
INTO stdmelding
FROM mld_melding mm, mld_stdmelding msm, ins_tab_discipline insd, ins_srtdiscipline isd
FROM mld_melding mm,
mld_stdmelding msm,
ins_tab_discipline insd,
ins_srtdiscipline isd
WHERE mm.mld_melding_key = mldkey
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
@@ -399,7 +514,8 @@ BEGIN
-- prefix letter
--AND isd.ins_srtdiscipline_prefix = srtdisc
AND mm.prs_perslid_key_voor = sender;
-- DBMS_OUTPUT.PUT_LINE('mld_stdmelding_key: ' || TO_CHAR(stdmelding));
-- DBMS_OUTPUT.PUT_LINE('mld_stdmelding_key: ' || TO_CHAR(stdmelding));
BEGIN
SELECT mld_melding_behandelaar_key
@@ -409,188 +525,234 @@ BEGIN
AND mld_melding_behandelaar_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
EXCEPTION WHEN OTHERS
THEN
behandelaar_key := NULL;
EXCEPTION
WHEN OTHERS
THEN
behandelaar_key := NULL;
END;
IF (stdmelding IS NOT NULL) AND behandelaar_key IS NOT NULL THEN -- Bestaande melding en behandelaar is bekend.
IF (stdmelding IS NOT NULL) AND behandelaar_key IS NOT NULL
THEN -- Bestaande melding en behandelaar is bekend.
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (mldkey,
SUBSTR (
psubject || CHR (13) || CHR (10)
|| REPLACE (
SUBSTR(pbody, 1, 4000 - (LENGTH(psubject)+2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
sender,
1); -- 1 is zichtbaar FE want zelf ingevoerd.
VALUES (mldkey,
SUBSTR (
psubject || CHR (13) || CHR (10)
|| REPLACE (
SUBSTR (v_body,
1,
4000 - (LENGTH (psubject) + 2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
sender,
1); -- 1 is zichtbaar FE want zelf ingevoerd.
-- Default tracking is even goed genoeg
fac.trackaction('MLDNOT', mldkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
-- DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.');
fac.trackaction ('MLDNOT',
mldkey,
sender,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
-- DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.');
-- Notificatie naar behandelaar
fac.putnotificationsrtprio(null, behandelaar_key, 'MLDMAI', mldkey, 'Melding ' || mldkey || ' is door de klant aangepast.', 2, null, null, null, 2, null);
fac.putnotificationsrtprio (
NULL,
behandelaar_key,
'MLDMAI',
mldkey,
'Melding ' || mldkey || ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
BEGIN
SELECT fac_setting_pvalue
INTO v_flag_on_fenote
FROM fac_setting
WHERE fac_setting_name = 'mld_flag_on_fenote';
SELECT fac_setting_pvalue
INTO v_flag_on_fenote
FROM fac_setting
WHERE fac_setting_name = 'mld_flag_on_fenote';
SELECT fac_setting_pvalue
INTO v_flag_on_bonote
FROM fac_setting
WHERE fac_setting_name = 'mld_flag_on_bonote';
SELECT fac_setting_pvalue
INTO v_flag_on_bonote
FROM fac_setting
WHERE fac_setting_name = 'mld_flag_on_bonote';
IF v_flag_on_fenote <> 0 AND v_flag_on_fenote IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_flag = v_flag_on_fenote
WHERE mld_melding_key = mldkey
AND( (mld_melding_flag = v_flag_on_bonote)
OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL)
);
-- DBMS_OUTPUT.PUT_LINE('Flag: ' || v_flag_on_fenote || ' gezet.');
END IF;
EXCEPTION WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('Niet gelukt om flag ' || v_flag_on_fenote || ' te zetten.');
IF v_flag_on_fenote <> 0 AND v_flag_on_fenote IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_flag = v_flag_on_fenote
WHERE mld_melding_key = mldkey
AND ( (mld_melding_flag = v_flag_on_bonote)
OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL));
-- DBMS_OUTPUT.PUT_LINE('Flag: ' || v_flag_on_fenote || ' gezet.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|| v_flag_on_fenote
|| ' te zetten.');
END;
ELSE
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
errormsg := '(0x148)';
BEGIN
stdmelding := fac.safe_to_number(fac.getsetting ('defaultstdmelding'));
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
SUBSTR (
psubject || CHR (13)
|| REPLACE (
SUBSTR(pbody, 1, 4000 - (LENGTH(psubject)+1)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
NULL,
2,
stdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x165)';
mld.setmeldingstatus (mldkey, 2, sender);
END;
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
errormsg := '(0x148)';
BEGIN
stdmelding :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
SUBSTR (
psubject || CHR (13)
|| REPLACE (
SUBSTR (v_body,
1,
4000 - (LENGTH (psubject) + 1)),
CHR (13)
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
NULL,
2,
stdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x165)';
mld.setmeldingstatus (mldkey, 2, sender);
END;
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
errormsg := '(0x151)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_stdmelding std,
ins_tab_discipline d
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = stdmelding
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key =
k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key =
stdmelding
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key =
d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer >
k.mld_kenmerk_volgnummer);
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = stdmelding
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key = stdmelding
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer >
k.mld_kenmerk_volgnummer);
errormsg := '(0x153)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES ('hMailServer',
'kenmerkpath',
'MLD\M' || to_char(TRUNC(mldkey/1000), 'FM0000') || '___\M' || mldkey || '\' || kkey || '\');
'MLD\M'
|| TO_CHAR (TRUNC (mldkey / 1000), 'FM0000')
|| '___\M'
|| mldkey
|| '\'
|| kkey
|| '\');
END IF;
END IF;
ELSE
errormsg := '(0x187)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES ('hMailServer', 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ' || errormsg);
VALUES ('hMailServer',
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES ('hMailServer',
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder ' || errormsg);
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
fac.writelog ('PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:' || pfrom || '[' || errormsg || ']',
'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
fac.writelog (
'PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:'
|| pfrom
|| '['
|| errormsg
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
/
@@ -1233,7 +1395,6 @@ END csun_import_project;
/
/* Formatted on 1/28/2013 4:46:45 PM (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE csun_update_project (p_import_key IN NUMBER)
IS
v_errormsg VARCHAR2 (1000);
@@ -1273,6 +1434,39 @@ IS
AND dm = c_dm
AND COALESCE(UPPER(vervallen), 'N') <> 'J';
CURSOR c_verv (c_accountcode IN VARCHAR2)
IS
SELECT alg_locatie_key, fac_usrdata_code
FROM alg_locatie l,
alg_onrgoedkenmerk aogka,
alg_onrgoedkenmerk aogkp,
fac_usrdata u
WHERE aogka.alg_kenmerk_key = 1000 -- client
AND l.alg_locatie_key = aogka.alg_onrgoed_key
AND fac.safe_to_number (aogka.alg_onrgoedkenmerk_waarde) =
u.fac_usrdata_key
AND aogkp.alg_kenmerk_key = 1040 -- projectnummer
AND l.alg_locatie_key = aogkp.alg_onrgoed_key
AND NOT EXISTS
(SELECT project
FROM csun_imp_project
WHERE project = aogkp.alg_onrgoedkenmerk_waarde
AND COALESCE (UPPER (vervallen), 'N') = 'N')
AND NOT EXISTS
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogkv
WHERE aogkv.alg_kenmerk_key = 1160 -- vervaldatum
AND l.alg_locatie_key = aogkv.alg_onrgoed_key);
CURSOR c_del
IS
SELECT alg_locatie_key, alg_locatie_code
FROM alg_locatie l, alg_onrgoedkenmerk aogk
WHERE alg_locatie_verwijder IS NULL
AND aogk.alg_kenmerk_key = 1160 -- vervaldatum
AND l.alg_locatie_key = aogk.alg_onrgoed_key
AND fac.safe_to_date(aogk.alg_onrgoedkenmerk_waarde, 'dd-mm-yyyy') < SYSDATE - 182;
FUNCTION get_alg_kenmerk (p_kenmerk_key IN NUMBER, p_onrgoed_key IN NUMBER) RETURN VARCHAR2
AS
v_waarde VARCHAR2(255);
@@ -1401,6 +1595,8 @@ BEGIN
csun_set_kenmerk ('ALG', 1006, v_locatie_key, v_bud_key, 0);
csun_set_kenmerk ('ALG', 1000, v_locatie_key, v_account_key, 0);
csun_set_kenmerk ('ALG', 1040, v_locatie_key, rec.project, 0);
-- reanimeer verwijderde locaties
csun_set_kenmerk ('ALG', 1160, v_locatie_key, NULL, 0);
END IF;
EXCEPTION WHEN OTHERS THEN
@@ -1427,6 +1623,14 @@ BEGIN
END;
END LOOP;
FOR rec_verv IN c_verv(rec_a.accountcode)
LOOP
BEGIN
-- zet de vervaldatum bij de locatie zodat deze na 6 maanden verwijderd kan worden.
csun_set_kenmerk ('ALG', 1160, rec_verv.alg_locatie_key, TO_CHAR(SYSDATE, 'dd-mm-yyyy'), 0);
END;
END LOOP;
EXCEPTION WHEN OTHERS THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
@@ -1441,7 +1645,25 @@ BEGIN
csun_export_set_werkplek (p_import_key);
-- to do : locatie verwijderen.
FOR rec_del IN c_del
LOOP
BEGIN
v_error_hint := 'Verwijderen gebouwen - Locatie_code: ' || rec_del.alg_locatie_code;
UPDATE alg_gebouw SET alg_gebouw_verwijder = SYSDATE WHERE alg_locatie_key = rec_del.alg_locatie_key;
v_error_hint := 'Verwijderen locatie - Locatie_code: ' || rec_del.alg_locatie_code;
UPDATE alg_locatie SET alg_locatie_verwijder = SYSDATE WHERE alg_locatie_key = rec_del.alg_locatie_key;
EXCEPTION WHEN OTHERS THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (
p_import_key,
'E',
'Verwijderen locaties:' || v_errormsg,
v_error_hint);
END;
END LOOP;
COMMIT;
EXCEPTION
@@ -1823,7 +2045,7 @@ AS
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('CSUN', 12); END;
BEGIN fac.registercustversion('CSUN', 13); END;
/
COMMIT;
spool off