HMOD#88835 -- AFAS-koppeling versie 2 - Deze is voor uitrol productie inclusief proces van hr-mutaties

svn path=/Customer/trunk/; revision=69861
This commit is contained in:
Jos Migo
2025-07-28 13:50:14 +00:00
parent 36f006ee91
commit 1c8c8b398b

View File

@@ -226,12 +226,12 @@ BEGIN
-- Op zoek naar de Facilitor-rol voor deze medewerkers op basis van functie_code en functie_omschrijving
-- Onderhouden in eigentabellen functie_rol1 en functie_rol2 (key 901 en key 903)
SELECT MAX((SELECT rol.fac_usrdata_code FROM fac_usrdata rol WHERE rol.fac_usrdata_key = ud.fac_usrdata_parentkey AND rol.fac_usrtab_key = 921))
SELECT MAX((SELECT rol.fac_usrdata_code FROM fac_usrdata rol WHERE rol.fac_usrdata_key = ud.fac_usrdata_parentkey AND rol.fac_usrtab_key = 901))
facilitor_rol
INTO v_prs_perslid_rol_key
FROM fac_usrtab ut, fac_usrdata ud
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key
AND ut.fac_usrtab_key = 901
AND ut.fac_usrtab_key = 903
AND ud.fac_usrdata_verwijder IS NULL
AND UPPER(ud.fac_usrdata_code) = UPPER(rec.prs_kenmerk6) -- functiecode
AND UPPER(ud.fac_usrdata_omschr) = UPPER(rec.prs_kenmerk7) -- functieomschrijving
@@ -281,9 +281,14 @@ IS
-- Facilitor-rollen bepalen en op basis van deze rollen autorisaties uitreiken
--- Op basis functie/code zijn er 3 rollen te onderscheiden voor hmod in Facilitor: Teamleider locatie, Regiomanager, Manager algemeen
---
-- HR-mutaties in Facilitor
--- Bij mutaties in AFAS moeten in Facilitor voor desbetreffende persoon ook zaken geregeld worden. Hiervoor zetten we kenmerk/trigger 'mutatie-koffersysteem'
--- Bij mutaties in AFAS moeten in Facilitor voor desbetreffende persoon ook zaken geregeld worden. Hiervoor zetten we kenmerk/trigger 'mutatie-koffersysteem'
--- Betreft 2 wijzigingen: Nieuwe medewerker EN Gewijzigde formatieplaats op bestaande medewerker
----- Werkwijz: Via een aparte notificatiejob worden de personen geinformeerd om de juiste HR-mutatie/workflow op te staten
--- Voor de mutatie 'verwijderde medewerkers': <NOG INPASSEN / BESPREKEN MET FRANK/CLAUDIA>
----- Werkwijze: Daar voor elk medewerker een KOFFER-OBJECT koppelen zodat de medewerker bij verwijderactie uit AFAS-koppeling altijd op INACTIEF komt
v_count NUMBER;
oracle_err_num NUMBER;
@@ -299,6 +304,8 @@ IS
c_rol_key_teamleider NUMBER (10) := 1280;
c_rol_key_regiomanager NUMBER (10) := 1740;
c_rol_key_manager NUMBER (10) := 1320;
v_prs_mutatie_hr VARCHAR2 (1000);
v_import_datum VARCHAR2 (30) := TO_CHAR(SYSDATE) ;
CURSOR c_afd
IS
@@ -321,6 +328,24 @@ IS
AND UPPER (p.prs_perslid_email) LIKE '%HUMOD.NL'
ORDER BY 1 ;
-- HR-koffersysteem mutatie op functie en/of afdeling (= formatieplaats-wijziging)
CURSOR c_mut
IS
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving, a.prs_afdeling_omschrijving,
flx.getflex('PRS', 1606, p.prs_perslid_key, 'P')
formatieplaats_huidig,
i.prs_kenmerk8
formatieplaats_import
FROM prs_perslid p, fac_imp_perslid i, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b
WHERE p.prs_perslid_key = i.prs_perslid_key
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = c_prs_bedrijf_key_hmod
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_nr IS NOT NULL
AND UPPER (p.prs_perslid_email) LIKE '%HUMOD.NL'
ORDER BY 1 ;
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers in blok AFAS_ONLINE op personenkaart
IS
SELECT p.prs_perslid_key, i.prs_perslid_nr, i.prs_perslid_naam, i.prs_perslid_email,
@@ -394,26 +419,6 @@ IS
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 1 ;
-- HR-koffersysteem mutatie op functie en/of afdeling (=formatieplaats-wijziging) - NOG HELEMAAL GOED UITWERKEN!!!
CURSOR c_mut
IS
SELECT p.prs_perslid_key -- NOG UITWERKEN
FROM fac_imp_perslid i,
(SELECT p.prs_perslid_key,
p.prs_perslid_email,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.prs_perslid_key_verantw,
(SELECT kw.prs_kenmerklink_waarde
FROM prs_kenmerklink kw
WHERE kw.prs_kenmerk_key = 1082
AND kw.prs_kenmerklink_niveau = 'P'
AND kw.prs_link_key = p.prs_perslid_key)
prs_perslid_verantw_nr_afas
FROM prs_perslid p) p
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 1 ;
BEGIN
v_errormsg := 'Update afasonline';
@@ -470,6 +475,45 @@ BEGIN
END;
END LOOP;
FOR rec IN c_mut
LOOP
BEGIN
v_errorhint := 'Trigger HR-mutatie zetten - formatieplaats gewijzigd';
v_prs_mutatie_hr := '' ;
-- Bestaande medewerker met wijzigende formatieplaats
IF rec.formatieplaats_huidig IS NOT NULL AND rec.formatieplaats_huidig <> rec.formatieplaats_import
THEN
v_prs_mutatie_hr := 'Formatieplaats gewijzigd van ' || rec.formatieplaats_huidig || ' naar ' || rec.formatieplaats_import || ' (datum afasimport ' || v_import_datum || ')' ;
-- kenmerk aanpassen
PRS.upsertkenmerk (1760, rec.prs_perslid_key, v_prs_mutatie_hr);
-- fac_tracking op personenkaart
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'MDW_FORMATIEPLAATS_GEWIJZIGD'); END;
END IF;
-- Nieuwe medewerker met wijzigende formatieplaats
IF rec.formatieplaats_huidig IS NULL
THEN
v_prs_mutatie_hr := 'Nieuwe medewerker met formatieplaats ' || rec.formatieplaats_import || ' (datum afasimport ' || v_import_datum || ')' ;
-- kenmerk aanpassen
PRS.upsertkenmerk (1760, rec.prs_perslid_key, v_prs_mutatie_hr);
-- fac_tracking op personenkaart
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'MDW_NIEUW'); END;
END IF;
END;
END LOOP;
-- Op de personenkaart de actuele humod-mederwerkers de afas-velden uit de koppeling vullen - ter informatie
FOR rec IN c_flex
@@ -2485,6 +2529,56 @@ AS
WHERE c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'CNT' ;
-- Als vanuit AFAS-koppeling een nieuwe medewerker binnenkomt of een bestaande medewerker een formatieplaats-wijziging heeft, dan moet er in Facilitor een HR-mutatieproces opgestart worden
CREATE OR REPLACE VIEW hmod_v_noti_afas_hrtrigger
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'PRSUPD',
NULL,
g.prs_perslid_key,
'HR_MUTATIE: ' || v.prs_perslid_email || ' - ' || v.afas_hr_mutatie
text,
v.prs_perslid_key,
NULL,
NULL,
NULL
FROM (SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr,
flx.getflex('PRS', 1760, p.prs_perslid_key, 'P') afas_hr_mutatie
FROM prs_perslid p ) v,
(SELECT ft.fac_tracking_refkey, ft.fac_tracking_oms, MAX(ft.fac_tracking_datum) datum_mutatie
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'PRSUPD'
AND (
ft.fac_tracking_oms = 'MDW_FORMATIEPLAATS_GEWIJZIGD'
OR
ft.fac_tracking_oms = 'MDW_NIEUW'
)
GROUP BY ft.fac_tracking_refkey, ft.fac_tracking_oms
) ft,
(SELECT gg.prs_perslid_key
FROM fac_groep g, fac_gebruikersgroep gg
WHERE g.fac_groep_key = gg.fac_groep_key
AND g.fac_groep_key = 541 -- AUTORISATIEGROEP HR_MUTATIE
AND gg.fac_gebruikersgroep_vervaldatum IS NULL
) g,
(SELECT COALESCE(fac_notificatie_job_lastrun, trunc(sysdate-1)) datum_last_run
FROM fac_notificatie_job
WHERE LOWER(fac_notificatie_job_view) ='hmod_v_noti_afas_hrtrigger') n
WHERE v.prs_perslid_key = ft.fac_tracking_refkey
AND ft.datum_mutatie >= n.datum_last_run
;
---------------------
-- RAPPORTVIEWS -----
---------------------