ALLI#24861: Personen import aangepast (en nieuw rapport MI)

svn path=/Customer/trunk/; revision=16062
This commit is contained in:
Marcel Bourseau
2012-11-22 10:33:31 +00:00
parent 721f37053c
commit c880b6bbe5

View File

@@ -38,14 +38,15 @@ IS
v_pos NUMBER;
-- De importvelden:
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_voornaam 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_code VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_mobiel VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
@@ -77,54 +78,37 @@ BEGIN
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01 - Naam van medewerkers = achternaam, voorletters, tussenvoegsels
-- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam.
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- xx - Voorletters van medewerker (die zijn niet in een aparte kolom in de Excel, dus uit de naam strippen.
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
v_prs_perslid_voorletters := NULL;
v_pos := INSTR (v_prs_perslid_naam, ',', 1, 1);
IF (v_pos > 0)
THEN
v_prs_perslid_voorletters := TRIM(SUBSTR (v_prs_perslid_naam, v_pos + 1));
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, v_pos - 1);
END IF;
-- xx - Tussenvoegsels van medewerker
--fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
v_prs_perslid_tussenvoegsel := NULL;
v_pos := INSTR (v_prs_perslid_voorletters, ' ', 1, 1);
IF (v_pos > 0)
THEN
v_prs_perslid_tussenvoegsel := TRIM(SUBSTR (v_prs_perslid_voorletters, v_pos + 1));
v_prs_perslid_voorletters := SUBSTR (v_prs_perslid_voorletters, 1, v_pos - 1);
END IF;
-- 02 - Peroneelsnr
-- 05 - Peroneelsnr
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 03 - Afdelingscode
-- 06 - Afdelingscode
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code);
-- 04 - Afdelingsnaam (niet de code!)
-- 07 - Afdelingsnaam (niet de code!)
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 05 - Functieomschrijving van medewerker
-- 08 - Functieomschrijving van medewerker
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
-- 06 - Email adres van medewerker
-- 09 - Email adres van medewerker
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 10 - Mobiel van medewerker
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
-- 11 - Mobiel van medewerker
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
-- xx - Usernaam/login
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
v_prs_perslid_oslogin := NULL;
-- xx - Voornaam van medewerker
--fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
v_prs_perslid_voornaam := NULL;
-- xx - Locatiecode werkplek van medewerker
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
@@ -135,10 +119,7 @@ BEGIN
v_alg_gebouw_code := NULL;
-- xx - Telefoonnummer van medewerker
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
v_prs_perslid_telefoonnr := NULL;
--
v_aanduiding :=
@@ -153,13 +134,15 @@ BEGIN
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
-- IF UPPER (v_prs_perslid_naam) = 'NAAM': Deze conditie eruit, want de naam wordt ivm voorletters en tussenvoegsels aangepast/bewerkt.
IF UPPER (v_prs_perslid_nr) = 'PERSNR.'
IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM'
AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
AND UPPER (v_prs_perslid_nr) = 'PERSNR.'
AND UPPER (v_prs_afdeling_code) = 'AFDNR.'
AND UPPER (v_prs_afdeling_naam) = 'AFDELING'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_prs_perslid_email) = 'E-MAIL'
AND UPPER (v_prs_perslid_mobiel) = 'MOBILE'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
THEN
header_is_valid := 1;
END IF;
@@ -377,10 +360,10 @@ BEGIN
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 30
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 30);
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Functie te lang',
@@ -437,6 +420,23 @@ BEGIN
END IF;
--
v_errorhint := 'Ongeldig mobiel nummer';
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
IF LENGTH (v_prs_perslid_mobiel) > 15
THEN
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Mobiel nummer te lang',
'mobiel nummer wordt afgebroken tot ['
|| v_prs_perslid_mobiel
|| ']'
);
COMMIT;
END IF;
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
@@ -475,6 +475,7 @@ BEGIN
alg_locatie_code, alg_gebouw_code,
alg_verdieping_volgnr, alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_oslogin
)
@@ -487,6 +488,7 @@ BEGIN
v_alg_locatie_code, v_alg_gebouw_code,
NULL, NULL,
v_prs_perslid_telefoonnr,
v_prs_perslid_mobiel,
v_prs_perslid_email,
v_prs_perslid_oslogin
);
@@ -610,9 +612,9 @@ IS
CURSOR csperslid
IS
SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
SELECT prs_srtperslid_omschrijving
FROM alli_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
GROUP BY prs_srtperslid_omschrijving;
CURSOR cprsafd
@@ -806,11 +808,8 @@ BEGIN
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (recsperslid.prs_srtperslid_omschrijving
);
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recsperslid.prs_srtperslid_omschrijving);
COMMIT;
END IF;
EXCEPTION
@@ -978,6 +977,7 @@ BEGIN
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_oslogin
@@ -988,6 +988,7 @@ BEGIN
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_mobiel,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr,
recperslid.prs_perslid_oslogin
@@ -997,7 +998,8 @@ BEGIN
v_errorhint := 'Fout bij wijzigen persoon';
-- Functie, Afdeling, Naam, Voorletters, Tuusenvoegsels, Voornaam en Personeelsnummer altijd bijwerken
-- Functie, Afdeling altijd bijwerken
-- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond.
-- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
-- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
-- Personeelsnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
@@ -1006,11 +1008,12 @@ BEGIN
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_naam = COALESCE(recperslid.prs_perslid_naam,prs_perslid_naam),
prs_perslid_voorletters = COALESCE(recperslid.prs_perslid_voorletters,prs_perslid_voorletters),
prs_perslid_tussenvoegsel = COALESCE(recperslid.prs_perslid_tussenvoegsel,prs_perslid_tussenvoegsel),
prs_perslid_voornaam = COALESCE(recperslid.prs_perslid_voornaam,prs_perslid_voornaam),
prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel),
prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
prs_perslid_nr = COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr),
prs_perslid_oslogin = COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin)
@@ -2049,6 +2052,69 @@ AS
AND pgl.alg_locatie_key = l.alg_locatie_key(+);
CREATE OR REPLACE VIEW alli_v_bestelling_maninfo
(fclt_f_aanvraagnr,
fclt_x_jaar,
fclt_x_kwartaal,
fclt_x_maand,
besteldatum,
fclt_3d_discipline_key,
fclt_f_catalogus,
fclt_f_aanvrager,
personeelsnr,
fclt_f_afdeling,
fclt_f_status,
totaalbedrag
)
AS SELECT TO_CHAR(b.bes_bestelling_key),
TO_CHAR(MIN(bes_bestelling_datum), 'YYYY') jaar,
'Kwartaal ' || TO_CHAR(MIN(bes_bestelling_datum), 'Q') kwartaal,
TO_CHAR(MIN(bes_bestelling_datum), 'MM') maand,
TO_CHAR(MIN(bes_bestelling_datum), 'DD-MM-YYYY') datum,
MIN(dis.ins_discipline_key),
MIN(dis.ins_discipline_omschrijving) catalogus,
MIN(p.prs_perslid_naam)
|| NVL2 (MIN(p.prs_perslid_voorletters),
', ' || MIN(p.prs_perslid_voorletters),
'')
|| NVL2 (MIN(p.prs_perslid_tussenvoegsel),
' ' || MIN(p.prs_perslid_tussenvoegsel),
'')
|| NVL2 (MIN(p.prs_perslid_voornaam),
' (' || MIN(p.prs_perslid_voornaam) || ')',
'')
aanvrager,
MIN(P.PRS_PERSLID_NR),
MIN(d.prs_afdeling_naam) organisation,
MIN(BS.BES_BESTELLINGSTATUSES_OMSCHR),
SUM(bi.bes_bestelling_item_aantal
* COALESCE (bi.bes_bestelling_item_prijs, 0))
totaalbedrag
FROM bes_bestelling_item bi,
bes_srtdeel srt,
bes_bestelling b,
bes_bestellingstatuses bs,
prs_perslid p,
prs_v_afdeling d,
mld_adres m,
prs_v_afdeling_boom boom,
bes_srtgroep grp,
ins_tab_discipline dis,
alg_locatie l,
alg_district di
WHERE srt.bes_srtgroep_key = grp.bes_srtgroep_key
AND grp.ins_discipline_key = dis.ins_discipline_key
AND bi.bes_srtdeel_key = srt.bes_srtdeel_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND B.BES_BESTELLING_STATUS = BS.BES_BESTELLINGSTATUSES_KEY
AND p.prs_perslid_key = b.prs_perslid_key
AND p.prs_afdeling_key = d.prs_afdeling_key
AND d.prs_afdeling_key = boom.prs_afdeling_key
AND b.mld_adres_key_lev = m.mld_adres_key
AND m.alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
GROUP BY b.bes_bestelling_key;