Files
Customer/SUTF/sutf.sql
Arthur Egberink bd002abac9 SUTF#70240 -- Foutmelding wanneer mail2melding wordt gestuurd
svn path=/Customer/trunk/; revision=54373
2022-01-04 11:59:57 +00:00

2830 lines
110 KiB
MySQL

-- Script containing customer specific configuration sql statements for Sutfene
-- $Revision$
-- $Id$
DEFINE thisfile = 'SUTF.SQL'
DEFINE dbuser = '^SUTF'
DEFINE custid = 'SUTF'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW sutf_v_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log
WHERE imp_log_applicatie = 'PRS';
CREATE OR REPLACE PROCEDURE sutf_import_prs (
p_import_key IN NUMBER
)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij sutf_UPDATE_PRS
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
-- Overig:
v_alg_locatie_code VARCHAR2 (256);
v_alg_gebouw_code VARCHAR2 (256);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM sutf_imp_prs;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 04
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 05
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
-- 08
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
-- 11
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
--
v_aanduiding :=
'['
|| v_prs_perslid_nr
|| '|'
|| v_prs_perslid_naam
|| '|'
|| v_prs_perslid_tussenvoegsel
|| '|'
|| v_prs_perslid_voornaam
|| '] ';
-- 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_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_perslid_naam) = 'PERSOONACHTERNAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldig personeelsnummer';
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
IF LENGTH (v_prs_perslid_nr) > 16
THEN
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Personeelsnummer te lang',
'Personeelsnummer wordt afgebroken tot ['
|| v_prs_perslid_nr
|| ']'
);
ELSE
IF (v_prs_perslid_nr IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Personeelsnummer onbekend',
'Personeelsnummer is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige naam';
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
IF LENGTH (v_prs_perslid_naam) > 30
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Naam te lang',
'Naam wordt afgebroken tot ['
|| v_prs_perslid_naam
|| ']'
);
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Naam onbekend',
'Naam is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldig tussenvoegsel';
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
THEN
v_prs_perslid_tussenvoegsel :=
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Tussenvoegsel te lang',
'Tussenvoegsel wordt afgebroken tot ['
|| v_prs_perslid_tussenvoegsel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voorletters';
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
IF LENGTH (v_prs_perslid_voorletters) > 10
THEN
v_prs_perslid_voorletters :=
SUBSTR (v_prs_perslid_voorletters, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voorletters te lang',
'Voorletters worden afgebroken tot ['
|| v_prs_perslid_voorletters
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voornaam';
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
IF LENGTH (v_prs_perslid_voornaam) > 30
THEN
v_prs_perslid_voornaam :=
SUBSTR (v_prs_perslid_voornaam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam is te lang',
'Voornaam wordt afgebroken tot ['
|| v_prs_perslid_voornaam
|| ']'
);
ELSE
IF (v_prs_perslid_voornaam IS NULL)
THEN
v_prs_perslid_voornaam := '-';
fac.imp_writelog
(p_import_key,
'W',
v_aanduiding || 'Voornaam onbekend',
'Voornaam wordt gezet op [-]'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige afdelingscode';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 10
THEN
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdelingscode te lang',
'Afdelingscode wordt afgebroken tot ['
|| v_prs_afdeling_naam
|| ']'
);
ELSE
IF (v_prs_afdeling_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Afdelingscode onbekend',
'Afdelingscode is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige plaats/locatiecode';
v_alg_locatie_code := TRIM(v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 5
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Locatiecode te lang',
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige plaats/gebouwcode';
v_alg_gebouw_code := TRIM(v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 10
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Gebouwcode te lang',
'Gebouwcode wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 50
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Loginnaam te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_perslid_oslogin
|| ']'
);
COMMIT;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel sutf_IMP_PRS';
INSERT INTO sutf_imp_prs
(prs_perslid_nr, prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam, prs_afdeling_naam,
prs_srtperslid_omschrijving,
alg_locatie_code, alg_gebouw_code,
alg_verdieping_volgnr, alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin
)
VALUES (v_prs_perslid_nr, v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam, v_prs_afdeling_naam,
v_prs_srtperslid_omschrijving,
v_alg_locatie_code, v_alg_gebouw_code,
NULL, NULL,
v_prs_perslid_telefoonnr,
v_prs_perslid_email,
v_prs_perslid_oslogin
);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!'
);
ELSE
fac.imp_writelog (p_import_key,
'S',
'Persoon: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Persoon: aantal ongeldige 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, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END sutf_import_prs;
/
CREATE OR REPLACE PROCEDURE sutf_update_prs (
p_import_key IN NUMBER
)
IS
-- LET OP: moet idem zijn als declaratie bij sutf_IMPORT_PRS
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
c_max_delta_percentage NUMBER (10) := 20;
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
c_ruimte_nr VARCHAR2 (10) := '000';
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
c_key_default_rol NUMBER(10) := 1;
c_key_JGZ_rol NUMBER(10) := 22;
c_key_Risicobeheers_rol NUMBER(10) := 62;
c_key_ConcernStaf_rol NUMBER(10) := 63;
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_actual NUMBER (10);
v_count_prs_import NUMBER (10); -- Matching actual persons!
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
--
v_perslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_srtperslid_key NUMBER (10);
v_oslogin VARCHAR2 (30);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_wp_key NUMBER (10);
v_wp_volgnr NUMBER (3);
v_wp_oms VARCHAR2 (30);
v_groep_defaultnaam VARCHAR2 (30);
-- Let op! Met eindatum zijn personen die niet meer in dienst zijn.
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM sutf_imp_prs ip
WHERE ip.prs_perslid_nr = p.prs_perslid_nr);
-- Let op! Met eindatum zijn personen die niet meer in dienst zijn.
CURSOR csperslid
IS
SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM sutf_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
CURSOR cperslid
IS
SELECT *
FROM sutf_imp_prs;
CURSOR cwp
IS
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code
FROM sutf_imp_prs ip, prs_v_aanwezigperslid p
WHERE ip.alg_locatie_code IS NOT NULL
AND ip.alg_gebouw_code IS NOT NULL
AND UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr);
-- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek
CURSOR cnowp
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
AND NOT EXISTS (SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key);
-- Alle aanwezige personen met personeelsnummer (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS (SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
INTO v_count_prs_actual
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL;
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
INTO v_count_prs_import
FROM prs_perslid p, sutf_imp_prs ip
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = ip.prs_perslid_nr;
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage
)
)
)
THEN
-- Geldig importbestand wat betreft aantal personen
FOR recdelprs IN cdelprs
LOOP
BEGIN
-- Heeft persoon actuele/toekomstige verplichtingen?
SELECT COUNT (*)
INTO v_count
FROM prs_perslid p, prs_v_verplichting_keys r
WHERE p.prs_perslid_key = r.prs_perslid_key
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij verwijderen persoon';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd'
);
COMMIT;
ELSE
-- Staat persoon INACTIEF?
SELECT COUNT (*)
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij INACTIEF zetten persoon';
-- Persoon INACTIEF zetten (update naam + reset oslogin)
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR (c_persoon_inactief || prs_perslid_naam,
1,
30
),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gezet',
'Persoon is INACTIEF gezet'
);
ELSE
v_errorhint := 'Fout bij INACTIEF maken persoon';
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND prs_perslid_oslogin IS NOT NULL;
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gemaakt',
'Persoon is INACTIEF gemaakt'
);
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
v_count_tot := 0;
v_count_error := 0;
FOR recsperslid IN csperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT (*)
INTO v_count
FROM prs_srtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsperslid.prs_srtperslid_omschrijving)
AND prs_srtperslid_verwijder IS NULL;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (recsperslid.prs_srtperslid_omschrijving
);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (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',
'Functie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Functie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recperslid IN cperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recperslid.prs_perslid_nr
|| '|'
|| recperslid.prs_perslid_naam
|| '|'
|| recperslid.prs_perslid_voornaam
|| ' - ';
v_errorhint :=
'Fout bij bepalen functie ['
|| recperslid.prs_srtperslid_omschrijving
|| ']';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_verwijder IS NULL
AND UPPER (prs_srtperslid_omschrijving) =
UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Fout bij bepalen afdeling ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND UPPER (prs_afdeling_naam) =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint := 'Fout bij bepalen persoon';
SELECT COUNT (*), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr);
-- Login afleiden uit e-mail (alles voor @)
-- v_oslogin := SUBSTR (recperslid.prs_perslid_email, 1, INSTR (recperslid.prs_perslid_email, '@', 1, 1) - 1);
-- Hier wordt loginnaam expliciet (anders) in het importbestand meegegeven.
v_oslogin := recperslid.prs_perslid_oslogin;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen persoon';
INSERT INTO prs_perslid
(prs_perslid_module, prs_srtperslid_key,
prs_afdeling_key, prs_perslid_naam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_nr, prs_perslid_oslogin
)
VALUES ('PRS', v_srtperslid_key,
v_afdeling_key, recperslid.prs_perslid_naam,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr, v_oslogin
);
COMMIT;
ELSE
IF (v_count > 1)
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding
|| ' kan persoon niet 1-duidig bepalen',
v_errorhint
);
COMMIT;
END IF;
v_errorhint := 'Fout bij wijzigen persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = recperslid.prs_perslid_naam,
prs_perslid_voorletters = recperslid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
prs_perslid_nr = recperslid.prs_perslid_nr,
prs_perslid_oslogin = COALESCE (v_oslogin, prs_perslid_oslogin)
WHERE prs_perslid_key = v_perslid_key;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (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',
'Persoon: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Persoon: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recwp IN cwp
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recwp.prs_perslid_nr
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_locatie_code
|| '|'
|| recwp.alg_gebouw_code
|| ' - ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
v_errorhint := 'Fout bij bepalen locatie';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code);
v_errorhint := 'Fout bij bepalen gebouw';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = v_locatie_key
AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code);
v_errorhint := 'Fout bij bepalen verdieping';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr = (SELECT MIN (v.alg_verdieping_volgnr)
FROM alg_verdieping v
WHERE v.alg_gebouw_key = v_gebouw_key
AND v.alg_verdieping_volgnr >= 0);
v_errorhint :=
'Fout bij bepalen of persoon in gebouw een werkplek heeft';
SELECT COUNT (*)
INTO v_count
FROM prs_perslidwerkplek pw,
prs_werkplek wp,
alg_ruimte r,
alg_verdieping v
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = wp.prs_werkplek_key
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = v_gebouw_key;
-- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw.
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij bepalen ruimte';
SELECT COUNT (*)
INTO v_count
FROM alg_v_aanwezigruimte r
WHERE r.alg_verdieping_key = v_verdieping_key
AND r.alg_ruimte_nr = c_ruimte_nr;
-- v_count=0 -> ruimte '000' bestaat nog niet.
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen ruimte';
INSERT INTO alg_ruimte
(alg_verdieping_key, alg_srtruimte_key,
alg_ruimte_nr
)
VALUES (v_verdieping_key, 21, -- facilitaire ruimte
c_ruimte_nr
);
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen ruimte';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r
WHERE r.alg_verdieping_key = v_verdieping_key
AND r.alg_ruimte_nr = c_ruimte_nr;
v_errorhint := 'Fout bij bepalen vrije werkplek';
SELECT COUNT (w.prs_werkplek_key)
INTO v_count
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS (
SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
IF (v_count > 0)
THEN
SELECT MIN (w.prs_werkplek_key)
INTO v_wp_key
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS (
SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
v_errorhint :=
'Fout bij koppelen persoon aan vrije werkplek';
INSERT INTO prs_perslidwerkplek
(prs_perslid_key, prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key,
100
);
COMMIT;
ELSE
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
SELECT prs_s_prs_werkplek_key.NEXTVAL
INTO v_wp_key
FROM DUAL;
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
INTO v_wp_volgnr
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
v_errorhint := 'Fout bij aanmaken nieuwe werkplek';
INSERT INTO prs_werkplek
(prs_werkplek_key, prs_werkplek_module,
prs_werkplek_volgnr,
prs_werkplek_omschrijving, prs_alg_ruimte_key
)
VALUES (v_wp_key, 'PRR',
v_wp_volgnr,
v_wp_oms, v_ruimte_key
);
v_errorhint :=
'Fout bij koppelen persoon aan nieuwe werkplek';
INSERT INTO prs_perslidwerkplek
(prs_perslid_key, prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key,
100
);
COMMIT;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (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',
'Werkplek: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Werkplek: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
FOR recnowp IN cnowp
LOOP
BEGIN
fac.imp_writelog (p_import_key,
'I',
'Persoon met nummer ['
|| recnowp.prs_perslid_nr
|| '] en naam ['
|| recnowp.prs_perslid_naam
|| ', '
|| recnowp.prs_perslid_voornaam
|| '] heeft geen werkplek',
'Geen werkplek'
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
-- Iedereen krijgt _default-rol die nog geen groep heeft.
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_nr
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']';
SELECT fac_groep_upper
INTO v_groep_defaultnaam
FROM fac_groep
WHERE fac_groep_key = c_key_default_rol;
v_errorhint :=
'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']';
INSERT INTO fac_gebruikersgroep
(fac_groep_key, prs_perslid_key
)
VALUES (c_key_default_rol, recnogroup.prs_perslid_key
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
ELSE
fac.imp_writelog
(p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%] <br> '
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| '] <br> '
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']'
);
COMMIT;
END IF; -- Geldig importbestand wat betreft aantal inserts
COMMIT;
END sutf_update_prs;
/
CREATE OR REPLACE VIEW SUTF_V_PERSAFD_FULLNAMES
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM_FULL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam
|| DECODE (p.prs_perslid_voorletters,
NULL, '',
', ' || p.prs_perslid_voorletters)
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (p.prs_perslid_voornaam,
NULL, '',
' (' || p.prs_perslid_voornaam || ')')
|| ' ['
|| a.prs_afdeling_omschrijving
|| ']'
prs_perslid_naam_full
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key;
-- SUTF#22335 view tbv selector bij personen. Bevat de afdelingstelefoon uit objecten.
CREATE OR REPLACE VIEW sutf_v_afdelingtelefoon
(
ins_deel_key,
afdelingtelefoon
)
AS
SELECT obj.ins_deel_key, ins_kenmerkdeel_waarde
FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k
WHERE ins_deel_verwijder IS NULL
AND obj.ins_srtdeel_key = srt.ins_srtdeel_key
AND srt.ins_srtgroep_key = 21
AND ins_alg_ruimte_type = 'A'
and k.ins_deel_key = obj.ins_deel_key
and ins_kenmerk_key = 81;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE sutf_export_afdelingstelefoon (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_prs_kenmerklink_key NUMBER (10);
-- In cursor c_afdtel_bij_persoon alle telefoon-objecten (telefoonnummers) van de afdelingen
-- aan de medewerkers van de afdeling gekoppeld...
-- Dus kenmerk van object van afdeling aan persoon van afdeling koppelen
CURSOR c_afdtel_bij_persoon
IS
SELECT prs_perslid_key, ins_deel_key
FROM prs_perslid p,
prs_kenmerklink kl,
(SELECT obj.ins_deel_key, ins_alg_ruimte_key
FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k
WHERE ins_deel_verwijder IS NULL
AND obj.ins_srtdeel_key = srt.ins_srtdeel_key
AND k.ins_deel_key = obj.ins_deel_key
AND srt.ins_srtgroep_key = 21
AND ins_alg_ruimte_type = 'A'
AND ins_kenmerk_key = 81) kenmerk
WHERE prs_perslid_verwijder IS NULL
AND kenmerk.ins_alg_ruimte_key = p.prs_afdeling_key
AND prs_link_key(+) = prs_perslid_key
ORDER BY prs_perslid_key,ins_deel_key;
BEGIN
FOR rec IN c_afdtel_bij_persoon
LOOP
BEGIN
-- prs_kenmerk-key = 1000: afdelingstelefoonnummer bij persoon (refkenmerk naar view sutf_v_afdelingtelefoon)
SELECT prs_kenmerklink_key
INTO v_prs_kenmerklink_key
FROM prs_kenmerklink kl
WHERE kl.prs_link_key = rec.prs_perslid_key
AND kl.prs_kenmerklink_niveau = 'P'
AND kl.prs_kenmerk_key = 1000
AND kl.prs_kenmerklink_verwijder IS NULL;
-- Bij de persoon is al een afdelingstelefoonnummer geregisteerd, nu nog updaten (doen we onvoorwaardelijk), want persoon kan:
-- van afdeling zijn verhuisd, of afdeling kan ander telefoonobject hebben gekregen, ...
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = rec.ins_deel_key
WHERE prs_kenmerklink_key = v_prs_kenmerklink_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
-- Record afdelingstelefoon-kenmerk bij persoon bestaat nog niet, dus toevoegen (insert)
-- prs_kenmerk-key = 1000: afdelingstelefoonnummer bij persoon
INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerk_key, prs_kenmerklink_waarde, prs_kenmerklink_niveau)
VALUES(rec.prs_perslid_key, 1000, rec.ins_deel_key, 'P');
COMMIT;
END;
END LOOP;
-- Hieronder alle personen die een telefoon-objecten (telefoonnummers) van de afdelingen
-- heeft gekoppeld, maar waarvan de afdeling geen telefoonobject (meer) heeft
-- Dus de andere kant op, want die moeten verwijderd worden.
DELETE FROM prs_kenmerklink
WHERE prs_kenmerklink_key IN
(SELECT KL.PRS_KENMERKLINK_KEY
FROM prs_kenmerklink kl, prs_perslid p
WHERE kl.prs_kenmerklink_niveau = 'P'
AND kl.prs_kenmerk_key = 1000
AND kl.prs_kenmerklink_verwijder IS NULL
AND KL.PRS_LINK_KEY = p.prs_perslid_key
AND NOT EXISTS (SELECT obj.ins_deel_key, ins_alg_ruimte_key
FROM ins_deel obj, ins_srtdeel srt, ins_kenmerkdeel k
WHERE ins_deel_verwijder IS NULL
AND obj.ins_srtdeel_key = srt.ins_srtdeel_key
AND k.ins_deel_key = obj.ins_deel_key
AND srt.ins_srtgroep_key = 21
AND ins_alg_ruimte_type = 'A'
AND ins_kenmerk_key = 81
AND ins_alg_ruimte_key = p.prs_afdeling_key )) ;
END;
/
------
------ FACTUURIMPORT / KOPPELING XTRACTOR
------
CREATE OR REPLACE PROCEDURE sutf_import_factuur (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(50);
BEGIN
--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12)
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0'
v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;9;10;11;12;0;0;0;0';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE sutf_post_processing_factuur (p_import_key IN NUMBER)
AS
-- Key van het kenmerk 'betaalreferentie' bij de factuur
c_kenmerk_key NUMBER(10) := 21;
CURSOR cfactuur_kenmerk
IS
SELECT DISTINCT fin_factuur_key, kenmerk1, factuurnr, fac_imp_file_index
FROM fac_imp_factuur
WHERE fin_factuur_key IS NOT NULL
AND kenmerk1 IS NOT NULL;
BEGIN
-- De betaalreferentie wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken
FOR rc IN cfactuur_kenmerk
LOOP
BEGIN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rc.fin_factuur_key, c_kenmerk_key, rc.kenmerk1);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Van factuur met key ' || rc.fin_factuur_key || ' is de betaalreferentie niet bewaard (regel ' || rc.fac_imp_file_index || ')',
'Factuurnr:' || rc.factuurnr || ' / Betalingskenmerk: ' || rc.kenmerk1
);
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE sutf_update_factuur (p_import_key IN NUMBER)
AS
BEGIN
-- Standaard FCLT verwerk import facturen
fac_update_factuur (p_import_key);
-- CUST: post processing voor verwerking van kenmerk 'Betalingskenmerk'
sutf_post_processing_factuur (p_import_key);
END;
/
------
------ FACTUURIMPORT / E-INVOICING (Pilot met OD: SUTF#26879)
------
CREATE OR REPLACE PROCEDURE sutf_import_e_invoice (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(50);
BEGIN
--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12)
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0'
v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;9;10;11;12;0;0;0;0';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE sutf_update_e_invoice (p_import_key IN NUMBER)
AS
BEGIN
-- Standaard FCLT verwerk import facturen
fac_update_factuur (p_import_key);
-- CUST: post processing voor verwerking van kenmerk 'Betalingskenmerk'
sutf_post_processing_factuur (p_import_key);
END;
/
------
------ FACTUUREXPORT / KOPPELING EXACT
------
-- View waarin bij de factuur met fin_factuur_key het bijbehorende factuurbestand (PDF) geldt.
CREATE OR REPLACE VIEW sutf_v_factuur_bestand (fin_factuur_key, fin_factuur_bestand)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 1;
-- View waarin bij de factuur met fin_factuur_key het bijbehorende betaalreferentie of betaalkenmerk geldt.
CREATE OR REPLACE VIEW sutf_v_factuur_betaalref (fin_factuur_key, fin_factuur_betaalref)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 21;
-- view tbv export naar exact
CREATE OR REPLACE VIEW sutf_v_factuur_mldcnt_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
fin_factuur_betaalref,
project_nummer,
prs_kostensoort_refcode,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
COALESCE (TO_CHAR (cnt_contract_nummer),
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key =
sd.ins_srtdiscipline_key)
)
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
fbr.fin_factuur_betaalref,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_refcode,ks.prs_kostensoort_refcode),
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
NULL bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
sutf_v_factuur_bestand fb,
sutf_v_factuur_betaalref fbr,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
AND f.bes_bestelopdr_key is null
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW sutf_v_factuur_bes_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
fin_factuur_betaalref,
project_nummer,
prs_kostensoort_refcode,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
b.prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
fbr.fin_factuur_betaalref,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_refcode,ks.prs_kostensoort_refcode),
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
sutf_v_factuur_bestand fb,
sutf_v_factuur_betaalref fbr,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+);
CREATE OR REPLACE VIEW sutf_v_factuur_geg
AS
SELECT * from sutf_v_factuur_mldcnt_gegevens
UNION
SELECT * from sutf_v_factuur_bes_gegevens;
CREATE OR REPLACE VIEW sutf_v_factuur_geg_akkoord
AS
SELECT * from sutf_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key = 6
UNION
SELECT * from sutf_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key = 6;
-- De OUDE ascii-rapportage van het exportbestand die voor Exact zou worden gegenereerd.
CREATE OR REPLACE VIEW sutf_v_rap_exact
(regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, field40)
AS
SELECT regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, '!'
FROM (SELECT 0 regelnummer,
'I' dagb_type,
'42' dagbknr,
'' periode,
'' bkjcode,
TO_CHAR (fin_factuur_key) bkstnr,
opdracht_id oms25,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
'' empty9,
'' debnr,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
'' empty12,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag,
'' drbk_in_val,
'' valcode,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
'' empty21,
'' empty22,
'' weeknummer,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalref,
'' betwijze,
'' grek_bdr,
'' empty27,
'' empty28,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' empty35,
'' empty36,
'' empty37,
'' empty38,
'' projectnr,
'!' empty40
FROM (SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_betaalref,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
bedrag
FROM sutf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_betaalref) fg
UNION ALL
SELECT fin_factuurregel_nr regelnummer,
'I' dagb_type,
'42' dagbknr,
'' periode,
'' bkjcode,
TO_CHAR (fin_factuur_key) boekstuknummer,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) oms25,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
prs_kostensoort_refcode reknr,
'' debnr,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
'' empty12,
REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag,
'' drbk_in_val,
'' val_code,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
fin_btwtabelwaarde_btwcode btw_code,
REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr,
'' weeknummer,
'' empty24,
'' empty25,
'' empty26,
prs_kostenplaats_nr kstplcode,
'' kstdrcode,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' emtpy35,
'' empty36,
'' empty37,
'' empty38,
project_nummer projectnr,
'!' empty40
FROM sutf_v_factuur_geg_akkoord fg);
-- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' waarvan de waarde_code met een
-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht.
CREATE OR REPLACE VIEW sutf_v_fclt_factuur_header (
result,
result_order
)
AS
SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '</' || fac_usrdata_code || '>', 1
FROM fac_usrdata
WHERE fac_usrtab_key = 101
AND fac_usrdata_verwijder is null;
CREATE OR REPLACE VIEW sutf_v_fclt_factuur_body (
result,
result_order
)
AS
SELECT DECODE(regelnummer,0,'<fin_factuur>','<fin_factuurregel>')
|| '<fin_factuur_key>' || fin_factuur_key || '</fin_factuur_key>'
|| '<fin_factuur_nr>' || xml.char_to_html(fin_factuur_nr) || '</fin_factuur_nr>'
|| '<fin_factuur_bestand>' || xml.char_to_html(fin_factuur_bestand) || '</fin_factuur_bestand>'
|| '<fin_factuur_debiteur_nr>' || xml.char_to_html(fin_factuur_debiteur_nr) || '</fin_factuur_debiteur_nr>'
|| '<bes_mld_cnt_opdracht_id>' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '</bes_mld_cnt_opdracht_id>'
|| '<fin_factuur_datum>' || datum || '</fin_factuur_datum>'
|| '<fin_factuur_boekmaand>' || fin_factuur_boekmaand || '</fin_factuur_boekmaand>'
|| '<prs_kostensoort_refcode>' || xml.char_to_html(grootboekrekening) || '</prs_kostensoort_refcode>'
|| '<prs_betaal_referentie>' || xml.char_to_html(betaalreferentie) || '</prs_betaal_referentie>'
|| '<prs_leverancier_nr>' || xml.char_to_html(crediteur_nr) || '</prs_leverancier_nr>'
|| '<prs_bedrijf_naam>' || xml.char_to_html(crediteur_naam) || '</prs_bedrijf_naam>'
|| '<fin_factuur_totaal_exbtw>' || fin_factuur_totaal_exbtw || '</fin_factuur_totaal_exbtw>'
|| '<fin_factuur_totaal_incbtw>' || fin_factuur_totaal_incbtw || '</fin_factuur_totaal_incbtw>'
|| '<fin_factuurregel_omschrijving>' || xml.char_to_html(fin_factuurregel_omschrijving) || '</fin_factuurregel_omschrijving>'
|| '<fin_factuurregel_totaal>' || fin_factuurregel_totaal || '</fin_factuurregel_totaal>'
|| '<fin_factuurregel_btw_perc>' || btw_percentage || '</fin_factuurregel_btw_perc>'
|| '<fin_factuurregel_btw_perc_code>' || xml.char_to_html(btw_code) || '</fin_factuurregel_btw_perc_code>'
|| '<fin_factuurregel_btw_bedrag>' || btw_bedrag || '</fin_factuurregel_btw_bedrag>'
|| '<prs_kostenplaats_nr>' || xml.char_to_html(prs_kostenplaats_nr) || '</prs_kostenplaats_nr>'
|| DECODE(regelnummer, 0, '', DECODE(aant_factuur_regels - regelnummer,0,'</fin_factuurregel></fin_factuur>','</fin_factuurregel>'))
,
(10000000 + fin_factuur_key) * 100 + regelnummer
FROM (SELECT 0 regelnummer,
aant_factuur_regels,
fin_factuur_key,
fin_factuur_nr,
fin_factuur_bestand,
fin_factuur_debiteur_nr,
opdracht_id bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
'' grootboekrekening,
betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw,
REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw,
'' fin_factuurregel_omschrijving,
'' fin_factuurregel_totaal,
'' btw_percentage,
'' btw_code,
'' btw_bedrag,
'' prs_kostenplaats_nr
FROM (SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
COUNT(fin_factuur_key) AS aant_factuur_regels,
SUM (fin_factuurregel_totaal) bedrag_exbtw,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw
FROM sutf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_betaalref) fg
UNION ALL
SELECT fin_factuurregel_nr regelnummer,
(SELECT COUNT(fin_factuur_key)
FROM sutf_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr) AS aant_factuur_regels,
fin_factuur_key,
fin_factuur_nr,
'' fin_factuur_bestand,
fin_factuur_debiteur_nr,
'' bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
prs_kostensoort_refcode grootboekrekening,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
'' fin_factuur_totaal_exbtw,
'' fin_factuur_totaal_incbtw,
fin_factuurregel_omschrijving,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal,
TO_CHAR(fin_factuurregel_btw_perc) btw_percentage,
fin_btwtabelwaarde_btwcode btw_code,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag,
prs_kostenplaats_nr
FROM sutf_v_factuur_geg_akkoord fg
ORDER BY fin_factuur_key, regelnummer);
--Vieuws voor looplijst reserveringen Mobiel
CREATE OR REPLACE VIEW sutf_v_rap_res_looplijst
AS
SELECT DISTINCT
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|| rg.alg_gebouw_upper
|| TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
hide_f_srt,
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
rg.alg_gebouw_omschrijving fclt_f_gebouw,
rr.res_rsv_ruimte_van datum,
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
r.res_ruimte_nr fclt_f_ruimte,
o.res_opstelling_omschrijving opstelling,
rr.res_rsv_ruimte_bezoekers aantal,
rr.res_rsv_ruimte_omschrijving omschrijving,
mld.aant Meldingen,
voorzieningen,
CASE
WHEN LENGTH (catering) > 75
THEN
SUBSTR (catering, 1, 75) || ' ...'
ELSE
catering
END
catering,
rr.res_rsv_ruimte_key
FROM res_rsv_ruimte rr,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte r,
res_alg_ruimte ar,
alg_v_ruimte_gegevens rg,
( SELECT res_rsv_ruimte_key,
'Ja (' || COUNT (res_rsv_ruimte_key) || ')' aant
FROM mld_melding
WHERE res_rsv_ruimte_key IS NOT NULL
GROUP BY res_rsv_ruimte_key) mld,
( SELECT res_rsv_ruimte_key,
LISTAGG (voorziening, CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY voorziening)
AS Voorzieningen
FROM (SELECT res_rsv_ruimte_key,
res_deel_omschrijving voorziening
FROM res_deel rd, res_rsv_deel rrd
WHERE RES_RSV_DEEL_verwijder IS NULL
AND rd.res_deel_key = rrd.res_deel_key
AND res_rsv_ruimte_key IS NOT NULL)
GROUP BY res_rsv_ruimte_key) voorz,
( SELECT res_rsv_ruimte_key,
LISTAGG (artikel, ', ') WITHIN GROUP (ORDER BY artikel)
AS catering
FROM (SELECT res_rsv_ruimte_key,
res_rsv_artikel_aantal
|| '*'
|| res_artikel_omschrijving
artikel
FROM res_artikel ra, res_rsv_artikel rra
WHERE RES_RSV_artikel_verwijder IS NULL
AND ra.res_artikel_key = rra.res_artikel_key
AND res_rsv_ruimte_key IS NOT NULL)
GROUP BY res_rsv_ruimte_key) cat
WHERE rr.res_rsv_ruimte_verwijder IS NULL
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
AND o.res_opstelling_key = ro.res_opstelling_key
AND r.res_ruimte_key = ro.res_ruimte_key
AND ar.res_ruimte_key = r.res_ruimte_key
AND ar.res_alg_ruimte_verwijder IS NULL
AND rg.alg_ruimte_key = ar.alg_ruimte_key
AND mld.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
AND voorz.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
AND cat.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key;
CREATE OR REPLACE VIEW sutf_v_rap_mob_looplijst
AS
SELECT *
FROM sutf_v_rap_res_looplijst
WHERE TRUNC (datum) = TRUNC (SYSDATE);
CREATE OR REPLACE VIEW sutf_v_export_fclt_factuur (
result,
result_order
)
AS
SELECT '<xml>',0 FROM DUAL
UNION
SELECT result, result_order FROM sutf_v_fclt_factuur_header
UNION
SELECT result, result_order FROM sutf_v_fclt_factuur_body
UNION
SELECT '</xml>',99999999999999999999 FROM DUAL;
CREATE OR REPLACE PROCEDURE sutf_export_fclt_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur
IS
SELECT fin_factuur_key
FROM sutf_v_factuur_geg_akkoord
GROUP BY fin_factuur_key;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
END LOOP;
END;
/
CREATE OR REPLACE VIEW sutf_v_export_undo_exact (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_refcode
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM sutf_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE sutf_select_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE sutf_export_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT DISTINCT f.fin_factuur_key
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE sutf_monthly
AS
-- ins_srtdiscipline_key = 1 -> Automatisering
CURSOR c_mld_2_arch
IS
SELECT mld_melding_key
FROM mld_melding
WHERE mld_melding_status = 5
AND sysdate-30 >=
(SELECT fac_tracking_datum from fac_tracking
WHERE fac_tracking_refkey = mld_melding_key
AND fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'MLDAFM')
)
AND mld_stdmelding_key IN
(SELECT mld_stdmelding_key FROM mld_stdmelding WHERE mld_ins_discipline_key IN
(SELECT ins_discipline_key FROM mld_discipline WHERE ins_srtdiscipline_key = 1)
);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
v_tracking VARCHAR2 (1000);
BEGIN
FOR cmld IN c_mld_2_arch
LOOP
BEGIN
-- Eerst proberen om melding op archief te zetten, indien gelukt DAN PAS in tracking
-- Het zou kunnen dat constraint de update tegenhoudt (openstaande opdrachten), in dat geval komt die in exception-tak (en wordt terecht niet getrackt).
-- Wel gaan we daartoe eerst de opdrachten op archief (7=verwerkt) zetten, die de status afgemeld hebben (= 6).
UPDATE mld_opdr
SET mld_statusopdr_key = 7
WHERE mld_statusopdr_key=6
AND mld_melding_key = cmld.mld_melding_key;
UPDATE mld_melding
SET mld_melding_status = 6
WHERE mld_melding_key = cmld.mld_melding_key;
-- Nu de melding in tracking zetten...dat ie gearchiveerd is
fac.trackaction ('MLDVER', cmld.mld_melding_key, NULL, NULL, 'Melding in archief gezet (door systeem)');
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
END;
COMMIT;
END LOOP;
END sutf_monthly;
/
-- SUTF#29030
-- Notificatiejob om te laat ingeleverde uitgeleende objecten naar de backoffice (=key 8621) te sturen
-- Terugbreng datum (=key 601) wordt bij het uitgeleende obejct geregistreerd
CREATE OR REPLACE VIEW SUTF_V_NOTI_INS_LATE
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'INSMAI',
NULL,
8621,
'Uitleentijd verstreken van: ' || ins_deel_omschrijving,
d.ins_deel_key,
NULL
FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_deel d
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 601
AND kd.ins_deel_key = d.ins_deel_key
AND ins_kenmerkdeel_verwijder IS NULL
AND d.ins_deel_verwijder IS NULL
AND ins_kenmerkdeel_waarde = TO_CHAR (SYSDATE - 1, 'DD-MM-YYYY')
AND ins_alg_ruimte_key_org IS NOT NULL;
CREATE OR REPLACE PACKAGE SUTF
AS
PROCEDURE mail_supportdesk (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE mail_idu (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY SUTF
AS
PROCEDURE mail_supportdesk (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_sender prs_perslid.prs_perslid_key%TYPE;
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_count NUMBER;
v_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
v_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
v_melding_key mld_melding.mld_melding_key%TYPE;
v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE;
v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_melding_status mld_melding.mld_melding_status%TYPE;
v_volgnr NUMBER;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_kkey mld_kenmerk.mld_kenmerk_key%TYPE;
v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE;
v_errorhint VARCHAR2 (1000);
v_errormsg fac_result.fac_result_waarde%TYPE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwijder de Bounce Address Tag Validation
IF pfrom LIKE 'prvs=%'
THEN
v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1);
ELSE
v_from := pfrom;
END IF;
v_stdmelding_key :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
--PROD
v_locatie_key := 261; --Locatie nvt
v_sender := 4; --4 = Facilitor
v_kkey := 1121; --Kenmerk_key bijlagen email
v_mailorigin := 1101; --Kenmerk_key originele mail-bijlage
--ACCEPT:
-- v_locatie_key := 241; --Locatie nvt
-- v_sender := 4; --4 = Facilitor
-- v_kkey := 1145; --Kenmerk_key bijlagen email
-- v_mailorigin := 1146; --Kenmerk_key originele mail-bijlage
-- filter nu de essentiele velden uit de mailbody
-- vervang cr door lf
v_body := pbody;
v_body := REPLACE (v_body, CHR (13), CHR (10));
-- verwijder dubbele lf's
v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10));
v_omschrijving := v_body;
v_onderwerp := psubject;
--
v_errorhint := 'Bepaal volgnummer';
SELECT COALESCE (MAX (fac_rapport_volgnr), 0)
INTO v_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'SUPPORTDESK';
v_errorhint := 'Bewaar mail ' || v_volgnr;
v_errormsg := '(0x110)';
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (
'SUPPORTDESK',
v_volgnr + 1,
pfrom
|| CHR (10)
|| psubject
|| CHR (10)
|| SUBSTR(v_omschrijving,1,1500));
-- nu gaan we de uitvoertijd bepalen
v_errorhint := 'Bepaal uitvoertijd ' || v_volgnr;
v_errormsg := '(0x120)';
SELECT mld_stdmelding_t_uitvoertijd
INTO v_uitvoertijd
FROM mld_stdmelding
WHERE mld_stdmelding_key = v_stdmelding_key;
-- nu gaan we de melding aanmaken
v_errorhint := 'Melding aanmaken ' || v_volgnr;
v_errormsg := 'Melding kan niet aangemaakt worden (0x150)';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys)
VALUES ('MLD',
6, -- system
SYSDATE,
v_onderwerp,
v_omschrijving,
NULL,
v_uitvoertijd,
v_stdmelding_key,
v_sender,
v_sender,
NULL,
3,
v_locatie_key,
NULL)
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := '(0x180)';
mld.setmeldingstatus (v_melding_key, 2, v_sender);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || v_melding_key);
IF v_melding_key = NULL
THEN
-- foutafhandeling
v_errorhint := 'Geen melding key ' || v_volgnr;
v_errormsg := 'Melding kan niet aangemaakt worden (0x910)';
fac.writelog ('MAIL_SUPPORTDESK',
'E',
v_errormsg,
SUBSTR (pbody, 1, 1000));
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'errormsg',
'Fout bij verwerken mail Supportdesk '
|| psubject);
ELSE
-- nu gaan we de bijlagen toevoegen
v_errorhint := 'Bijlagen toevoegen ' || v_volgnr;
v_errormsg := 'Bijlagen toevoegen lukt niet (0x210)';
IF v_kkey IS NOT NULL
THEN
v_errormsg := '(0x230)';
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_kkey
|| '\');
END IF;
-- originele email wordt opgeslagen bij de melding
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkorgmailpath',
'MLD\M'
|| TO_CHAR (TRUNC (v_melding_key / 1000),
'FM0000')
|| '___\M'
|| v_melding_key
|| '\'
|| v_mailorigin
|| '\');
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.writelog ('MAIL_SUPPORTDESK',
'E',
v_errormsg,
v_errorhint);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'errormsg',
'Fout bij verwerken mail Supportdesk: '
|| psubject);
END;
PROCEDURE mail_idu (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_sender prs_perslid.prs_perslid_key%TYPE;
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_count NUMBER;
v_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
v_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
v_melding_key mld_melding.mld_melding_key%TYPE;
v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE;
v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_melding_status mld_melding.mld_melding_status%TYPE;
v_volgnr NUMBER;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_kkey mld_kenmerk.mld_kenmerk_key%TYPE;
v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE;
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
v_mutatie VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_errormsg fac_result.fac_result_waarde%TYPE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwijder de Bounce Address Tag Validation
IF pfrom LIKE 'prvs=%'
THEN
v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1);
ELSE
v_from := pfrom;
END IF;
-- PROD
v_stdmelding_key := 1723; -- Startmelding IDU
v_locatie_key := 261; --Locatie nvt
v_sender := 4; --4 = Facilitor
v_kkey := 1121; --Kenmerk_key bijlagen email
v_mailorigin := 1101; --Kenmerk_key originele mail-bijlage
-- ACCEPT:
-- v_stdmelding_key := 1658; -- Startmelding IDU
-- v_locatie_key := 241; --Locatie nvt
-- v_sender := 4; --4 = Facilitor
-- v_kkey := 1145; --Kenmerk_key bijlagen email
-- v_mailorigin := 1146; --Kenmerk_key originele mail-bijlage
-- filter nu de essentiele velden uit de mailbody
-- vervang cr door lf
v_body := pbody;
v_body := REPLACE (v_body, CHR (13), CHR (10));
-- verwijder dubbele lf's
v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10));
v_omschrijving := v_body;
v_onderwerp := psubject;
--
v_errorhint := 'Bepaal volgnummer';
SELECT COALESCE (MAX (fac_rapport_volgnr), 0)
INTO v_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'IDU';
v_errorhint := 'Bewaar mail ' || v_volgnr;
v_errormsg := '(0x110)';
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (
'IDU',
v_volgnr + 1,
pfrom
|| CHR (10)
|| psubject
|| CHR (10)
|| SUBSTR(v_omschrijving,1,1500));
-- nu gaan we de uitvoertijd bepalen
v_errorhint := 'Bepaal uitvoertijd ' || v_volgnr;
v_errormsg := '(0x120)';
SELECT mld_stdmelding_t_uitvoertijd
INTO v_uitvoertijd
FROM mld_stdmelding
WHERE mld_stdmelding_key = v_stdmelding_key;
-- nu gaan we de melding aanmaken
v_errorhint := 'Melding aanmaken ' || v_volgnr;
v_errormsg := 'Melding kan niet aangemaakt worden (0x150)';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys)
VALUES ('MLD',
6, -- system
SYSDATE,
v_onderwerp,
v_omschrijving,
NULL,
v_uitvoertijd,
v_stdmelding_key,
v_sender,
v_sender,
NULL,
3,
v_locatie_key,
NULL)
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := '(0x180)';
mld.setmeldingstatus (v_melding_key, 2, v_sender);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || v_melding_key);
v_errormsg := '(0x190)';
-- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden.
mld.mld_nextworkflowstep (v_melding_key, -1);
-- nu gaan we mutatietype bepalen aanzetten
v_errorhint := 'Mutatietype bepalen ' || v_volgnr;
v_errormsg := 'Mutatietype kan niet bepaald worden (0x220)';
CASE
WHEN UPPER (psubject) LIKE '%MELDING NIEUW%'
THEN
v_mutatie := NULL;
WHEN UPPER (psubject) LIKE '%MELDING UIT%'
THEN
v_mutatie := '3269';
WHEN UPPER (psubject) LIKE '%MELDING HER%'
THEN
v_mutatie := '3268';
ELSE
v_mutatie := NULL; -- Dit is de verzamelbak van binnenkomende meldingen/mails waarvan niet de juiste stdmelding kan worden bepaald.
END CASE;
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1143, v_mutatie); --ACCEPT = 1161
-- nu gaan we de vinkjes aanzetten
v_errorhint := 'Vinkjes zetten ' || v_volgnr;
v_errormsg := 'Vinkjes kunnen niet gezet worden (0x220)';
-- In ACCEPT zijn dit kenmerk_keys 1121 t/m 1135 (vinkjes op melding 'Startmelding').
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1164, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1166, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1168, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1169, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1171, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1173, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1176, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1146, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1149, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1151, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1152, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1155, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1157, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1159, 1);
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 1161, 1);
IF v_melding_key = NULL
THEN
-- foutafhandeling
v_errorhint := 'Geen melding key ' || v_volgnr;
v_errormsg := 'Melding kan niet aangemaakt worden (0x910)';
fac.writelog ('MAIL_IDU',
'E',
v_errormsg,
SUBSTR (pbody, 1, 1000));
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Fout bij verwerken mail IDU ' || psubject);
ELSE
-- nu gaan we de bijlagen toevoegen
v_errorhint := 'Bijlagen toevoegen ' || v_volgnr;
v_errormsg := 'Bijlagen toevoegen lukt niet (0x210)';
IF v_kkey IS NOT NULL
THEN
v_errormsg := '(0x230)';
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_kkey
|| '\');
END IF;
-- originele email wordt opgeslagen bij de melding
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkorgmailpath',
'MLD\M'
|| TO_CHAR (TRUNC (v_melding_key / 1000),
'FM0000')
|| '___\M'
|| v_melding_key
|| '\'
|| v_mailorigin
|| '\');
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.writelog ('MAIL_SUPPORTDESK',
'E',
v_errormsg,
v_errorhint);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Fout bij verwerken mail IDU: ' || psubject);
END;
END;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile