diff --git a/APPL/CNT/cnt_list.inc b/APPL/CNT/cnt_list.inc index ea6f90869c..8728fee297 100644 --- a/APPL/CNT/cnt_list.inc +++ b/APPL/CNT/cnt_list.inc @@ -377,9 +377,40 @@ function cnt_list (pautfunction, params) if (ins_key) { sql += " AND c.cnt_contract_key IN " - + " (SELECT cnt_contract_key FROM cnt_contract_object" - + " WHERE cnt_ins_deel_key = " + ins_key + ")"; - } + + " (SELECT DISTINCT cnt_contract_key" + + " FROM (SELECT cnt_contract_key" + + " FROM cnt_contract_object" + + " WHERE cnt_ins_deel_key =" + ins_key + "" + + " UNION" + + " SELECT co.cnt_contract_key" + + " FROM CNT_V_AANWEZIGCONTRACT_OBJECT co," + + " ins_deel d," + + " cnt_v_aanwezigcontract_plaats ccp," + + " alg_v_allonroerendgoed aao" + + " WHERE cnt_ins_deel_key IS NULL" + + " AND co.cnt_ins_srtdeel_key = d.ins_srtdeel_key" + + " AND d.ins_deel_key =" + ins_key + "" + + " AND ccp.cnt_contract_key = co.cnt_contract_key" + + " AND COALESCE (d.ins_alg_ruimte_type_org," + + " ins_alg_ruimte_type) = 'R'" + + " AND COALESCE (d.ins_alg_ruimte_key_org," + + " ins_alg_ruimte_key) = aao.alg_ruimte_key" + + " AND ( (ccp.cnt_alg_plaats_code = 'L'" + + " AND ccp.cnt_alg_plaats_key = aao.alg_locatie_key)" + + " OR (ccp.cnt_alg_plaats_code = 'G'" + + " AND ccp.cnt_alg_plaats_key = aao.alg_gebouw_key))" + + " UNION" + + " SELECT co.cnt_contract_key" + + " FROM CNT_V_AANWEZIGCONTRACT_OBJECT co, ins_deel d" + + " WHERE cnt_ins_deel_key IS NULL" + + " AND co.cnt_ins_srtdeel_key = d.ins_srtdeel_key" + + " AND d.ins_deel_key =" + ins_key + "" + + " AND (co.cnt_contract_key NOT IN" + + " (SELECT cnt_contract_key" + + " FROM cnt_v_aanwezigcontract_plaats)" + + " OR COALESCE (d.ins_alg_ruimte_type_org," + + " ins_alg_ruimte_type) != 'R')))"; + } if (kp_key) { diff --git a/APPL/INS/ins_show_deel.asp b/APPL/INS/ins_show_deel.asp index 36e7db64ac..ec77e446c9 100644 --- a/APPL/INS/ins_show_deel.asp +++ b/APPL/INS/ins_show_deel.asp @@ -30,6 +30,13 @@ if (this_ins.isSleCil) var autfunction = "WEB_SLEBOF"; else var autfunction = getQParam("pautfunction", (urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN")); + +var authparamsCNTUSE = user.checkAutorisation("WEB_CNTUSE", true); +var authparamsCNTMAN = user.checkAutorisation("WEB_CNTMAN", true); +var curole = "bo"; + +if (!authparamsCNTMAN && authparamsCNTUSE) + curole = "fe"; var authparams = user.checkAutorisation(autfunction); var sql, oRs; @@ -214,7 +221,7 @@ oRs.Close(); } function showHistory() { - FcltMgr.openDetail("appl/ins/ins_history_search.asp?ins_key=<%=ins_key%>&urole=<%=urole%>", "<%=L("lcl_history")%>"); + FcltMgr.openDetail("appl/ins/ins_history_search.asp?ins_key=<%=ins_key%>&urole=<%=curole%>", "<%=L("lcl_history")%>"); } function ins_reserveerbaar() { @@ -233,7 +240,7 @@ oRs.Close(); function ins_contract() { - FcltMgr.openDetail("appl/cnt/cnt_search_list.asp?ins_key=<%=ins_key%>&urole=<%=urole%>", "<%=L("lcl_contract")%>"); + FcltMgr.openDetail("appl/cnt/cnt_search_list.asp?ins_key=<%=ins_key%>&urole=<%=curole%>", "<%=L("lcl_contract")%>"); } function ins_delete() @@ -276,16 +283,45 @@ oRs.Close(); oRs = Oracle.Execute(sql); this_ins.verbruiksmeter = oRs("meetwaarde").Value == 1; - sql = "SELECT COUNT(*) " - + " FROM cnt_contract_object o " - + " WHERE o.cnt_ins_deel_key = " + ins_key - + " AND o.cnt_contract_object_verwijder IS NULL "; + sql = "SELECT COUNT ( * )" + + " FROM (SELECT cnt_contract_key" + + " FROM cnt_v_aanwezigcontract_object" + + " WHERE cnt_ins_deel_key =" + ins_key + "" + + " UNION" + + " SELECT co.cnt_contract_key" + + " FROM CNT_V_AANWEZIGCONTRACT_OBJECT co," + + " ins_deel d," + + " cnt_v_aanwezigcontract_plaats ccp," + + " alg_v_allonroerendgoed aao" + + " WHERE cnt_ins_deel_key IS NULL" + + " AND co.cnt_ins_srtdeel_key = d.ins_srtdeel_key" + + " AND d.ins_deel_key =" + ins_key + "" + + " AND ccp.cnt_contract_key = co.cnt_contract_key" + + " AND COALESCE (d.ins_alg_ruimte_type_org," + + " ins_alg_ruimte_type) = 'R'" + + " AND COALESCE (d.ins_alg_ruimte_key_org," + + " ins_alg_ruimte_key) = aao.alg_ruimte_key" + + " AND ( (ccp.cnt_alg_plaats_code = 'L'" + + " AND ccp.cnt_alg_plaats_key = aao.alg_locatie_key)" + + " OR (ccp.cnt_alg_plaats_code = 'G'" + + " AND ccp.cnt_alg_plaats_key = aao.alg_gebouw_key))" + + " UNION" + + " SELECT co.cnt_contract_key" + + " FROM CNT_V_AANWEZIGCONTRACT_OBJECT co, ins_deel d" + + " WHERE cnt_ins_deel_key IS NULL" + + " AND co.cnt_ins_srtdeel_key = d.ins_srtdeel_key" + + " AND d.ins_deel_key ="+ ins_key + "" + + " AND (co.cnt_contract_key NOT IN" + + " (SELECT cnt_contract_key" + + " FROM cnt_v_aanwezigcontract_plaats)" + + " OR COALESCE (d.ins_alg_ruimte_type_org," + + " ins_alg_ruimte_type) != 'R'))"; oRs = Oracle.Execute(sql); this_ins.contracts = oRs(0).Value; oRs.Close(); } - + var buttons = [ ]; if (this_ins.hasRESMSU) buttons.push({title: L("lcl_reserveerbaar"), action: "ins_reserveerbaar()", icon: "attach.png"}); @@ -306,8 +342,9 @@ oRs.Close(); if (this_ins.canDelete) buttons.push({title: L("lcl_delete"), action: "ins_delete()", icon: "delete.png"}); - if (this_ins.contracts > 0) + if (this_ins.contracts > 0 && (authparamsCNTMAN || authparamsCNTUSE)) buttons.push ({title: L("lcl_contract"), action: "ins_contract()", icon: "contract.png"}); + buttons.push ({title: L("lcl_print"), action: "ins_print()", icon: "print.png" }); var headertitle = L("lcl_ins_frame_algemeen");