diff --git a/APGR/apgr.sql b/APGR/apgr.sql index 02bf52248..53b2070ab 100644 --- a/APGR/apgr.sql +++ b/APGR/apgr.sql @@ -278,25 +278,33 @@ BEGIN -- plaats personen in de juiste autorisatie groepen FOR rec IN c_auth_personeel LOOP + BEGIN + -- Nog geen bestaand persoon? Dan record toevoegen + IF rec.aantal = 0 + THEN + INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key) + VALUES (rec.prs_perslid_key, 23); + END IF; -BEGIN - -- Nog geen bestaand persoon? Dan record toevoegen - IF rec.aantal = 0 - THEN - INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key) - VALUES (rec.prs_perslid_key, 23); - END IF; - - -- Deze personen niet in de default groep - DELETE FAC_GEBRUIKERSGROEP - WHERE prs_perslid_key = rec.prs_perslid_key - AND fac_groep_key = 1; - - -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze vervangen door de AD import - UPDATE FAC_GEBRUIKERSGROEP - SET fac_groep_key = 23 - WHERE prs_perslid_key = rec.prs_perslid_key - AND rec.aantal = 1; + -- Al wel in een groep, dan reduceren naar 1 en de laatste omhangen naar Personeel + IF rec.aantal > 1 + THEN + DELETE FAC_GEBRUIKERSGROEP + WHERE prs_perslid_key = rec.prs_perslid_key + AND fac_gebruikersgroep_key < + (SELECT MAX (fac_gebruikersgroep_key) + FROM fac_gebruikersgroep + WHERE prs_perslid_key = rec.prs_perslid_key); + + UPDATE FAC_GEBRUIKERSGROEP + SET fac_groep_key = 23 + WHERE prs_perslid_key = rec.prs_perslid_key; + END IF; + + -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze omgehangen naar Personeel + UPDATE FAC_GEBRUIKERSGROEP + SET fac_groep_key = 23 + WHERE prs_perslid_key = rec.prs_perslid_key AND rec.aantal = 1; END; END LOOP;