<% /* $Revision$ $Id$ File: INS/ins_list.inc Description: Show an overview of objects in list-form. which meets with the given requirements User can select on or more lines and edit/delete them FE ->verbruiksregistratie BO ->object registratie FO ->uitleenmodule Parameters: urole user role (fe, fo, bo, mi) outputmode behave in an output mode, print to 0 = screen, 1 = printer, 2 = excel, etc. showall show all objects which meets with the given requirements inspect Toon ook inspectie kolommen (implies actief=1) inspClosed search for objects inspections wich are verwerkt inspDone search for objects inspections wich are done inspBusy search for objects inspections wich are in progress inspSoon search for objects inspections wich are soon inspClosed, inspDone, inspBusy, inspSoon: de vinkjes inspsoonfrom search for objects with inspections between inspsoonfrom and inspsoonto inspsoonto search for objects with inspections between inspsoonfrom and inspsoonto donedatefrom search for objects with inspections between donedatefrom and donedateto donedateto search for objects with inspections between donedatefrom and donedateto reg_key search for objects with the given regio key dist_key search for objects with the given district key loc_key search for objects with the given location key bld_key search for objects with the given building key flr_key search for objects with the given floor key room_key search for objects with the given room key wpl_key search for objects with the given workplace key deel search for objects with the given identification disc_key search for objects with the given discipline key insgroup_key search for objects with the given groep key (srtgroup key) objsrt_key search for objects with the given objectsoort (srtdeel key) as intArray objsrt_oms search for srtobjects with the given code or description groep search for group with the given code or description dep_key search for objects with the given department key persoon_key search for objects with the given persoon key beh_key search for objects manaed by the given beh (persoon) key cpersoon_key search for objects with the given contactpersoon key cnt_bedrijf_key search for objects waar het desbetreffende bedrijf contractueel onderhoud kan doen ins_key_arr search for objects with the given ins key array parent_key search for subobjects of the given ins parent_key koppel_key search for related objects of the given koppel_key terr_key search for objects with the given terrein key room_key_arr search for objects with the given room keys (room key array) comp_key search for objects with the given companie key insObjIncl search also for objects wich is a part from another object insLentOut search for objects wich are lent out insAvail search for objects wich are available insSuccessY search for inspections which are a success insSuccessN search for inspections which are not active fgraph search for objects for a fgraph search Context: - INS/ins_search.asp (Search action from bes_search.asp form) - FGraph (_Report.asp) - Self (when printing) Note: For FGraph-selectable objects 'owner' selection is never applicable as the objects will be place-bound Als parent_key of koppel_key, dan worden geen bulkacties getoond (tiny) */ %> <% FCLTHeader.Requires({ plugins:["jQuery"], js: ["jquery-ui.js", "../ins/ins_list.js", "num2curr.js"] }); function ins_list (pautfunction, params) { var buttons = []; // De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden var authparams = user.checkAutorisation(pautfunction); var authparamsINSMAN = user.checkAutorisation("WEB_INSMAN", true); var hasWriteINSMAN = (authparamsINSMAN && authparamsINSMAN.ALGwritelevel < 9 && authparamsINSMAN.PRSwritelevel < 9) var urole = params.urole; var fronto = (urole == "fo"); var backo = (urole == "bo"); var minfo = (urole == "mi"); // NOT APPLICABLE? var frontend = (urole == "fe" || (!fronto & !backo & !minfo)); var canAdd = (authparams.PRSwritelevel < 9 && urole != "fo"); // Voor resulttable de globalen zetten; zou ng anders moeten. var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc. var print = (outputmode == 1 || outputmode == 5); var excel = (outputmode == 2 || outputmode == 6); var showall = params.showall; var reg_key = params.reg_key; var dist_key = params.dist_key; var loc_key = params.loc_key; var disc_key = params.disc_key; var insgroup_key = params.insgroup_key; var objsrt_key = params.objsrt_key; var ctrdisc_key = params.ctrdisc_key; var dep_key = params.dep_key; var persoon_key = params.persoon_key; var cpersoon_key = params.cpersoon_key; var fgraph = params.fgraph; var parent_key = params.parent_key; var koppel_key = params.koppel_key; var embedded = params.embedded; var tiny = params.tiny || parent_key || koppel_key; var inspect = params.inspect; var inacObjIncl = params.inacObjIncl; var inspDone = params.inspDone; %> <% FCLTHeader.Generate({ outputmode: outputmode }); %> <% if (frontend) { %>
<% /* filter velden voor frontend. Nodig voor reload na oplaan nieuw waarden. */ %> <% var sql_loc = ""; var sql_obj_sort = ""; if (loc_key) { sql_loc = " AND l.alg_locatie_key = " + loc_key; } else if (dist_key) { sql_loc = " AND l.alg_district_key = " + dist_key; } else if (reg_key) { sql_loc = " AND di.alg_regio_key = " + reg_key; } else { // Note: we do not support alg-scope per discipline (yet) sql_loc = (authparams.ALGreadlevel >= 0 ? " AND d.ins_alg_locatie_key IN" + " (SELECT alg_locatie_key FROM fac_v_my_locations" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparams.ALGreadlevel + ")" : ""); } if (objsrt_key) { sql_obj_sort = " AND sk.INS_SRTDEEL_KEY IN (" + objsrt_key.join(",") + ")"; } else { sql_obj_sort = " AND sk.ins_discipline_key IN (SELECT gb.ins_discipline_key" + " FROM fac_v_webgebruiker gb, fac_functie f" + " WHERE prs_perslid_key = " + user_key + " AND fac_functie_code = " + safe.quoted_sql(pautfunction) + " AND f.fac_functie_key = gb.fac_functie_key" + " and gb.fac_gebruiker_alg_level_read < 9)"; } sql = " SELECT "+lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key') + ", d.ins_deel_omschrijving || ' (' || d.ins_deel_key || ')' object_omschrijving" // object omschrijving + ", d.ins_deel_opmerking" + ", (SELECT akd.ins_kenmerkdeel_aanmaak" + " FROM ins_v_aanwezigkenmerkdeel akd" + " WHERE akd.ins_deel_key = d.ins_deel_key" + " AND akd.ins_kenmerk_key = sk.ins_kenmerk_key) last_change_date" // vorige invoerdatum + ", (SELECT akd.ins_kenmerkdeel_waarde" + " FROM ins_v_aanwezigkenmerkdeel akd" + " WHERE akd.ins_deel_key = d.ins_deel_key" + " AND akd.ins_kenmerk_key = sk.ins_kenmerk_key) last_value" // huidige (laatste) waarde + ", sk.ins_srtdeel_key" // objectsoort deel key + ", d.ins_deel_key" // onderdeel key + ", sk.ins_kenmerk_key" // objectkenmerk key + ", d.ins_alg_ruimte_key" // alg ruimte key + ", sk.ins_srtkenmerk_key" // bibliotheek kenmerk key + ", sk.ins_srtkenmerk_kenmerktype" // bibliotheek type + ", sk.ins_srtkenmerk_lengte" // bibliotheek lengte + ", sk.ins_srtkenmerk_nmin" // bibliotheek maximum waarde + ", sk.ins_srtkenmerk_nmax" // bibliotheek minimum waarde + ", l.alg_locatie_omschrijving" // locatie omschrijving + ", "+lcl.xsqla('sd.ins_srtdeel_eenheid', 'sd.ins_srtdeel_key') // eenheid van het verbruik + ", sk.ins_kenmerk_volgnummer" // kenmerk volgnummer + ", COALESCE(" + " (SELECT akd.ins_kenmerkdeel_key" + " FROM ins_v_aanwezigkenmerkdeel akd" + " WHERE akd.ins_deel_key = d.ins_deel_key" + " AND akd.ins_kenmerk_key = sk.ins_kenmerk_key)" + ", -1) ins_kenmerkdeel_key" // ins_kenmerkdeel_key + ", rd.res_deel_key" + ", rd.res_deel_opmerking" + " FROM ins_v_srtdeel_kenmerk sk" + ", ins_v_aanwezigdeel d" + ", ins_srtdeel sd" + ", alg_locatie l" + (!loc_key && !dist_key && reg_key ? ", alg_district di" : "") + ", (SELECT res_deel_key" + " , res_ins_deel_key" + " , " + lcl.xsqla('res_deel_opmerking', 'res_deel_key') + " FROM res_deel" + " WHERE res_deel_verwijder IS NULL" + " AND res_deel_vervaldatum IS NULL" + " UNION ALL" + " SELECT res_deel_key" + " , res_ins_deel_key" + " , " + lcl.xsqla('res_deel_opmerking', 'res_deel_key') + " FROM res_deel" + " WHERE res_deel_verwijder IS NULL" + " AND res_deel_vervaldatum > SYSDATE) rd" + " WHERE sk.ins_srtdeel_key = sd.ins_srtdeel_key" + " AND d.ins_srtdeel_key = sd.ins_srtdeel_key" + " AND d.ins_alg_locatie_key = l.alg_locatie_key" + (!loc_key && !dist_key && reg_key ? " AND l.alg_district_key = di.alg_district_key" : "") + " AND d.ins_deel_key = rd.res_ins_deel_key(+)" + " AND sd.ins_srtgroep_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")" + sql_loc + sql_obj_sort + " AND sk.ins_kenmerk_meetwaarde = 1" + " AND sk.ins_srtkenmerk_kenmerktype = 'N'" + " AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC(SYSDATE))" + " ORDER BY alg_locatie_omschrijving" // overweeg uppers? + ", "+lcl.xsql('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key') + ", d.ins_deel_omschrijving || ' (' || d.ins_deel_key || ')'" + ", "+ lcl.xsql('sd.ins_srtdeel_eenheid','sd.ins_srtdeel_key'); /**************************************** * Callback functies ResultsetTable for FE ****************************************/ function fnrowDataFE(oRs) { var insDeelKey = oRs("ins_deel_key").value; var insDeelDescr = oRs("object_omschrijving").value; var insKenmerkDeelKey = oRs("ins_kenmerkdeel_key").value; var insKenmerkKey = oRs("ins_kenmerk_key").value; var data = {insDeelKey:insDeelKey, insDeelDescr:insDeelDescr, insKenmerkDeelKey:insKenmerkDeelKey, insKenmerkKey:insKenmerkKey}; return JSON.stringify(data); } function fnInput(oRs) { // input nieuwe waarde d.m.v. input box newInput = "" var write_ok if (authparams.ALGwritelevel >= 0) { sql2 = "SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparams.ALGwritelevel + " AND alg_ruimte_key = " + oRs("ins_alg_ruimte_key").value; oRs2 = Oracle.Execute(sql2); if (!oRs2.eof) write_ok = true; else write_ok = false; } else { write_ok = true; } newInput += '' + '' + '' + ''; return newInput; } /********************************************* * End callback functies ResultsetTable for FE ********************************************/ var rst = new ResultsetTable({ keyColumn: "ins_deel_key", sql: sql, ID: "instable", //rowClass: fnrowClass, rowData: fnrowDataFE, filterParams: params, outputmode: outputmode, title: L("lcl_ins_objects"), showAll: showall }); rst.addColumn(new Column({caption: L("lcl_location"), content: "alg_locatie_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "ins_srtdeel_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_obj_inf_name"), content: "object_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_last_date"), content: "last_change_date", datatype: "date"})); rst.addColumn(new Column({caption: L("lcl_last_value"), content: "last_value"})); rst.addColumn(new Column({caption: L("lcl_obj_cons_value"), content: fnInput})); rst.addColumn(new Column({caption: L("lcl_obj_unit"), content: "ins_srtdeel_eenheid"})); // Acties if (!embedded) { rst.addAction({action: "insHistory", caption: L("lcl_history")}); rst.addAction({action: "insSave", caption: L("lcl_save_value"), multi: true, multiOnce: true}); } var count = rst.processResultset(); %> <% } else { // !frontend if (!excel) { %> <% } // !excel %> <% // ======================================================= // All header information been emitted. Now start building // the SQL-queries to do actual data retrieval // ======================================================= var ErisUitleenbaar = false; var ErisReserveerbaar = false; var hasDrawings = false; var sqlu ="SELECT COUNT (*) FROM ins_srtdeel WHERE ins_srtdeel_uitleenbaar = 1 AND ins_srtdeel_verwijder IS NULL"; var oRsu = Oracle.Execute(sqlu); ErisUitleenbaar = oRsu(0).value >0 oRsu.close(); sqlu ="SELECT COUNT (*) FROM res_deel WHERE res_deel_verwijder IS NULL"; oRsu = Oracle.Execute(sqlu); ErisReserveerbaar = oRsu(0).value >0 oRsu.close(); var sqlu = "SELECT 1" + " FROM cad_tekening" + " WHERE cad_tekening_verwijder IS NULL AND ROWNUM = 1"; oRsu = Oracle.Execute(sqlu); hasDrawings = !oRsu.eof; oRsu.close(); // Start building the query to fetch all objects satisfying var sql = ins.getobjectinspect_sql(pautfunction, params); // ========== now 'sql' holds the main SQL-statement to fetch all object info /////////////////////////////////////////////////////////// // // Now let's present the results: // ////////////////////////////////////////////////////////// /*********************************************** * Callback functies ResultsetTable for FO en BO **********************************************/ function fnrowData(oRs) { var insKey = oRs("ins_deel_key").Value; var insTypeKey = oRs("ins_srtdeel_key").Value; var insAvailable = oRs("ins_alg_ruimte_key_org").Value == null? 1 : 0; var insSrtControleKey = inspect? oRs("ins_srtcontrole_key").Value : -2; // Als de status Verwerkt(6) is dan kan/moet er weer een nieuw inspectie gestart worden. Dan geen ins_deelsrtcontrole_key meegegeven (-2). var istatus = inspect? oRs("ins_deelsrtcontrole_status").Value : -1; var insDeelSrtContrKey = inspect && oRs("ins_deelsrtcontrole_key").Value != null && istatus != 6? oRs("ins_deelsrtcontrole_key").Value : -2; var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, insSrtControleKey: insSrtControleKey, insDeelSrtContrKey: insDeelSrtContrKey, ins_status: istatus}; return JSON.stringify(data); } function fnrowActionEnabler(oRs) { var eLendOut = false; var eReceive = false; var eAdapt = false; if (fronto) { eLendOut = oRs("ins_alg_ruimte_key_org").value == null; eReceive = !eLendOut; eAdapt = eReceive && (oRs("bewerkbaar").Value == 1); } var eDelete = false; var eEdit = true; // Indien enigste actie dan wordt de actie niet getoond en is het de default actie op de hele regel var eDetails = true; // Ik zie alleen objecten waar ik read rechten (3d) op heb. Dan mag ik ze ook verder inzien. var eShowInsp = false; var ePlan = false; var eStart = false; var eClose = false; var eFinish = false; if (inspect && !inspDone) { // Als object is vervallen dan kun je niet meer inspecteren en uitstellen. var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value, {srtcont_key: oRs("ins_srtcontrole_key").Value, deelsrtcont_key: oRs("ins_deelsrtcontrole_key").Value }); var istatus = oRs("ins_deelsrtcontrole_status").Value; eShowInsp = this_ins.canInspShow && istatus < 6; // Als de inspectie is afgerond dan kun moet je eerst een nieuwe inspectie starten. Alleen lopende inspecties kun je inkijken. ePlan = this_ins.canInspPlan; eStart = this_ins.canInspStart; eClose = this_ins.canInspClose; eFinish = !this_ins.canInspClose && this_ins.canInspFinish; // Als er nog niet gereed gemeld/afgemeld is dan wordt die butten wel getoond. } var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit, eDetails: eDetails, eShowInsp: eShowInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish}; return data; } function fnrowClass(oRs) { var lclass = ""; var istatus = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1; if (inspDone) return lclass; var ins_deelsrtcontrole_plandatum = oRs("ins_deelsrtcontrole_plandatum").Value; if (ins_deelsrtcontrole_plandatum == null) var dt = new Date(oRs("inspectie_next").Value); else var dt = new Date(oRs("ins_deelsrtcontrole_plandatum").Value); dt.setHours(0,0,0,0); // trunc datum var dtsoon = new Date; dtsoon.setDate(dtsoon.getDate() + S("ins_inspect_soon_days")); dtsoon.setHours(0,0,0,0); // trunc datum var dtlate = new Date(new Date().setHours(0,0,0,0)); // Als het een eerste controle(1) is, dan staat "Onbekend/Undetermined" in beeld. Dan ook rood weergeven. var nonext = oRs("nonext").Value == 1; var ctr_controle_type = oRs("ctr_controle_type").Value; var undetermined = (nonext && ctr_controle_type == 1); // Eerste Controle(1). if (dt >= dtsoon && !undetermined) return lclass; // meer dan S("ins_inspect_soon_days") dagen in de toekomst if (dt >= dtlate && !undetermined) return lclass + " expired1"; // Binnenkort return lclass + " expired2"; // Te laat } function fnStatus(oRs) { var stat = oRs("ins_deelsrtcontrole_status").Value; if (!(stat>0) || stat == 6) // De status gaat over de vorige/lopende inspectie. Bij afgerond is dat niet boeiend return ""; return ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value); } function fnPlace(oRs) { var place = "" if (oRs("ins_alg_ruimte_type_org").value != null) place = oRs("uitgegeven_vanuit"); else if (oRs("ins_alg_ruimte_type").value == 'P' || oRs("ins_alg_ruimte_type").value == 'A') // Object niet uitgeleend. Uitgeleend aan is eigenlijk de plaats. place = oRs("uitgeleend_aan").value; else place = oRs("plaats").value; return safe.html(place); } function fnLentOutTo(oRs) { var lentOutTo if (oRs("ins_alg_ruimte_type_org").value != null) lentOutTo = oRs("uitgeleend_aan").value; else lentOutTo = ""; return safe.html(lentOutTo); } function fnPosition(oRs) { var rkey = oRs("alg_ruimte_key").value; var rtype = oRs("ins_alg_ruimte_type").value; if (rtype == "A" || rtype == "P") { // Misschien is het uitgeleend en komt het wel uit een ruimte rkey = oRs("ins_alg_ruimte_key_org").value; rtype = oRs("ins_alg_ruimte_type_org").value; } if (rtype == null || rtype == "A" || rtype == "P") return ""; // Kunnen we niet tonen // TODO: beide kan natuurlijk ook nog/ var xyavailable = (oRs("ins_deel_x").value != null? 1 : 0); var dwgxyavailable = (oRs("ins_deel_dwgx").value != null? 1 : 0); if (rtype == "W") { var sql = "SELECT prs_alg_ruimte_key, prs_werkplek_dwgx FROM prs_werkplek WHERE prs_werkplek_key = " + rkey; var oRs2 = Oracle.Execute(sql); var rkey = oRs2("prs_alg_ruimte_key").Value; var xyavailable = false; var dwgxyavailable = (oRs2("prs_werkplek_dwgx").value != null? 1 : 0); oRs2.Close(); rtype = "R"; } var position = ""; if (xyavailable || dwgxyavailable) { if (outputmode == 0) { position = '' + ''; } else { position = (xyavailable? "M" : "FG"); } } else { if (outputmode == 0) { position = '' + ''; } } return position; } function fnKoppelvan(oRs) { if (oRs("ins_deelkoppeling_naar_key").Value == koppel_key) return safe.html(oRs("ins_deel_omschrijving").Value) + (oRs("ins_deel_opmerking").Value? " (" + safe.html(oRs("ins_deel_opmerking").Value) + ")" : ""); else return ""; } function fnKoppelaan(oRs) { if (oRs("ins_deelkoppeling_van_key").Value == koppel_key) return safe.html(oRs("ins_deel_omschrijving").Value) + (oRs("ins_deel_opmerking").Value? " (" + safe.html(oRs("ins_deel_opmerking").Value) + ")" : ""); else return ""; } function fnReserveerbaar(oRs) { var res = ""; if ( oRs("res_deel_key").value != null ) { if (outputmode == 0 ) { res= ""; } else res = L("lcl_yes"); } else { res = (outputmode == 0 ? "" : L("lcl_no")); } return res; } function fnUitleenbaar(oRs) { var res = ""; if ( oRs("ins_srtdeel_uitleenbaar").value==1 ) { res = (outputmode == 0 ? L("lcl_obj_uitleensrtdeel") : L("lcl_yes")); } else { res = (outputmode == 0 ? "" : L("lcl_no")); } return res; } function fnInspectie(oRs) // TODO: Of via RowClass { var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight()); if (vervallen) return L("lcl_ins_controle_vervallen"); var txt; var dt; var nonext = oRs("nonext").Value == 1; if (nonext) { // Er is nog geen inspectie geweest. Eerste controle moet nog plaatsvinden. // 1: Controle, 2: Vervanging, 3: Certificering. if (oRs("ins_srtcontroledl_xcp_startdat").Value != null) { dt = new Date(oRs("ins_srtcontroledl_xcp_startdat").Value); // Startdatum. txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt)); } else { switch (oRs("ctr_controle_type").Value) { case 1: { txt = L("lcl_ins_controle_first"); break; } // Eerste controle. case 2: case 3: { dt = new Date(oRs("inspectie_next").Value); // Registratiedatum. txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt)); break; } // Eerste certificering. } } return txt; } var inspectie = (inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value); var inspectie_eenheid = oRs("inspectie_eenheid").Value; if (inspectie_eenheid == 0) var dttxt = toDateTimeString(inspectie); else var dttxt = toDateString(inspectie); return ""+dttxt+""; } function fnPlandatum(oRs) { var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight()); if (vervallen) return L("lcl_ins_controle_vervallen"); var plandatum = oRs("ins_deelsrtcontrole_plandatum").Value; var inspectie_eenheid = oRs("inspectie_eenheid").Value; if (inspectie_eenheid == 0) var dttxt = toDateTimeString(plandatum); else var dttxt = toDateString(plandatum); return ""+dttxt+""; } function fnCMSuccess(oRs) { var res = ""; if (oRs("ins_controlemode_success").Value == null) res = ''; else res = ''; return res; } function fnActief(oRs) { var res = ""; if (oRs("ins_deel_actief").Value == 1) res = L("lcl_ins_active"); else res = L("lcl_ins_not_active"); return res; } if (koppel_key && ins.func_enabled_deel(koppel_key).canChange) // TODO (popup met objectselector (zoiets als bij meldingen?) { buttons = [{ icon: "wijzigen.png", title: L("lcl_change"), action: "ins_deelkoppeling()" } ]; } else if (canAdd) { var addurl = ""; if (parent_key) { var addurl = "appl/ins/ins_deel.asp?urole=" + urole + "&parent_key=" + parent_key; } else { // Er zijn nogal wat varianten van parameter name bij INS dus moeten wel in // het paramsobject wat vertalingen doen. var transitParam = buildTransitParam(["disc", "Group", "sort", "dept", "prs_key", "locatiekey", "gebouwkey", "verdiepingkey", "ruimtekey", "werkplekkey"], { disc: disc_key, Group: insgroup_key, sort:objsrt_key, dept: dep_key, prs_key: persoon_key}); var addurl = "appl/ins/ins_deel.asp?urole=" + urole + transitParam; } buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" }); buttons.push({ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')" }); } if (embedded && authparams.PRSwritelevel < 9 && fronto && (cpersoon_key > 0 || persoon_key > 0)) { if (cpersoon_key > 0) { // Contactpersoon moet eerst binnengemeld zijn/worden alvorens een object toegekend kan worden. sql2 = "SELECT COUNT(b.prs_contactpersoon_key) aantal" + " FROM bez_bezoekers b" + " WHERE b.prs_contactpersoon_key = " + cpersoon_key + " AND b.bez_bezoekers_done IS NOT NULL" + " AND b.bez_bezoekers_out IS NULL" var oRs2 = Oracle.Execute(sql2); var isbinnen = oRs2("aantal").value > 0; } else // (persoon_key > 0): Intern persoon kan altijd een object toegekend krijgen. isbinnen = true; if (isbinnen) // ja, deze overschrijft het array { buttons = [{ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" }, { icon: "plus.png", title: L("lcl_add"), action: "insCheckOutNewItem(" + (cpersoon_key > 0? cpersoon_key + ", 'C'" : persoon_key + ", 'P'") + ")" } ]; } } if (inspect) { buttons.push({ icon: "legenda.png", title: L("lcl_mld_legenda"), action: "openLegenda()" }); } /*************************************************** * End callback functies ResultsetTable for FO en BO **************************************************/ // TODO conditionele Add button var rst = new ResultsetTable({ keyColumn: "ins_deel_key", sql: sql, ID: "instable", rowData: fnrowData, rowActionEnabler: fnrowActionEnabler, rowClass: inspect? fnrowClass : null, flexModule: "INS", flexId: "ins_deel_key", flexGroupId: "ins_srtdeel_key", multiple: true, filterParams: params, outputmode: outputmode, title: (parent_key? L("lcl_subobjects") : (koppel_key? L("lcl_ins_koppelobjects") : (inspect? L("lcl_ins_planned_activities"): L("lcl_ins_objects")))), showAll: showall, buttons: buttons }); // Kolommen if (fronto) { rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "soort", hasActions: true})); rst.addColumn(new Column({caption: L("lcl_obj_identification"), content: "ins_deel_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_ins_opmerking"), content: "ins_deel_opmerking"})); rst.addColumn(new Column({caption: L("lcl_obj_position"), content: fnPlace})); rst.addColumn(new Column({caption: L("lcl_obj_lent_out_to"), content: fnLentOutTo})); } else { if (koppel_key && (L("lcl_obj_koppelaan") != L("lcl_obj_koppelvan"))) { rst.addColumn(new Column({caption: L("lcl_obj_koppelaan"), content: fnKoppelaan})); rst.addColumn(new Column({caption: L("lcl_obj_koppelvan"), content: fnKoppelvan})); } else // gewoon { if (inspect && ctrdisc_key == -1) rst.addColumn(new Column({caption: L("ctr_discipline"), content: "ctr_disc_oms"})); rst.addColumn(new Column({caption: L("lcl_obj_identification"), content: "ins_deel_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_ins_opmerking"), content: "ins_deel_opmerking", combine: inspect})); } if (koppel_key) rst.addColumn(new Column({caption: L("lcl_obj_koppeloms"), content: "ins_deelkoppeling_omschrijving"})); if (inspect) { rst.addColumn(new Column({caption: L("lcl_ins_status"), content: fnStatus})); rst.addColumn(new Column({caption: (inspDone? L("lcl_ins_controle_datum") : L("lcl_ins_controle_next")), content: fnInspectie})); rst.addColumn(new Column({caption: L("lcl_ins_controle_plandate"), content: fnPlandatum})); if (inspDone) rst.addColumn(new Column({caption: L("ins_controlemode_success"), content: fnCMSuccess})); rst.addColumn(new Column({caption: L("lcl_ins_controle_srt"), content: "ins_srtcontrole_omschrijving"})); rst.addColumn(new Column({caption: L("lcl_ins_controle_groep"), content: "groepoms"})); } if (!parent_key) { rst.addColumn(new Column({caption: L("lcl_obj_position"), content: "plaats"})); if (!fgraph) rst.addColumn(new Column({caption: L("lcl_obj_owner"), content: "uitgeleend_aan", combine: true})); } if (params.mjob) { rst.addColumn(new Column({caption: L("lcl_discipline"), content: "ins_disc_oms"})); rst.addColumn(new Column({caption: L("lcl_obj_group"), content: "ins_groep_oms"})); } rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "soort"})); if (!parent_key && !koppel_key && !inspect) { if (!fgraph && !embedded &&hasDrawings) rst.addColumn(new Column({caption: L("lcl_fg_gotofgheader"), content: fnPosition, align:"center"})); if (!embedded && ErisReserveerbaar && !inspect) rst.addColumn(new Column({caption: L("lcl_obj_reserveerbaar"), content: fnReserveerbaar, align:"center"})); if (!embedded && ErisUitleenbaar && !inspect) rst.addColumn(new Column({caption: L("lcl_obj_uitleensrtdeel"), content: fnUitleenbaar, align:"center"})); } } if (inacObjIncl) { // alleen als er ook inactieven voorkomen is het zinvol deze kolom te tonen rst.addColumn(new Column({caption: L("lcl_ins_active"), content: fnActief})); } if (!inspect && !fronto) { // kan over gediscussieerd worden rst.addColumn(new Column({caption: L("lcl_ins_vervaldatum"), content: "ins_deel_vervaldatum", datatype: "date", prettydate: true})); } // Acties if (fronto && authparams.PRSwritelevel < 9) // Ik heb write rechten nodig voor deze acties { // 1 van de 2 mag zichtbaar zijn. Kijken naar query resultaat!!! // PF: TODO: multi in/uit werkt niet goed rst.addAction({ action: "insEdit", caption: L("lcl_details"), enabler: "eDetails", isDefault: true}); // Actie insEdit gaat toch eerst naar show mode. // Inchecken of uitchecken is zichtbaar. Beiden kunnen als default aangeven worden. // Nu alle regels aanklikbaar of inchecken of uitchecken rst.addAction({ action: "insCheckOut", caption: L("lcl_obj_lend_out"), enabler: "eLendOut"}); rst.addAction({ action: "insCheckIn", caption: L("lcl_obj_receive"), enabler: "eReceive"}); rst.addAction({ action: "insAdapt", caption: L("lcl_ins_adapt"), enabler: "eAdapt"}); } if (backo) { rst.addAction({ action: "insEdit", caption: L("lcl_change"), isDefault: true}); // isDefault, dus nooit multi, alleen door aanklikken regel. Multi via afgehandeld via functie insMultiEdit() if (inspect) { var sql_opt = "SELECT MAX(BITAND(ins_srtcontrole_options, 1)) insplan" + " , MAX(BITAND(ins_srtcontrole_options, 2)) insstart" + " , MAX(BITAND(ins_srtcontrole_options, 4)) insclose" + " , MAX(BITAND(ins_srtcontrole_options, 8)) insfinish" + " , COUNT(ins_srtcontrole_options) aantal" + " FROM ins_srtcontrole"; var oRs_opt = Oracle.Execute(sql_opt); if (oRs_opt("aantal").Value > 0) rst.addAction({ action: "insShowInsp", caption: L("lcl_change"), enabler: "eShowInsp" }); if (oRs_opt("insplan").Value == 1) rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), multi: !tiny, multiOnce: true, enabler: "ePlan" }); if (oRs_opt("insstart").Value == 2) rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), multi: !tiny, multiOnce: true, enabler: "eStart" }); if (oRs_opt("insclose").Value == 4) rst.addAction({ action: "insClose", caption: L("lcl_ins_stop"), multi: !tiny, multiOnce: true, enabler: "eClose" }); if (oRs_opt("insfinish").Value == 8) rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), multi: !tiny, multiOnce: true, enabler: "eFinish" }); } else { rst.addAction({ action: "insDelete", caption: L("lcl_delete"), enabler: "eDelete", single: false, multi: !tiny, multiOnce: true}); if (hasWriteINSMAN) // Ik heb INSMAN rechten nodig om multi te kunnen editen. Met alleen INSUSE rechten mag ik dat vooralsnog niet. rst.addAction({ action: "insMultiEdit", caption: L("lcl_ins_multi_edit"), enabler: "eEditMulti", multi: !tiny, single: false, multiOnce: true}); rst.addAction({ action: "insMultiMove", caption: L("lcl_ins_multi_move"), enabler: "NotExist", multi: !tiny, multiOnce: true}); } } var count = rst.processResultset(); if (!excel && !print) { %> <% } } %> <% } %>