HERO#86913 -- Implementatie Personen import vanuit AFAS

svn path=/Customer/trunk/; revision=68524
This commit is contained in:
Norbert Wassink
2025-03-25 12:19:32 +00:00
parent 67ef7316db
commit fcbacf0125

View File

@@ -1368,12 +1368,257 @@ BEGIN
END;
/
-- EIND MJOB Taken
-- EIND MJOB Taken
-- Einde MJOB import op basis van OPrognose
-- Import AFAS personen
--"Roepnaam";"Voorletters";"Voorvoegsel";"Achternaam";"Persnr.";"Afdnr.";"Functie";"Email";"Mobile";"Telefoon";"Loginnaam";"KP";"Kostenplaats";"CL";"Cluster";"OE";"OE omschrijving"
CREATE OR REPLACE PROCEDURE HERO_IMPORT_AFAS_PERSONEN(p_import_key IN NUMBER)
AS
CURSOR c1 IS
SELECT fac_imp_csv_col01 prs_voornaam,
fac_imp_csv_col02 prs_voorletters,
fac_imp_csv_col03 prs_tussenvoegsel,
fac_imp_csv_col04 prs_achternaam,
fac_imp_csv_col05 prs_perslid_nr,
fac_imp_csv_col06 prs_afdl_naam,
fac_imp_csv_col07 prs_functie,
fac_imp_csv_col08 prs_email,
fac_imp_csv_col09 prs_telefoon,
fac_imp_csv_col10 prs_loginnaam,
fac_imp_csv_col11 prs_kostenplaats_code,
fac_imp_csv_col12 prs_kostenplaats_omsc,
fac_imp_csv_col13 prs_cluster_code,
fac_imp_csv_col14 prs_cluster_naam,
fac_imp_csv_col15 prs_OE_code,
fac_imp_csv_col16 prs_OE_omsch
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_afdelingnaam VARCHAR2(20);
v_afd_count NUMBER;
v_srtperslid_omschrijving VARCHAR2(60);
v_cluster_code_key NUMBER;
v_cluster_omsch_key NUMBER;
v_OE_Code_key NUMBER;
v_OE_omsch_key NUMBER;
BEGIN
v_count:=0;
DELETE FROM fac_imp_perslid;
BEGIN
SELECT prs_kenmerk_key
INTO v_cluster_code_key
FROM prs_kenmerk
WHERE prs_kenmerk_code='CLUSTER_CODE'
AND prs_kenmerk_niveau='P'
AND prs_kenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_cluster_code_key:=NULL;
END;
BEGIN
SELECT prs_kenmerk_key
INTO v_cluster_omsch_key
FROM prs_kenmerk
WHERE prs_kenmerk_code='CLUSTER_OMSCH'
AND prs_kenmerk_niveau='P'
AND prs_kenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_cluster_omsch_key:=NULL;
END;
BEGIN
SELECT prs_kenmerk_key
INTO v_OE_Code_key
FROM prs_kenmerk
WHERE prs_kenmerk_code='OE_CODE'
AND prs_kenmerk_niveau='P'
AND prs_kenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_OE_code_key:=NULL;
END;
BEGIN
SELECT prs_kenmerk_key
INTO v_OE_Omsch_key
FROM prs_kenmerk
WHERE prs_kenmerk_code='OE_OMSCH'
AND prs_kenmerk_niveau='P'
AND prs_kenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_OE_Omsch_key:=NULL;
END;
FOR rec IN c1
LOOP
IF v_count>0 THEN
-- ALs een per op niveau 9 zit heeft de
-- controleren of de afdeling wel beschikbaar is anders onder Onbekend zetten
SELECT COUNT(*)
INTO v_afd_count
FROM prs_afdeling
WHERE UPPER(prs_afdeling_naam)=UPPER(rec.prs_afdl_naam)
AND prs_afdeling_verwijder IS NULL;
IF v_afd_count=0 THEN
v_afdelingnaam :='Onbekend';
ELSE
v_afdelingnaam := rec.prs_afdl_naam;
END IF;
IF rec.prs_functie IS NULL
THEN
v_srtperslid_omschrijving:='Onbekend';
ELSE
v_srtperslid_omschrijving:= rec.prs_functie;
END IF;
INSERT INTO fac_imp_perslid(fac_import_key,
prs_afdeling_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_naam,
prs_perslid_email,
prs_perslid_telefoonnr,
prs_srtperslid_omschrijving,
prs_perslid_oslogin,
prs_perslid_nr,
prs_kenmerk1,
prs_kenmerk2,
prs_kenmerk3,
prs_kenmerk4)
VALUES(p_import_key,
v_afdelingnaam,
rec.prs_voornaam,
rec.prs_voorletters,
rec.prs_tussenvoegsel,
rec.prs_achternaam,
rec.prs_email,
rec.prs_telefoon,
v_srtperslid_omschrijving,
rec.prs_email,
rec.prs_perslid_nr,
DECODE(v_cluster_code_key, NULL, rec.prs_cluster_code, TO_CHAR(v_cluster_code_key) || '=' || SUBSTR(rec.prs_cluster_code, 1, 3980)),
DECODE(v_cluster_omsch_key, NULL, rec.prs_cluster_naam, TO_CHAR(v_cluster_omsch_key) || '=' || SUBSTR(rec.prs_cluster_naam, 1, 3980)),
DECODE(v_OE_code_key, NULL, rec.prs_OE_code, TO_CHAR(v_OE_code_key) || '=' || SUBSTR(rec.prs_OE_code, 1, 3980)),
DECODE(v_OE_omsch_key, NULL, rec.prs_OE_omsch, TO_CHAR(v_OE_omsch_key) || '=' || SUBSTR(rec.prs_OE_omsch, 1, 3980))
);
END IF;
v_count:=v_count+1;
END LOOP;
DELETE FROM fac_imp_csv where fac_import_key=p_import_key;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
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_errormsg,
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE HERO_UPDATE_AFAS_PERSONEN(p_import_key IN NUMBER)
AS
CURSOR p_del
IS
SELECT p.prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND SUBSTR(p.prs_perslid_oslogin,0,1)<>'_'
AND p.prs_perslid_nr NOT IN (SELECT prs_perslid_nr
FROM fac_imp_perslid);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_date DATE;
v_defaultgroep NUMBER:=1;
v_count NUMBER;
v_aanwezig NUMBER;
BEGIN
-- Hebben we wel een gevuld bestand binnen gekregen
SELECT COUNT(*)
INTO v_count
FROM fac_imp_perslid;
SELECT COUNT(*)+1 -- Zodat v_aanwezig nooit 0 kan zijn, 1 extra is voor de gebruik niet erg
INTO v_aanwezig
FROM prs_perslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
IF (v_count/v_aanwezig) > 0.85 -- we gaan uit van minimaal 85% aanwezig in import file
THEN
v_errormsg := 'Fout bij update van personen.';
prs.update_perslid (p_import_key, 'NR', 'A', 1);
v_errormsg := 'Fout bij verwijderen van personen.';
FOR rec IN p_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
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_errormsg,
v_errorhint);
END;
/
--Eeinde Import Afas personen
-- EINDE IMPORT MJOB OPrognose Elementen
--- EINDE IMPORTS -------
@@ -1389,29 +1634,28 @@ CREATE OR REPLACE VIEW hero_v_personenlijst_loc
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email,
p.prs_perslid_verwijder
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 41 -- bedrijfs_key HERO
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_key IN (81) --- CLUSTERMANAGER (key 61)
AND p.prs_perslid_verwijder IS NULL
ORDER BY sp.prs_srtperslid_omschrijving, p.prs_perslid_voornaam, p.prs_perslid_naam
;
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email,
p.prs_perslid_verwijder
FROM prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 61 -- bedrijfs_key HERO
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_key= 41 --- CLUSTERMANAGER (key A=81, P=41)
AND p.prs_perslid_verwijder IS NULL
ORDER BY sp.prs_srtperslid_omschrijving,
p.prs_perslid_voornaam,
p.prs_perslid_naam;
-- Lijst van Regiomanagers (tbv domeinview)
CREATE OR REPLACE VIEW HERO_V_REGIOMANAGERS
@@ -1424,29 +1668,28 @@ CREATE OR REPLACE VIEW HERO_V_REGIOMANAGERS
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email,
p.prs_perslid_verwijder
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 41 -- bedrijfs_key HERO
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_key IN (83) --- REGIOMANAGER (key 63)
AND p.prs_perslid_verwijder IS NULL
ORDER BY sp.prs_srtperslid_omschrijving, p.prs_perslid_voornaam, p.prs_perslid_naam
;
p.prs_perslid_nr,
p.prs_perslid_email,
p.prs_perslid_verwijder
FROM prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 61 -- bedrijfs_key HERO
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_key = 161 --- REGIOMANAGER (A=key 63 P=161)
AND p.prs_perslid_verwijder IS NULL
ORDER BY sp.prs_srtperslid_omschrijving,
p.prs_perslid_voornaam,
p.prs_perslid_naam;
------ payload end ------