HMOD#58494 -- Implementatie Humanitas Onder Dak - cust sql import prs

svn path=/Customer/trunk/; revision=45633
This commit is contained in:
Jos Migo
2020-01-30 14:53:50 +00:00
parent dc98d196bc
commit 424f20efaf

View File

@@ -823,13 +823,18 @@ AS
v_count_fout NUMBER; v_count_fout NUMBER;
v_count_nieuw NUMBER; v_count_nieuw NUMBER;
v_count_verwijder NUMBER; v_count_verwijder NUMBER;
v_count_codeverschilt NUMBER;
CURSOR c -- Alle medewerkers HUMANITAS die in aangeleverde ADP-personen-bestand zitten CURSOR c -- Alle medewerkers HUMANITAS die in aangeleverde ADP-personen-bestand zitten
IS IS
SELECT prs_perslid_key, SELECT prs_perslid_key,
prs_perslid_nr, prs_perslid_nr,
prs_perslid_voornaam,
prs_perslid_oslogin,
prs_status, prs_status,
formatieplaats_huidig, formatieplaats_huidig,
formatieplaats_csv,
lettercode,
token, token,
mob, mob,
hit, hit,
@@ -855,11 +860,11 @@ BEGIN
-- Standaard Import. De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE. -- Standaard Import. De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
prs.import_perslid ( prs.import_perslid (
p_import_key, p_import_key,
'1;0;0;0;0;0;2;3;4;6;5;0;0;0;0;0;0;8;0;10;9;11;0;7;0;0;12;13;14;15;16;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0', '0;0;0;0;0;0;1;2;0;3;0;0;0;0;0;0;0;5;0;7;6;0;0;4;0;0;8;9;10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0',
'Locatiecode;Afdelingscode;Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Geslacht;Email;Functie;Personeelsnummer;Loginnaam;Meisjesnaam;Brief aanhef;Formatieplaats;Basiskoffer;Functieomschrijving%'); 'Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code%');
-- DEF: 'Locatiecode;Afdelingscode;Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Geslacht;Email;Functie;Personeelsnummer;Loginnaam;Meisjesnaam;Brief aanhef;Formatieplaats;Basiskoffer;Functieomschrijving' -- DEF2: Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code'
----- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ----- 1 2 3 4 5 6 7 8 9 10
COMMIT; COMMIT;
@@ -888,13 +893,29 @@ BEGIN
prs_kenmerk20 = rec.proactive -- Proactive prs_kenmerk20 = rec.proactive -- Proactive
WHERE p.prs_perslid_nr = rec.prs_perslid_nr; WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
END IF; END IF;
-- De prs_status (= status voor deze import) ook wegschrijven in fac_imp_perslid. -- De prs_status (= status voor deze import) ook wegschrijven in fac_imp_perslid.
---- Om updateprocedure mee te sturen... + om rapport import prs goed mee te vullen.. ---- Om updateprocedure mee te sturen... + om rapport import prs goed mee te vullen..
---- Omdat er voor koffersysteem al 20 kenmerken gevuld worden, moet ik hier ander veld voor (mis)bruiken. ---- Omdat er voor koffersysteem al 20 kenmerken gevuld worden, moet ik hier ander veld voor (mis)bruiken.
UPDATE fac_imp_perslid p UPDATE fac_imp_perslid p
SET prs_perslid_partner_naam = rec.prs_status -- Partner_naam voor misbruiken. Wordt in standaard update niet gebruikt (omdat PRS_PERSLID_NAAMGEBRUIK_CODE op 0 meegaat..) SET prs_perslid_partner_naam = rec.prs_status -- Partner_naam voor misbruiken. Wordt in standaard update niet gebruikt (omdat PRS_PERSLID_NAAMGEBRUIK_CODE op 0 meegaat..)
WHERE p.prs_perslid_nr = rec.prs_perslid_nr; WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
-- Voorletter vullen vanuit Roepnaam
UPDATE fac_imp_perslid p
SET prs_perslid_voorletters = substr(rec.prs_perslid_voornaam,1,1)
WHERE p.prs_perslid_nr = rec.prs_perslid_nr and rec.prs_perslid_voornaam is not null;
-- Basiskoffer - Lettercode vullen -
UPDATE fac_imp_perslid p
SET prs_kenmerk4 = rec.lettercode
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
-- Loginnaam vullen vanuit huidige personenkaart
UPDATE fac_imp_perslid p
SET prs_perslid_oslogin = rec.prs_perslid_oslogin
WHERE p.prs_perslid_nr = rec.prs_perslid_nr ;
END; END;
END LOOP; END LOOP;
@@ -906,6 +927,7 @@ BEGIN
v_count_fout := 0; v_count_fout := 0;
v_count_nieuw := 0; v_count_nieuw := 0;
v_count_verwijder :=0; v_count_verwijder :=0;
v_count_codeverschilt := 0;
-- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen.. -- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen..
SELECT count (*) INTO v_count FROM hmod_v_prsimport; SELECT count (*) INTO v_count FROM hmod_v_prsimport;
@@ -913,6 +935,7 @@ BEGIN
SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ; SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ;
SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ; SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ;
SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ; SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ;
SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ;
IF v_count_leeg > 0 THEN IF v_count_leeg > 0 THEN
fac.imp_writelog ( fac.imp_writelog (
@@ -926,6 +949,12 @@ BEGIN
'ACTIE: ' || v_aanduiding); 'ACTIE: ' || v_aanduiding);
END IF; END IF;
IF v_count_codeverschilt > 0 THEN
fac.imp_writelog (
p_import_key, 'W', 'Aantal personen die op BASIS staan, hebben in csv andere formatieplaats dan nu in Facilitor: ' || v_count_codeverschilt,
'ACTIE: ' || v_aanduiding);
END IF;
IF v_count_verwijder > 0 THEN IF v_count_verwijder > 0 THEN
fac.imp_writelog ( fac.imp_writelog (
p_import_key, 'W', 'Aantal te verwijderen personen is: '|| v_count_verwijder, p_import_key, 'W', 'Aantal te verwijderen personen is: '|| v_count_verwijder,
@@ -965,11 +994,6 @@ UPDATE fac_imp_perslid
UPDATE fac_imp_perslid UPDATE fac_imp_perslid
SET prs_perslid_titel = '' ; SET prs_perslid_titel = '' ;
-- Nog aanvullen gebouw-string... = standard format die dus zo gehandhaafd moet worden = G, 0 '_'
UPDATE fac_imp_perslid
SET alg_gebouw_code = 'G', alg_verdieping_volgnr = '0', alg_ruimte_nr = '_'
WHERE alg_locatie_code is not null ;
EXCEPTION EXCEPTION
WHEN OTHERS WHEN OTHERS
THEN THEN
@@ -986,7 +1010,7 @@ IS
CURSOR c_flex -- Alle records pakken. O.a. voor updaten van de algemene flex-kenmerkvelden CURSOR c_flex -- Alle records pakken. O.a. voor updaten van de algemene flex-kenmerkvelden
IS IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam,i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3,i.prs_kenmerk4,i.prs_kenmerk5 SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam,i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3
FROM prs_v_aanwezigperslid p, fac_imp_perslid i FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_nr = i.prs_perslid_nr WHERE p.prs_perslid_nr = i.prs_perslid_nr
ORDER BY 2; ORDER BY 2;
@@ -994,7 +1018,7 @@ IS
CURSOR c_flex_koffer -- De flexkenmerken koffersysteem - alleen updaten voor die gevuld zijn CURSOR c_flex_koffer -- De flexkenmerken koffersysteem - alleen updaten voor die gevuld zijn
IS IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam, i.prs_kenmerk6,i.prs_kenmerk7,i.prs_kenmerk8,i.prs_kenmerk9,i.prs_kenmerk10,i.prs_kenmerk11,i.prs_kenmerk12,i.prs_kenmerk13,i.prs_kenmerk14,i.prs_kenmerk15,i.prs_kenmerk16,i.prs_kenmerk17,i.prs_kenmerk18,i.prs_kenmerk19,i.prs_kenmerk20 SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam, i.prs_kenmerk4, i.prs_kenmerk6,i.prs_kenmerk7,i.prs_kenmerk8,i.prs_kenmerk9,i.prs_kenmerk10,i.prs_kenmerk11,i.prs_kenmerk12,i.prs_kenmerk13,i.prs_kenmerk14,i.prs_kenmerk15,i.prs_kenmerk16,i.prs_kenmerk17,i.prs_kenmerk18,i.prs_kenmerk19,i.prs_kenmerk20
FROM prs_v_aanwezigperslid p, fac_imp_perslid i FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_nr = i.prs_perslid_nr AND (i.prs_perslid_partner_naam = 'Basis' or i.prs_perslid_partner_naam = 'Nieuw') WHERE p.prs_perslid_nr = i.prs_perslid_nr AND (i.prs_perslid_partner_naam = 'Basis' or i.prs_perslid_partner_naam = 'Nieuw')
ORDER BY 2; ORDER BY 2;
@@ -1024,6 +1048,7 @@ IS
v_count_fout NUMBER; v_count_fout NUMBER;
v_count_nieuw NUMBER; v_count_nieuw NUMBER;
v_count_verwijder NUMBER; v_count_verwijder NUMBER;
v_count_codeverschilt NUMBER;
BEGIN BEGIN
-- Generieke update. -- Generieke update.
@@ -1036,31 +1061,38 @@ BEGIN
SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ; SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ;
SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ; SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ;
SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ; SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ;
SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ;
IF v_count < 10 IF v_count < 10
THEN THEN
fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', v_aanduiding); fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein: ' || TO_CHAR (v_count), v_aanduiding);
RETURN; RETURN;
END IF; END IF;
IF v_count_fout > 3 IF v_count_fout > 3
THEN THEN
fac.imp_writelog (p_import_key, 'E', 'Er zitten in import medewerkers met prs_status FOUT (' || TO_CHAR (v_count_fout) || ')', v_aanduiding); fac.imp_writelog (p_import_key, 'E', 'Er zitten in import teveel medewerkers met prs_status FOUT: ' || TO_CHAR (v_count_fout), v_aanduiding);
RETURN; RETURN;
END IF; END IF;
IF v_count_nieuw > 10 -- Bijvoorbeeld als alle personeelsnr's in csv zonder vooloopnull zijn... (NOG CHECKEN in KPN) IF v_count_nieuw > 10 -- Bijvoorbeeld als alle personeelsnr's in csv zonder vooloopnull zijn... (NOG CHECKEN in KPN)
THEN THEN
fac.imp_writelog (p_import_key, 'E', 'Er zijn teveel NIEUWE medewerkers in import, kan niet kloppen (' || TO_CHAR (v_count_nieuw) || ')', v_aanduiding); fac.imp_writelog (p_import_key, 'E', 'Er zijn teveel NIEUWE medewerkers in import, kan niet kloppen: ' || TO_CHAR (v_count_nieuw), v_aanduiding);
RETURN; RETURN;
END IF; END IF;
IF v_count_leeg > 0 IF v_count_leeg > 0
THEN THEN
fac.imp_writelog (p_import_key, 'E', 'Er zitten in import medewerkers ZONDER prs_status (' || TO_CHAR (v_count_leeg) || ')', v_aanduiding); fac.imp_writelog (p_import_key, 'E', 'Er zitten in import medewerkers ZONDER prs_status: ' || TO_CHAR (v_count_leeg), v_aanduiding);
RETURN; RETURN;
END IF; END IF;
IF v_count_codeverschilt > 10 THEN -- Zou 0 moeten zijn straks in praktijk!!!!!
fac.imp_writelog (p_import_key, 'E', 'Er zijn (teveel) personen die op BASIS staan, maar in csv andere formatieplaats hebben dan nu in Facilitor: ' || TO_CHAR (v_count_codeverschilt), v_aanduiding);
RETURN;
END IF;
-- Generieke update. NR - key personeelsnr - NULL is geen werkplekken verwijderd -- Generieke update. NR - key personeelsnr - NULL is geen werkplekken verwijderd
prs.update_perslid (p_import_key, 'NR', 'NULL'); prs.update_perslid (p_import_key, 'NR', 'NULL');
@@ -1076,10 +1108,6 @@ BEGIN
PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk2); -- Brief aanhef PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk2); -- Brief aanhef
v_errorhint:='Fout bijwerken formatieplaats'; v_errorhint:='Fout bijwerken formatieplaats';
PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk3); -- Formatieplaats PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk3); -- Formatieplaats
v_errorhint:='Fout bijwerken Basiskoffer';
PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk4); -- Basiskoffer
v_errorhint:='Fout bijwerken Functieomschrijving';
PRS.upsertkenmerk (1040, rec.prs_perslid_key, rec.prs_kenmerk5); -- Functieomschrijving
-- Nog paar kenmerkvelden bijwerken -- Nog paar kenmerkvelden bijwerken
DELETE FROM prs_kenmerklink DELETE FROM prs_kenmerklink
@@ -1139,6 +1167,8 @@ BEGIN
PRS.upsertkenmerk (1079, rec.prs_perslid_key, rec.prs_kenmerk19); -- HodNet 19, 1079 PRS.upsertkenmerk (1079, rec.prs_perslid_key, rec.prs_kenmerk19); -- HodNet 19, 1079
v_errorhint:='Fout bijwerken Proactive'; v_errorhint:='Fout bijwerken Proactive';
PRS.upsertkenmerk (1080, rec.prs_perslid_key, rec.prs_kenmerk20); -- Proactive 20, 1080 PRS.upsertkenmerk (1080, rec.prs_perslid_key, rec.prs_kenmerk20); -- Proactive 20, 1080
v_errorhint:='Fout bijwerken Basiskoffer';
PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk4); -- Basiskoffer
END; END;
END LOOP; END LOOP;