DIAN0+DIAN#51429 EXACT-import
svn path=/Customer/trunk/; revision=37539
This commit is contained in:
897
DIAN/dian.sql
Normal file
897
DIAN/dian.sql
Normal file
@@ -0,0 +1,897 @@
|
||||
--
|
||||
-- $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) := 501; -- Cli<6C>nt/D621/A501/P621
|
||||
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_clientachternaam VARCHAR2 (255); -- C60
|
||||
v_clientvoorletters VARCHAR2 (255); -- C15
|
||||
v_clientgeslacht VARCHAR2 (255); -- N1
|
||||
v_clienttelefoon VARCHAR2 (255); -- C15
|
||||
v_clientemail VARCHAR2 (255); -- C200
|
||||
v_artikelnr VARCHAR2 (255); -- C32
|
||||
v_omschrijving VARCHAR2 (255); -- C100
|
||||
v_prijs VARCHAR2 (255); -- N8.2
|
||||
v_eenheid VARCHAR2 (255); -- C30
|
||||
|
||||
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
|
||||
fac.imp_getfield (v_newline, c_delim, v_clientid);
|
||||
fac.imp_getfield (v_newline, c_delim, v_clientachternaam);
|
||||
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_artikelnr);
|
||||
fac.imp_getfield (v_newline, c_delim, v_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_delim, v_prijs);
|
||||
fac.imp_getfield (v_newline, c_delim, v_eenheid);
|
||||
|
||||
v_aanduiding := '[' || v_clientid || '|' || v_artikelnr || '] ';
|
||||
|
||||
-- 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_clientachternaam) = 'CLIENTACHTERNAAM'
|
||||
AND UPPER (v_clientvoorletters) = 'CLIENTVOORLETTERS'
|
||||
AND UPPER (v_clientgeslacht) = 'CLIENTGESLACHT'
|
||||
AND UPPER (v_clienttelefoon) = 'CLIENTTELEFOON'
|
||||
AND UPPER (v_clientemail) = 'CLIENTEMAIL'
|
||||
AND UPPER (v_artikelnr) = 'ARTIKELNR'
|
||||
AND UPPER (v_omschrijving) = 'OMSCHRIJVING'
|
||||
AND UPPER (v_prijs) = 'PRIJS'
|
||||
AND UPPER (v_eenheid) = 'EENHEID'
|
||||
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 := 'ClientAchternaam ongeldig; ongedefinieerd of te lang';
|
||||
v_clientachternaam := TRIM (v_clientachternaam);
|
||||
|
||||
IF v_clientachternaam IS NULL OR LENGTH (v_clientachternaam) > 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 := 'ArtikelNr ongeldig; ongedefinieerd of te lang';
|
||||
v_artikelnr := TRIM (v_artikelnr);
|
||||
|
||||
IF v_artikelnr IS NULL OR LENGTH (v_artikelnr) > 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_omschrijving := TRIM (v_omschrijving);
|
||||
|
||||
IF v_omschrijving IS NULL OR LENGTH (v_omschrijving) > 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_prijs := TRIM (v_prijs);
|
||||
|
||||
--IF v_prijs IS NOT NULL AND fac.safe_to_number (v_prijs) IS NULL
|
||||
IF fac.safe_to_number (v_prijs) 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_eenheid := TRIM (v_eenheid);
|
||||
|
||||
IF LENGTH (v_eenheid) > 30
|
||||
THEN
|
||||
v_eenheid := SUBSTR (v_eenheid, 1, 30);
|
||||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ArtikelEenheid afgekapt!');
|
||||
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_clientachternaam,
|
||||
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_artikelnr,
|
||||
v_clientid,
|
||||
v_omschrijving,
|
||||
fac.safe_to_number (v_prijs),
|
||||
NULL,
|
||||
v_eenheid,
|
||||
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) := 501; -- Cli<6C>nt/D621/A501/P621
|
||||
c_client_anaam VARCHAR2(4) := 'EXTB';
|
||||
c_exact_bkey NUMBER (10) := 481; -- Exact/D641/A481/P641
|
||||
c_default_gkey NUMBER (10) := 1; -- _Default-groep
|
||||
c_clientbeheer_gkey NUMBER (10) := 62; -- Cli<6C>ntBeheer-groep/D61/A62/P61
|
||||
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,
|
||||
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)
|
||||
VALUES (v_discipline_key, 1, 1, 10, 'BES', 0, 2);
|
||||
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;
|
||||
/
|
||||
|
||||
------ 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
|
||||
Reference in New Issue
Block a user