diff --git a/STAM/STAM.sql b/STAM/STAM.sql index da4608ed3..938cb7d05 100644 --- a/STAM/STAM.sql +++ b/STAM/STAM.sql @@ -264,6 +264,112 @@ BEGIN END; / +CREATE OR REPLACE PROCEDURE STAM_STARTWF_EMPLOYEE (p_import_key IN NUMBER) +AS + v_count NUMBER; + melder prs_perslid.prs_perslid_key%TYPE; + kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE; + newkey mld_melding.mld_melding_key%TYPE; + defaultstdmelding fac_setting.fac_setting_default%TYPE; + errormsg fac_result.fac_result_waarde%TYPE; + + + CURSOR c_new IS + SELECT i.*, + prs_perslid_naam + || DECODE (prs_perslid_voorletters, + NULL, '', + ', ' || prs_perslid_voorletters) + || DECODE (prs_perslid_tussenvoegsel, + NULL, '', + ' ' || prs_perslid_tussenvoegsel) + || DECODE (prs_perslid_voornaam, + NULL, '', + ' (' || prs_perslid_voornaam || ')') AS new_employee + FROM fac_imp_perslid i + WHERE NOT EXISTS + (SELECT * + FROM prs_perslid p + WHERE p.prs_perslid_nr = i.prs_perslid_nr); +BEGIN + --- De eerste melding van deze workflow is 'New employee' , key = 681 + defaultstdmelding := '681'; + + FOR rc IN c_new + LOOP + BEGIN + --- Stamicarbon kent een dummy gebruiker voor het aanvragen van een nieuwe medewerker + --- Van deze medewerker halen we ook even de kostenplaats op + SELECT p.prs_perslid_key, a.prs_kostenplaats_key + INTO melder, kostenplaats + FROM prs_perslid p, prs_afdeling a + WHERE p.prs_perslid_upper = '_NEW EMPLOYEE' + AND p.prs_afdeling_key = a.prs_afdeling_key; + + INSERT INTO mld_melding (mld_melding_module, + mld_meldbron_key, + mld_melding_datum, + mld_melding_onderwerp, + mld_melding_status, + mld_stdmelding_key, + prs_perslid_key, + prs_perslid_key_voor, + prs_kostenplaats_key, + mld_melding_spoed) + VALUES ('MLD', + 2, -- email + SYSDATE, + 'Nieuwe medewerker aangemeld vanuit AD', + 4, + defaultstdmelding, + melder, + melder, + kostenplaats, + 3) + RETURNING mld_melding_key + INTO newkey; + + -- Kenmerkvelden vullen + --- 1601 Name employee + stam_set_mldkenmerk (1601, newkey, rc.new_employee); + + -- 1602 Employee group ID (pers_nr) + stam_set_mldkenmerk (1602, newkey, rc.prs_perslid_nr); + + -- 1603 Position (functie) + stam_set_mldkenmerk (1603, + newkey, + rc.prs_srtperslid_omschrijving); + + -- 1604 Costcenter + stam_set_mldkenmerk (1604, newkey, rc.prs_afdeling_naam); + + + -- de startmelding krijgt status 5 en de volgende stap kan opgestart worden + -- mld.setmeldingstatus (newkey, 4 , melder); + mld.mld_nextworkflowstep (newkey, -1); -- 1=Completed + + + EXCEPTION + WHEN OTHERS + THEN + fac.writelog ( + 'PROCES NEW EMPLOYEE', + 'W', + 'Melding new employee kon niet aangemaakt worden: ' + || '[' + || errormsg + || ']', + 'OTHERS (error ' + || SQLCODE + || '/' + || SUBSTR (SQLERRM, 1, 100) + || ')'); + END; + END LOOP; +END STAM_STARTWF_EMPLOYEE; +/ + CREATE OR REPLACE PROCEDURE stam_import_perslid (p_import_key IN NUMBER) AS oracle_err_num NUMBER;