diff --git a/DIAN/dian.sql b/DIAN/dian.sql index 4a007a0ce..726d51ecb 100644 --- a/DIAN/dian.sql +++ b/DIAN/dian.sql @@ -687,6 +687,26 @@ AS WHERE prs_perslid_oslogin = p.prs_perslid_oslogin) ORDER BY 1; + -- TODO:Schonen catalogi van verwijderde cliënten waaruit >6 maanden niet + -- meer is besteld! + CURSOR c_catdel + IS + SELECT bd.ins_discipline_key + FROM bes_discipline bd + WHERE NOT EXISTS -- Geen aanwezige persoon meer met login volgens discipline! + (SELECT 1 + FROM prs_v_aanwezigperslid + WHERE prs_perslid_oslogin = SUBSTR (bd.ins_discipline_omschrijving, INSTR (bd.ins_discipline_omschrijving, '/') + 1)) + AND NOT EXISTS -- Laatste bestelling >6 maanden geleden! + (SELECT 1 + FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg + WHERE b.bes_bestelling_datum > TRUNC (ADD_MONTHS (SYSDATE, -6), 'mm') + AND b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_srtdeel_key = sd.bes_srtdeel_key + AND sd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key = bd.ins_discipline_key) + ORDER BY 1; + -- Aanmaken BES-catalogi en fac_imp_catalogus-tabel verrijken/aanvullen met -- ins_discipline_key (per cliënt) en prs_bedrijf_key (Exact). CURSOR c_besins @@ -846,8 +866,9 @@ BEGIN WHERE INSTR (fac_groep_upper, p.prs_perslid_oslogin || '/') > 0); COMMIT; - -- Elke 'Cliënt'-groep inkleuren met BESUSE-rechten op "eigen" catalogus en - -- de 'CliëntBeheer'-groep BESFOF/BESBOF/BESBOR-rechten op alle catalogi! + -- Elke 'Cliënt'-groep BESUSE-rechten toekennen op "eigen" catalogus en + -- 'CliëntBeheer'-groep BESFOF/BESBOF/BESBOR-rechten toekennen op catalogi + -- van actieve cliënten. v_errormsg := 'Fout inkleuren Cliënt-groepen'; INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, @@ -902,6 +923,27 @@ BEGIN AND ins_discipline_key = td.ins_discipline_key); COMMIT; + -- DIAN#77719: 'CliëntBeheer'-groep BESFOF/BESBOF/BESBOR-rechten afpakken + -- op catalogi van verwijderde cliënten waaruit >6 maanden niet + -- meer is besteld! + -- TODO:Betreffende catalogi helemaal verwijderen (ipv. rechten)? + v_errormsg := 'Fout schonen CliëntBeheer-groep'; + DELETE FROM fac_groeprechten gr + WHERE gr.fac_groep_key = c_clientbeheer_gkey + AND NOT EXISTS -- Geen aanwezige persoon meer met login volgens discipline! + (SELECT 1 + FROM bes_discipline bd, prs_v_aanwezigperslid p + WHERE SUBSTR (bd.ins_discipline_omschrijving, INSTR (bd.ins_discipline_omschrijving, '/') + 1) = p.prs_perslid_oslogin + AND bd.ins_discipline_key = gr.ins_discipline_key) + AND NOT EXISTS -- Laatste bestelling >6 maanden geleden! + (SELECT 1 + FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg + WHERE b.bes_bestelling_datum > TRUNC (ADD_MONTHS (SYSDATE, -6), 'mm') + AND b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_srtdeel_key = sd.bes_srtdeel_key + AND sd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key = gr.ins_discipline_key); + -- Nieuwe/bestaande cliënten de *eigen* 'Cliënt'-groep toekennen (zover nog -- niet toegekend)! v_errormsg := 'Fout toekennen Cliënt-groepen'; @@ -918,7 +960,6 @@ BEGIN FROM fac_gebruikersgroep WHERE prs_perslid_key = p.prs_perslid_key AND fac_groep_key = g.fac_groep_key); - COMMIT; EXCEPTION WHEN OTHERS THEN