From 424f20efaff56ec79288a253ebe6c2e97ed68064 Mon Sep 17 00:00:00 2001 From: Jos Migo Date: Thu, 30 Jan 2020 14:53:50 +0000 Subject: [PATCH] HMOD#58494 -- Implementatie Humanitas Onder Dak - cust sql import prs svn path=/Customer/trunk/; revision=45633 --- HMOD/hmod.sql | 70 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/HMOD/hmod.sql b/HMOD/hmod.sql index 07fc16b9f..ff1621516 100644 --- a/HMOD/hmod.sql +++ b/HMOD/hmod.sql @@ -823,13 +823,18 @@ AS v_count_fout NUMBER; v_count_nieuw NUMBER; v_count_verwijder NUMBER; + v_count_codeverschilt NUMBER; CURSOR c -- Alle medewerkers HUMANITAS die in aangeleverde ADP-personen-bestand zitten IS SELECT prs_perslid_key, prs_perslid_nr, + prs_perslid_voornaam, + prs_perslid_oslogin, prs_status, formatieplaats_huidig, + formatieplaats_csv, + lettercode, token, mob, hit, @@ -855,11 +860,11 @@ BEGIN -- Standaard Import. De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE. prs.import_perslid ( 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', - 'Locatiecode;Afdelingscode;Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Geslacht;Email;Functie;Personeelsnummer;Loginnaam;Meisjesnaam;Brief aanhef;Formatieplaats;Basiskoffer;Functieomschrijving%'); + '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', + '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' ------ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +-- 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 COMMIT; @@ -888,13 +893,29 @@ BEGIN prs_kenmerk20 = rec.proactive -- Proactive WHERE p.prs_perslid_nr = rec.prs_perslid_nr; END IF; + -- 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.. ---- Omdat er voor koffersysteem al 20 kenmerken gevuld worden, moet ik hier ander veld voor (mis)bruiken. 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..) 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 LOOP; @@ -906,6 +927,7 @@ BEGIN v_count_fout := 0; v_count_nieuw := 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.. 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_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_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ; IF v_count_leeg > 0 THEN fac.imp_writelog ( @@ -926,6 +949,12 @@ BEGIN 'ACTIE: ' || v_aanduiding); 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 fac.imp_writelog ( p_import_key, 'W', 'Aantal te verwijderen personen is: '|| v_count_verwijder, @@ -965,11 +994,6 @@ UPDATE fac_imp_perslid UPDATE fac_imp_perslid 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 WHEN OTHERS THEN @@ -986,7 +1010,7 @@ IS CURSOR c_flex -- Alle records pakken. O.a. voor updaten van de algemene flex-kenmerkvelden 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 WHERE p.prs_perslid_nr = i.prs_perslid_nr ORDER BY 2; @@ -994,7 +1018,7 @@ IS CURSOR c_flex_koffer -- De flexkenmerken koffersysteem - alleen updaten voor die gevuld zijn 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 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; @@ -1024,6 +1048,7 @@ IS v_count_fout NUMBER; v_count_nieuw NUMBER; v_count_verwijder NUMBER; + v_count_codeverschilt NUMBER; BEGIN -- 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_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_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ; IF v_count < 10 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; END IF; IF v_count_fout > 3 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; END IF; IF v_count_nieuw > 10 -- Bijvoorbeeld als alle personeelsnr's in csv zonder vooloopnull zijn... (NOG CHECKEN in KPN) 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; END IF; IF v_count_leeg > 0 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; 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 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 v_errorhint:='Fout bijwerken 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 DELETE FROM prs_kenmerklink @@ -1139,6 +1167,8 @@ BEGIN PRS.upsertkenmerk (1079, rec.prs_perslid_key, rec.prs_kenmerk19); -- HodNet 19, 1079 v_errorhint:='Fout bijwerken Proactive'; 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 LOOP;