Files
Facilitor/APPL/CNT/cnt_search.asp
Erik Groener 4a71535539 BLST#72759 Multi-select bij selecteren gebouwen
svn path=/Website/trunk/; revision=57738
2022-10-25 07:14:14 +00:00

510 lines
26 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: cnt_search.asp
Description: Filterscherm voor overzicht contracten
Parameters: urole Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
cnt_persoon_key Naam (contractpartij)
comp_key Uitvoerder
dep_key Afdeling / Eigenaar
prs_eig_key Eigenaar
prs_beh_key Beheerder
cnt_key Contractnummer
descript Beschrijving
loc_key Locatie
bld_key Gebouw
srtdeel Objectsoort
disc Contractsoort / discipline
mantel Mantel
cntAct Status Actief(0)
cntInact Status Inactief(1)
cntNew Status Nieuw(2)
cntTgoe Status Ter goedkeuring(3)
cntFFutu Fase Toekomstig binnen status actief
cntFAct Fase Actueel binnen status actief
cntFRap Fase Rappel binnen status actief
cntFOpz Fase In opzegtermijn binnen status actief
cntFVerl Fase Verlopen binnen status actief
Globals:
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/bedrijfselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/kostensoortselector.inc" -->
<!-- #include file="../Shared/dienstselector.inc" -->
<!-- #include file="../Shared/xd.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"] });
/***** Get webform parameters *****/
var urole = getQParamSafe("urole", "bo");
var fronto = (urole == "fo"); // unused
var backo = (urole == "bo");
var minfo = (urole == "mi"); // unused
var frontend = (urole == "fe" || (!fronto && !backo && !minfo));
//var adv_enabled = getQParam("adv_enabled", 0) == 1;
var cnt_persoon_key = getQParamInt("cnt_persoon_key", -1); // Naam (contractpartij)
var cnt_persoon_omschr = getQParam("cnt_persoon_omschr", ""); // Naam (contractpartij) omschrijving
var comp_key = getQParamInt("comp_key", -1); // Uitvoerder
var comp_omschr = getQParam("comp_omschr", ""); // Uitvoerder omschrijving
var dep_key = getQParamInt("dep_key", -1); // Afdeling / Eigenaar
var prs_eig_key = getQParamInt("prs_eig_key", -1); // Eigenaar
var prs_beh_key = getQParamInt("prs_beh_key", -1); // Beheerder
var cnt_num = getQParam("cnt_key", ""); // Contractnummer (zoekveld, unsafe)
var descript = getQParam("descript", ""); // Beschrijving
var reg_key = getQParamInt("regio_key", -1); // Regio
var dist_key = getQParamInt("district_key", -1);
var loc_key = getQParamInt("locatie_key", -1); // Locatie
var bld_key = getQParamInt("gebouw_key", -1); // Gebouw
var flr_key = getQParamInt("verdieping_key", -1);
var room_key = getQParamInt("ruimte_key", -1);
var loc_omschr = getQParam("loc_omschr", ""); // Locatie omschrijving
var srtdeel = getQParamInt("srtdeel", -1); // Objectsoort
var disc = getQParamInt("disc", -1); // Contractsoort / discipline
var disc_omschr = getQParam("disc_omschr", ""); // Contractsoort / discipline omschrijving
var mantel = getQParamInt("mantel", -1); // Mantel
var kp_key = getQParamInt("kp_key", -1); // Kostenplaats
var ks_key = getQParamInt("ks_key", -1); // Kostensoort
var alg_startlevel = getQParamInt("alg_startlevel", 2); // Startlevel van plaatsselector (Locatie)
var autosearch = getQParamInt("autosearch", 0) == 1; // Direct lijst tonen
var cntAct = getQParamInt("cntAct", 0) == 1; // Status Actief(0)
var cntInact = getQParamInt("cntInact", 0) == 1; // Status Inactief(1)
var cntNew = getQParamInt("cntNew", 0) == 1; // Status Nieuw(2)
var cntTgoe = getQParamInt("cntTgoe", 0) == 1; // Status Ter goedkeuring(3)
var cntFFutu = getQParamInt("cntFFuto", 0) == 1; // Fase toekomstig binnen status actief
var cntFAct = getQParamInt("cntFAct", 0) == 1; // Fase actueel binnen status actief
var cntFRap = getQParamInt("cntFRap", 0) == 1; // Fase rappel binnen status actief
var cntFOpz = getQParamInt("cntFOpz", 0) == 1; // Fase in opzegtermijn binnen status actief
var cntFVerl = getQParamInt("cntFVerl", 0) == 1; // Fase verlopen binnen status actief
if (!cntNew && !cntTgoe && !cntAct && !cntInact)
{
cntAct = true; // standard checked
if (!cntFFutu && !cntFAct && !cntFRap && !cntFOpz)
{
cntFFutu = true; // standard checked
cntFAct = true; // standard checked
cntFRap = true; // standard checked
cntFOpz = true; // standard checked
}
}
var search = getQParamInt("search", 0) == 1;
/***** End get webform parameters *****/
var autfunction = "";
switch(urole)
{
case "fe": autfunction = "WEB_CNTUSE";
break;
case "bo": autfunction = "WEB_CNTMAN";
break;
}
// Als je geheel geen CNTUSE <20>n geen CNTMAN heb mag je later uiteindelijk nog
// wel de contracten zien waarvan je beheerder/eigenaar bent. Je listboxen en
// dergelijke in het zoek-scherm zullen wel leeg blijven bij gebrek aan scope
var authparams = user.checkAutorisation(autfunction, true) || {};
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
<% if (xd.enabled()) {%>
function xdclicked()
{
var doxd = document.getElementById("xd").checked;
$(".noxd").toggle(!doxd);
$(".onlyxd").toggleClass('hidden', !doxd);
iface_toggleSecondarySearchblock(false); // altijd uitschakelen
}
<% } %>
function doSubmit()
{
<% if (xd.enabled()) { %>
if ($("#xd").is(":checked"))
{
$("form[name=u2]").attr("action", "cnt_search_list_xd.asp");
} else {
$("form[name=u2]").attr("action", "cnt_search_list.asp");
}
<% } %>
<% if (backo)
{ %>
doSubmitWithKenmerken();
<% }
else
{ %>
document.forms.u2.submit();
<% } %>
}
<% if (backo)
{ %>
function myModal(init)
{
var key = $('#disc').val();
var url = "load_kenmerk.asp?disc=" + $('#disc').val()
+ "&advanced=1"
+ "&hasFilter=1";
var titel = L("lcl_cnt_kenmerken");
showKenmerkModal(url, titel, init)
}
<% } %>
function onChangedKostensrtgrp()
{
//sgKs.setValue($("#ks_key").val(), $("#ks_key_show").val(), true, true, null, true);
// Regel hierboven werkt niet goed omdat CheckExist een get call veroorzaakt om te kijken of waarde bestaat.
// In de tussentijd verstoort CheckJustOne dit process met een $.getJSON()
// Dus gewoon Kostensoort leegmaken
sgKs.setValue(-1, "", true, false, null, true);
sgKs.CheckJustOne();
}
<% if (autosearch)
{ %>
window.afterfiltersready = function () { doSubmit() };
<% } %>
</script>
</head>
<% /* TODO: flexkenmerk filtervelden meegeven tijdens submit */ %>
<body id="searchbody" onLoad="if (<%=search? 1 : 0%> == 1) document.forms.u2.submit();">
<form name="u2" target="workFrame" action="cnt_search_list.asp" method="post">
<% SEARCH_PAGE_START({ header: L("lcl_filterblok") });
SEARCH_BLOCK_START();
%>
<input type="hidden" name="urole" value="<%=urole%>">
<%
if (xd.enabled())
RWCHECKBOXTR("xd", "fldxd", L("lcl_xd_crossdomain"), false, {html: "onclick='xdclicked()'"});
%>
<!-- Contractnummer -->
<tr class="primsearch">
<td class="label"><label for="cntnum"><%=L("lcl_cnt_intern_nr")%></label></td>
<td><input type="text" class="fldshort" name="cntnum" value="<%=safe.htmlattr(cnt_num)%>"></td>
</tr>
<% // <!-- Catalogus -->
sql = "SELECT d.ins_discipline_key, "
+ lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
+ " FROM cnt_discipline d"
+ " , cnt_disc_params cp"
+ " WHERE d.ins_discipline_key = cp.cnt_ins_discipline_key"
+ " AND d.ins_discipline_verwijder IS NULL"
+ " AND d.ins_discipline_key IN"
+ " (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" // prs en alg read rechten
+ " AND g.prs_perslid_key = " + user_key + ")"
+ " UNION"
+ " SELECT d.ins_discipline_key, "
+ lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
+ " FROM cnt_contract c, cnt_discipline d, cnt_disc_params cp"
+ " WHERE cnt_contract_verwijder IS NULL"
+ " AND d.ins_discipline_verwijder IS NULL"
+ " AND c.ins_discipline_key = d.ins_discipline_key"
+ " AND d.ins_discipline_key = cp.cnt_ins_discipline_key"
+ " AND c.prs_perslid_key_eig = " + user_key
+ " ORDER BY 2";
FCLTselector("disc",
sql,
{ initKey: disc,
label: L("lcl_cnt_srttype"),
//extraParamValue: "ex_value", // Wordt volgens mij niet gebruikt dus niet nodig.
trclass:"primsearch noxd",
multi: true,
emptyOption: "",
initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
});
RWFIELDTR("disc_omschr", "fld wildcardr", L("lcl_cnt_srttype"), safe.htmlattr(disc_omschr), { trclass: "onlyxd hidden", datatype: "text" });
%>
<!-- Beschrijving -->
<tr class="primsearch">
<td class="label"><label for="descript"><%=L("lcl_cnt_beschrijv")%></label></td>
<td><input type="text" class="fld wildcard" id="descript" name="descript" value="<%=safe.htmlattr(descript)%>"></td>
</tr>
<%
// Fast check to see if we have anything to do with geographics
// If not, we can suppress a few filters.
sql= "SELECT 1 FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL AND ROWNUM = 1"
+ " UNION SELECT 2 FROM cnt_contract_object WHERE cnt_contract_object_verwijder IS NULL AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anygeo = !oRs.eof;
oRs.close();
if (anygeo)
{
<!-- Locatie, gebouw/terrein, verdieping en ruimte -->
FCLTplaatsselector(authparams.ALGreadlevel, { regiokey: reg_key,
districtkey: dist_key,
locatiekey: loc_key,
gebouwkey: bld_key,
verdiepingkey: flr_key,
ruimtekey: room_key,
terrein: true,
multitoggle: 5,
startlevel: alg_startlevel,
eindlevel: 5, // Ruimte
secsearch: 3, // Location is primary
trclass: "noxd",
whenEmpty: L("lcl_search_generic"), // want filter
filtercode: "EXP"
});
RWFIELDTR("loc_omschr", "fld wildcardr", L("lcl_location"), safe.htmlattr(loc_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
}
FCLTkostenplaatsselector("kp_key",
"kp_key",
user_key,
{label: L("lcl_cnt_kostenplaats"),
kostenplaatsKey: kp_key,
filtercode: "C",
trclass: (anygeo ? "secsearch noxd" : "noxd"), // puur esthetisch, omdat de ruimte er is
whenEmpty: L("lcl_search_generic") // want filter
});
// Kostensoortgroep
sql_ksg = "SELECT ksg.prs_kostensoortgrp_key"
+ " , ksg.prs_kostensoortgrp_oms"
+ " FROM prs_kostensoortgrp ksg"
+ " ORDER BY ksg.prs_kostensoortgrp_oms"
FCLTselector("ksgrp_key",
sql_ksg,
{ initKey: -1,
label: L("lcl_cnt_kostensoortgroep"),
onChange: "onChangedKostensrtgrp()",
trclass: "secsearch noxd",
whenEmpty: L("lcl_search_generic"), // want filter
emptyOption: ""
});
if (S("cnt_enable_kostensoort") != 0)
FCLTkostensoortselector("ks_key",
"sgKs",
{label: L("lcl_cnt_kostensoort"),
kostensoortKey: ks_key,
trclass:"secsearch noxd",
urlAdd: [{urlParam: "ksgrp_key", field: "ksgrp_key"}],
whenEmpty: L("lcl_search_generic") // want filter
});
SEARCH_BLOCK_END();
SEARCH_BLOCK_START();
<!-- DIENST -->
FCLTdienstselector("dienst","dienst",
{ label: L("lcl_prs_companies_dienst"),
dienstKey : -1,
trclass:"primsearch noxd",
whenEmpty: L("lcl_search_generic")
});
RWFIELDTR("cnt_persoon_omschr", "fld wildcardr", L("lcl_cnt_name"), safe.htmlattr(cnt_persoon_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
// <!-- Bedrijfs-contractpartij -->
FCLTbedrijfselector("sComp_key", // company uitvoerder
"sgComp",
{ companyKey: comp_key,
label: L("lcl_cnt_contractant"),
filtercode: "C",
trclass: "primsearch noxd",
urlAdd: [{urlParam: "dienst", field: "dienst"}],
whenEmpty: L("lcl_search_generic") // want filter
});
RWFIELDTR("comp_omschr", "fld wildcardr", L("lcl_cnt_contractant"), safe.htmlattr(comp_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
// <!-- Persoons-contractpartij -->
FCLTpersoonselector("sName_key",
"sgPerson",
{ perslidKey: cnt_persoon_key,
label: L("lcl_person"),
filtercode: "CNTN",
trclass: "primsearch noxd",
autlevel: authparams.PRSreadlevel,
whenEmpty: L("lcl_search_generic") // want filter
});
// <!-- Eigenaar -->
FCLTafdelingselector("sDept_key", // eigenaar
"sgDept",
{ departmentKey: dep_key,
label: L("lcl_cnt_owner"), // Eigenaar, is eigenlijk afdeling: dep_name_level2
autlevel: authparams.PRSreadlevel,
trclass: "primsearch noxd",
filtercode: "CNT",
whenEmpty: L("lcl_search_generic") // want filter
});
if (prs_eig_key > 0)
{
%><input type='hidden' name='sCnt_owner_key' value='<%=prs_eig_key%>'><%
}
else
{
// <!-- Verantwoordelijk manager -->
FCLTpersoonselector("sCnt_owner_key", // verantwoordelijk manager
"sgCnt_owner",
{ //perslidKey: prs_eig_key,
label: L("lcl_cnt_contact_eig"),
filtercode: "CNTE",
trclass: "secsearch noxd",
autlevel: authparams.PRSreadlevel,
whenEmpty: L("lcl_search_generic") // want filter
});
}
if (prs_beh_key > 0)
{
%><input type='hidden' name='sBeh_key' value='<%=prs_beh_key%>'><%
}
else
{
// <!-- Beheerder -->
FCLTpersoonselector("sBeh_key", // manager
"sgBeh",
{ //perslidKey: prs_beh_key,
label: L("lcl_cnt_beheerder"),
filtercode: "CNT",
trclass: "secsearch noxd",
autlevel: authparams.PRSreadlevel,
whenEmpty: L("lcl_search_generic") // want filter
});
}
// <!-- Objectsoort -->
sql = "SELECT DISTINCT ins_srtdeel_key"
+ ", "+ lcl.xsqla('ins_srtdeel_omschrijving','s.ins_srtdeel_key') // || ' (' || ins_srtdeel_code" || ')'
+ ", ins_srtdeel_upper"
+ " FROM ins_v_aanwezigsrtdeel s"
+ ", cnt_contract_object co "
+ " WHERE co.cnt_ins_srtdeel_key = s.ins_srtdeel_key"
+ " ORDER BY 3";
FCLTselector("srtdeel",
sql,
{ initKey: srtdeel,
label: L("lcl_obj_sort"),
trclass:"secsearch noxd",
emptyOption: "",
initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
});
// <!-- Mantel -->
/* alleen die waar op dit moment (nog) actieve contracten bij zijn */
sql = "SELECT cnt_contract_key"
+ " , cnt_contract_nummer_intern ||DECODE(cnt_contract_versie, NULL, '', '.'||cnt_contract_versie ) ||' - ' || cnt_contract_omschrijving"
+ " , fac.safe_to_number(cnt_contract_nummer_intern)"
+ " , cnt_contract_versie"
+ " FROM cnt_v_aanwezigcontract c"
+ " , cnt_disc_params dp"
+ " , cnt_discipline d"
+ " WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key"
+ " AND d.ins_discipline_key = dp.cnt_ins_discipline_key"
+ " AND dp.cnt_srtcontract_type = 6" // mastercontracts
+ " AND d.ins_discipline_verwijder IS NULL"
+ " AND d.ins_discipline_key IN"
+ " (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ " , fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = 'WEB_CNTMAN'"
+ " AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" // prs en alg read rechten
+ " AND g.prs_perslid_key = " + user_key + ")"
+ " AND c.cnt_contract_status = 0" // actief
+ " AND EXISTS (SELECT 'x' FROM cnt_v_aanwezigcontract cc WHERE cc.cnt_contract_mantel_key = c.cnt_contract_key AND cc.cnt_contract_status != 1)"
+ " ORDER BY 3,4,2";
FCLTselector("mantel",
sql,
{ initKey: mantel,
label: L("lcl_cnt_mantel"),
trclass:"secsearch noxd",
emptyOption: "",
initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
});
if (0 && xd.enabled()) { // Future extension. Ik verwacht dergelijke functionaliteit in het algemeen voor XD, maar eerder nog bij meldingen en opdrachten tbv Behandelaar
%>
<tr>
<td class="label hidden xd"><label for="zelf"><%=L("lcl_cnt_mineonly")%></label></td>
<td>
<div class="statusboxes hidden xd">
<input type="checkbox" name="zelf" id="zelf" value="1"><label for="zelf"><%=L("lcl_yes")%></label>
</div>
</td></tr>
<% } %>
<!-- Status checkboxen -->
<tr>
<td class="label"><label><%=L("lcl_cnt_status")%></label></td>
<td>
<div class="statusboxes">
<input type="checkbox" name="cntAct" id="cntAct" value="1" <%=cntAct? "checked" : ""%>><label for="cntAct"><%=(S("cnt_contract_approval") == 1? L("lcl_cnt_active_approval") : L("lcl_cnt_active"))%></label>
<% if (S("cnt_contract_approval") == 1) {%>
<input type="checkbox" name="cntNew" id="cntNew" value="1" <%=cntNew? "checked" : ""%>><label for="cntNew"><%=L("lcl_cnt_new")%></label>
<input type="checkbox" name="cntTgoe" id="cntTgoe" value="1" <%=cntTgoe? "checked" : ""%>><label for="cntTgoe"><%=L("lcl_cnt_forapproval")%></label>
<% }%>
<input type="checkbox" name="cntInact" id="cntInact" value="1" <%=cntInact? "checked" : ""%>><label for="cntInact"><%=L("lcl_cnt_inactive")%></label>
</div>
</td>
</tr>
</tr>
<%
SEARCH_BLOCK_END();
SEARCH_BLOCK_START({wide: true});
%>
<tr class="noxd">
<td colspan="2">
<div id="statusboxes">
<label for="cntFFutu"><%=L("lcl_cnt_fase_actief")%></label>
<input type="checkbox" name="cntFFutu" id="cntFFutu" value="1" <%=cntFFutu? "checked" : ""%>><label for="cntFFutu"><%=L("lcl_cnt_future")%></label>
<input type="checkbox" name="cntFAct" id="cntFAct" value="1" <%=cntFAct? "checked" : ""%>><label for="cntFAct"><%=L("lcl_cnt_topical")%></label>
<input type="checkbox" name="cntFRap" id="cntFRap" value="1" <%=cntFRap? "checked" : ""%>><label for="cntFRap"><%=L("lcl_cnt_warn")%></label>
<input type="checkbox" name="cntFOpz" id="cntFOpz" value="1" <%=cntFOpz? "checked" : ""%>><label for="cntFOpz"><%=L("lcl_cnt_cancel")%></label>
<input type="checkbox" name="cntFVerl" id="cntFVerl" value="1" <%=cntFVerl? "checked" : ""%>><label for="cntFVerl"><%=L("lcl_cnt_past")%></label>
</div>
</td>
</tr>
<% SEARCH_BLOCK_END();
buttons = [{title: L("lcl_overview_list"), action:"doSubmit(0)", importance: 1, icon: "fa-clipboard-list" },
{title: L("lcl_shared_more"), action:"iface_toggleSecondarySearchblock()", id : "btnMoreLess", xclass: "noxd", importance: 3, icon: "fa-chevron-right" }
]
if (backo)
buttons.push({title: L("lcl_shared_advanced"), action:"myModal()", xclass: "noxd", importance: 3, icon: "fa-filter" });
SIMPLE_BLOCK_START();
CreateButtons(buttons, { entersubmit: true, showIcons: true} );
SIMPLE_BLOCK_END();
SEARCH_PAGE_END(); %>
</form>
<div id="result">
<iframe width="100%" height="100%"
src="../Shared/empty.asp"
name="workFrame" id="workFrame"
onload='FcltMgr.iframeLoaded(this)'
frameborder="0" scrolling="no">
</iframe>
</div>
</body>
</html>
<% ASPPAGE_END(); %>