986 lines
44 KiB
SQL
986 lines
44 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for DIAN.
|
||
DEFINE thisfile = 'DIAN.SQL'
|
||
DEFINE dbuser = '^DIAN'
|
||
|
||
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 dian_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 dian_import_prs (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Personeelsnummer (kolom 1) tot 6 posities prefixen met voorloopnullen!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
SUBSTR ('00000' || SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 1) - 1), -6)
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 1))
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index > 1
|
||
AND SUBSTR (fac_imp_file_line, 1, 1) != ';';
|
||
COMMIT;
|
||
|
||
-- Afdelingsomschrijving (kolom 5) mappen naar afdelingscode!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 4))
|
||
|| (SELECT MAX (prs_afdeling_naam)
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (SUBSTR (fac_imp_file_line,
|
||
INSTR (fac_imp_file_line, ';', 1, 4) + 1,
|
||
INSTR (fac_imp_file_line, ';', 1, 5) - INSTR (fac_imp_file_line, ';', 1, 4) - 1)))
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 5))
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index > 1
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (SUBSTR (fac_imp_file_line,
|
||
INSTR (fac_imp_file_line, ';', 1, 4) + 1,
|
||
INSTR (fac_imp_file_line, ';', 1, 5) - INSTR (fac_imp_file_line, ';', 1, 4) - 1)));
|
||
COMMIT;
|
||
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 4))
|
||
|| SUBSTR (SUBSTR (fac_imp_file_line,
|
||
INSTR (fac_imp_file_line, ';', 1, 4) + 1,
|
||
INSTR (fac_imp_file_line, ';', 1, 5) - INSTR (fac_imp_file_line, ';', 1, 4) - 1), 1, 15)
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 5))
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index > 1
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (SUBSTR (fac_imp_file_line,
|
||
INSTR (fac_imp_file_line, ';', 1, 4) + 1,
|
||
INSTR (fac_imp_file_line, ';', 1, 5) - INSTR (fac_imp_file_line, ';', 1, 4) - 1)));
|
||
COMMIT;
|
||
|
||
-- Generieke import.
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
||
-- Met Stamplaats wordt nog niets gedaan!
|
||
--'%"Personeelsnummer";"Loginnaam";"Achternaam";"Voornaam";"Afdelingsoms";"Functie";"Email";"Stamplaats"%');
|
||
--'%Personeelsnummer;Loginnaam;Achternaam;Voornaam;Afdelingsoms;Functie;Email;Stamplaats%');
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;5;3;0;4;'
|
||
|| '0;0;0;0;0;0;0;7;0;1;'
|
||
|| '6;2;0;0;0;0;8;0;0;0;'
|
||
|| '0;0;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'%Personeelsnummer;Loginnaam;Achternaam;Voornaam;Afdelingsoms;Functie;Email;Stamplaats%');
|
||
|
||
-- Klantspecifieke aanpassingen.
|
||
/*
|
||
-- Als geen Loginnaam aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_oslogin =
|
||
(SELECT MAX (prs_perslid_oslogin)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_oslogin IS NULL -- Aangeleverde Loginnaam wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_oslogin IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
COMMIT;
|
||
|
||
-- Als geen Voornaam aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_voornaam =
|
||
(SELECT MAX (prs_perslid_voornaam)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_voornaam IS NULL -- Aangeleverde Voornaam wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_voornaam IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
COMMIT;
|
||
|
||
-- Als geen Functie aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_srtperslid_omschrijving =
|
||
(SELECT MAX (prs_srtperslid_omschrijving)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_srtperslid_omschrijving IS NULL -- Aangeleverde Functie wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_srtperslid_omschrijving IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
COMMIT;
|
||
|
||
-- Als geen Email aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_email =
|
||
(SELECT MAX (prs_perslid_email)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_email IS NULL -- Aangeleverde Email wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_email IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
COMMIT;
|
||
*/
|
||
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Vestiging-kolom -> Eigen tabel (key=1) ->
|
||
-- Gebouw en daaronder Ruimte '_000' op de verdieping met het laagste volgnummer!
|
||
-- 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
|
||
-- '_000' op de meegegeven locatie.
|
||
-- Eventuele WPs onder andere locaties dan import-locatie blijven ook ongewijzigd!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.alg_locatie_code =
|
||
(SELECT il.alg_locatie_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Locatiecode
|
||
alg_v_aanweziglocatie il
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)),
|
||
i.alg_gebouw_code =
|
||
(SELECT ig.alg_gebouw_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Locatiecode
|
||
alg_v_aanweziglocatie il,
|
||
alg_v_aanweziggebouw ig
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
|
||
AND il.alg_locatie_key = ig.alg_locatie_key
|
||
AND ig.alg_gebouw_code = '_'),
|
||
i.alg_verdieping_volgnr =
|
||
(SELECT iv.alg_verdieping_volgnr
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Locatiecode
|
||
alg_v_aanweziglocatie il,
|
||
alg_v_aanweziggebouw ig,
|
||
alg_verdieping iv,
|
||
alg_ruimte ir
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
|
||
AND il.alg_locatie_key = ig.alg_locatie_key
|
||
AND ig.alg_gebouw_code = '_'
|
||
AND ig.alg_gebouw_key = iv.alg_gebouw_key
|
||
AND iv.alg_verdieping_key = ir.alg_verdieping_key
|
||
AND ir.alg_ruimte_nr = '_'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r, alg_verdieping v
|
||
WHERE r.alg_ruimte_nr = '_'
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
|
||
i.alg_ruimte_nr =
|
||
(SELECT ir.alg_ruimte_nr
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Locatiecode
|
||
alg_v_aanweziglocatie il,
|
||
alg_v_aanweziggebouw ig,
|
||
alg_verdieping iv,
|
||
alg_ruimte ir
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
|
||
AND il.alg_locatie_key = ig.alg_locatie_key
|
||
AND ig.alg_gebouw_code = '_'
|
||
AND ig.alg_gebouw_key = iv.alg_gebouw_key
|
||
AND iv.alg_verdieping_key = ir.alg_verdieping_key
|
||
AND ir.alg_ruimte_nr = '_'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r, alg_verdieping v
|
||
WHERE r.alg_ruimte_nr = '_'
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr))
|
||
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
|
||
(SELECT 1
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Locatiecode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il,
|
||
prs_v_aanwezigperslid p,
|
||
prs_perslidwerkplek pw,
|
||
prs_werkplek cw,
|
||
alg_v_aanwezigruimte cr,
|
||
alg_verdieping cv,
|
||
alg_gebouw cg
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
|
||
AND il.alg_locatie_key = ig.alg_locatie_key
|
||
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, 'Inleesproces personen afgebroken!');
|
||
END dian_import_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE dian_update_prs (p_import_key IN NUMBER)
|
||
AS
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers (met
|
||
-- een personeelsnummer).
|
||
c_max_delta_percentage NUMBER (10) := 25; -- 25%!
|
||
v_count_prs_import NUMBER (10); -- #actieve personen na import!
|
||
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
|
||
|
||
-- Mandateren personen met >1 dienstverband, namelijk voor kostenplaats(en)
|
||
-- van de andere dan de eigen afdeling!
|
||
/*
|
||
CURSOR c_mandate
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, a.prs_kostenplaats_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_nr) = UPPER (i.prs_perslid_nr)
|
||
AND a.prs_afdeling_upper != UPPER (i.prs_perslid_naam)
|
||
ORDER BY 2;
|
||
*/
|
||
|
||
-- Verwijderen personen niet in import!
|
||
/*
|
||
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
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (p.prs_perslid_nr))
|
||
ORDER BY 2;
|
||
*/
|
||
BEGIN
|
||
-- Bepaal aantal actieve personen in FACILITOR na import!
|
||
SELECT COUNT (DISTINCT prs_perslid_nr)
|
||
INTO v_count_prs_import
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_nr IS NOT NULL;
|
||
|
||
-- Bepaal aantal actieve personen in FACILITOR voor import!
|
||
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
||
INTO v_count_prs_actual
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr IS NOT NULL;
|
||
|
||
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
|
||
'- max. verschilpercentage = ['
|
||
|| TO_CHAR (c_max_delta_percentage)
|
||
|| '%]'
|
||
|| CHR (13) || CHR (10)
|
||
|| '- #personen/import = ['
|
||
|| TO_CHAR (v_count_prs_import)
|
||
|| ']'
|
||
|| CHR (13) || CHR (10)
|
||
|| '- #personen/huidig = ['
|
||
|| TO_CHAR (v_count_prs_actual)
|
||
|| ']');
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Generieke update (op personeelsnummer).
|
||
prs.update_perslid (p_import_key, 'NR', 'D');
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
--FOR rec IN c_del
|
||
--LOOP
|
||
-- prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
--END LOOP;
|
||
END dian_update_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE dian_import_exact (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
c_client_fkey NUMBER (10) := 621; -- Cli<6C>nt
|
||
c_client_anaam VARCHAR2 (4) := 'EXTB';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_ongeldig NUMBER (1);
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
-- De importvelden:
|
||
v_clientid VARCHAR2 (255); -- C16
|
||
v_clientnaam VARCHAR2 (255); -- C60
|
||
v_clientvoorletters VARCHAR2 (255); -- C15
|
||
v_clientgeslacht VARCHAR2 (255); -- N1
|
||
v_clienttelefoon VARCHAR2 (255); -- C15
|
||
v_clientemail VARCHAR2 (255); -- C200
|
||
v_artnr VARCHAR2 (255); -- C32
|
||
v_artikelomschrijving VARCHAR2 (255); -- C100
|
||
v_artikelprijs VARCHAR2 (255); -- N8.2
|
||
v_artikeleenheid VARCHAR2 (255); -- C30
|
||
v_aantal_ce VARCHAR2 (255); -- Nx
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fac_imp_perslid;
|
||
DELETE FROM fac_imp_catalogus;
|
||
COMMIT;
|
||
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
v_newline := rec1.fac_imp_file_line;
|
||
-- Lees alle veldwaarden
|
||
-- ClientId;ClientAchternaam;ClientVoorletters;ClientGeslacht;ClientTelefoon;ClientEmail;Artikelnr;Omschrijving;Prijs;Eenheid
|
||
-- ClientID;ClientNaam;ClientVoorletters;ClientGeslacht;ClientTelefoon;ClientEmail;Artnr;ArtikelOmschrijving;ArtikelPrijs;ArtikelEenheid;aantal_ce
|
||
fac.imp_getfield (v_newline, c_delim, v_clientid);
|
||
fac.imp_getfield (v_newline, c_delim, v_clientnaam);
|
||
fac.imp_getfield (v_newline, c_delim, v_clientvoorletters);
|
||
fac.imp_getfield (v_newline, c_delim, v_clientgeslacht);
|
||
fac.imp_getfield (v_newline, c_delim, v_clienttelefoon);
|
||
fac.imp_getfield (v_newline, c_delim, v_clientemail);
|
||
fac.imp_getfield (v_newline, c_delim, v_artnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_artikelomschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_artikelprijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_artikeleenheid);
|
||
fac.imp_getfield (v_newline, c_delim, v_aantal_ce);
|
||
|
||
v_aanduiding := '[' || v_clientid || '|' || v_artnr || '] ';
|
||
|
||
-- 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_clientid) = 'CLIENTID'
|
||
AND UPPER (v_clientnaam) = 'CLIENTNAAM'
|
||
AND UPPER (v_clientvoorletters) = 'CLIENTVOORLETTERS'
|
||
AND UPPER (v_clientgeslacht) = 'CLIENTGESLACHT'
|
||
AND UPPER (v_clienttelefoon) = 'CLIENTTELEFOON'
|
||
AND UPPER (v_clientemail) = 'CLIENTEMAIL'
|
||
AND UPPER (v_artnr) = 'ARTNR'
|
||
AND UPPER (v_artikelomschrijving) = 'ARTIKELOMSCHRIJVING'
|
||
AND UPPER (v_artikelprijs) = 'ARTIKELPRIJS'
|
||
AND UPPER (v_artikeleenheid) = 'ARTIKELEENHEID'
|
||
AND UPPER (v_aantal_ce) = 'AANTAL_CE'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'ClientId ongeldig; ongedefinieerd of te lang';
|
||
v_clientid := TRIM (v_clientid);
|
||
|
||
IF v_clientid IS NULL OR LENGTH (v_clientid) > 16
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ClientNaam ongeldig; ongedefinieerd of te lang';
|
||
v_clientnaam := TRIM (v_clientnaam);
|
||
|
||
IF v_clientnaam IS NULL OR LENGTH (v_clientnaam) > 60
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ClientVoorletters ongeldig; ongedefinieerd of te lang';
|
||
v_clientvoorletters := TRIM (v_clientvoorletters);
|
||
|
||
IF LENGTH (v_clientvoorletters) > 15
|
||
THEN
|
||
v_clientvoorletters := SUBSTR (v_clientvoorletters, 1, 15);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'ClientVoorletters afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ClientGeslacht ongeldig';
|
||
v_clientgeslacht := TRIM (v_clientgeslacht);
|
||
|
||
IF v_clientgeslacht NOT IN ('M', 'V')
|
||
THEN
|
||
v_clientgeslacht := '';
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ClientGeslacht genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ClientTelefoon te lang';
|
||
v_clienttelefoon := TRIM (v_clienttelefoon);
|
||
|
||
IF LENGTH (v_clienttelefoon) > 15
|
||
THEN
|
||
v_clienttelefoon := SUBSTR (v_clienttelefoon, 1, 15);
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ClientTelefoon afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ClientEmail te lang';
|
||
v_clientemail := TRIM (v_clientemail);
|
||
|
||
IF LENGTH (v_clientemail) > 200
|
||
THEN
|
||
v_clientemail := SUBSTR (v_clientemail, 1, 200);
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ClientEmail afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ArtNr ongeldig; ongedefinieerd of te lang';
|
||
v_artnr := TRIM (v_artnr);
|
||
|
||
IF v_artnr IS NULL OR LENGTH (v_artnr) > 32
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ArtikelOmschrijving ongeldig; ongedefinieerd of te lang';
|
||
v_artikelomschrijving := TRIM (v_artikelomschrijving);
|
||
|
||
IF v_artikelomschrijving IS NULL OR LENGTH (v_artikelomschrijving) > 100
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ArtikelPrijs ongeldig';
|
||
v_artikelprijs := TRIM (v_artikelprijs);
|
||
|
||
--IF fac.safe_to_number (v_artikelprijs) IS NULL
|
||
IF v_artikelprijs IS NOT NULL AND fac.safe_to_number (v_artikelprijs) IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'ArtikelEenheid te lang';
|
||
v_artikeleenheid := TRIM (v_artikeleenheid);
|
||
|
||
IF LENGTH (v_artikeleenheid) > 30
|
||
THEN
|
||
v_artikeleenheid := SUBSTR (v_artikeleenheid, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ArtikelEenheid afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'aantal_ce ongeldig';
|
||
v_aantal_ce := TRIM (v_aantal_ce);
|
||
|
||
--IF fac.safe_to_number (v_aantal_ce) IS NULL
|
||
IF v_aantal_ce IS NOT NULL AND fac.safe_to_number (v_aantal_ce) IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout wegschrijven importregels';
|
||
|
||
INSERT INTO fac_imp_perslid (fac_import_key,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_naam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_geslacht,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_email,
|
||
prs_afdeling_naam,
|
||
prs_srtperslid_omschrijving)
|
||
SELECT p_import_key,
|
||
v_clientid,
|
||
v_clientnaam,
|
||
v_clientvoorletters,
|
||
DECODE (v_clientgeslacht, 'M', 1, 'V', 0, NULL),
|
||
v_clienttelefoon,
|
||
v_clientemail,
|
||
c_client_anaam,
|
||
prs_srtperslid_omschrijving
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_key = c_client_fkey
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_oslogin = v_clientid);
|
||
|
||
INSERT INTO fac_imp_catalogus (fac_import_key,
|
||
ins_discipline_key,
|
||
prs_bedrijf_key,
|
||
fac_imp_catalogus_datum,
|
||
ins_srtdeel_nr,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_prijs,
|
||
ins_srtdeel_inkprijs,
|
||
ins_srtdeel_eenheid,
|
||
ins_srtdeel_image,
|
||
ins_srtdeel_veelvoud,
|
||
ins_srtdeel_btw,
|
||
ins_srtdeel_vervaldatum,
|
||
ins_srtdeel_minimum,
|
||
bes_staffeltabel_key,
|
||
ins_srtdeel_wijzigdagen,
|
||
ins_srtdeel_annuleerdagen,
|
||
ins_srtdeel_opmerking)
|
||
VALUES (p_import_key,
|
||
NULL,
|
||
NULL,
|
||
TRUNC (SYSDATE),
|
||
v_artnr,
|
||
v_clientid,
|
||
v_artikelomschrijving,
|
||
0,
|
||
NULL,
|
||
DECODE (UPPER (v_artikeleenheid),
|
||
'STUKS', DECODE (v_aantal_ce, 1, 'stuks', 'per ' || v_aantal_ce || ' stuks'),
|
||
LOWER (v_artikeleenheid) || ' <20> ' || v_aantal_ce),
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
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, '');
|
||
END;
|
||
COMMIT;
|
||
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', 'BES-catalogi/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '' );
|
||
fac.imp_writelog (p_import_key, 'S', 'BES-catalogi/#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 BES-catalogi afgebroken!');
|
||
END dian_import_exact;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE dian_update_exact (p_import_key IN NUMBER)
|
||
AS
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers (met
|
||
-- een personeelsnummer).
|
||
c_max_delta_percentage NUMBER (10) := 50; -- 50%!
|
||
c_client_fkey NUMBER (10) := 621; -- Cli<6C>nt
|
||
c_client_anaam VARCHAR2 (4) := 'EXTB';
|
||
c_exact_bkey NUMBER (10) := 641; -- Exact
|
||
c_default_gkey NUMBER (10) := 1; -- _Default-groep
|
||
c_clientbeheer_gkey NUMBER (10) := 61; -- Cli<6C>ntBeheer-groep
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_prs_import NUMBER (10); -- #actieve personen na import!
|
||
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
|
||
v_count NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
|
||
-- Verwijderen cli<6C>nten niet in import!
|
||
CURSOR c_prsdel
|
||
IS
|
||
SELECT p.prs_perslid_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_oslogin = p.prs_perslid_oslogin)
|
||
ORDER BY 1;
|
||
|
||
-- Aanmaken BES-catalogi en fac_imp_catalogus-tabel verrijken/aanvullen met
|
||
-- ins_discipline_key (per cli<6C>nt) en prs_bedrijf_key (Exact).
|
||
CURSOR c_besins
|
||
IS
|
||
SELECT DISTINCT prs_perslid_oslogin, prs_perslid_naam
|
||
FROM fac_imp_perslid
|
||
ORDER BY 1;
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen verschil';
|
||
|
||
-- Bepaal aantal actieve cli<6C>nten in FACILITOR na import!
|
||
SELECT COUNT (DISTINCT prs_perslid_oslogin)
|
||
INTO v_count_prs_import
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_oslogin IS NOT NULL;
|
||
|
||
-- Bepaal aantal actieve cli<6C>nten in FACILITOR voor import!
|
||
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
||
INTO v_count_prs_actual
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam;
|
||
|
||
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Verschil tussen huidig aantal en te importeren aantal cli<6C>nten te groot!',
|
||
'- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]'
|
||
|| CHR (13) || CHR (10)
|
||
|| '- #cli<6C>nten/import = [' || TO_CHAR (v_count_prs_import) || ']'
|
||
|| CHR (13) || CHR (10)
|
||
|| '- #cli<6C>nten/huidig = [' || TO_CHAR (v_count_prs_actual) || ']');
|
||
RETURN;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout toevoegen cli<6C>nten';
|
||
|
||
-- Generieke update (op loginnaam).
|
||
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
||
|
||
v_errormsg := 'Fout afnemen _Default-groepen';
|
||
|
||
-- Nieuwe/bestaande cli<6C>nten de '_Default'-groep afnemen!
|
||
DELETE FROM fac_gebruikersgroep gg
|
||
WHERE gg.fac_groep_key = c_default_gkey -- _Default
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND p.prs_perslid_key = gg.prs_perslid_key);
|
||
COMMIT;
|
||
|
||
v_errormsg := 'Fout verwijderen cli<6C>nten';
|
||
|
||
-- Verwijderen cli<6C>nten niet in import!
|
||
FOR rec IN c_prsdel
|
||
LOOP
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END LOOP;
|
||
|
||
v_errormsg := 'Fout toevoegen catalogi';
|
||
|
||
-- Aanmaken BES-catalogi en fac_imp_catalogus-tabel verrijken/aanvullen met
|
||
-- ins_discipline_key (per cli<6C>nt) en prs_bedrijf_key (Exact).
|
||
-- LET OP-Catalogus-naamconventie: <perslid_naam>/<perslid_oslogin>
|
||
FOR rec IN c_besins
|
||
LOOP
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM ins_tab_discipline td
|
||
WHERE td.ins_discipline_verwijder IS NULL
|
||
AND td.ins_discipline_module = 'BES'
|
||
AND INSTR (UPPER (td.ins_discipline_omschrijving), '/' || rec.prs_perslid_oslogin) > 0;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_kpnverplicht,
|
||
ins_discipline_btw)
|
||
VALUES ('BES',
|
||
rec.prs_perslid_naam || '/' || rec.prs_perslid_oslogin,
|
||
2, -- DIAN#57093: Kostenplaats niet tonen (per 2019.1)!
|
||
0)
|
||
RETURNING ins_discipline_key
|
||
INTO v_discipline_key;
|
||
|
||
INSERT INTO bes_disc_params (bes_ins_discipline_key,
|
||
bes_disc_params_auto_order,
|
||
bes_disc_params_autoacceptrfo,
|
||
bes_disc_params_leverdagen,
|
||
bes_disc_params_module,
|
||
bes_disc_params_bonotify,
|
||
bes_disc_params_bestelmode,
|
||
bes_disc_params_hide_cost_fe)
|
||
VALUES (v_discipline_key, 1, 1, 0, 'BES', 0, 2, 1);
|
||
ELSE -- Exception als v_count > 1!
|
||
SELECT td.ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_tab_discipline td
|
||
WHERE td.ins_discipline_verwijder IS NULL
|
||
AND td.ins_discipline_module = 'BES'
|
||
AND INSTR (UPPER (td.ins_discipline_omschrijving), '/' || rec.prs_perslid_oslogin) > 0;
|
||
END IF;
|
||
|
||
UPDATE fac_imp_catalogus
|
||
SET ins_discipline_key = v_discipline_key,
|
||
prs_bedrijf_key = c_exact_bkey -- Exact
|
||
WHERE ins_srtgroep_omschrijving = rec.prs_perslid_oslogin;
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
v_errormsg := 'Fout bijwerken catalogi';
|
||
|
||
-- Generieke update
|
||
fac_update_catalogus (p_import_key);
|
||
|
||
v_errormsg := 'Fout toevoegen Cli<6C>nt-groepen';
|
||
|
||
-- Per cli<6C>nt een 'Cli<6C>nt'-groep toevoegen (zover nog niet toegevoegd)!
|
||
-- LET OP-Autorisatiegroep-naamconventie: <perslid_oslogin>/<perslid_naam>
|
||
INSERT INTO fac_groep (fac_groep_omschrijving)
|
||
SELECT SUBSTR (p.prs_perslid_oslogin || '/' || p.prs_perslid_naam, 1, 30)
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_groep
|
||
WHERE INSTR (fac_groep_upper, p.prs_perslid_oslogin || '/') > 0);
|
||
COMMIT;
|
||
|
||
v_errormsg := 'Fout inkleuren Cli<6C>nt-groepen';
|
||
|
||
-- Elke 'Cli<6C>nt'-groep inkleuren met BESUSE-rechten op "eigen" catalogus en
|
||
-- de 'Cli<6C>ntBeheer'-groep BESFOF/BESBOF/BESBOR-rechten op alle catalogi!
|
||
INSERT INTO fac_groeprechten (fac_groep_key,
|
||
fac_functie_key,
|
||
ins_discipline_key,
|
||
fac_gebruiker_prs_level_read,
|
||
fac_gebruiker_alg_level_read,
|
||
fac_gebruiker_prs_level_write,
|
||
fac_gebruiker_alg_level_write)
|
||
SELECT g.fac_groep_key,
|
||
f.fac_functie_key,
|
||
td.ins_discipline_key,
|
||
-1,
|
||
-1,
|
||
-1,
|
||
-1
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_groep g, fac_functie f, ins_tab_discipline td
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND INSTR (g.fac_groep_upper, p.prs_perslid_oslogin || '/') > 0
|
||
AND f.fac_functie_code = 'WEB_BESUSE'
|
||
AND INSTR (UPPER (td.ins_discipline_omschrijving), '/' || p.prs_perslid_oslogin) > 0
|
||
AND td.ins_discipline_module = 'BES'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_groeprechten
|
||
WHERE fac_groep_key = g.fac_groep_key
|
||
AND fac_functie_key = f.fac_functie_key
|
||
AND ins_discipline_key = td.ins_discipline_key)
|
||
UNION ALL
|
||
SELECT c_clientbeheer_gkey, -- Cli<6C>ntBeheer
|
||
f.fac_functie_key,
|
||
td.ins_discipline_key,
|
||
-1,
|
||
-1,
|
||
9,
|
||
9
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_functie f, ins_tab_discipline td
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND f.fac_functie_code IN ('WEB_BESFOF', 'WEB_BESBOF', 'WEB_BESBOR')
|
||
AND INSTR (UPPER (td.ins_discipline_omschrijving), '/' || p.prs_perslid_oslogin) > 0
|
||
AND td.ins_discipline_module = 'BES'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_groeprechten
|
||
WHERE fac_groep_key = c_clientbeheer_gkey -- Cli<6C>ntBeheer
|
||
AND fac_functie_key = f.fac_functie_key
|
||
AND ins_discipline_key = td.ins_discipline_key);
|
||
COMMIT;
|
||
|
||
v_errormsg := 'Fout toekennen Cli<6C>nt-groepen';
|
||
|
||
-- Nieuwe/bestaande cli<6C>nten de *eigen* 'Cli<6C>nt'-groep toekennen (zover nog
|
||
-- niet toegekend)!
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT g.fac_groep_key, p.prs_perslid_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_groep g
|
||
WHERE p.prs_srtperslid_key = c_client_fkey -- Cli<6C>nt
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_naam = c_client_anaam
|
||
AND INSTR (fac_groep_upper, p.prs_perslid_oslogin || '/') > 0
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE prs_perslid_key = p.prs_perslid_key
|
||
AND fac_groep_key = g.fac_groep_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_errormsg, 'Updateproces BES-catalogi afgebroken!');
|
||
COMMIT;
|
||
END dian_update_exact;
|
||
/
|
||
|
||
/*
|
||
DELETE FROM bes_srtdeel;
|
||
DELETE FROM bes_srtgroep;
|
||
DELETE FROM bes_disc_params;
|
||
DELETE FROM ins_tab_discipline td WHERE TD.INS_DISCIPLINE_MODULE = 'BES';
|
||
*/
|
||
|
||
-- DIAN#55593: RTMs
|
||
CREATE OR REPLACE VIEW DIAN_V_GRAPH_MLD_NEW (FCLT_XAS_, FCLT_YAS_)
|
||
AS
|
||
SELECT SUM (nietnieuw) aantal, COUNT (mld_key) totaal
|
||
FROM (SELECT mld_melding_key mld_key,
|
||
DECODE (mld_melding_status,
|
||
0, 0, -- Pending
|
||
2, 0, -- Ingevoerd
|
||
3, 0, -- Ingezien
|
||
1)
|
||
nietnieuw
|
||
FROM mld_melding
|
||
WHERE mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
||
);
|
||
|
||
CREATE OR REPLACE VIEW DIAN_V_GRAPH_MLD_ACP (FCLT_XAS_, FCLT_YAS_)
|
||
AS
|
||
SELECT SUM (nogoptijd) aantal, COUNT (mld_key) totaal
|
||
FROM (SELECT mld_melding_key mld_key,
|
||
DECODE (SIGN (mld_melding_acceptdatum_std - TRUNC (COALESCE (fac.gettrackingdate ('MLDACP', mld_melding_key), SYSDATE), 'mi')),
|
||
-1, 0,
|
||
1)
|
||
nogoptijd
|
||
FROM mld_melding
|
||
WHERE mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
||
);
|
||
|
||
CREATE OR REPLACE VIEW DIAN_V_GRAPH_MLD_AFM (FCLT_XAS_, FCLT_YAS_)
|
||
AS
|
||
SELECT SUM (nogoptijd) aantal, COUNT (mld_key) totaal
|
||
FROM (SELECT mld_melding_key mld_key,
|
||
DECODE (SIGN (GREATEST (mld_melding_einddatum, mld_melding_einddatum_std) - TRUNC (SYSDATE, 'mi')),
|
||
-1, 0,
|
||
1)
|
||
nogoptijd
|
||
FROM mld_melding
|
||
WHERE mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
||
);
|
||
|
||
CREATE OR REPLACE VIEW DIAN_V_GRAPH_BHNDLR_OPEN
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT COALESCE (prs_perslid_naam_full, '<Onbekend>'),
|
||
SUM (nogoptijd),
|
||
COUNT ( * ) - SUM (nogoptijd),
|
||
0 - COUNT ( * )
|
||
FROM (SELECT p.prs_perslid_naam_full,
|
||
DECODE (SIGN (GREATEST (mld_melding_einddatum, mld_melding_einddatum_std) - TRUNC (SYSDATE, 'mi')),
|
||
-1, 0,
|
||
1)
|
||
nogoptijd
|
||
FROM mld_melding m, prs_v_perslid_fullnames_all p
|
||
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
||
AND m.mld_melding_behandelaar_key = p.prs_perslid_key)
|
||
GROUP BY prs_perslid_naam_full
|
||
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
|
||
SELECT ' ', 0, 0, 0 FROM DUAL;
|
||
|
||
------ 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
|