From c1a652d8dcd82d2c7d8cf388ba9e319d614233ee Mon Sep 17 00:00:00 2001 From: Koen Reefman Date: Fri, 5 Jul 2024 15:30:24 +0000 Subject: [PATCH] FCLT#82594 Punten 6, 7 & 9 svn path=/Website/branches/v2024.2/; revision=65447 --- APPL/MLD/mld.inc | 111 ++++++++++++++++++---------------- APPL/MLD/mld_melding.asp | 2 +- APPL/MLD/mld_show_melding.asp | 6 +- 3 files changed, 63 insertions(+), 56 deletions(-) diff --git a/APPL/MLD/mld.inc b/APPL/MLD/mld.inc index 11c08c69cf..b5514305b9 100644 --- a/APPL/MLD/mld.inc +++ b/APPL/MLD/mld.inc @@ -4906,58 +4906,62 @@ mld = { oRs = Oracle.Execute(sql); while (!oRs.eof && !foundUser) { - if (oRs("prs_perslid_key").Value > 0) // Tertiar Behandelaar. + if (oRs("prs_perslid_key").Value > 0) { // Tertiar Behandelaar. foundUser = (oRs("prs_perslid_key").Value == user_key); - else - { // Zit de user in het behandelteam. - // Vergelijkbare code in de functie getFiltClausePersoon(filtcode, params) in bestand persoonFilter.inc. Maar dit bestand willen we hier niet includen. - var disc_key = oRs("ins_discipline_key").Value || -1; // Tertiar Behandelteam. - var afd_key = new Perslid(params.melder_key).prs_afdeling_key(); // Afdeling van de melder! - // Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega - var autfunction = params.mld_status == 0? "WEB_MLDFOF" : "WEB_MLDBOF"; - var filtClause = " AND p.prs_perslid_key IN" - + " (SELECT prs_perslid_key" - + " FROM fac_v_webgebruiker g" - + " WHERE g.fac_functie_key = " + F(autfunction) - + " AND g.ins_discipline_key = " + disc_key - + " AND (g.fac_gebruiker_prs_level_write = -1" - + " OR (g.fac_gebruiker_prs_level_write = 0" - + " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key" - + " FROM prs_v_afdeling aa" - + " WHERE aa.prs_afdeling_key = " + afd_key + "))" - + " OR (g.fac_gebruiker_prs_level_write > 0" - + " AND p.prs_afdeling_key IN " - + " (SELECT prs_afdeling_key FROM prs_v_afdeling_familie a" - + " WHERE a.prs_afdeling_elder_key IN" - + " (SELECT aa.prs_afdeling_elder_key" - + " FROM prs_v_afdeling_familie aa" - + " WHERE aa.prs_afdeling_key = " + afd_key - + " AND aa.niveau = g.fac_gebruiker_prs_level_write))" - + " )" - + " )"; - if (params.loc_key > 0) - filtClause += " AND (g.fac_gebruiker_alg_level_write = -1" - + " OR (g.fac_gebruiker_alg_level_write < 9" - + " AND " + params.loc_key + " IN " - + " (SELECT alg_locatie_key FROM fac_v_my_locations " - + " WHERE prs_perslid_key = p.prs_perslid_key" - + " AND niveau = fac_gebruiker_alg_level_write)" - + " ))"; - filtClause +=") "; - - sql = "SELECT p.prs_perslid_key" - + " FROM prs_perslid p" // Geen prs_v_aanwezigperslid: afhankelijk van filtcode wordt " AND prs_perslid_verwijder IS NULL" toegevoegd - + " , prs_v_afdeling d " - + " WHERE p.prs_afdeling_key = d.prs_afdeling_key" - + " " + filtClause - // faalt bij NULL values: " AND p.prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\' " - + " AND (prs_perslid_oslogin IS NULL OR prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\')" - + " AND BITAND(prs_perslid_flags, 2) = 0" - + " AND p.prs_perslid_key = " + user_key; - oRs2 = Oracle.Execute(sql); - foundUser = foundUser || !oRs2.eof; - oRs2.close(); + if (foundUser) { + break; + } } + + // Zit de user in het behandelteam. + // Vergelijkbare code in de functie getFiltClausePersoon(filtcode, params) in bestand persoonFilter.inc. Maar dit bestand willen we hier niet includen. + var disc_key = oRs("ins_discipline_key").Value || -1; // Tertiar Behandelteam. + var afd_key = new Perslid(params.melder_key).prs_afdeling_key(); // Afdeling van de melder! + // Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega + var autfunction = params.mld_status == 0? "WEB_MLDFOF" : "WEB_MLDBOF"; + var filtClause = " AND p.prs_perslid_key IN" + + " (SELECT prs_perslid_key" + + " FROM fac_v_webgebruiker g" + + " WHERE g.fac_functie_key = " + F(autfunction) + + " AND g.ins_discipline_key = " + disc_key + + " AND (g.fac_gebruiker_prs_level_write = -1" + + " OR (g.fac_gebruiker_prs_level_write = 0" + + " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key" + + " FROM prs_v_afdeling aa" + + " WHERE aa.prs_afdeling_key = " + afd_key + "))" + + " OR (g.fac_gebruiker_prs_level_write > 0" + + " AND p.prs_afdeling_key IN " + + " (SELECT prs_afdeling_key FROM prs_v_afdeling_familie a" + + " WHERE a.prs_afdeling_elder_key IN" + + " (SELECT aa.prs_afdeling_elder_key" + + " FROM prs_v_afdeling_familie aa" + + " WHERE aa.prs_afdeling_key = " + afd_key + + " AND aa.niveau = g.fac_gebruiker_prs_level_write))" + + " )" + + " )"; + if (params.loc_key > 0) + filtClause += " AND (g.fac_gebruiker_alg_level_write = -1" + + " OR (g.fac_gebruiker_alg_level_write < 9" + + " AND " + params.loc_key + " IN " + + " (SELECT alg_locatie_key FROM fac_v_my_locations " + + " WHERE prs_perslid_key = p.prs_perslid_key" + + " AND niveau = fac_gebruiker_alg_level_write)" + + " ))"; + filtClause +=") "; + + sql = "SELECT p.prs_perslid_key" + + " FROM prs_perslid p" // Geen prs_v_aanwezigperslid: afhankelijk van filtcode wordt " AND prs_perslid_verwijder IS NULL" toegevoegd + + " , prs_v_afdeling d " + + " WHERE p.prs_afdeling_key = d.prs_afdeling_key" + + " " + filtClause + // faalt bij NULL values: " AND p.prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\' " + + " AND (prs_perslid_oslogin IS NULL OR prs_perslid_oslogin NOT LIKE '\\_%' ESCAPE '\\')" + + " AND BITAND(prs_perslid_flags, 2) = 0" + + " AND p.prs_perslid_key = " + user_key; + oRs2 = Oracle.Execute(sql); + foundUser = foundUser || !oRs2.eof; + oRs2.close(); + oRs.MoveNext(); } oRs.close(); @@ -5404,7 +5408,7 @@ mld = { // FO kan alleen omschrijving aanpassen mresult.canChange = ((mresult.canWrite("WEB_MLDBOF") && !activeMLDBO3) || mresult.canWrite("WEB_MLDFOF")); mresult.canChangeKenmerkBlok = userIsBlokbehandelaar; - mresult.canChangeUrole = mresult.canWrite("WEB_MLDBOF") || userIsBlokbehandelaar ? 'bo' : 'fo'; + mresult.canChangeUrole = mresult.canWrite("WEB_MLDBOF") ? 'bo' : 'fo'; mresult.canAccept = ((mresult.canWrite("WEB_MLDBOF") && !activeMLDBO3) || mresult.canWrite("WEB_MLDBO3")) && !is_planned_action; mresult.canVakgAccept = ((mresult_vakg.canWrite("WEB_MLDBOF") && !activeMLDBO3) || mresult_vakg.canWrite("WEB_MLDBO3")) && !is_planned_action; mresult.canReject = ((mresult.canWrite("WEB_MLDBOF") && !activeMLDBO3) || mresult.canWrite("WEB_MLDBO3")) && @@ -5456,7 +5460,7 @@ mld = { mresult.canPersChange = mresult.canWrite("WEB_MLDFOF"); mresult.canChange = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDFOF")); mresult.canChangeKenmerkBlok = userIsBlokbehandelaar; - mresult.canChangeUrole = mresult.canWrite("WEB_MLDBOF") || userIsBlokbehandelaar ? 'bo' : 'fo'; + mresult.canChangeUrole = mresult.canWrite("WEB_MLDBOF") ? 'bo' : 'fo'; mresult.canForward = (!is_wf && (S("mld_forward_if_active") == 1 || (keten && !hasopdrachten)) && // Een melding met opdrachten mag niet meer doorgestuurd worden (MAYF#36363). mresult_vakg.canWrite("WEB_MLDBOF") && @@ -5506,6 +5510,9 @@ mld = { break; } } + if (!mresult.canChange && userIsBlokbehandelaar) { // Als ik alleen binnen mag komen omdat ik blokbehandelaar ben, dan doe ik dat als BO + mresult.canChangeUrole = 'bo'; + } // (dure) controle uitschakelbaar door { dontcarelink: true } mee te geven // Je mag dus niet linken, tenzij (i) deze check wordt uitgevoerd en (ii) geen resultaat oplevert. diff --git a/APPL/MLD/mld_melding.asp b/APPL/MLD/mld_melding.asp index 082487596b..2c44675c01 100644 --- a/APPL/MLD/mld_melding.asp +++ b/APPL/MLD/mld_melding.asp @@ -397,7 +397,7 @@ if (mld_key == -1 || copy) } // 2. Het optionele workflowframe of andere vervolgmeldingen - if (mld_info.mld_conceptstatus == 0) + if (mfe.canReadAny && mld_info.mld_conceptstatus == 0) { page="workflow_info.asp?embedded=1&urole=" + urole + "&mld_key=" + mld_key; IFRAMER("mldworkflowframe", page, { refreshOnActivate: true, refreshOnClose: true, icon: "fa-list" } ); // lcl_mld_continuation_mld heeft een spatie erachter -> nieuwe lcl diff --git a/APPL/MLD/mld_show_melding.asp b/APPL/MLD/mld_show_melding.asp index 02e4e0f823..277d55d877 100644 --- a/APPL/MLD/mld_show_melding.asp +++ b/APPL/MLD/mld_show_melding.asp @@ -299,7 +299,7 @@ SUBFRAME_START(); if (this_mld.canClose && mld_melding.is_fo_melding && verynew) buttons.push({ title: L("lcl_close"), icon: "fa-flag-checkered", action: "mld_close(true)", autoshow: true, tooltip: L("lcl_close_hint") }); else - buttons.push({ title: L("lcl_change"), icon: "fa-fclt-edit", action: "mld_change('" + (this_mld.canChangeKenmerkBlok? urole : this_mld.canChangeUrole) + "')" }); + buttons.push({ title: L("lcl_change"), icon: "fa-fclt-edit", action: "mld_change('" + this_mld.canChangeUrole + "')" }); if (this_mld.canInstem) buttons.push({ title: L("lcl_instem"), icon: "fa-thumbs-up", action:"mld_instem()", autoshow: true, tooltip: L("lcl_instem_hint")}); @@ -327,10 +327,10 @@ SUBFRAME_START(); if ((fwdInfo.fwdType & 1) && (this_mld.canForward || this_mld.canFixMelding)) // bo2bo buttons.push({ title: fwdInfo.fwdLabel, icon: (fwdInfo.fwdType == 1 ? "fa-retweet" : "fa-external-link"), - action: "mld_forward('" + (this_mld.canChangeKenmerkBlok? urole : this_mld.canChangeUrole) + "', 1, " + mld_melding.mld_ins_discipline_key + ")", + action: "mld_forward('" + this_mld.canChangeUrole + "', 1, " + mld_melding.mld_ins_discipline_key + ")", tooltip: fwdInfo.fwdHint }); if ((fwdInfo.fwdType & 2) && this_mld.canForwardTeam) - buttons.push({ title: L("lcl_mld_forward_team"), icon: "fa-arrow-right", action:"mld_forward('" + (this_mld.canChangeKenmerkBlok? urole : this_mld.canChangeUrole) + "', 2, " + mld_melding.mld_ins_discipline_key + ")", tooltip: L("lcl_mld_forward_team_hint") }); + buttons.push({ title: L("lcl_mld_forward_team"), icon: "fa-arrow-right", action:"mld_forward('" + this_mld.canChangeUrole + "', 2, " + mld_melding.mld_ins_discipline_key + ")", tooltip: L("lcl_mld_forward_team_hint") }); if (this_mld.canFixSLA) buttons.push({ title: L("lcl_mld_fix_sla"), icon: "fa-clock", action:"mld_fix_sla()", autoshow: false, tooltip: L("lcl_mld_fix_sla_hint"), ximportance: 2 });