SORO#25401 -- Update n.a.v. 3.2.2
svn path=/Customer/trunk/; revision=19397
This commit is contained in:
0
SORO/Once/.gitignore
vendored
Normal file
0
SORO/Once/.gitignore
vendored
Normal file
506
SORO/soro.sql
Normal file
506
SORO/soro.sql
Normal file
@@ -0,0 +1,506 @@
|
||||
-- Script containing customer specific configuration sql statements for SORO: Stichting ORO
|
||||
-- (c) 2013 SG|facilitor
|
||||
-- $Revision: 15481 $
|
||||
-- $Id: soro.sql 15481 2012-09-23 15:37:06Z jgl $
|
||||
--
|
||||
-- Support: +31 53 4800710
|
||||
|
||||
set echo on
|
||||
|
||||
spool xsoro.lst
|
||||
|
||||
@soro_prs_pack.sql;
|
||||
|
||||
--
|
||||
-- Personen import
|
||||
--
|
||||
CREATE OR REPLACE PROCEDURE soro_import_perslid_mut (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||||
v_newline VARCHAR2 (1000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
header_is_valid NUMBER;
|
||||
v_count NUMBER;
|
||||
v_ongeldig NUMBER (1);
|
||||
v_mode NUMBER (1);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_all_null BOOLEAN;
|
||||
v_count_error NUMBER (10);
|
||||
v_count_tot NUMBER (10);
|
||||
v_count_import NUMBER (10);
|
||||
-- De importvelden:
|
||||
v_alg_locatie_code VARCHAR2 (256);
|
||||
v_alg_gebouw_code VARCHAR2 (256);
|
||||
v_alg_verdieping_volgnr VARCHAR2 (256);
|
||||
v_alg_verdieping_volgnr_num NUMBER (3);
|
||||
v_alg_ruimte_nr VARCHAR2 (256);
|
||||
v_prs_werkplek_volgnr VARCHAR2 (256);
|
||||
v_prs_werkplek_volgnr_num NUMBER (3);
|
||||
v_prs_werkplek_omschrijving VARCHAR2 (256);
|
||||
v_prs_afdeling_naam VARCHAR2 (256);
|
||||
v_prs_afdeling_omschrijving 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_perslid_titel VARCHAR2 (256);
|
||||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||||
v_prs_perslid_email VARCHAR2 (256);
|
||||
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
||||
v_prs_perslid_nr VARCHAR2 (256);
|
||||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||||
v_prs_perslid_wachtwoord VARCHAR2 (256);
|
||||
v_dummy VARCHAR2 (256);
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND LENGTH(fac_imp_file_line) > 15
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
DELETE FROM fac_imp_perslid;
|
||||
|
||||
COMMIT;
|
||||
v_count_error := 0;
|
||||
header_is_valid := 0;
|
||||
v_count_tot := 0;
|
||||
v_count_import := 0;
|
||||
v_aanduiding := '';
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout FETCH te importeren rij';
|
||||
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := '';
|
||||
v_errorhint := 'Fout opvragen te importeren rij';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
-- Lees alle veldwaarden
|
||||
-- 01 vestiging
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||||
-- 02 locatie
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||||
-- 03
|
||||
fac.imp_getfield (v_newline,
|
||||
c_fielddelimitor,
|
||||
v_prs_afdeling_omschrijving);
|
||||
-- 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_voornaam);
|
||||
-- 07
|
||||
fac.imp_getfield (v_newline,
|
||||
c_fielddelimitor,
|
||||
v_prs_perslid_telefoonnr);
|
||||
-- 08
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||||
-- 09
|
||||
fac.imp_getfield (v_newline,
|
||||
c_fielddelimitor,
|
||||
v_prs_srtperslid_omschrijving);
|
||||
-- 10
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
|
||||
-- 11
|
||||
fac.imp_getfield (v_newline,
|
||||
c_fielddelimitor,
|
||||
v_prs_perslid_oslogin);
|
||||
--
|
||||
v_aanduiding :=
|
||||
v_prs_perslid_naam || '|' || v_prs_perslid_voornaam || '| ';
|
||||
|
||||
-- Controleer alle veldwaarde
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
IF UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
|
||||
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
|
||||
AND UPPER (v_prs_perslid_oslogin) = 'INLOGNAAM'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
|
||||
-- De afdelingen binnen ORO hebben geen afdelingscode. Daarom wordt de key van de afdeling als code gebruikt.
|
||||
v_errorhint := 'Ongeldige afdelingscode';
|
||||
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
|
||||
|
||||
IF v_prs_afdeling_omschrijving IS NOT NULL
|
||||
THEN
|
||||
BEGIN
|
||||
SELECT prs_afdeling_key
|
||||
INTO v_prs_afdeling_naam
|
||||
FROM prs_afdeling
|
||||
WHERE prs_afdeling_parentkey = 21 -- top level afdeling ORO
|
||||
AND UPPER(prs_afdeling_omschrijving) = UPPER(v_prs_afdeling_omschrijving)
|
||||
AND prs_afdeling_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
SELECT prs_s_prs_afdeling_key.NEXTVAL
|
||||
INTO v_prs_afdeling_naam
|
||||
FROM DUAL;
|
||||
|
||||
INSERT INTO prs_afdeling (prs_afdeling_key,
|
||||
prs_afdeling_parentkey,
|
||||
prs_afdeling_naam,
|
||||
prs_afdeling_omschrijving)
|
||||
VALUES (v_prs_afdeling_naam,
|
||||
21,
|
||||
v_prs_afdeling_naam,
|
||||
v_prs_afdeling_omschrijving);
|
||||
END;
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige naam persoon';
|
||||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||||
|
||||
IF LENGTH (v_prs_perslid_naam) > 60
|
||||
THEN
|
||||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60);
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'W',
|
||||
v_aanduiding || 'Naam persoon is te lang',
|
||||
'Aanduiding 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 persoon onbekend',
|
||||
'Naam persoon moet worden opgegeven');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige tussenvoegsel persoon';
|
||||
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 persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_tussenvoegsel
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Voornaam persoon';
|
||||
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 persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_voornaam
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige telefoonnr. persoon';
|
||||
v_prs_perslid_telefoonnr := REPLACE (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 || 'Telefoonnr. persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_telefoonnr
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige email persoon';
|
||||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||||
|
||||
IF LENGTH (v_prs_perslid_email) > 200
|
||||
THEN
|
||||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'W',
|
||||
v_aanduiding || 'Email persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_email
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige functie persoon';
|
||||
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-aanduiding persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_srtperslid_omschrijving
|
||||
|| ']');
|
||||
ELSE
|
||||
IF (v_prs_srtperslid_omschrijving IS NULL)
|
||||
THEN
|
||||
v_prs_srtperslid_omschrijving := 'Onbekend';
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_aanduiding || 'Functie persoon niet gevuld',
|
||||
'Wordt nu op Onbekend gezet');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige persoonnr.';
|
||||
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 || 'Persoonnr. persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_nr
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
v_errorhint := 'Ongeldige 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 persoon is te lang',
|
||||
'Aanduiding wordt afgebroken tot ['
|
||||
|| v_prs_perslid_oslogin
|
||||
|| ']');
|
||||
END IF;
|
||||
|
||||
--
|
||||
-- Insert geformatteerde import record
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij toevoegen te impoteren persoon ['
|
||||
|| v_aanduiding
|
||||
|| ']';
|
||||
|
||||
INSERT INTO fac_imp_perslid (alg_locatie_code,
|
||||
alg_gebouw_code,
|
||||
alg_verdieping_volgnr,
|
||||
alg_ruimte_nr,
|
||||
prs_werkplek_volgnr,
|
||||
prs_werkplek_omschrijving,
|
||||
prs_afdeling_naam,
|
||||
prs_perslid_naam,
|
||||
prs_perslid_tussenvoegsel,
|
||||
prs_perslid_voorletters,
|
||||
prs_perslid_voornaam,
|
||||
prs_perslid_titel,
|
||||
prs_perslid_telefoonnr,
|
||||
prs_perslid_mobiel,
|
||||
prs_perslid_email,
|
||||
prs_srtperslid_omschrijving,
|
||||
prs_perslid_nr,
|
||||
prs_perslid_oslogin,
|
||||
prs_perslid_wachtwoord)
|
||||
VALUES (v_alg_locatie_code,
|
||||
v_alg_gebouw_code,
|
||||
v_alg_verdieping_volgnr,
|
||||
v_alg_ruimte_nr,
|
||||
v_prs_werkplek_volgnr,
|
||||
v_prs_werkplek_omschrijving,
|
||||
v_prs_afdeling_naam,
|
||||
v_prs_perslid_naam,
|
||||
v_prs_perslid_tussenvoegsel,
|
||||
v_prs_perslid_voorletters,
|
||||
v_prs_perslid_voornaam,
|
||||
v_prs_perslid_titel,
|
||||
v_prs_perslid_telefoonnr,
|
||||
v_prs_perslid_mobiel,
|
||||
v_prs_perslid_email,
|
||||
v_prs_srtperslid_omschrijving,
|
||||
v_prs_perslid_nr,
|
||||
UPPER (v_prs_perslid_oslogin),
|
||||
v_prs_perslid_wachtwoord);
|
||||
|
||||
v_count_import := v_count_import + 1;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || 'Ongeldig importbestand',
|
||||
'Geen geldige headerregel aanwezig');
|
||||
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 := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
v_errorhint);
|
||||
END soro_import_perslid_mut;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE soro_update_perslid_mut (p_import_key IN NUMBER)
|
||||
IS
|
||||
CURSOR c_del
|
||||
IS
|
||||
SELECT prs_perslid_key,
|
||||
prs_perslid_naam,
|
||||
prs_perslid_oslogin,
|
||||
prs_perslid_oslogin2,
|
||||
prs_perslid_login,
|
||||
(SELECT COUNT ( * )
|
||||
FROM prs_v_verplichting v
|
||||
WHERE v.prs_perslid_key = p.prs_perslid_key)
|
||||
verplichtingen
|
||||
FROM prs_perslid p
|
||||
WHERE NOT EXISTS
|
||||
(SELECT prs_perslid_key
|
||||
FROM fac_imp_perslid i
|
||||
WHERE p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin))
|
||||
AND prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_oslogin NOT LIKE '/_%' ESCAPE ('/')
|
||||
AND prs_perslid_nr IS NOT NULL;
|
||||
|
||||
v_count NUMBER;
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
BEGIN
|
||||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
||||
|
||||
IF v_count > 1000
|
||||
THEN
|
||||
-- generic update
|
||||
soro.fac_gen_update_perslid (p_import_key,
|
||||
'LOGIN',
|
||||
0,
|
||||
'');
|
||||
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding :=
|
||||
rec.prs_perslid_naam || ' (' || rec.prs_perslid_oslogin || ')';
|
||||
|
||||
UPDATE prs_perslid p
|
||||
SET prs_perslid_oslogin = NULL, prs_perslid_oslogin2 = NULL
|
||||
WHERE p.prs_perslid_key = rec.prs_perslid_key;
|
||||
|
||||
DELETE fac_gebruikersgroep
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
|
||||
IF rec.verplichtingen = 0
|
||||
THEN
|
||||
UPDATE prs_perslid p
|
||||
SET prs_perslid_verwijder = SYSDATE
|
||||
WHERE p.prs_perslid_key = rec.prs_perslid_key;
|
||||
ELSE
|
||||
UPDATE prs_perslid p
|
||||
SET prs_perslid_naam =
|
||||
SUBSTR ('Inactief ' || prs_perslid_naam, 1, 60)
|
||||
WHERE p.prs_perslid_key = rec.prs_perslid_key
|
||||
AND p.prs_perslid_naam NOT LIKE 'Inactief%';
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| ' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Fout bij verwijderen persoon.');
|
||||
END;
|
||||
END LOOP;
|
||||
END IF;
|
||||
END soro_update_perslid_mut;
|
||||
/
|
||||
|
||||
BEGIN fac.registercustversion('SORO', 1); END;
|
||||
/
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: soro.sql $', '$Revision: 15481 $', 0); END;
|
||||
/
|
||||
|
||||
show errors;
|
||||
|
||||
|
||||
commit;
|
||||
|
||||
|
||||
spool off;
|
||||
1059
SORO/soro_prs_pack.sql
Normal file
1059
SORO/soro_prs_pack.sql
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user