<% /* $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 inspFutu, inspBusy, inspSoon, inspLate, inspDone: 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 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); var excel = (outputmode == 2); var showall = params.showall; var reg_key = params.reg_key; var dist_key = params.dist_key; var loc_key = params.loc_key; var bld_key = params.bld_key; var terr_key = params.terr_key; var flr_key = params.flr_key; var room_key = params.room_key; var wpl_key = params.wpl_key; var deel = params.deel; var deel_opm = params.deel_opm; var disc_key = params.disc_key; var insgroup_key = params.insgroup_key; var objsrt_key = params.objsrt_key; var objsrt_oms = params.objsrt_oms; var groep = params.groep; var controletype = params.controletype; var dep_key = params.dep_key; var persoon_key = params.persoon_key; var beh_key = params.beh_key; var cpersoon_key = params.cpersoon_key; var mld_key = params.mld_key; var fgraph = params.fgraph; var ins_key_arr = params.ins_key_arr; var parent_key = params.parent_key; var koppel_key = params.koppel_key; var room_key_arr = params.room_key_arr; var comp_key = params.comp_key; var insObjIncl = params.insObjIncl; var expObjIncl = params.expObjIncl; var insLentOut = params.insLentOut; var insAvail = params.insAvail; var embedded = params.embedded; var tiny = params.tiny || parent_key || koppel_key; var srtcontrole = params.srtcontrole; var inspsoonfrom = params.inspsoonfrom; var inspsoonto = params.inspsoonto; var donedatefrom = params.donedatefrom; var donedateto = params.donedateto; var sql_objincl = ""; if (insObjIncl || parent_key > 0) sql_objincl = ""; else sql_objincl += " AND i.ins_deel_parent_key IS NULL "; if (!expObjIncl && !deel) sql_objincl += " AND (i.ins_deel_vervaldatum IS NULL OR i.ins_deel_vervaldatum > TRUNC(SYSDATE)) "; %> <% 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 hasPosition = false; // Had the user selected something on the left side of the filter dialog var hasOwner = false; // .... or on the right side var ErisUitleenbaar = false; var ErisReserveerbaar = 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(); sql = ""; sqlOwner = sqlOwnerA = sqlOwnerB = sqlPosition = ""; if (ins_key_arr || parent_key) { hasPosition = true; // we don't need other filters and these objects } else { if (reg_key || dist_key || loc_key || bld_key || terr_key || flr_key || wpl_key || room_key || room_key_arr) { hasPosition = true; } if (comp_key || dep_key || persoon_key || cpersoon_key) { hasOwner = true; } } /////////////////////////////////////////////////////////// // // Start building the query to fetch all objects satisfying // the conditions the user has built with all select boxes // // We already have set globals // sql_objincl SQL-query part to in/exclude sub-objects // sql_owner SQL-query part to filter owner(bound) objects // filtering on object-discipline etc. will be added after building location/owner /////////////////////////////////////////////////////////// // not a combined query but either location based or department/person based // PF: deze subquery geeft de *oorspronkelijke* plaats/eigenaar (als tekst) // van het object voor het geval dat deze op dit moment uitgeleend is, anders NULL // Dit is alleen relevant bij fronto, daar wordt deze herkomst weergegeven. sqlInspectie_select = " NULL"; sqlInspectie_from = ""; sqlInspectie_where = ""; if (fronto) { sqlLentOutFrom = "CASE WHEN i.ins_alg_ruimte_type_org = 'A'" + " THEN (SELECT " + S("prs_dep_string") + " FROM prs_v_afdeling d" + " WHERE d.prs_afdeling_key = i.ins_alg_ruimte_key_org)" + " WHEN i.ins_alg_ruimte_type_org = 'P'" + " THEN (SELECT " + S("prs_pers_string") + " FROM prs_perslid p" + " WHERE p.prs_perslid_key = i.ins_alg_ruimte_key_org)" + " WHEN i.ins_alg_ruimte_type_org IN ('R', 'T', 'W')" + " THEN (SELECT o.alg_plaatsaanduiding" + " FROM ins_v_alg_overzicht o" + " WHERE o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key_org" + " AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type_org)" + " ELSE NULL" + " END"; } else { sqlLentOutFrom = " NULL"; // Geeft NULL als geen inspectie nodig // Eerstvolgende inspectie moet komen/had moeten komen: COALESCE (ins_deelsrtcontrole_datum, ins_deel_aanmaak) + ins_srtcontrole_periode if (params.inspect) { var outer = params.inspDone?"":"(+)"; var lastinspect = "(SELECT MAX (GREATEST(COALESCE (idsc.ins_deelsrtcontrole_datum_xcp" + " , CASE di.ins_srtcontrole_mode" + " WHEN 0" + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum. + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum. + " END)" + " , CASE di.ins_srtcontrole_mode" + " WHEN 0" + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum. + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum. + " END)) ins_deelsrtcontrole_datum" + " FROM ins_deelsrtcontrole idsc" + " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key" + " AND idsc.ins_deelsrtcontrole_status IN (5,6)" + " AND idsc.ins_deel_key = di.ins_deel_key)"; // Eerstvolgende inspectie var sqlNext = "SELECT ins_deel_key" + (params.inspDone ? " , inspectie_date" : " , inspectie_next") + " , nonext" + " , periode" + " , inspectie_eenheid" + " , inspectie_eind" + " , groepoms" + " , ins_srtcontrole_omschrijving" + " , ins_srtcontrole_key" + (params.inspect ? " , ins_srtcontrole_type" : "") + " FROM (WITH defined_inspect" // gedefinieerde inspecties + " AS (SELECT *" + " FROM ins_deel id" + " , ins_srtdeel s" + " , ins_srtcontrole isc" + " WHERE s.ins_srtdeel_key = id.ins_srtdeel_key" + (srtcontrole > -1 ? " AND ins_srtcontrole_key = " + srtcontrole : "") + " AND (isc.ins_srtcontrole_niveau = 'S'" + " AND isc.ins_srtinstallatie_key =" + " id.ins_srtdeel_key" + " OR isc.ins_srtcontrole_niveau = 'G'" + " AND isc.ins_srtinstallatie_key =" + " s.ins_srtgroep_key" + " OR isc.ins_srtcontrole_niveau = 'D'" + " AND isc.ins_srtinstallatie_key =" + " id.ins_discipline_key))" + (params.inspDone ? " SELECT 1 rn" + " , di.ins_deel_key" + " , (SELECT MAX (idsc.ins_deelsrtcontrole_datum)" + " FROM ins_deelsrtcontrole idsc" + " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key" + " AND idsc.ins_deelsrtcontrole_status IN (5,6)" + " AND idsc.ins_deel_key = di.ins_deel_key) inspectie_date" + " , NULL nonext" + " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind" + " , xcp.ins_srtcontroledl_xcp_groep groepoms" + " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key') + " , di.ins_srtcontrole_key" + (params.inspect ? " , di.ins_srtcontrole_type" : "") + " FROM defined_inspect di" + " , ins_srtcontroledl_xcp xcp" + " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)" + " AND di.ins_deel_key = xcp.ins_deel_key(+)" + " AND EXISTS (SELECT ins_deelsrtcontrole_key" + " FROM ins_deelsrtcontrole idsc" + " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key" + " AND idsc.ins_deelsrtcontrole_status IN (5,6)" + " AND idsc.ins_deel_key = di.ins_deel_key)" + " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))" + " ORDER BY inspectie_date)" : " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd + " , di.ins_deel_key" + " , COALESCE(xcp.ins_srtcontroledl_xcp_respijt," + " fac.nextcyclusdate(di.ins_deel_aanmaak" + " , di.ins_srtcontrole_mode" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)" + " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)" + " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)" + " , 1)) inspectie_next" + " , CASE WHEN COALESCE(xcp.ins_srtcontroledl_xcp_respijt, " + lastinspect + ") IS NULL THEN 1 ELSE 0 END nonext" + " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind" + " , xcp.ins_srtcontroledl_xcp_groep groepoms" + " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key') + " , di.ins_srtcontrole_key" + (params.inspect ? " , di.ins_srtcontrole_type" : "") + " FROM defined_inspect di" + " , ins_srtcontroledl_xcp xcp" + " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)" + " AND di.ins_deel_key = xcp.ins_deel_key(+)" + " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN" + " (SELECT ins_deel_key, ins_srtcontrole_key" + " FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_status IN (5,6))" + " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))" + " UNION ALL" // Inspecties die al zijn uitgevoerd + " SELECT RANK ()" // volgnummertje toekennen + " OVER (" + " PARTITION BY di.ins_deel_key, idsc.ins_srtcontrole_key" // soort van group-by + " ORDER BY ins_deelsrtcontrole_datum DESC) rn" // Op volgorde zetten/Rangschikken/Sorteren op inspectiedatum. + " , di.ins_deel_key" + " , COALESCE(xcp.ins_srtcontroledl_xcp_respijt," + " fac.nextcyclusdate(CASE" + " WHEN di.ins_srtcontrole_mode = 0" + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum. + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum. + " END" + " , di.ins_srtcontrole_mode" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)" + " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)" + " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)" + " , 1)) inspectie_next" + " , NULL nonext" + " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid" + " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind" + " , xcp.ins_srtcontroledl_xcp_groep groepoms" + " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key') + " , di.ins_srtcontrole_key" + (params.inspect ? " , di.ins_srtcontrole_type" : "") + " FROM ins_deelsrtcontrole idsc" + " , defined_inspect di" + " , ins_srtcontroledl_xcp xcp" + " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)" + " AND idsc.ins_deelsrtcontrole_status IN (5,6)" + " AND di.ins_deel_key = xcp.ins_deel_key(+)" + " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key" + " AND idsc.ins_deel_key = di.ins_deel_key" + " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))" + " ORDER BY inspectie_next)") + " WHERE rn = 1" // Voor afgehandelde inspecties ook inspecties met periode 0 tonen. + (!params.inspDone ? " AND periode > 0" : "") // Alleen bij "Afgehandeld" vervallen inspecties tonen. + (params.inspLate || params.inspSoon || params.inspFutu ? " AND (inspectie_eind IS NULL OR inspectie_eind > SYSDATE)" : ""); sqlInspectie_select = (params.inspDone? "inspectie_date" : "inspectie_next") + ", nonext, ins_srtcontrole_omschrijving, ins_srtcontrole_key, inspectie_eenheid, inspectie_eind, groepoms"; sqlInspectie_from = ", (" + sqlNext + ") ispn" sqlInspectie_where = " AND ispn.ins_deel_key = i.ins_deel_key"; } } var sqlKenmerkBewerkbaar_select = ", CASE WHEN k.km900>0 THEN 1 ELSE 0 END bewerkbaar"; var sqlKenmerkBewerkbaar_from = "( SELECT sd.ins_srtdeel_key" + " , COUNT (km.ins_kenmerk_volgnummer) km900" + " FROM ins_srtkenmerk sk" + " , ins_kenmerk km" + " , ins_srtdeel sd" + " , ins_srtgroep gr" + " WHERE km.ins_srtkenmerk_key = sk.ins_srtkenmerk_key" + " AND gr.ins_srtgroep_key = sd.ins_srtgroep_key" + " AND km.ins_kenmerk_verwijder IS NULL" + " AND sk.ins_srtkenmerk_verwijder IS NULL" + " AND ( ( km.ins_srtinstallatie_key = sd.ins_srtdeel_key" + " AND km.ins_kenmerk_niveau = 'S')" + " OR ( km.ins_srtinstallatie_key = sd.ins_srtgroep_key" + " AND km.ins_kenmerk_niveau = 'G')" + " OR ( km.ins_srtinstallatie_key = gr.ins_discipline_key" + " AND km.ins_kenmerk_niveau = 'D'))" + " AND km.ins_kenmerk_volgnummer >= 900" + "GROUP BY sd.ins_srtdeel_key) k"; var sqlKenmerkBewerkbaar_where = " AND i.ins_srtdeel_key = k.ins_srtdeel_key(+)"; // Dit betekent dus dat de feitelijke eigenaar dus als de normale eigenaar wordt beschouwd // d.i. de lener == de eigenaar ! if (!hasPosition || fronto) { // Position filter would imply only place-objects sqlOwner_select = "SELECT TO_CHAR(NULL) plaats" + ", s.ins_srtdeel_code" + ", " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key')+" soort" + ", i.ins_deel_omschrijving" + ", i.ins_deel_opmerking" + ", i.ins_deel_key" + ", s.ins_srtdeel_key" + ", s.ins_srtdeel_upper" + ", i.ins_deel_getekend" + ", i.ins_discipline_key" + ", i.ins_alg_ruimte_type" + ", -1 district" + ", i.ins_deel_x" // is coordinaat bekend? + ", i.ins_deel_dwgx" // is dwg coordinaat bekend? + ", ins_srtgroep_key" + ", ins_deel_upper" + ", s.ins_srtdeel_uitleenbaar" + ", i.ins_alg_ruimte_key_org" + ", i.ins_alg_ruimte_type_org" + ", " + sqlLentOutFrom + " uitgegeven_vanuit" + ", " + sqlInspectie_select + ", rd.res_deel_key" + ", rd.res_deel_opmerking" + ", i.ins_deel_vervaldatum"; sqlOwner_from = " FROM ins_deel i" + ", ins_srtdeel s" + sqlInspectie_from + ", (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"; sqlOwner_where = " WHERE s.ins_srtdeel_key = i.ins_srtdeel_key" + " AND i.ins_deel_verwijder IS NULL" + " AND i.ins_deel_key = rd.res_ins_deel_key(+)" + " AND i.ins_deel_module = 'INS'" + " AND s.ins_srtgroep_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")" + sql_objincl + sqlInspectie_where + (fronto ? " AND s.ins_srtdeel_uitleenbaar = 1" : "") + (koppel_key ? " AND idk.ins_deelkoppeling_verwijder IS NULL" + " AND (( i.ins_deel_key = idk.ins_deelkoppeling_naar_key" + " AND idk.ins_deelkoppeling_van_key=" + koppel_key + " )" + " OR ( i.ins_deel_key = idk.ins_deelkoppeling_van_key" + " AND idk.ins_deelkoppeling_naar_key=" + koppel_key + "))" : "") + ((insLentOut && !insAvail) ? " AND i.ins_alg_ruimte_key_org IS NOT NULL" : (!insLentOut && insAvail) ? " AND i.ins_alg_ruimte_key_org IS NULL" : ""); if (loc_key|| bld_key) { sqlOwner_from += ", (SELECT alg_ruimte_key" + " FROM alg_v_allonroerendgoed" + " WHERE " + (bld_key ? "alg_gebouw_key" : "alg_locatie_key") + " = " + (bld_key ? bld_key : loc_key) + " ) a"; sqlOwner_where += " AND i.ins_alg_ruimte_key_org = a.alg_ruimte_key"; } sqlOwnerA = sqlOwner_select + sqlKenmerkBewerkbaar_select + ", b.prs_bedrijf_key prs_bedrijf_key" // bedrijf key + ", d.prs_afdeling_key1" + ", (SELECT " + S("prs_dep_string") + " FROM prs_v_afdeling d WHERE prs_afdeling_key = i.ins_alg_ruimte_key) eigenaar" + ", NULL alg_ruimte_key " // person key + ", i.ins_alg_ruimte_key prs_afdeling_key" // department key + (params.inspect ? ", ispn.ins_srtcontrole_type" // Controle type : "") + (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "") + sqlOwner_from + ", prs_v_afdeling_boom d" + ", prs_bedrijf b" + ", " + sqlKenmerkBewerkbaar_from + (koppel_key? ", ins_deelkoppeling idk" : "") + sqlOwner_where + sqlKenmerkBewerkbaar_where + " AND i.ins_alg_ruimte_key = d.prs_afdeling_key" + " AND d.prs_bedrijf_key = b.prs_bedrijf_key" + " AND i.ins_alg_ruimte_type = 'A'"; sqlOwnerP = sqlOwner_select + sqlKenmerkBewerkbaar_select + ", b.prs_bedrijf_key prs_bedrijf_key " // bedrijf key + ", d.prs_afdeling_key1" + ", " + S("prs_pers_string") + " eigenaar" + ", i.ins_alg_ruimte_key alg_ruimte_key " // person key + ", p.prs_afdeling_key prs_afdeling_key" // department key + (params.inspect ? ", ispn.ins_srtcontrole_type" // Controle type : "") + (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "") + sqlOwner_from + ", prs_perslid p" + ", prs_v_afdeling_boom d" + ", prs_bedrijf b" + ", " + sqlKenmerkBewerkbaar_from + (koppel_key? ", ins_deelkoppeling idk" : "") + sqlOwner_where + sqlKenmerkBewerkbaar_where + " AND i.ins_alg_ruimte_key = p.prs_perslid_key" + " AND p.prs_afdeling_key = d.prs_afdeling_key" + " AND d.prs_bedrijf_key = b.prs_bedrijf_key" + " AND i.ins_alg_ruimte_type = 'P'"; sqlOwnerCP = sqlOwner_select + sqlKenmerkBewerkbaar_select + ", (SELECT c.prs_bedrijf_key FROM prs_contactpersoon c WHERE c.prs_contactpersoon_key = i.ins_alg_ruimte_key) prs_bedrijf_key" // bedrijf key + ", 0 dummy1" // department key + ", c.prs_contactpersoon_naam eigenaar" + ", i.ins_alg_ruimte_key alg_ruimte_key" // person key + ", NULL prs_afdeling_key" // department key + (params.inspect ? ", ispn.ins_srtcontrole_type" // Controle type : "") + (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "") + sqlOwner_from + ", prs_contactpersoon c" + ", prs_bedrijf b" + ", " + sqlKenmerkBewerkbaar_from + (koppel_key? ", ins_deelkoppeling idk" : "") + sqlOwner_where + sqlKenmerkBewerkbaar_where + " AND i.ins_alg_ruimte_key = c.prs_contactpersoon_key" + " AND c.prs_bedrijf_key = b.prs_bedrijf_key" + " AND i.ins_alg_ruimte_type = 'C'"; } if (!hasOwner) { // Owner filter would imply only owned objects sqlPosition = (terr_key ? "SELECT t.alg_terreinsector_omschrijving" : "SELECT o.alg_plaatsaanduiding" + " || DECODE(o.alg_plaatsomschrijving, '','' ,' (' || o.alg_plaatsomschrijving || ')')" ) + " plaats" + ", s.ins_srtdeel_code" + ", " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " soort" + ", i.ins_deel_omschrijving" + ", i.ins_deel_opmerking" + ", i.ins_deel_key" + ", s.ins_srtdeel_key" + ", s.ins_srtdeel_upper" + ", i.ins_deel_getekend" + ", i.ins_discipline_key" + ", i.ins_alg_ruimte_type" + ", l.alg_district_key" + ", i.ins_deel_x" // is coordinaat bekend? + ", i.ins_deel_dwgx" // is dwg coordinaat bekend? + ", ins_srtgroep_key" // filtering only + ", ins_deel_upper" // filtering only + ", s.ins_srtdeel_uitleenbaar" + ", i.ins_alg_ruimte_key_org" + ", i.ins_alg_ruimte_type_org" + ", " + sqlLentOutFrom + " uitgegeven_vanuit" + ", " + sqlInspectie_select + ", rd.res_deel_key" + ", rd.res_deel_opmerking" + ", i.ins_deel_vervaldatum" + sqlKenmerkBewerkbaar_select + ", null prs_bedrijf_key" + ", null prs_afdeling_key1" + ", null eigenaar" + ", i.ins_alg_ruimte_key alg_ruimte_key" + ", 0 dummy1" // department key + (params.inspect ? ", ispn.ins_srtcontrole_type" // Controle type : "") + (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "") + " FROM ins_deel i" + (terr_key ? ", alg_terreinsector t" : ", ins_v_alg_overzicht o") + ", ins_srtdeel s" + sqlInspectie_from + ", alg_locatie l" + ", " + sqlKenmerkBewerkbaar_from + (koppel_key? ", ins_deelkoppeling idk" : "") + ", alg_district di" // I added this for alg_district_key (FSN#1082) + ", (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 i.ins_deel_verwijder IS NULL" + " AND i.ins_deel_module = 'INS'" + " AND i.ins_deel_key = rd.res_ins_deel_key(+)" + " AND s.ins_srtgroep_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")" + sql_objincl + sqlInspectie_where + sqlKenmerkBewerkbaar_where + (terr_key ? " AND t.alg_terreinsector_key = i.ins_alg_ruimte_key" + " AND i.ins_alg_ruimte_type = 'T'" + " AND t.alg_locatie_key = l.alg_locatie_key" : " AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key" + " AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type" + " AND i.ins_alg_ruimte_type IN ('T','R','W')" + " AND o.alg_locatie_key = i.ins_alg_locatie_key" + " AND i.ins_alg_locatie_key = l.alg_locatie_key" ) + " AND l.alg_district_key = di.alg_district_key" + " AND s.ins_srtdeel_key = i.ins_srtdeel_key" + (fronto ? " AND s.ins_srtdeel_uitleenbaar = 1" : "") + ((insLentOut && !insAvail) ? " AND i.ins_alg_ruimte_key_org IS NOT NULL" : (!insLentOut && insAvail) ? " AND i.ins_alg_ruimte_key_org IS NULL" : ""); if (!ins_key_arr && !parent_key && !koppel_key) { if (wpl_key) sqlPosition += " AND o.prs_werkplek_key =" + wpl_key; else if (room_key_arr) //sqlPosition += " AND i.ins_alg_ruimte_key IN (" + room_key_arr.join(",") + ")"; sqlPosition += " AND ((i.ins_alg_ruimte_key IN (" + room_key_arr.join(",") + ") AND i.ins_alg_ruimte_type='R')" + " OR (i.ins_alg_ruimte_key IN (SELECT prs_werkplek_key FROM prs_werkplek WHERE prs_alg_ruimte_key IN (" + room_key_arr.join(",") + ")) AND i.ins_alg_ruimte_type='W'))"; else if (room_key) sqlPosition += " AND ((i.ins_alg_ruimte_key = " + room_key + " AND i.ins_alg_ruimte_type='R') " + " OR (i.ins_alg_ruimte_key IN (SELECT prs_werkplek_key FROM prs_werkplek WHERE prs_alg_ruimte_key=" + room_key + ") AND i.ins_alg_ruimte_type='W'))"; else if (flr_key) sqlPosition += " AND o.alg_verdieping_key = " + flr_key; else if (terr_key) sqlPosition += " AND i.ins_alg_ruimte_key IN (" + terr_key + ")"; else if (bld_key) sqlPosition += " AND o.alg_gebouw_key = " + bld_key; else if (loc_key) sqlPosition += (terr_key ? " AND t.alg_locatie_key" : " AND i.ins_alg_locatie_key") + " = " + loc_key; else if (dist_key) sqlPosition += " AND di.alg_district_key = " + dist_key; else if (reg_key) sqlPosition += " AND di.alg_regio_key = " + reg_key; else if (!terr_key && fgraph) sqlPosition += " AND i.ins_alg_ruimte_key = -1"; // geen terreinen bij fgraph => geen objecten om te laten zien } } if (ins_key_arr) { sqlPosition += " AND i.ins_deel_key IN (" + ins_key_arr.join(",") + ")"; } else if (parent_key) { sqlPosition += " AND i.ins_deel_parent_key IN (" + parent_key + ")"; } else if (koppel_key) { sqlPosition += " AND idk.ins_deelkoppeling_verwijder IS NULL" + " AND (( i.ins_deel_key = idk.ins_deelkoppeling_naar_key" + " AND idk.ins_deelkoppeling_van_key=" + koppel_key + " )" + " OR ( i.ins_deel_key = idk.ins_deelkoppeling_van_key" + " AND idk.ins_deelkoppeling_naar_key=" + koppel_key + "))"; } // And some more conditions that apply for both modes: var sql_ex = ""; if (mld_key) sql_ex += " AND i.ins_deel_key IN (SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_key="+mld_key+")"; if (objsrt_key) sql_ex += " AND s.ins_srtdeel_key IN (" + objsrt_key.join(",") + ")"; else if (insgroup_key) sql_ex += " AND ins_srtgroep_key = " + insgroup_key; else if (disc_key) sql_ex += " AND ins_discipline_key IN (" + disc_key + ")"; if (beh_key) sql_ex += " AND prs_perslid_key_beh =" + beh_key; if (deel) sql_ex += " AND ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%"); if (deel_opm) sql_ex += " AND UPPER(ins_deel_opmerking) LIKE " + safe.quoted_sql_wild("%" + deel_opm + "%"); if (objsrt_oms) sql_ex += " AND ( (ins_srtdeel_upper LIKE " + safe.quoted_sql_wild("%" + objsrt_oms + "%") + ")" + " OR (ins_srtdeel_code_upper LIKE " + safe.quoted_sql_wild("%" + objsrt_oms + "%") + "))"; if (groep) sql_ex += " AND UPPER(groepoms) LIKE " + "UPPER((SELECT ins_srtcontroledl_xcp_groep" + " FROM ins_srtcontroledl_xcp" + " WHERE ins_srtcontroledl_xcp_key = " + groep + "))"; if (params.inspect && controletype > -1) sql_ex += " AND ispn.ins_srtcontrole_type = " + controletype; // Nu filtercondities voor flexkenmerken toevoegen sql_ex += getKenmerkSql("INS", "i.ins_deel_key"); if (sqlPosition != '') sqlPosition += sql_ex; if (sqlPosition != "") { // we must consider this: if we know that a room is defined (by filter), we must be // able to improve performance by using that condition, mustn't we? // furthermore: it's better to let Oracle Prepare sqlPosition = discx3d (sqlPosition, "i.ins_discipline_key", "di.alg_regio_key", "l.alg_district_key", "l.alg_locatie_key", "o.alg_gebouw_key", "o.alg_verdieping_key", "o.alg_ruimte_key", "", // b.prs_bedrijf_key: not used because algprs == 0 "", // d.prs_afdeling_key: not used because algprs == 0 pautfunction, (disc_key? disc_key : ''), 0); // AKZA#430/PF, AKZA#496/MGE } if (sqlOwnerA != "" && sqlOwnerP != "" && sqlOwnerCP != "") { sqlOwnerA = discx3d (sqlOwnerA, "ins_discipline_key", "", // di.alg_regio_key: not used because algprs == 0 "", // l.alg_district_key: not used because algprs == 0 "", // o.alg_locatie_key: not used because algprs == 0 "", // o.alg_gebouw_key: not used because algprs == 0 "", // o.alg_verdieping_key: not used because algprs == 0 "", // o.alg_ruimte_key: not used because algprs == 0 "b.prs_bedrijf_key", "d.prs_afdeling_key", pautfunction, (disc_key? disc_key : ''), 1); // AKZA#430/PF, AKZA#496/MGE sqlOwnerP = discx3d (sqlOwnerP, "ins_discipline_key", "", // di.alg_regio_key: not used because algprs == 0 "", // l.alg_district_key: not used because algprs == 0 "", // o.alg_locatie_key: not used because algprs == 0 "", // o.alg_gebouw_key: not used because algprs == 0 "", // o.alg_verdieping_key: not used because algprs == 0 "", // o.alg_ruimte_key: not used because algprs == 0 "b.prs_bedrijf_key", "d.prs_afdeling_key", pautfunction, (disc_key? disc_key : ''), 1); // AKZA#430/PF, AKZA#496/MGE // Geen autorisatie bij externe bedrijven (prs_bedrijf) sqlOwner = sqlOwnerA + sql_ex + " UNION " + sqlOwnerP + sql_ex + " UNION " + sqlOwnerCP + sql_ex; // Now apply user filtering on this query: if (persoon_key) { sqlOwner = "SELECT * FROM (" + sqlOwner + ") x WHERE x.alg_ruimte_key = " + persoon_key; } else if (cpersoon_key) { sqlOwner = "SELECT * FROM (" + sqlOwner + ") x WHERE x.alg_ruimte_key = " + cpersoon_key; } else if (dep_key) { sqlOwner = "SELECT * FROM (" + sqlOwner + ") x WHERE x.prs_afdeling_key = " + dep_key; } else if (comp_key) { sqlOwner = "SELECT * FROM (" + sqlOwner + ") x WHERE x.prs_bedrijf_key = " + comp_key; } } sql = (sqlOwner != "" ? sqlOwner + (sqlPosition != ""? " UNION ALL " : "") : "") + sqlPosition; if (params.inspect) { sql += " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > SYSDATE)"; // drie vinkjes 111 is 'te laat', 'binnenkort', 'nog niet' // Let op: Als de "Binnenkort" datums worden veranderd, wordt de tijd aangepast in begin van de dag (00:00). // Als de inspsoonfrom tijd vandaag is moet ook de huidige tijd mee worden genomen. Ander niet. var inspsoonfrom_is_today = false; var dtsoonfrom = new Date(); if (inspsoonfrom) { // Als de inspsoonfrom tijd vandaag is moet ook de huidige tijd mee worden genomen. Ander niet. // Als de inspsoon tijden worden veranderd wordt de tijd begin van de dag (00:00). inspsoonfrom_is_today = (inspsoonfrom.midnight().getTime() == new Date().midnight().getTime()); if (inspsoonfrom_is_today) { // De inspsoonfrom is vandaag. De huidige tijd meenemen. var time = new Date().getTime() - new Date().midnight().getTime(); dtsoonfrom = new Date(inspsoonfrom.midnight().getTime() + time); } else // De inspsoonfrom is NIET vandaag. De tijd wordt begin van de dag (00:00). dtsoonfrom = new Date(inspsoonfrom.midnight().getTime()); } else inspsoonfrom_is_today = true; var dtsoonto = new Date(); dtsoonto.setDate(dtsoonto.getDate() + S("ins_inspect_soon_days")); if (inspsoonto) { if (inspsoonfrom_is_today) { // De inspsoonfrom is vandaag. Ook voor de tot datum de huidige tijd meenemen. var time = new Date().getTime() - new Date().midnight().getTime(); dtsoonto = new Date(inspsoonto.midnight().getTime() + time); } else // De inspsoonfrom is NIET vandaag. De tijd wordt eind van de dag (23:59). dtsoonto = new Date(inspsoonto.setHours(23, 59, 59)); } else { if (!inspsoonfrom_is_today) dtsoonto = new Date(dtsoonto.setHours(23, 59, 59)); } if (params.inspLate && params.inspSoon && params.inspFutu) // 111 alles sql = "SELECT * FROM (" + sql + ") x WHERE 1=1 "; // sql = sql; else if (params.inspLate && params.inspSoon && !params.inspFutu) // 110 late + soon sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next < " + dtsoonto.toSQL(); else if (params.inspLate && !params.inspSoon && params.inspFutu) // 101 te laat of voorlopig niet. Beetje onzinnig sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next NOT BETWEEN " + dtsoonfrom.toSQL() + " AND " + dtsoonto.toSQL() ; else if (params.inspLate && !params.inspSoon && !params.inspFutu) // 100 alleen late sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next <= "+dtsoonfrom.toSQL() + "-1"; else if (params.inspSoon && params.inspFutu) // 011 binnenkort en later sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next >= "+dtsoonfrom.toSQL(); // 011 else if (params.inspSoon && !params.inspFutu) // 010 binnenkort sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next BETWEEN " + dtsoonfrom.toSQL() + " AND " + dtsoonto.toSQL() + "-1"; else if (params.inspFutu) // 001 Later sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next >= " + dtsoonto.toSQL(); else if (params.inspDone) sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_date BETWEEN " + donedatefrom.beginToSQL() + " AND " + donedateto.endToSQL(); // else geen enkel vinkje-->alles tonen else sql = "SELECT * FROM (" + sql + ") x WHERE 1=1 "; if (params.cnt_bedrijf_key > 0) // alleen bedrijven met een (onderhouds)contract op deze soorten { // Scope srtcontract_type = 3 (Ondersteuning/Support): Onderhoud op objectsoorten en/of plaats. // Scope op de plaats is een verfijning van de scope op de gehele objectsoort. // Scope op objectsoorten sql += " AND ((((SELECT COUNT(*)" + " FROM cnt_contract_object co" + " , cnt_contract c" + " WHERE co.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND c.cnt_contract_status IN (0, 1)" // Alleen actieve en gesloten contracten + " AND cnt_contract_object_verwijder IS NULL) = 0" // Er zijn geen objectsoorten gedefinieerd + " OR" + " x.ins_srtdeel_key IN (SELECT cnt_ins_srtdeel_key" + " FROM cnt_contract_object co" + " , cnt_contract c" + " WHERE c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_contract_object_verwijder IS NULL" + " AND co.cnt_ins_deel_key IS NULL" + " AND c.cnt_contract_status IN (0, 1)" + " )" + " )" // Scope op plaats + " AND ((SELECT COUNT(*)" + " FROM cnt_contract_plaats cp" + " , cnt_contract c" + " WHERE cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND c.cnt_contract_status IN (0, 1)" + " AND cnt_contract_plaats_verwijder IS NULL) = 0" // Er zijn geen plaatsen gedefinieerd + " OR" + " ins_deel_key IN (SELECT d.ins_deel_key" // Delen die gekoppeld zijn aan een ruimte + " FROM ins_deel d" + " , alg_v_onrgoed_boom ogb" + " WHERE d.ins_alg_ruimte_key = ogb.alg_ruimte_key" + " AND d.ins_alg_ruimte_type = 'R'" + " AND ogb.alg_gebouw_key IN (SELECT DISTINCT g.alg_gebouw_key" // Alle gebouwen van de locaties in de scope + " FROM cnt_contract_plaats cp" + " , alg_gebouw g" + " , cnt_contract c" + " WHERE g.alg_locatie_key = cp.cnt_alg_plaats_key" + " AND cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'L'" + " AND c.cnt_contract_status IN (0, 1)" + " UNION" + " SELECT DISTINCT cp.cnt_alg_plaats_key" // Alle gebouwen van de gebouwen in de scope + " FROM cnt_contract_plaats cp" + " , cnt_contract c" + " WHERE cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'G'" + " AND c.cnt_contract_status IN (0, 1)" + " )" + " UNION" + " SELECT d.ins_deel_key" // Delen die gekoppeld zijn aan een werkplek + " FROM ins_deel d" + " , prs_werkplek w" + " , alg_v_onrgoed_boom ogb" + " WHERE d.ins_alg_ruimte_key = w.prs_werkplek_key" + " AND w.prs_alg_ruimte_key = ogb.alg_ruimte_key" + " AND d.ins_alg_ruimte_type = 'W'" + " AND ogb.alg_gebouw_key IN (SELECT DISTINCT g.alg_gebouw_key" // Alle gebouwen van de locaties in de scope + " FROM cnt_contract_plaats cp" + " , alg_gebouw g" + " , cnt_contract c" + " WHERE g.alg_locatie_key = cp.cnt_alg_plaats_key" + " AND cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'L'" + " AND c.cnt_contract_status IN (0, 1)" + " UNION" + " SELECT DISTINCT cp.cnt_alg_plaats_key" // Alle gebouwen van de gebouwen in de scope + " FROM cnt_contract_plaats cp" + " , cnt_contract c" + " WHERE cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'G'" + " AND c.cnt_contract_status IN (0, 1)" + " )" + " )" + " )" // Objecten mogen niet individueel in contractscope zitten van een ander bedrijf + " AND ins_deel_key NOT IN (SELECT co.cnt_ins_deel_key" + " FROM cnt_contract_object co" + " , cnt_contract c" + " WHERE co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_deel_key IS NOT NULL" + " AND co.cnt_contract_object_verwijder IS NULL" + " AND c.cnt_prs_bedrijf_key != " + params.cnt_bedrijf_key + " AND c.cnt_contract_status IN (0, 1)" + " AND c.cnt_contract_looptijd_van <= SYSDATE" // Alleen actuele contracten + " AND SYSDATE <= c.cnt_contract_looptijd_tot)" // Objecten mogen ook niet qua objectsoort in contractscope zitten van een ander bedrijf + " AND ins_deel_key NOT IN (SELECT d1.ins_deel_key" // Alle objecten via plaatsscope van andere bedrijven die ook dezelfde objectscope hebben (gekoppeld aan een ruimte) + " FROM ins_deel d1" + " , alg_v_onrgoed_boom ogb" + " WHERE d1.ins_alg_ruimte_key = ogb.alg_ruimte_key" + " AND d1.ins_alg_ruimte_type = 'R'" // gekoppeld aan een ruimte + " AND x.ins_srtdeel_key = d1.ins_srtdeel_key" + " AND ogb.alg_gebouw_key IN (SELECT DISTINCT g.alg_gebouw_key" // Alle gebouwen via plaatsscope van andere bedrijven die ook dezelfde objectscope hebben + " FROM cnt_contract_plaats cp" + " , alg_gebouw g" + " , cnt_contract c" + " , cnt_contract_object co" + " WHERE g.alg_locatie_key = cp.cnt_alg_plaats_key" + " AND cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key != " + params.cnt_bedrijf_key + " AND c.cnt_contract_looptijd_van <= SYSDATE" // Alleen actuele contracten + " AND SYSDATE <= c.cnt_contract_looptijd_tot" + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'L'" + " AND co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_srtdeel_key = d1.ins_srtdeel_key" + " AND c.cnt_contract_status IN (0, 1)" + " UNION" + " SELECT DISTINCT cp.cnt_alg_plaats_key" + " FROM cnt_contract_plaats cp" + " , cnt_contract c" + " , cnt_contract_object co" + " WHERE cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key != " + params.cnt_bedrijf_key + " AND c.cnt_contract_looptijd_van <= SYSDATE" // Alleen actuele contracten + " AND SYSDATE <= c.cnt_contract_looptijd_tot" + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'G'" + " AND co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_srtdeel_key = d1.ins_srtdeel_key" + " AND c.cnt_contract_status IN (0, 1))" + " UNION" + " SELECT d1.ins_deel_key" // Alle objecten via plaatsscope van andere bedrijven die ook dezelfde objectscope hebben (gekoppeld aan een werkplek) + " FROM ins_deel d1" + " , prs_werkplek w" + " , alg_v_onrgoed_boom ogb" + " WHERE d1.ins_alg_ruimte_key = w.prs_werkplek_key" + " AND w.prs_alg_ruimte_key = ogb.alg_ruimte_key" + " AND d1.ins_alg_ruimte_type = 'W'" // gekoppeld aan een werkplek + " AND ogb.alg_gebouw_key IN (SELECT DISTINCT g.alg_gebouw_key" // Alle gebouwen via plaatsscope van andere bedrijven die ook dezelfde objectscope hebben + " FROM cnt_contract_plaats cp" + " , alg_gebouw g" + " , cnt_contract c" + " , cnt_contract_object co" + " WHERE g.alg_locatie_key = cp.cnt_alg_plaats_key" + " AND cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key != " + params.cnt_bedrijf_key + " AND c.cnt_contract_looptijd_van <= SYSDATE" // Alleen actuele contracten + " AND SYSDATE <= c.cnt_contract_looptijd_tot" + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'L'" + " AND co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_srtdeel_key = d1.ins_srtdeel_key" + " AND c.cnt_contract_status IN (0, 1)" + " UNION" + " SELECT DISTINCT cp.cnt_alg_plaats_key" + " FROM cnt_contract_plaats cp" + " , cnt_contract c" + " , cnt_contract_object co" + " WHERE cp.cnt_contract_key = c.cnt_contract_key" + " AND c.cnt_prs_bedrijf_key != " + params.cnt_bedrijf_key + " AND c.cnt_contract_looptijd_van <= SYSDATE" // Alleen actuele contracten + " AND SYSDATE <= c.cnt_contract_looptijd_tot" + " AND cnt_contract_plaats_verwijder IS NULL" + " AND cp.cnt_alg_plaats_code = 'G'" + " AND co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_srtdeel_key = d1.ins_srtdeel_key" + " AND c.cnt_contract_status IN (0, 1))" + " )" + " )" // Scope srtcontract_type = 1 (Onderhoud/Maintenance): Onderhoud op objecten. // Scope op de objecten. sql += " OR ins_deel_key IN (SELECT co.cnt_ins_deel_key" + " FROM cnt_contract_object co" + " , cnt_contract c" + " WHERE co.cnt_contract_key = c.cnt_contract_key" + " AND co.cnt_ins_deel_key IS NOT NULL" + " AND co.cnt_contract_object_verwijder IS NULL" + " AND c.cnt_prs_bedrijf_key = " + params.cnt_bedrijf_key + " AND c.cnt_contract_status IN (0, 1)" + " )" + " )"; } } sql = "SELECT * FROM (" + sql + ") XX ORDER BY" + (koppel_key?" case when xx.ins_deel_key = ins_deelkoppeling_van_key THEN 1 ELSE 0 END,":"") + (outputmode == 2 // excel moet objecten met gelijke kenmerken bij elkaar hebben ? " ins_srtdeel_upper, plaats, soort, ins_deel_omschrijving" : " ins_deel_omschrijving, plaats, soort"); // ========== 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 = (params.inspect? oRs("ins_srtcontrole_key").value : -1); var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, insSrtControleKey: insSrtControleKey}; return JSON.stringify(data); } function fnrowClass(oRs) { if (params.inspDone) return ""; var dt = new Date(oRs("inspectie_next").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().setHours(0,0,0,0); if (dt >= dtsoon) return ""; // meer dan S("ins_inspect_soon_days") dagen in de toekomst if (dt >= dtlate) return "expired1"; // Binnenkort return "expired2"; // Te laat } 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 eInspect = false; var eUitstel = false; if (params.inspect && !params.inspDone) { // Als object is vervallen dan kun je niet meer inspecteren en uitstellen. var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight()); var nonext = ( (oRs("nonext").Value == 1) || (oRs("inspectie_eenheid").value == 0 ? new Date(oRs("inspectie_next").Value).setMinutes(0, 0, 0) <= new Date().setMinutes(0, 0, 0) : new Date(new Date(oRs("inspectie_next").Value).setHours(0, 0, 0, 0)).getTime() <= new Date().getTime() ) ); var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value); eInspect = !vervallen && nonext && this_ins.canInspect; eUitstel = !vervallen && !nonext; } var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit, eDetails: eDetails, eInspect: eInspect, eUitstel: eUitstel}; return data; } 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') place = oRs("eigenaar").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("eigenaar").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 = '' + (xyavailable? L("lcl_fg_gotomaps") : L("lcl_fg_gotofg")) + ''; } else { position = (xyavailable? "M" : "FG"); } } else { if (outputmode == 0) { position = '' + L("lcl_fg_gotofg") + ''; } } 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 ) { res= ""; } return res; } function fnUitleenbaar(oRs) { var res = ""; if ( oRs("ins_srtdeel_uitleenbaar").value==1 ) { res = L("lcl_obj_uitleensrtdeel"); } 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 nonext = oRs("nonext").Value == 1 if (nonext) { switch (oRs("ins_srtcontrole_type").Value) { case 1: { var txt = L("lcl_ins_controle_first"); break; } // Eerste controle. case 2: case 3: { var dt = new Date(oRs("inspectie_next").Value); // Registratiedatum. var txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt)); break; } // Eerste certificering. } return txt; } var inspectie = (params.inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value) var dt = new Date(inspectie); var inspectie_eenheid = oRs("inspectie_eenheid").Value; if (inspectie_eenheid == 0) var dttxt = toDateTimeString(inspectie); else var dttxt = toDateString(inspectie); return dttxt; } function fnSrtControleType(oRs) { var txt = ""; switch (oRs("ins_srtcontrole_type").Value) { case 1: { txt = L("lcl_ins_srtcontrole_insp"); break; } // Controle. case 2: { txt = L("lcl_ins_srtcontrole_repl"); break; } // Vervanging. case 3: { txt = L("lcl_ins_srtcontrole_cert"); break; } // Certificering. } return txt; } 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"], { 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: "plus.png", title: L("lcl_add"), action: "insCheckOutNewItem(" + (cpersoon_key > 0? cpersoon_key + ", 'C'" : persoon_key + ", 'P'") + ")" }] } /*************************************************** * 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: params.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") : 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 (params.inspect && controletype == -1) rst.addColumn(new Column({caption: L("lcl_ins_srtcontrole_type"), content: fnSrtControleType})); 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"})); } if (koppel_key) rst.addColumn(new Column({caption: L("lcl_obj_koppeloms"), content: "ins_deelkoppeling_omschrijving"})); if (params.inspect) { rst.addColumn(new Column({caption: (params.inspDone? L("lcl_ins_controle_datum") : L("lcl_ins_controle_next")), content: fnInspectie})); 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: "eigenaar", combine: true})); } rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "soort"})); if (!parent_key && !koppel_key && !params.inspect) { if (!fgraph && !embedded) rst.addColumn(new Column({caption: L("lcl_fg_gotofgheader"), content: fnPosition, align:"center"})); if (!embedded && ErisReserveerbaar && !params.inspect) rst.addColumn(new Column({caption: L("lcl_obj_reserveerbaar"), content: fnReserveerbaar, align:"center"})); if (!embedded && ErisUitleenbaar && !params.inspect) rst.addColumn(new Column({caption: L("lcl_obj_uitleensrtdeel"), content: fnUitleenbaar, align:"center"})); } } // 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 (params.inspect) { rst.addAction({ action: "insInspect", caption: L("lcl_ins_controle"), multi: !tiny, multiOnce: true, enabler: "eInspect" }); rst.addAction({ action: "insInspect", caption: L("lcl_ins_uitstellen"), multi: !tiny, multiOnce: true, enabler: "eUitstel" }); } 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(); } %> <% } %>