Files
Facilitor/APPL/MLD/mld_list.inc
Erik Groener b59e4b28b1 FCLT#89765 Problemen afgemelde meldingen na update functie #83589
svn path=/Website/trunk/; revision=70151
2025-08-29 07:26:08 +00:00

1927 lines
101 KiB
C++
Raw Blame History

<% /*
$Revision$
$Id$
File: mld_list.inc
Description: Definieert de serverside functie mld_list() die een lijst van meldingen toont die
voldoen aan de gegeven parameters/criteria, binnen de readautorisaties van de user.
Parameters: -
Context: -
Note:
*/ %>
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/status.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="../Shared/rater.inc" -->
<!-- #include file="mld.inc" -->
<!-- #include file="../Shared/flexfiles.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
js: ["./mld_list.js", "jquery-ui.js"]});
var mldlist = { // Globaal beschikbaar
fnrowClass: function _fnrowClass(oRs)
{
var recent = new Date();
recent.setMinutes(recent.getMinutes() - S("mld_melding_recent"));
if (oRs("mld_melding_parentkey").Value > 0)
return " child";
var mldStatus = oRs("mld_status").Value;
var class1 = "";
if (!frontend)
{
// voor professionals kleuren we de meldingen
var lnow = new Date();
// Meldingen waaraan je nog niet hoeft te beginnen tonen we sleepy.
// Daarbij gaan we verder ook niet kleuren op basis van andere statussen enzo,
// belangrijkst is dat hij nog niet aan de beurt is.
if (oRs("mld_melding_datum").Value > lnow)
{
class1 += 'sleepy';
}
else
{
// Alles wat al geaccepteerd had moeten zijn wordt expired1
// in deze statussen zijn geen opdrachten aanwezig dus kan nooit status unsolved optreden
// Soms (bij toekomstige meldingen is soms de eindacceptatie niet gevuld blijkt; lijkt me niet goed, maar dan kan een extra check geen kwaad.
if ((mldStatus == 2 || mldStatus == 3) && oRs("eindacceptatie").Value && (oRs("eindacceptatie").Value < lnow))
class1 += ' expired1';
// Alles wat al klaar had moeten zijn wordt expired2
if (oRs("mld_stdmelding_planbaar").Value != 2 && (mldStatus == 4 || mldStatus == 7) && oRs("optijd").Value == 0)
class1 += ' expired2';
// Meldingen met uitgegeven(7) worden unsolved als er 0 lopende opdrachten zijn
// en meer dan 0 opdrachten so wie so (er zijn dus opdrachten geweest)
if (backo && (mldStatus == 4 || mldStatus == 7)
&& oRs("nrOrders").Value > 0
&& oRs("nrActief").Value == 0) class1 += ' unsolved';
// Als de melding klaar is, maar nog niet alle opdrachten, of nog loopt
// met niet alle opdrachten klaar, dan ook extra attentie (UWVA#20684)
if (((mldStatus == 5 || mldStatus == 6) && oRs("nrActief").Value > 0)
||(mldStatus == 7 && oRs("nrActief").Value > 0 && oRs("nrActief").Value < oRs("nrOrders").Value))
class1 += ' unready';
}
// als een actiedatum bekend is, markeren we die als dat vandaag is
if (oRs("mld_melding_actiedatum").Value != null)
{
var lactiondate = new Date(oRs.Fields("mld_melding_actiedatum").Value);
if (lactiondate.toDateString() == lnow.toDateString())
class1 += ' today';
}
}
// Als alle offertes de status Technisch Voltooid (6) en/of Afgekeurd (2) en/of Afgewezen (1) hebben, dan extra class orderready toevoegen.
// Voor deze meldingen kan er een uitvoeringsopdracht aangemaakt worden, moet er een nieuwe offerte aangemaakt worden of de melding worden afgemeld.
if (offertes && (oRs("aantal_offertes").Value == oRs("aantal_offready").Value) && mldStatus == 4)
{
class1 += " orderready";
}
var mld_recent = new Date(oRs("recentdatum").Value);
if (mld_recent > recent)
{
class1 += " updated";
}
// Voor een vervolgmelding.
if (oRs("isVervolg").Value)
class1 += " vervolg";
// Voor een workflowstep.
if (oRs("isWorkflow").Value)
class1 += " wfstep";
// Dit zijn classes voor als het erg wenselijk is om een afwijkende kleur oid voor bepaalde categorieen te hebben.
// deze class moet je dan zelf definieren in de custom css.
class1 += " d_" + oRs("ins_discipline_key").Value;
if (oRs("ins_srtdiscipline_prefix").Value)
class1 += " sd_" + (oRs("ins_srtdiscipline_prefix").Value || "");
if (oRs("mld_ins_discipline_key").Value)
class1 += " bt_" + (oRs("mld_ins_discipline_key").Value || ""); // behandelteam
return safe.htmlattr(class1);
},
legendaHtml: function _legendaHtml(params) {
params = params || {};
var result = '<div id="legenda" style="display:none; line-height: 30px;">'
+ ' <table id="meldinglegenda">'
+ (params.treat
? ' <tr class="unsolved"><td><span class="mldClosed">' + I("fa-check") + '</span>&nbsp;' + L("lcl_afgemeld") + '</td></tr>'
+ ' <tr class="unsolved"><td><span class="">' + I("fa-times") + '</span>&nbsp;' + L("lcl_mld_not") + '&nbsp;' + L("lcl_afgemeld") + '</td></tr>'
: ' <tr><td title="' + L("lcl_mld_legenda_normal_tt") + '">' + L("lcl_mld_legenda_normal") + '</td></tr>')
+ ' <tr class="expired1"><td title="' + L("lcl_mld_legenda_expired1_tt") + '">' + L("lcl_mld_legenda_expired1") + '</td></tr>'
+ ' <tr class="expired2"><td title="' + L("lcl_mld_legenda_expired2_tt") + '">' + L("lcl_mld_legenda_expired2") + '</td></tr>'
+ ' <tr class="updated"><td title="' + L("lcl_mld_legenda_updated_tt") + '">' + L("lcl_mld_legenda_updated") + '</td></tr>'
+ ' <tr class="expired2 updated"><td title="' + L("lcl_mld_legenda_expired2_tt") + '/' + L("lcl_mld_legenda_updated_tt") + '">' + L("lcl_mld_legenda_expired2") + '+' + L("lcl_mld_legenda_updated") + '</td></tr>'
+ (params.anyorders
? ' <tr class="unsolved"><td title="' + L("lcl_mld_legenda_unsolved_tt") + '">' + L("lcl_mld_legenda_unsolved") + '</td></tr>'
+ ' <tr class="unready"><td title="' + L("lcl_mld_legenda_unready_tt") + '">' + L("lcl_mld_legenda_unready") + '</td></tr>'
: '')
+ ' <tr class="sleepy"><td title="' + L("lcl_mld_legenda_sleepy_tt") + '">' + L("lcl_mld_legenda_sleepy") + '</td></tr>'
+ ' <tr class="child"><td title="' + L("lcl_mld_legenda_child_tt") + '">' + L("lcl_mld_legenda_child") + '</td></tr>';
for (var flagkey = 1; flagkey < S('mld_melding_flags'); flagkey++) {
result += ' <tr><td><span class="mldflag' + flagkey + '">' + I("fa-fclt-flag") + '</span>&nbsp;' + L("lcl_mld_flag" + flagkey) + '</td></tr>';
}
result += '</table></div>';
return result;
}
};
function mld_list (pautfunction, params)
{ // VALIDATE AND PREPARE
// Als een parameter niet gedefinieerd of null is, dan doet-ie niks
// anders wordt die verondersteld een zinvolle waarde te hebben
// NB: -1 is vaak geen zinvolle waarde; null had het dan moeten zijn!
// Valid and supported parameters are:
// params.urole : the usuals two-letter lowercase string
// params.outputmode : print to 0 = screen, 1 = printer, 2 = excel, etc.
// params.perform : boolean // Wordt hier niet gebruikt. Alleen in mld_groep_list.inc.
// params.treat : boolean // Gebruikt om de voortgangsreportage te tonen.
// params.showall : boolean
// params.mld_key : key
// params.opdr_key : key
// params.mldstatus_arr : Array met keys (e.g. [3, 4, 5])
// params.opdrstatus_arr : Array met keys (e.g. [3, 4, 5])
// params.caller_key : key
// params.comp_key : key
// params.org_key : key
// params.ref_key : key
// params.ref_type : String with module character (module type) ('M', 'O', 'R', 'B', 'X', 'C' or 'F')
// params.reg_key_arr : Array met keys
// params.dist_key_arr : Array met keys
// params.loc_key_arr : Array met keys
// params.bld_key_arr : Array met keys
// params.flr_key_arr : Array met keys
// params.room_key_arr : Array met keys
// params.mld_ins_discipline_key_arr : Array met keys (e.g. [3, 4, 5])
// params.behandel_key_arr : Array met keys (e.g. [3, 4, 5])
// params.behandel2_key_arr : Array met keys (e.g. [3, 4, 5])
// params.srtdisc_key_arr: Array met keys (e.g. [3, 4, 5])
// params.disc_key_arr : Array met keys (e.g. [3, 4, 5])
// params.meldinggrp : String met een meldinggroep
// params.stdm_key_arr : Array met keys (e.g. [3, 4, 5])
// params.kpgrp_key_arr : array met keys
// params.kp_key_arr : Array met keys
// params.tag_key_arr : Array met keys
// params.handler_key : key
// params.uitvopdr_key : key
// params.contact_key : key
// params.opdrtype_key : key
// params.searchtekst : wildcard string
// params.omschr : wildcard string
// params.disc_key : key
// params.insgroup_key : key
// params.objsrt_key_arr : Array met keys (e.g. [3, 4, 5])
// params.objectoms : wildcard string
// params.groepering_key : key
// params.chkAcceptEx : boolean
// params.chkRunEx : boolean
// params.chkSpoed : boolean
// params.chkAfgerond : boolean
// params.datefrom : date
// params.dateto : date
// params.enddatefrom : date
// params.enddateto : date
// params.offertes : boolean
// params.meldbron_key : key
// params.ingevoerd : String ingevoerd door: "fe", "fo" of -1 voor beide
// params.verantw_key : key
// params.dienst_key : key
// params.deel_key : deel_key
// params.deelsrtcont_key: deelsrtcont_key
// params.rsv_ruimte_key : res_rsv_ruimte_key
// params.referencetype : referencetype
// params.withflex : boolean
// Statuses:
// params.mldstpen = 1 (0): true | false
// params.mldstrej = 1 (1): true | false
// params.mldstnew = 1 (2): true | false
// params.mldsting = 1 (3): true | false
// params.mldstacc = 1 (4): true | false
// params.mldstuit = 1 (7): true | false
// params.mldstafm = 1 (5): true | false
// params.mldstver = 1 (6): true | false
// params.mldnieto = 1 (99): true | false (substatus van 4)
//
// if a parameters has a value of -1, then it is assumed not to be set and to be ignored.
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation(pautfunction);
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));
params.minfo = minfo;
var tiny = (params.tiny==1);
var showgekoppeld = params.linked;
var loc_key_arr = params.loc_key_arr || [];
var bld_key_arr = params.bld_key_arr || [];
var flr_key_arr = params.flr_key_arr || [];
var room_key_arr = params.room_key_arr || [];
// AUTORISATIES
if (params.full)
{
canAdd = false;
}
else
{
if (urole == "bo")
{
var locauthparams = user.checkAutorisation("WEB_MLDFOF", true);
var canAdd = locauthparams && locauthparams.PRSwritelevel < 9 && locauthparams.ALGwritelevel<9;
}
else if (urole == "fo")
canAdd = authparams.PRSwritelevel < 9 && authparams.ALGwritelevel<9
else // mi, fe
canAdd = false;
}
// 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 treat = params.treat;
if (params.withflex && !excel && !print)
{
// Fast check to see if we have any listable flex at all, to prevent superfluous column
var sql = "SELECT DISTINCT"
+ " COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("sk.mld_srtkenmerk_omschrijving", "sk.mld_srtkenmerk_key") + ") mld_kenmerk_omschrijving"
+ " , sk.mld_srtkenmerk_kenmerktype"
+ " FROM mld_srtkenmerk sk, mld_kenmerk k"
+ " WHERE BITAND (mld_kenmerk_inlijst, 1) = 1"
+ " AND BITAND (mld_srtkenmerk_systeem, 4) = 0" // niet als vertrouwelijk en TODO wellicht nog rolcode?
+ " AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND k.mld_kenmerk_niveau NOT IN ('P', 'O')"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND sk.mld_srtkenmerk_verwijder IS NULL";
var oRs = Oracle.Execute(sql);
var anyflex = !oRs.eof;
if (anyflex)
{
var multiflex = false;
var bijlageflex = (oRs("mld_srtkenmerk_kenmerktype").Value == "M");
var flexlabel = oRs("mld_kenmerk_omschrijving").Value;
oRs.MoveNext();
if (!oRs.Eof)
{
multiflex = true;
flexlabel = L("lcl_flexlist");
while (!oRs.eof)
{
if (oRs("mld_srtkenmerk_kenmerktype").Value == "M")
bijlageflex = true;
oRs.MoveNext();
}
}
}
oRs.close();
}
var mld_key = params.mld_key;
var mld_key_arr = params.mld_key_arr || [];
var mld_ins_discipline_key_arr = params.mld_ins_discipline_key_arr || [];
var behandel_key_arr = params.behandel_key_arr || [];
var behandel2_key_arr = params.behandel2_key_arr || [];
var disc_key_arr = params.disc_key_arr || [];
var offertes = params.offertes;
// Fast check to see if we have anything to do with geographics
// If not, we can suppress a few filters.
sql= "SELECT 1 FROM ins_srtdiscipline WHERE (ins_srtdiscipline_alg=1 OR ins_srtdiscipline_ins=1 OR ins_srtdiscipline_bes=1) AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anygeo = !oRs.eof;
oRs.close();
// Do we recognize any *significant* ruimte? If not (Plato) we suppress in-building columns
sql= "SELECT 1 FROM alg_ruimte WHERE alg_ruimte_verwijder IS NULL AND SUBSTR(alg_ruimte_nr,1,1) <> '_' AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anydetailedgeo = !oRs.eof;
oRs.close();
// Fast check to see if we have any vakgroeptypes with objects
// If not, we can suppress a column
sql = "SELECT 1 FROM ins_srtdiscipline WHERE ins_srtdiscipline_ins = 1"
+ (params.srtdisc_key_arr.length? " AND ins_srtdiscipline_key IN (" + params.srtdisc_key_arr.join(",") + ")" : "")
+ " AND ROWNUM = 1 AND ins_srtdiscipline_verwijder IS NULL";
oRs = Oracle.Execute(sql);
var anyins = !oRs.eof;
oRs.close();
// Fast check to see if we have anything to do with orders
sql= "SELECT 1 FROM mld_opdr WHERE ROWNUM = 1";
oRs = Oracle.Execute(sql);
mldlist.anyorders = !oRs.eof;
oRs.close();
// Fast check to see if we have any stdmeldingen that bewaak the SLA :)
sql = "SELECT 1"
+ " FROM mld_stdmelding msm"
+ " JOIN ins_tab_discipline itd"
+ " ON itd.ins_discipline_key = msm.mld_ins_discipline_key"
+ " JOIN ins_srtdiscipline isd"
+ " ON itd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key"
+ " WHERE msm.mld_stdmelding_slabewaken = 1"
+ " AND ( msm.mld_stdmelding_vervaldatum IS NULL"
+ " OR msm.mld_stdmelding_vervaldatum > SYSDATE)"
+ " AND msm.mld_stdmelding_verwijder IS NULL"
+ " AND itd.ins_discipline_verwijder IS NULL"
+ " AND isd.ins_srtdiscipline_verwijder IS NULL";
oRs = Oracle.Execute(sql);
var anySla = !oRs.EoF;
oRs.close();
// Fast check to see if we have any actieve behandelaar and/or behandelteam
// If not, we can suppress a few filters.
sql = "SELECT 1"
+ " FROM mld_melding m, mld_stdmelding sm"
+ " WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND ( m.mld_ins_discipline_key IS NOT NULL"
+ " OR m.mld_melding_behandelaar2_key IS NOT NULL)"
+ " AND sm.mld_stdmelding_verwijder IS NULL"
+ " AND ROWNUM <= 1";
oRs = Oracle.Execute(sql);
mldlist.anybeh = !oRs.eof;
oRs.close();
// Fast check to see if we have any external ids
// If not, we can suppress a column
sql= "SELECT 1 FROM mld_melding WHERE mld_melding_externnr IS NOT NULL AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anyexternnr = !oRs.eof;
oRs.close();
// Fast check to see if we have any groepeerbare vakgroepen
// If not, we can suppress a column
sql = "SELECT 1"
+ " FROM ins_srtdiscipline sd"
+ " , mld_discipline di"
+ " , mld_disc_params dp"
+ " WHERE di.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
+ " AND di.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND sd.ins_srtdiscipline_verwijder IS NULL"
+ " AND CASE WHEN dp.mld_disc_params_mldgroup = 0"
+ " THEN BITAND(sd.ins_srtdiscipline_mldgroup, 2)"
+ " ELSE BITAND(dp.mld_disc_params_mldgroup, 2)"
+ " END = 2"
+ (params.srtdisc_key_arr.length? " AND sd.ins_srtdiscipline_key IN (" + params.srtdisc_key_arr.join(",") + ")" : "")
+ " AND ROWNUM = 1"
+ " UNION ALL "
+ "SELECT 1 FROM mld_melding WHERE mld_melding_mldgroup_key IS NOT NULL"
+ " AND ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anygrdisc = !oRs.eof;
oRs.close();
%>
<html>
<head>
<%
FCLTHeader.Generate({ outputmode: outputmode });
if (outputmode == 0) {
%>
<script type="text/javascript">
// Text strings used by mld_list.js
var urole = "<%=urole%>";
var setting_mld_accept_confirm = <%=S("mld_accept_confirm")?1:0%>;
</script>
<% } %>
</head>
<body id="listbody">
<%
sql_mld_prefix = ", COALESCE((SELECT prs_afdeling_naam"
+ " FROM prs_afdeling d1"
+ " WHERE m.prs_afdeling_key = d1.prs_afdeling_key),"
+ " (SELECT prs_kostenplaats_nr"
+ " FROM prs_kostenplaats k"
+ " WHERE m.prs_kostenplaats_key = k.prs_kostenplaats_key),"
+ " (SELECT prs_afdeling_naam"
+ " FROM prs_afdeling d2"
+ " WHERE m.prs_afdeling_key = d2.prs_afdeling_key)) mld_prefix";
if (treat)
{
sqln = "SELECT DISTINCT m.mld_melding_key"
+ " , m.mld_melding_onderwerp"
+ " , sd.ins_srtdiscipline_prefix"
+ sql_mld_prefix
+ " , " + (showgekoppeld? "m.mld_melding_parentkey" : "NULL") + " mld_melding_parentkey"
+ " , CASE"
+ " WHEN sd.ins_srtdiscipline_prefix IS NULL"
+ " THEN ''"
+ " ELSE sd.ins_srtdiscipline_prefix || '-'"
+ " END"
+ " || " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
+ " , " + lcl.xsqla('std.mld_stdmelding_omschrijving', 'std.mld_stdmelding_key')
+ ", stdg.mld_stdmeldinggroep_naam"
+ " , k.mld_kenmerk_key kenmerk_key"
+ " , COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("sk.mld_srtkenmerk_omschrijving", "sk.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
+ " , CASE WHEN kbm.mld_kenmerkblokmelding_afmelddatum IS NULL THEN 0 ELSE 1 END blokafgemeld";
}
else
{
sqln = "SELECT "
+ " m.mld_melding_key"
+ ", mld_melding_datum"
+ ", m.mld_melding_onderwerp"
+ ", TO_CHAR(SUBSTR(m.mld_melding_omschrijving, 1, 4000)) mld_melding_omschrijving"
+ ", m.mld_melding_externnr"
+ ", m.prs_kostenplaats_key"
+ ", m.mld_melding_opmerking"
+ ", m.mld_melding_einddatum"
+ ", m.mld_melding_actiedatum"
+ ", m.mld_melding_t_uitvoertijd.tijdsduur uitvoertijd_tijdsduur"
+ ", m.mld_melding_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ ", " + (showgekoppeld? "m.mld_melding_parentkey" : "NULL") + " mld_melding_parentkey"
+ ", m.mld_adres_key"
+ ", m.mld_ins_discipline_key"
+ ", std.mld_stdmelding_volgnr"
+ ", std.mld_stdmelding_doublecheck"
+ ", std.mld_stdmelding_planbaar"
+ ", std.mld_stdmelding_planbaarfe"
+ ", std.mld_stdmelding_slabewaken"
+ ", mld_melding_status mld_status"
+ ", mld_melding_tag_naam"
+ ", mld_melding_tag_datum_tot"
+ ", DECODE(mld_melding_status, 2, 1, 0, 2, 4, 2, 7, 2, 1, 3, 5, 3, 6, 3, 4) sortinggroup"
+ ", mld_melding_conceptstatus"
+ ", CASE WHEN (m.mld_melding_start_key IS NOT NULL AND m.mld_workflowstep_key IS NULL)"
+ " THEN 1 ELSE 0 END isVervolg"
+ ", CASE WHEN (m.mld_melding_start_key IS NOT NULL AND m.mld_workflowstep_key IS NOT NULL)"
+ " THEN 1 ELSE 0 END isWorkflow";
if (params.mldbord) {
if (params.mldbordColumn === -2) { // Primaire behandelaar
sqln += ", m.mld_melding_behandelaar_key mldbordColumnKey"
+ ", (SELECT pf.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf"
+ " WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key) mldbordColumnValue";
} else if (params.mldbordColumn === -3) { // Behandelteam
sqln += ", m.mld_ins_discipline_key mldbordColumnKey"
+ ", (SELECT md2.ins_discipline_omschrijving FROM mld_discipline md2"
+ " WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) mldbordColumnValue";
} else if (params.mldbordColumn === -4) { // Actieve behandelaar
sqln += ", m.mld_melding_behandelaar2_key mldbordColumnKey"
+ ", (SELECT pf2.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf2"
+ " WHERE pf2.prs_perslid_key = m.mld_melding_behandelaar2_key) mldbordColumnValue";
} else if (params.mldbordColumn > 0) { // Referentie kenmerk
sqln += ", (SELECT km.mld_kenmerkmelding_waarde"
+ " FROM mld_srtkenmerk skm, mld_kenmerk k, mld_kenmerkmelding km"
+ " WHERE k.mld_kenmerk_key = km.mld_kenmerk_key"
+ " AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND skm.mld_srtkenmerk_verwijder IS NULL"
+ " AND km.mld_melding_key = m.mld_melding_key"
+ " AND COALESCE(k.mld_kenmerk_omschrijving, skm.mld_srtkenmerk_omschrijving) = " + safe.quoted_sql(params.mldbordColumnDescr)
+ " AND skm.mld_srtkenmerk_key = " + params.mldbordColumn + ") mldbordColumnKey"
+ ", (SELECT flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde)"
+ " FROM mld_srtkenmerk skm, mld_kenmerk k, mld_kenmerkmelding km"
+ " WHERE km.mld_melding_key = m.mld_melding_key"
+ " AND k.mld_kenmerk_key = km.mld_kenmerk_key"
+ " AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND skm.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND km.mld_kenmerkmelding_verwijder IS NULL"
+ " AND COALESCE(k.mld_kenmerk_omschrijving, skm.mld_srtkenmerk_omschrijving) = " + safe.quoted_sql(params.mldbordColumnDescr)
+ " AND skm.mld_srtkenmerk_key = " + params.mldbordColumn + ") mldbordColumnValue"; // TODO serverside scope van wat ik /mag/
}
}
// Is alleen relevant indien de melding nog niet geaccepteerd is (ook al querien we nu altijd)
// en wordt gemeten vanaf INVOERDATUM tegen de huidige bibliotheek (stdmelding) waarde van _accepttijd.
// Gelukkig is deze al bevroren in mld_melding_acceptdatum_std
sqln += ", mld_melding_acceptdatum_std eindacceptatie";
// Is alleen operationeel relevant indien de melding nog niet afgemeld of afgewezen is,
// Maar ook daarna wel, maar moet dan worden gemeten naar de afmeld/afwijsdatum, en niet naar
// de (geplande) einddatum.
// Is die kleuring dan nog interessant? Operationeel niet echt, maar voor de MI juist wel.
// PF: not quite right!! Eerder stond hier no de juiste suggestie:
// // JGL: Misschien deze berekening alleen doen voor maninfo, voor de rest altijd mld_melding_einddatum?
// sqln += ", CASE WHEN gau.actualuitvoertijd.tijdsduur / CASE"
// + " WHEN gau.actualuitvoertijd.eenheid = 'U'"
// + " THEN 24"
// + " ELSE 1"
// + " END"
// + " <= "
// + " (CASE"
// + " WHEN m.mld_melding_t_uitvoertijd.eenheid = 'U'"
// + " THEN m.mld_melding_t_uitvoertijd.tijdsduur / 24"
// + " ELSE m.mld_melding_t_uitvoertijd.tijdsduur"
// + " END + CASE"
// + " WHEN m.mld_melding_t_respijt.tijdsduur IS NULL"
// + " THEN 0"
// + " WHEN m.mld_melding_t_respijt.eenheid = 'U'"
// + " THEN m.mld_melding_t_respijt.tijdsduur / 24"
// + " ELSE m.mld_melding_t_respijt.tijdsduur"
// + " END)"
// + " THEN 1"
// + " ELSE 0"
// + " END opslatijd";
// We willen juist WEL een kleurindicatie; dit is de ruwe data: melding had al klaar moeten zijn
// bij de presentatie voegen we daar de status EN LOPEND aan toe
sqln += ", CASE WHEN mld_melding_einddatum > SYSDATE"
+ " THEN 1"
+ " ELSE 0"
+ " END optijd";
sqln += ", COALESCE(mld_melding_naam_ext, " + S("prs_pers_string") + ") melder"
+ ", v.alg_gebouw_naam"
+ ", DECODE(l.alg_locatie_code, '','', l.alg_locatie_code||DECODE(v.alg_plaatsaanduiding, '', ' ('||l.alg_locatie_omschrijving||')', '-'||v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,' (' || v.alg_plaatsomschrijving || ')')))"
+ " plaatsmelding"
+ ", l.alg_locatie_code"
+ ", v.alg_gebouw_code"
+ ", v.alg_terreinsector_code"
+ ", v.alg_verdieping_code"
+ ", v.alg_ruimte_nr"
+ ", v.alg_ruimte_omschrijving"
+ ", l.alg_locatie_adres"
+ ", l.alg_locatie_plaats"
+ (minfo
? ", di.alg_district_omschrijving" +
", (SELECT r.alg_regio_omschrijving" +
" FROM alg_district d" +
" , alg_regio r" +
" WHERE d.alg_district_key = di.alg_district_key" +
" AND d.alg_regio_key = r.alg_regio_key) alg_regio_omschrijving"
: "");
// Object(en)
if (anyins)
{
sqln += ", (SELECT LISTAGG ( "
+ " s.ins_srtdeel_omschrijving "
+ " || ' ' "
+ " || ins_deel_omschrijving, "
+ " '{0}') "
+ " WITHIN GROUP (ORDER BY ins_deel_omschrijving) "
+ " deel "
+ " FROM ins_v_aanwezigdeel d, ins_srtdeel s, mld_melding_object mo "
+ " WHERE mo.mld_melding_key = m.mld_melding_key "
+ " AND d.ins_deel_key = mo.ins_deel_key "
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key "
+ " AND ROWNUM <= " + S("mld_listagg_object_count") + ") object"
+ ", (SELECT COUNT (1) "
+ " FROM ins_v_aanwezigdeel d, ins_srtdeel s, mld_melding_object mo "
+ " WHERE mo.mld_melding_key = m.mld_melding_key "
+ " AND d.ins_deel_key = mo.ins_deel_key "
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key) objCount";
}
if (S("mld_num_prefix_mode") == 1) // kostenplaats of afdeling
{
sqln += sql_mld_prefix;
}
sqln += ", sd.ins_srtdiscipline_prefix"
+ ", sd.ins_srtdiscipline_alg"
+ ", sd.ins_srtdiscipline_ins"
+ ", sd.ins_srtdiscipline_bes"
+ ", sd.ins_srtdiscipline_mldgroup"
+ ", mdp.mld_disc_params_mldgroup"
+ ", CASE"
+ " WHEN m.mld_melding_mldgroup_key IS NULL"
+ " THEN ''"
+ " ELSE (SELECT sd2.ins_srtdiscipline_prefix||m.mld_melding_mldgroup_key"
+ " FROM ins_srtdiscipline sd2"
+ " , mld_discipline md2"
+ " , mld_stdmelding std2"
+ " , mld_melding m2"
+ " WHERE m2.mld_melding_key = m.mld_melding_mldgroup_key"
+ " AND std2.mld_stdmelding_key = m2.mld_stdmelding_key"
+ " AND md2.ins_discipline_key = std2.mld_ins_discipline_key"
+ " AND sd2.ins_srtdiscipline_key = md2.ins_srtdiscipline_key)"
+ " END mldgroup_prefix"
+ ", md.ins_discipline_key"
+ ", md.ins_discipline_kpnverplicht"
+ ", std.ins_srtinst_verplichtstatus"
+ ", std.mld_stdmelding_freetext"
+ ", std.alg_onrgoed_niveau"
+ ", stdg.mld_stdmeldinggroep_naam"
+ ", COALESCE(m.mld_alg_locatie_key, -1) alg_locatie_key"
+ ", COALESCE(v.alg_gebouw_key, v.alg_terreinsector_key, -1) alg_gebouw_key"
+ ", COALESCE(v.alg_verdieping_key, -1) alg_verdieping_key"
+ ", COALESCE(v.alg_ruimte_key, -1) alg_ruimte_key"
+ ", CASE"
+ " WHEN sd.ins_srtdiscipline_prefix IS NULL"
+ " THEN ''"
+ " ELSE sd.ins_srtdiscipline_prefix || '-'"
+ " END"
+ " || "+lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
+ ", std.mld_stdmelding_key"
+ ", "+lcl.xsqla('std.mld_stdmelding_omschrijving','std.mld_stdmelding_key')
sqln += ", (SELECT COUNT(mld_opdr_key) FROM mld_opdr WHERE mld_melding_key = m.mld_melding_key) nrOrders"
// Heeft de melding een opdracht die recent is gewijzigd maar nog niet ingezien?
sqln += ", (SELECT MAX(CASE WHEN GREATEST( (SELECT COALESCE(MAX(t.fac_tracking_datum), TO_DATE('01-01-1970','dd-mm-yyyy'))"
+ " FROM fac_tracking t"
+ " , fac_srtnotificatie st"
+ " WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key"
+ " AND st.fac_srtnotificatie_xmlnode = 'opdracht'"
+ " AND t.fac_tracking_refkey = ro.mld_opdr_key"
+ " )"
+ ", (SELECT COALESCE(MAX(n.mld_opdr_note_aanmaak), TO_DATE('01-01-1970','dd-mm-yyyy'))"
+ " FROM mld_opdr_note n"
+ " WHERE n.mld_opdr_key = ro.mld_opdr_key"
+ " )"
+ ") > ro.mld_opdr_laatstgezien"
+ " THEN 1"
+ " ELSE 0"
+ " END) isgewijzigd"
+ " FROM mld_opdr ro"
+ " WHERE ro.mld_melding_key = m.mld_melding_key) isGewijzigd"
sqln += ", (SELECT MAX ( GREATEST ( (SELECT COALESCE ( MAX (t.fac_tracking_datum), TO_DATE ('01-01-1970','dd-mm-yyyy'))"
+ " FROM fac_tracking t"
+ " , fac_srtnotificatie st"
+ " WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key"
+ " AND st.fac_srtnotificatie_xmlnode = 'opdracht'"
+ " AND t.fac_tracking_refkey = ro.mld_opdr_key"
+ " )"
+ ", (SELECT COALESCE ( MAX (n.mld_opdr_note_aanmaak), TO_DATE ('01-01-1970','dd-mm-yyyy'))"
+ " FROM mld_opdr_note n"
+ " WHERE n.mld_opdr_key = ro.mld_opdr_key"
+ " )"
+ ")"
+ " ) laatstgewijzigd"
+ " FROM mld_opdr ro"
+ " WHERE ro.mld_melding_key = m.mld_melding_key"
+ " ) laatstgewijzigd";
sqln += ", m.mld_melding_spoed";
// Aantal actieve opdrachten
sqln += ", (SELECT COUNT(o.mld_statusopdr_key)"
+ " FROM mld_opdr o"
+ " WHERE mld_melding_key = m.mld_melding_key"
+ " AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)) nrActief";
sqln += ", (SELECT pf.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf"
+ " WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key) behandelaar"
+ ", (SELECT md2.ins_discipline_omschrijving FROM mld_discipline md2"
+ " WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) behandelteam"
+ ", (SELECT pf2.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf2"
+ " WHERE pf2.prs_perslid_key = m.mld_melding_behandelaar2_key) behandelaar2"
+ ", m.mld_workflowstep_key workflow";
if (minfo)
{
sqln += ", (SELECT " + S("prs_dep_string")
+ " FROM prs_v_afdeling d"
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key) organisatie";
sqln += ", (SELECT " + S("prs_kpn_string")
+ " FROM prs_kostenplaats k"
+ " WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats";
sqln += ", COALESCE((SELECT SUM(topdr.mld_opdr_kosten)"
+ " FROM mld_opdr topdr"
+ ", mld_typeopdr ty"
+ " WHERE topdr.mld_melding_key = m.mld_melding_key"
+ " AND topdr.mld_typeopdr_key = ty.mld_typeopdr_key"
+ " AND ty.mld_typeopdr_kosten = 1"
+ " GROUP BY m.mld_melding_key), 0) kosten";
} // minfo only
// Voeg laatste tracking datum toe
sqln += ", (SELECT MAX(fac_tracking_datum)"
+ " FROM (SELECT t.fac_tracking_datum"
+ " FROM fac_tracking t"
+ " , fac_srtnotificatie sn"
+ " WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key"
+ " AND t.fac_tracking_refkey = m.mld_melding_key"
+ " AND sn.fac_srtnotificatie_xmlnode = 'melding'"
+ " UNION ALL"
+ " SELECT mld_melding_note_aanmaak recentdatum"
+ " FROM mld_melding_note"
+ " WHERE mld_melding_key = m.mld_melding_key))"
+ " recentdatum";
// Voeg de flag toe
sqln += ", m.mld_melding_actiecode"
+ ", m.mld_melding_flag"
+ ", m.mld_melding_satisfaction oordeel"
+ ", m.mld_melding_satisfaction_op oordeel_opm"
sqln += (offertes
? ", offerte.aantal_offertes"
+ ", COALESCE(offready.aantal_offready, 0) aantal_offready"
+ ", opdracht.aantal_opdrachten"
: "");
sqln += ", (SELECT mn.mld_melding_note_omschrijving"
+ " FROM mld_melding_note mn"
+ " WHERE mn.mld_melding_key = m.mld_melding_key"
+ " AND mn.mld_melding_note_key = (SELECT MAX (mn.mld_melding_note_key)"
+ " FROM mld_melding_note mn"
+ " WHERE mn.mld_melding_key = m.mld_melding_key)) notitie"
+ ", (SELECT MAX(mn.mld_melding_note_aanmaak)"
+ " FROM mld_melding_note mn"
+ " WHERE mn.mld_melding_key = m.mld_melding_key) notitiedatum"
if (anyflex)
{
// Wat mag ik op basis van mijn autorisatie zien, bepaal mijn rolcode-masker. In principe.
// Je wilt controleren maar dan moet je voor elk record (!) de complete 3D-scope (!) controleren
// Dat is niet te doen, daarom leggen we de verantwoordelijkheid bij de applicatiebeheerder
// Die moet alleen kenmerken in de lijst laten zien die iedereen mag zien.
var myreadrolcode = 7; // alles.
sqln += ", (SELECT LISTAGG("
+ (multiflex ? "COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("skm.mld_srtkenmerk_omschrijving", "skm.mld_srtkenmerk_key") + ")"
+ " || ':'|| CHR(160) ||"
: "")
+ " CASE"
+ " WHEN skm.mld_srtkenmerk_kenmerktype = 'R' OR skm.mld_srtkenmerk_kenmerktype = 'r' OR skm.mld_srtkenmerk_kenmerktype = 'S'"
+ " THEN flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde)"
+ " WHEN skm.mld_srtkenmerk_kenmerktype = 'N'"
+ " AND skm.mld_srtkenmerk_lengte = 1 "
+ " AND skm.mld_srtkenmerk_nmin = 0 "
+ " AND skm.mld_srtkenmerk_nmax = 1 "
+ " AND (skm.mld_srtkenmerk_dec = 0 OR skm.mld_srtkenmerk_dec IS NULL) "
+ " THEN DECODE (km.mld_kenmerkmelding_waarde, "
+ " 0, "+safe.qL("lcl_check_0")+", "
+ " 1, "+safe.qL("lcl_check_1")+", "
+ " km.mld_kenmerkmelding_waarde)"
+ " ELSE km.mld_kenmerkmelding_waarde"
+ " END, CHR(13)) "
+ " WITHIN GROUP (ORDER BY mld_kenmerk_volgnummer) "
+ " FROM mld_srtkenmerk skm, mld_kenmerk k, mld_kenmerkmelding km"
+ " WHERE km.mld_melding_key = m.mld_melding_key"
+ " AND k.mld_kenmerk_key = km.mld_kenmerk_key"
+ " AND BITAND(k.mld_kenmerk_inlijst,1) = 1"
+ " AND BITAND(skm.mld_srtkenmerk_systeem,4) = 0" // niet als vertrouwelijk
// + " AND BITAND(k.mld_kenmerk_rolcode, "+ myreadrolcode +") > 0" // met waarde 7 voegt dat niks toe
+ " AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND skm.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND km.mld_kenmerkmelding_verwijder IS NULL) flex"
}
if (backo)
{
sqln += ", m.mld_melding_kto_type"
+ ", m.mld_melding_kto_key";
}
if (treat)
{
sqln += ", k.mld_kenmerk_key kenmerk_key"
+ ", COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("sk.mld_srtkenmerk_omschrijving", "sk.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
+ ", CASE WHEN kbm.mld_kenmerkblokmelding_afmelddatum IS NULL THEN 0 ELSE 1 END blokafgemeld";
}
}
// Voeg aan de sql het FROM en WHERE gedeelte toe
var sqln_arr = mld.getfromwherelist_sql(pautfunction, params);
if (!showgekoppeld)
{
sqln_arr[0] += " AND m.mld_melding_parentkey IS NULL";
sqln_arr[1] += " AND m.mld_melding_parentkey IS NULL";
}
sqln = (frontend
? sqln + sqln_arr[0]
: // !frontend: apply 3D authorization to the locations and to the organisations (both ALG and PRS)
discx3d (sqln + sqln_arr[0],
["md.ins_discipline_key", "m.mld_ins_discipline_key"], // Rechten alleen op de vakgroep en niet op de behandelteam (FCLT#54169).
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"v.alg_gebouw_key",
"v.alg_verdieping_key",
"v.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
pautfunction,
[], /* no additional discipline restrictions */
2))
+ " UNION "
+ sqln + sqln_arr[1];
if (treat)
{
var sql_kenm = "SELECT DISTINCT k.mld_kenmerk_key"
+ " , k.mld_kenmerk_volgnummer"
+ " , COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("sk.mld_srtkenmerk_omschrijving", "sk.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
+ " FROM mld_kenmerk k"
+ " , mld_srtkenmerk sk"
+ " , mld_stdmelding s"
+ " , mld_discipline d"
+ " WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key IS NULL"
+ " AND k.mld_kenmerk_niveau = 'A')"
+ " OR (k.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND k.mld_kenmerk_niveau = 'T'))"
+ " AND sk.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND sk.mld_srtkenmerk_kenmerktype = 'b'"
+ (params.srtdisc_key_arr && params.srtdisc_key_arr.length
? " AND d.ins_srtdiscipline_key IN (" + params.srtdisc_key_arr.join(",") + ")"
: "")
+ (params.disc_key_arr && params.disc_key_arr.length
? " AND d.ins_discipline_key IN (" + params.disc_key_arr.join(",") + ")"
: "")
+ (params.stdm_key_arr && params.stdm_key_arr.length
? " AND s.mld_stdmelding_key IN (" + params.stdm_key_arr.join(",") + ")"
: "")
+ " ORDER BY mld_kenmerk_volgnummer";
var oRs_kenm = Oracle.Execute(sql_kenm);
var kenm = { key: [], omschr: []};
while (!oRs_kenm.eof)
{
kenm.key.push(oRs_kenm("mld_kenmerk_key").Value);
kenm.omschr.push(oRs_kenm("kenmerk_omschrijving").Value);
oRs_kenm.MoveNext();
}
oRs_kenm.Close();
sqln = "SELECT /*+ CURSOR_SHARING_EXACT OPT_PARAM('optimizer_features_enable','11.2.0.4') */ * FROM (" + sqln + ") rec2"
+ " PIVOT (COUNT(kenmerk_omschrijving) AS aanwezig, SUM(blokafgemeld) AS afgemeld"
+ " FOR kenmerk_key IN (" + kenm.key.join(",") + "))"
+ " ORDER BY ins_discipline_omschrijving, mld_stdmelding_omschrijving, mld_melding_key";
}
else
{
sqln = "SELECT /*+ CURSOR_SHARING_EXACT OPT_PARAM('optimizer_features_enable','11.2.0.4') */ * FROM (" + sqln + ") rec2 ORDER BY"
+ (excel? " UPPER(" + lcl.xsql('ins_discipline_omschrijving', 'ins_discipline_key') + "), mld_stdmelding_volgnr, mld_stdmelding_omschrijving," : "");
// merk op: mld_melding_einddatum wordt afh van mld_stdmelding_planbaar soms niet getoond in de lijst
// dan is sortering 0 verrassend/onbepaald, daar zou je de lege waarden bij elkaar willen, dat is de reden voor mld_stdmelding_planbaar
// waarbij 0: einddatum wordt berekend, 1: de einddatum van de melding is default leeg, 2: veld is verborgen, +4 show_actiedatum, MNNL#65934
// dus bij 2,6 is er geen einddatum, bij de rest, dus 0,1,4,5 wel, dat is sorteren MOD 4: geen datum komt na alle datums
if (bosort == 0)
sqln += " sortinggroup, MOD(mld_stdmelding_planbaar,4) , mld_melding_einddatum" + (params.mldstafm||params.mldstver||params.mldstrej ? " DESC" : "");
else if (bosort == 2)
sqln += " recentdatum DESC";
else
sqln += " mld_melding_key DESC";
}
if (params.mldbord) {
return sqln;
}
/**********************************
* Callback functies ResultsetTable
*********************************/
// Extra data voor de client om daar dynamisch buttons te kunnen activeren.
function fnrowData(oRs)
{
var mldStatus = parseInt(oRs("mld_status").Value);
var mldPrefix = oRs("ins_srtdiscipline_prefix").Value || "";
var gewijzigd = oRs("isGewijzigd").Value == 1;
var data = {mldStatus: mldStatus, mldPrefix: mldPrefix, mldOpdrChanged: gewijzigd};
var mldChild = oRs("mld_melding_parentkey").Value? true : false;
if (mldChild) data.mldChild = true;
// mld_stdmelding_doublecheck: 00 (0) Geen controle uitvoeren
// 01 (1) Controle dubbel bij invoer nieuwe melding (door FE, FO (of BO))
// 10 (2) Controle dubbel bij accepteren melding (door BO)
// 11 (3) Controle zowel bij invoer als bij accepteren
// Niet controleren als het al een childmelding is. Dan mag je eigenlijk al niet accepteren/afwijzen
var doublecheck = oRs("mld_stdmelding_doublecheck").Value;
var parent_key = oRs("mld_melding_parentkey").Value;
var mldDoublecheck = (!parent_key && (doublecheck == 2 || doublecheck == 3));
if (mldDoublecheck) data.mldDoublecheck = true;
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
if ((S("inline_actions_mld") == 0 || tiny && (S("inline_actions_mld") & 2)) && !(mld_key > 0) && mld_key_arr.length === 0)
return {};
// We weten al dat we mogen lezen. Geef dat mee aan func_enabled_melding, die wordt daar efficienter van
var mldkey = oRs("mld_melding_key").Value;
var this_mld = mld.func_enabled_melding(mldkey, { dontcarelink: true, dontcareblokheader: true, knownread: true });
var eEdit = this_mld.canChange; // Wijzigen
var eReject = this_mld.canReject; // Afwijzen
var eClose = this_mld.canClose; // Afmelden
var eAccept = this_mld.canAccept; // Accepteren
var eContinue = this_mld.canContinue; // Vervolg ('kopie')
var eKenmerk = this_mld.canChange; // Kenmerken wijzigen
var eHerplan = this_mld.canHerplan; // Actiedatum wijzigen
var mld_ins_discipline_key = oRs("mld_ins_discipline_key").Value;
var eForward = this_mld.canForward && !(mld_ins_discipline_key > 0); // Doorsturen Vakgroep
var eForwardTeam = this_mld.canForwardTeam; // Doorsturen Behandelteam
// Zijn er velden verplicht die niet zijn ingevuld?
// Startdatum, Einddatum, Melding voor (persoon), Vakgroep en Melding (stdmelding) worden door enkele constraint op de mld_melding tabel al afgedwongen.
// Om een melding te forwarden/doorsturen moeten namelijk alle verplichte gegevens zijn ingevuld. Dat kan het geval zijn bij extern aangemaakte meldingen.
var emptyRequiredFields = false;
// Alleen als ik de melding door kan sturen de verplichte velden checken. Niet bij het corrigeren van de vakgroep/melding (canFixMelding) vanuit de status "Afgemeld(5)".
if (this_mld.canForward)
{
var alg_level = 0;
switch (oRs("ins_srtdiscipline_alg").Value)
{
case 1: alg_level = 5; break; // Ruimte
case 3: alg_level = 4; break; // Verdieping
case 5: alg_level = 3; break; // Gebouw
case 7: alg_level = 2; break; // Locatie
default: alg_level = 0; // niet tonen
}
// Hier niet de functie mld.mld_melding_info(mldkey) gebruiken om mld_melding informatie op te halen.
// Een groot gedeelte van de mld_melding informatie heb ik trouwens al.
var mld_melding = { mld_key: mldkey,
mld_onderwerp: oRs("mld_melding_onderwerp").Value,
mld_omschr: oRs("mld_melding_omschrijving").Value,
kostenpl_key: oRs("prs_kostenplaats_key").Value || -1,
alg_onrgoed_niveau: oRs("alg_onrgoed_niveau").Value,
alg_level: alg_level,
show_alg: alg_level > 0,
show_ins: oRs("ins_srtdiscipline_ins").Value == 1,
show_bes: oRs("ins_srtdiscipline_bes").Value == 1,
kpnverplicht: (oRs("ins_discipline_kpnverplicht").Value == 1),
loc_key: oRs("alg_locatie_key").Value,
bld_key: oRs("alg_gebouw_key").Value,
flr_key: oRs("alg_verdieping_key").Value,
room_key: oRs("alg_ruimte_key").Value,
deladdress_key: oRs("mld_adres_key").Value,
srtinst_verplichtstatus: (oRs("ins_srtinst_verplichtstatus").Value == 1),
freetext: oRs("mld_stdmelding_freetext").Value
};
emptyRequiredFields = mld.getEmptyRequiredFields(mld_melding);
var eEmptyRequiredFields = emptyRequiredFields; // Zijn er verplichte velden niet ingevuld voor het doorsturen?
eForward = eForward && !eEmptyRequiredFields; // Als er verplichte velden niet zijn ingevuld dan niet doorsturen maar eerste de lege velden in laten vullen.
}
var eTerugzet = this_mld.canTerugzet; // Terugzetten naar frontoffice
var eDoorzet = this_mld.canDoorzet; // Doorzetten naar backoffice
var eGroup = oRs("ins_srtdiscipline_mldgroup").Value & 2; // this_mld.canGroup; // TODO: Groeperen Auth
var eGroup = (oRs("mld_disc_params_mldgroup").Value == 0 ? oRs("ins_srtdiscipline_mldgroup").Value : oRs("mld_disc_params_mldgroup").Value) & 2;
var eVerwerk = this_mld.canVerwerk;
var data = { eEdit: eEdit,
eReject: eReject,
eClose: eClose,
eAccept: eAccept,
eContinue: eContinue,
eForward: eForward,
eForwardTeam: eForwardTeam,
eEmptyRequiredFields: eEmptyRequiredFields,
eGroup: eGroup,
eTerugzet: eTerugzet,
eDoorzet: eDoorzet,
eVerwerk: eVerwerk,
eKenmerk: eKenmerk,
eHerplan: eHerplan
};
return data;
}
function fnmultiActionEnabler()
{
/* Bij 1 melding lopen we toch de inline-enablers na */
if (mld_key > 0 || mld_key_arr.length)
return {};
/* Niet multi */
var eEdit = false;
var eForward = false;
var eForwardTeam = false;
var eEmptyRequiredFields = false;
/* Fast check to see if we have anything to do with FO-BO handling (terug- of doorzetten) */
sql= "SELECT 1 FROM "
+ "(SELECT 1 FROM mld_disc_params dp, mld_discipline d "
+ "WHERE d.ins_discipline_key = dp.mld_ins_discipline_key AND mld_disc_params_directklaar>0 and d.ins_discipline_verwijder IS NULL "
+ "UNION ALL "
+ "SELECT 1 FROM mld_stdmelding "
+ "WHERE mld_stdmelding_directklaar>0 AND mld_stdmelding_verwijder IS NULL) "
+ "WHERE ROWNUM = 1";
oRs = Oracle.Execute(sql);
var hasAnyFOBOdiscs = !oRs.eof;
oRs.Close();
/* Hebben we minimaal 1 vakgroeptype die een groepering kan zijn en minimaal 1 vakgroeptype die kan groeperen? */
var sql = "SELECT ''"
+ " FROM ins_srtdiscipline"
+ " WHERE EXISTS"
+ " (SELECT ''"
+ " FROM ins_srtdiscipline sd"
+ " , mld_discipline di"
+ " , mld_disc_params dp"
+ " WHERE di.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
+ " AND di.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND CASE WHEN dp.mld_disc_params_mldgroup = 0"
+ " THEN BITAND (sd.ins_srtdiscipline_mldgroup, 1)"
+ " ELSE BITAND (dp.mld_disc_params_mldgroup, 1)"
+ " END = 1)"
+ " AND EXISTS"
+ " (SELECT ''"
+ " FROM ins_srtdiscipline sd"
+ " , mld_discipline di"
+ " , mld_disc_params dp"
+ " WHERE di.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
+ " AND di.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND CASE WHEN dp.mld_disc_params_mldgroup = 0"
+ " THEN BITAND (sd.ins_srtdiscipline_mldgroup, 2)"
+ " ELSE BITAND (dp.mld_disc_params_mldgroup, 2)"
+ " END = 2)";
var oRs = Oracle.Execute(sql);
var hasGroupable = !oRs.EoF;
oRs.Close();
/* Algehele autorisatie parameters voor snelle check */
var authparamsMLDFOF = user.checkAutorisation("WEB_MLDFOF", true);
var authparamsMLDBOF = user.checkAutorisation("WEB_MLDBOF", true);
var authparamsMLDBO3 = user.checkAutorisation("WEB_MLDBO3", true);
var authparamsMLDAFR = user.checkAutorisation("WEB_MLDAFR", true);
var hasAnyFOFWrite = authparamsMLDFOF && (authparamsMLDFOF.PRSwritelevel < 9 || authparamsMLDFOF.ALGwritelevel < 9);
var hasAnyBOFWrite = authparamsMLDBOF && (authparamsMLDBOF.PRSwritelevel < 9 || authparamsMLDBOF.ALGwritelevel < 9);
var hasAnyBO3Write = authparamsMLDBO3 && (authparamsMLDBO3.PRSwritelevel < 9 || authparamsMLDBO3.ALGwritelevel < 9);
var hasAnyAFRWrite = authparamsMLDAFR && (authparamsMLDAFR.PRSwritelevel < 9 || authparamsMLDAFR.ALGwritelevel < 9);
var eContinue = !S("mld_disable_continuation") && hasAnyFOFWrite;
var eVerwerk = S("mld_archive_by_gui") && hasAnyAFRWrite;
var eGroup = hasGroupable;
var eTerugzet = hasAnyFOBOdiscs && hasAnyBOFWrite;
var eDoorzet = hasAnyFOBOdiscs && hasAnyFOFWrite;
var eReject = hasAnyFOFWrite || hasAnyBOFWrite;
var eClose = hasAnyFOFWrite || hasAnyBOFWrite;
var eAccept = hasAnyBOFWrite || hasAnyBO3Write;
var eHerplan = hasAnyBOFWrite || hasAnyBO3Write;
var data = { eEdit: eEdit,
eReject: eReject,
eClose: eClose,
eAccept: eAccept,
eContinue: eContinue,
eForward: eForward,
eForwardTeam: eForwardTeam,
eEmptyRequiredFields: eEmptyRequiredFields,
eGroup: eGroup,
eTerugzet: eTerugzet,
eDoorzet: eDoorzet,
eVerwerk: eVerwerk,
eKenmerk: true,
eHerplan: eHerplan
};
return data;
}
function fncolKey(oRs)
{
var tekst = oRs("ins_srtdiscipline_prefix").Value + oRs("mld_melding_key").Value;
if (S("mld_num_prefix_mode") > 0 && oRs("mld_prefix").Value)
tekst = oRs("mld_prefix").Value + "#" + tekst;
if (oRs("mld_melding_parentkey").Value)
tekst += L("lcl_mld_references")+oRs("mld_melding_parentkey").Value;
return tekst;
}
function fnfnProgress(oRs)
{
var aantal_blokken = 0;
var aantal_afgemeld = 0;
var progress = 0;
for (var j = 0; j < kenm.key.length; j++)
{
var afgemeld = oRs(kenm.key[j] + "_afgemeld").Value;
aantal_blokken += (afgemeld == 0 || afgemeld == 1? 1 : 0);
aantal_afgemeld += (afgemeld == 1? 1 : 0);
}
if (aantal_blokken > 0)
progress = Math.round(aantal_afgemeld / aantal_blokken * 100) / 100;
return "<div class='mldProgress' style='width:100%'>"
+ " <div class='mldBar' data-perc='" + (progress * 100) + "' style='width:" + (progress * 100) +"%'></div>"
+ "</div>";
}
function fnfnHandled(kenmerk_key)
{
return function (oRs)
{
if (oRs(kenmerk_key + "_afgemeld").Value == 1)
return I("fa-check");
else if (oRs(kenmerk_key + "_afgemeld").Value == 0)
return I("fa-times");
else return "";
}
}
function fnfncolClass(kenmerk_key)
{
return function (oRs)
{
if (oRs(kenmerk_key + "_afgemeld").Value == 1)
return "mldClosed";
else if (oRs(kenmerk_key + "_afgemeld").Value == 0)
return "mldToBeClosed";
else return "";
}
}
function fncolSpoed(oRs) // kopie van opdr_list.inc
{
var priolevel = oRs("mld_melding_spoed").Value;
var displ = mld.getpriotext(priolevel);
var hprio = "<div style='display:none'>" + priolevel + "</div>"; // for sorting i presume
if (outputmode == 0)
{ // maak er dan nog een leuk plaatje van
displ = "<span class='pricon' id='urg_prio"+priolevel+"' title='" + displ+"'>" + hprio + I(mld.getpriocon(priolevel)) + "</span>";
}
return displ;
}
function fnHasOrders(oRs)
{
var opdr_title = "";
if (oRs("nrOrders").Value > 0)
{
opdr_title = (oRs("nrOrders").Value == 1 ? "1 " + L("lcl_shared_order") : oRs("nrOrders").Value + " " + L("lcl_orders"));
if (oRs("isgewijzigd").Value)
{
opdr_title += ", " + L("lcl_mld_inf_name") + ": " + toDateTimeString(oRs("laatstgewijzigd").Value);
}
}
return opdr_title;
}
function fncolStatus(oRs)
{
if (oRs("mld_melding_parentkey").Value > 0)
return L("lcl_mld_parent_status").format(oRs("mld_melding_parentkey").Value); // default leeg
var mldStatus = parseInt(oRs("mld_status").Value);
var nrOrders = oRs("nrOrders").Value;
var nrActief = oRs("nrActief").Value;
// Een melding is nog niet opgelost
// 1) als er opdrachten/offertes zijn bij de melding en waarvan er geen enkele meer actief is. De status van deze meldingen zijn geaccepteerd(4).
// 2) als een verwerkte(5) melding niet akkoord bevonden is.
var mldActiecode = oRs("mld_melding_actiecode").Value;
// Bij mld_melding_status=5 kan backoffice afhankelijk van zijn attentie-bit de zichtbare status "Afgemeld" of "Niet opgelost" krijgen.
// Frontend heeft bij mld_melding_status=5 altijd de status "Afgemeld".
// Wanneer wordt een melding met status=5 getoond als Afgemeld of Niet opgelost.
// | Actie | Attentie | Status
// ------------+-------+----------+---------------
// backoffice | 1 | 0 | Afgemeld
// | 1 | 128 | Niet opgelost
var not_solved = (nrOrders > 0 && nrActief == 0 && backo && mldStatus == 4) || (mldStatus == 5 && (mldActiecode & 128) && S("mld_assume_ok_days") > 0);
if (not_solved)
{ // Checkt bij status 4 of dat nieuw(4) of oud(99) is
var mldkey = oRs("mld_melding_key").Value;
mldStatus = mld.getextendedmldstatus(mldStatus, mldkey)
}
// De statustekst kan ook opgevraagd worden met "mld.getextendedmldstatustext" maar die houd geen rekening met de conceptstatus (mld_melding_conceptstatus) en vanwege performance.
var mld_status = mld.getmldstatustext(mldStatus, oRs("mld_melding_conceptstatus").Value);
return '<span style="white-space: nowrap">'+mld_status+'</span>';
}
// De plaatskolommen
function fncolGebouwTerrein(oRs)
{//
if ((oRs("alg_gebouw_code").Value && (oRs("alg_gebouw_code").Value).substring(0,1) != "_")
|| (oRs("alg_terreinsector_code").Value && (oRs("alg_terreinsector_code").Value).substring(0,1) != "_"))
return safe.html(oRs("alg_gebouw_code").Value||"" + oRs("alg_terreinsector_code").Value||"" ); // ze zijn nooit allebei gedefinieerd
}
function fncolVerdieping(oRs)
{
if (oRs("alg_verdieping_code").Value && (oRs("alg_verdieping_code").Value).substring(0,1) != "_")
return safe.html(oRs("alg_verdieping_code").Value);
}
function fncolRuimte(oRs)
{
if (oRs("alg_ruimte_nr").Value && (oRs("alg_ruimte_nr").Value).substring(0,1) != "_")
return safe.html(oRs("alg_ruimte_nr").Value) + "&nbsp;" + safe.html(oRs("alg_ruimte_omschrijving").Value);
}
function fncolObject(oRs)
{
if (oRs("objCount").Value > S("mld_listagg_object_count"))
return "<span class=\"nowrap\">" + (outputmode == 0 ? I("fa-hand-point-right") + " " : "") + "(" + oRs("objCount").Value + " " + L("lcl_mld_objects") + ")</span>";
else if (oRs("object").Value == null)
return "";
switch (S("mld_listagg_object_delimiter"))
{
case "comma": list_delimiter = ", "; break;
case "newline": list_delimiter = "\n"; break;
default: list_delimiter = ", ";
}
var obj = oRs("object").Value;
var ret = (outputmode == 0 ? I("fa-hand-point-right") + " " : "");
if (obj.indexOf("{0}") == -1) // single object
return "<span class=\"nowrap\">" + ret + safe.html(obj.format(list_delimiter)) + "</span>";
else
return ret + safe.html(obj.format(list_delimiter));
}
function fncolNoteTooltip(oRs)
{
if (oRs("notitie").Value != null)
{
return (outputmode == 0 ? toDateTimeString(oRs("notitiedatum").Value) : "");
}
else return "";
}
function fncolReferentie(oRs)
{
var kto_type = oRs("mld_melding_kto_type").Value;
var kto_key = oRs("mld_melding_kto_key").Value || -1;
if (kto_key > 0)
return safe.html(mld.referentielabel(kto_type, kto_key));
else
return "";
}
function fncolLaatsteActieDatum(oRs)
{
var laatste_actie = new Date(oRs("recentdatum").Value);
var laatstgewijzigd_opdr = oRs("laatstgewijzigd").Value != null? oRs("laatstgewijzigd").Value : new Date(1970, 0, 1);
// Variabele laatste_actie/recentdatum heeft altijd een waarde (want er is altijd een MLDNEW tracking) en is altijd groter dan 1970.
if (excel)
return laatste_actie > laatstgewijzigd_opdr? laatste_actie : laatstgewijzigd_opdr;
else
return toDateString(laatste_actie > laatstgewijzigd_opdr? laatste_actie : laatstgewijzigd_opdr, excel);
}
function fncolLaatsteActieTijd(oRs)
{
var laatste_actie = new Date(oRs("recentdatum").Value);
var laatstgewijzigd_opdr = oRs("laatstgewijzigd").Value != null? oRs("laatstgewijzigd").Value : new Date(1970, 0, 1);
return toTimeString(laatste_actie > laatstgewijzigd_opdr? laatste_actie : laatstgewijzigd_opdr);
}
// Voor de FE-lijst wil ik tonen dat de FE aan zet is. Daar hoeft geen visueel onderscheid tussen alert en bij-FE zou je zeggen
// Maar: de FE kan zelf om attentie gevraagd hebben en dan is daar terugkoppeling van gewenst, maar dan moet de actie ook bij BO liggen
// Dan is attentie dus belangrijkst
function fncolActiecode(oRs)
{
var actiecode = oRs("mld_melding_actiecode").Value;
var res = "";
if (frontend) { // FE ziet een signaal als de bal bij hem ligt
if (actiecode & 256) { // Attentie bij FE
if (outputmode == 0) {
res = "<span class='ac2' title='"+L("lcl_mld_actiecodeATT")+"'>"
+ I("fa-bell fa-lg", { fastyle: "fas" })
+ "</span>";
} else {
res = L("lcl_mld_actiecodeATT");
}
} else if (actiecode & 2) { // Actie bij FE
if (outputmode == 0) {
res = "<span class='ac2' title='"+L("lcl_mld_actiecodeFE")+"'>"
+ I("fa-bell fa-lg", { fastyle: "fal" })
+ "</span>";
} else {
res = L("lcl_mld_actiecodeFE");
}
}
} else { // FOBO
if (outputmode == 0) {
if (actiecode & 128) {
res = "<span class='ac128' title='"+L("lcl_mld_actiecodeATT")+"'>"
+ I("fa-bell fa-lg", { fastyle: "fas" })
+ "</span>";
} else if (actiecode & 2) {
res = "<span class='ac2' title='"+L("lcl_mld_actiecodeFE")+"'>"
+ I("fa-user-circle fa-lg", { fastyle: "fal" })
+ "</span>";
}
} else {
if (actiecode & 128) {
res = L("lcl_mld_actiecodeATT");
} else if (actiecode & 2) {
res = L("lcl_mld_actiecodeFE");
}
}
}
return res;
}
function fncolFlags(oRs)
{
var mldkey = oRs("mld_melding_key").Value;
var flagkey = oRs("mld_melding_flag").Value || 0;
var ttl = L("lcl_mld_flag" + flagkey);
var displ = "";
if (print || excel)
{
if (flagkey != 0) displ = safe.html(ttl); // else blijft-ie gewoon leeg
}
else // maak er dan nog leuke plaatjes van
{
var flagIcon = "<span class='mldflag"+flagkey+" mlds'>" + I("fa-fclt-flag" + (flagkey == 0 ? "0" : "")) + "</span>"
// Met hidden flagkey voor sortering. 999 zorgt dat bij 1 keer sorteren de gevlagde direct bovenaan staan
displ = "<div " + ((urole == "bo" || urole == "fo") ? "class='clickParent' onclick='toggleMldFlag(event, "+ mldkey +");'":"")
+ " title='"+safe.htmlattr(ttl)+"'>"
+ "<span id='mldflagimg"+mldkey+"' flagkey='"+flagkey+"'>"+flagIcon+"</span>"
+ "<span style='display:none'>"+(flagkey||999)+"</span></div>";
}
return displ;
}
function fnUitvoertijdTekst(oRs) {
var result = "";
if (oRs("mld_stdmelding_slabewaken").Value == 1) {
if (oRs("uitvoertijd_eenheid").Value == "D") {
result = oRs("uitvoertijd_tijdsduur").Value + " " + L("lcl_mld_days");
} else {
result = Math.round(oRs("uitvoertijd_tijdsduur").Value * 100) / 100 + " " + L("lcl_mld_hours");
}
}
return result;
}
function fncolEindDatum(oRs)
{
if ((oRs("mld_stdmelding_planbaar").Value & 2) == 2)
return "";
if (oRs("mld_melding_parentkey").Value > 0)
return L("lcl_mld_parent_status").format(oRs("mld_melding_parentkey").Value); // default leeg
if (excel)
return oRs("mld_melding_einddatum").Value;
else
return toDateString(oRs("mld_melding_einddatum").Value, excel); // excel noDay
}
function fncolEindTijd(oRs)
{
if ((oRs("mld_stdmelding_planbaar").Value & 2) == 2)
return "";
if (oRs("mld_melding_parentkey").Value > 0)
return "";
var result = "";
if (oRs("uitvoertijd_eenheid").Value == "U" || (S("mld_show_endtime")==1 && oRs("mld_stdmelding_planbaar").Value == 0 && oRs("mld_stdmelding_planbaarfe").Value == 0))
{
if (toTimeString(oRs("mld_melding_einddatum").Value) != "00:00")
result = toTimeString(oRs("mld_melding_einddatum").Value);
}
return result;
}
function fncolBehandelaar(oRs)
{
if (oRs("mld_melding_parentkey").Value > 0)
return L("lcl_mld_parent_status").format(oRs("mld_melding_parentkey").Value); // default leeg
return safe.html(oRs("behandelaar").Value);
}
function fncolBehandelaar2(oRs)
{
if (oRs("mld_melding_parentkey").Value > 0)
{
// Onderdrukken als hij al bij behandelaar staat (in geval van combine: true dus)
var showBeh = minfo || (!(behandel_key_arr && behandel_key_arr.length) || print) && !(frontend && S("mld_fe_show_statusnames") == 0);
return showBeh ? "" : L("lcl_mld_parent_status").format(oRs("mld_melding_parentkey").Value);
}
return safe.html(oRs("behandelaar2").Value);
}
function fncolSoortMelding(oRs)
{
var mldSoortMelding = safe.html(oRs("ins_discipline_omschrijving").Value + "/" + oRs("mld_stdmelding_omschrijving").Value);
return mldSoortMelding;
}
function fncolSubject(oRs)
{
return " <span class='msb'>" +safe.html(oRs("mld_melding_onderwerp").Value) + "</span>";
}
var summaryParams = { status_oms: new Array(),
status_cnt : new Array()
};
function fnsummaryCalc(oRs)
{
with (summaryParams)
{
var mldStatus = parseInt(oRs("mld_status").Value);
var mldActiecode = oRs("mld_melding_actiecode").Value;
var nrOrders = oRs("nrOrders").Value;
var nrActief = oRs("nrActief").Value;
var not_solved = (nrOrders > 0 && nrActief == 0 && backo && mldStatus == 4) || (mldStatus == 5 && (mldActiecode & 128) && S("mld_assume_ok_days") > 0);
var mld_status = (not_solved? L("lcl_mld_not_solved") : mld.getmldstatustext(mldStatus)); // Vanwege performance functie "mld.getextendedmldstatustext" hier niet gebruikt.
var order = (not_solved? 8 : mldStatus);
if (status_oms[order])
{
status_cnt[order] = status_cnt[order] + 1;
}
else
{
status_oms[order] = mld_status;
status_cnt[order] = 1;
}
}
return;
}
function fnsummaryShow()
{
with (summaryParams)
{
status_row = "";
status_row += (status_oms[0] != undefined ? status_oms[0] + "<span class='summary-badge'>" + status_cnt[0] + "</span>":"");
status_row += (status_oms[2] != undefined ? status_oms[2] + "<span class='summary-badge'>" + status_cnt[2] + "</span>":"");
status_row += (status_oms[3] != undefined ? status_oms[3] + "<span class='summary-badge'>" + status_cnt[3] + "</span>":"");
status_row += (status_oms[4] != undefined ? status_oms[4] + "<span class='summary-badge'>" + status_cnt[4] + "</span>":"");
status_row += (status_oms[8] != undefined ? status_oms[8] + "<span class='summary-badge'>" + status_cnt[8] + "</span>":"");
status_row += (status_oms[7] != undefined ? status_oms[7] + "<span class='summary-badge'>" + status_cnt[7] + "</span>":"");
status_row += (status_oms[5] != undefined ? status_oms[5] + "<span class='summary-badge'>" + status_cnt[5] + "</span>":"");
status_row += (status_oms[6] != undefined ? status_oms[6] + "<span class='summary-badge'>" + status_cnt[6] + "</span>":"");
status_row += (status_oms[1] != undefined ? status_oms[1] + "<span class='summary-badge'>" + status_cnt[1] + "</span>":"");
//status_row = status_row.substr(2);
}
return status_row;
}
function fncolOpdrStatus(oRs)
{
return status.getopdrstatustext(oRs("mld_statusopdr_key").Value);
}
function fnendText()
{
var endText = "";
if (no_old_closed_calls && !params.mld_key && !mld_key_arr.length)
endText = L("lcl_newrows1") + S("mld_max_history") + L("lcl_newrows2");
return endText;
}
var sum_satisfaction = 0;
var aantal_oordeel = 0;
function fntotalCalc(oRs)
{ // Totaal oordeel is alle cijfers opgeteld gedeeld door het aantal beoordelingen.
if (oRs("oordeel").Value)
{
sum_satisfaction += oRs("oordeel").Value;
aantal_oordeel++;
}
}
function fntotalShow(column, nrlines)
{
function doOordeel(cnt_satisfaction, sum_satisfaction)
{
var result = cnt_satisfaction > 0? sum_satisfaction/cnt_satisfaction : 0;
if (excel || print)
result = (result!=0? safe.displayfloat(sum_satisfaction/cnt_satisfaction, 1) : "");
else
result = rater(result, {readonly: true});
return result;
}
var result = "";
switch (column.caption)
{
case L("lcl_bes_oordeel") : result = doOordeel(aantal_oordeel, sum_satisfaction); break;
}
return result;
}
function fnOordeel(oRs)
{
var result = null;
var displ_val = oRs("oordeel").Value;
var displ_txt = oRs("oordeel_opm").Value;
if (displ_val && displ_val != 0)
{
if (excel || print)
result = "<span id='oordeel' title='" + safe.htmlattr(displ_txt)+"'>" + displ_val + "</span>";
else
result = rating.stars(displ_val, {rating: {id: "oordeel", note: displ_txt}});
}
return result;
}
function fnrowFlexParams(oRs)
{
var disc_key = oRs("ins_discipline_key").Value;
var this_mld = mld.func_enabled_mld(disc_key, "D");
var flexParams = {readman: this_mld.canMIread, readuse: this_mld.canFEread};
return flexParams;
}
function fncolFlexBijlagen(oRs)
{
var flexval = oRs("flex").Value;
var bijlagen_aantal = 0;
if (bijlageflex)
{
var mld_key = oRs("mld_melding_key").Value;
var bijlagen_oms = "";
var bijlagen_lijst = [];
var sql = "SELECT k.mld_kenmerk_key"
+ " , t.mld_srtkenmerk_omschrijving" // suspect
+ " , CASE"
+ " WHEN BITAND(k.mld_kenmerk_inlijst,1) = 1"
+ " THEN 1"
+ " ELSE 0"
+ " END in_overzicht_tonen"
+ " FROM mld_melding m"
+ " , mld_stdmelding s"
+ " , mld_srtkenmerk t"
+ " , mld_kenmerk k,"
+ " mld_discipline d"
+ " WHERE m.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key IS NULL AND k.mld_kenmerk_niveau = 'A')"
+ " OR (k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))"
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_kenmerktype = 'M'"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " AND t.mld_srtkenmerk_verwijder IS NULL"
+ " AND m.mld_melding_key = " + mld_key;
var oRs_k = Oracle.Execute(sql);
while (!oRs_k.eof)
{
if (oRs_k("in_overzicht_tonen").Value == 1)
{
var kenmerk_key = oRs_k("mld_kenmerk_key").Value;
var bijlagen_oms = oRs_k("mld_srtkenmerk_omschrijving").Value; // suspect
var bestanden = flexProps("MLD", mld_key, kenmerk_key, "M", {getFiles: true});
var km_aantal = bestanden.files.length;
for (i=0; i<km_aantal; i++)
{
bijlagen_lijst.push(bestanden.files[i].name);
}
bijlagen_aantal += km_aantal;
}
oRs_k.MoveNext();
}
oRs_k.Close();
}
return (flexval ? safe.html(flexval.replace(/\r/g, "\n")+ "\n") : "")
+ ( bijlagen_aantal > 0
? "<span title='" + safe.htmlattr(bijlagen_lijst.join("\n")) + "'>"
+ safe.html(bijlagen_oms) + ": " + bijlagen_aantal
+ "</span>"
: ""
);
}
var buttons = [];
buttons.push({ icon: "fa-columns", title: L("lcl_scf_columns"), action: "openColumns()"});
// Als we een subframe onder ins_show_deel zijn dan vooralsnog hier geen toevoeg knop.
// Misschien mag je dat namelijk helemaal niet voor dat object en daar staat wel een
// toverstafje die veel nauwkeuriger werkt.
if (!treat && canAdd && !params.deel_key && !params.deelsrtcont_key && !(params.mldgroup_key > 0 ))
{
var addurl = "appl/mld/mld_melding.asp?urole=" + (backo ? "fo" : urole); // backo mag niet toevoegen
if (params.srtdisc_key_arr.length === 1)
params.srtdisc = params.srtdisc_key_arr[0];
addurl += buildTransitParam(["srtdisc", "ins_key", "rsv_ruimte_key", "ref_key", "ref_type"], params);
if (loc_key_arr.length == 1)
addurl += "&loc_key=" + loc_key_arr[0];
if (bld_key_arr.length == 1)
addurl += "&bld_key=" + bld_key_arr[0];
if (flr_key_arr.length == 1)
addurl += "&flr_key=" + flr_key_arr[0];
if (room_key_arr.length == 1)
addurl += "&room_key=" + room_key_arr[0];
buttons.push({ icon: "fa-plus", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + safe.jsstring(L("lcl_add")) + "')" });
}
buttons.push({ icon: "fa-fclt-refresh", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
if (!frontend)
buttons.push({ icon: "fa-list-ul", title: L("lcl_mld_legenda"), action: 'openLegenda()' });
if ((behandel_key_arr && behandel_key_arr.length == 1) || (disc_key_arr.length == 1)) { // als ik filter op 1 behandelaar en/of 1 vakgroep (discipline).
var calendarurl = "appl/shared/fullcalendar.asp?worker=mldlist"
+ (behandel_key_arr && behandel_key_arr.length == 1? "&bk=" + behandel_key_arr[0] : "")
+ (disc_key_arr.length == 1? "&disc=" + disc_key_arr[0] : "")
+ (stdm_key_arr.length == 1? "&stdm=" + stdm_key_arr[0] : "");
buttons.push({ icon: "fa-calendar", title: L("lcl_calendar"), action: "FcltMgr.openDetail('" + calendarurl + "', '" + safe.jsstring(L("lcl_mld_melding_lopende")) + "')" });
}
// Heb toegang tot de inline opdrachten details?
var authparamsORDBOF = user.checkAutorisation("WEB_ORDBOF", true);
var authparamsEXTORD = user.checkAutorisation("WEB_EXTORD", true);
var authparamsORDBO2 = user.checkAutorisation("WEB_ORDBO2", true);
// Je moet rechten hebben om opdrachten te mogen zien, maar fe krijgt bij het openklappen toch nooit
// iets te zien, dus kan dat dan beter weg. Alternatief dat bij nrOrders het mogen zien door de fe
// meebeschouwt, maar daar zijn ook andere zaken van afhankelijk (bv. Niet Opgelost) dus dat zo maar niet
var accessOpdr = (authparamsORDBOF || authparamsEXTORD || authparamsORDBO2) && !frontend;
if (treat)
var rst = new ResultsetTable({ keyColumn: "mld_melding_key",
sql: sqln,
ID: "treatmenttable",
tabs_code: "treat_list-" + urole,
flexModule: "MLD",
flexId: "mld_melding_key",
flexGroupId: "mld_stdmelding_key", // Kenmerken zijn ook op stdmelding niveau gedefinieerd
flexParentGroupId: "ins_discipline_key", // Kenmerken zijn ook op stdmelding niveau gedefinieerd
flexChangeNiveau: "S", // Niveau voor extra headers (met kenmerken) in excel
flexParams: (urole=="fe" && (print || excel)) ? fnrowFlexParams : null,
filterParams: params,
outputmode: outputmode,
title: (params.mldgroup_key > 0 ? L("lcl_mld_groeperingmeldingen") : L("lcl_complains")),
endText: fnendText,
showAll: showall,
buttons: buttons
});
else
var rst = new ResultsetTable({ keyColumn: "mld_melding_key",
sql: sqln,
ID: "complainstable",
tabs_code: "mld_list-" + urole,
rowClass: mldlist.fnrowClass,
rowData: fnrowData,
disableInlineActions: S("inline_actions_mld") == 0 || tiny && (S("inline_actions_mld") & 2),
rowActionEnabler: (urole=="fo" || urole =="bo") ? fnrowActionEnabler : null,
multiActionEnabler: (urole=="fo" || urole =="bo") ? fnmultiActionEnabler : null,
flexModule: "MLD",
flexId: "mld_melding_key",
flexGroupId: "mld_stdmelding_key", // Kenmerken zijn ook op stdmelding niveau gedefinieerd
flexParentGroupId: "ins_discipline_key", // Kenmerken zijn ook op stdmelding niveau gedefinieerd
flexChangeNiveau: "S", // Niveau voor extra headers (met kenmerken) in excel
flexParams: (urole=="fe" && (print || excel)) ? fnrowFlexParams : null,
filterParams: params,
outputmode: outputmode,
title: (params.mldgroup_key > 0 ? L("lcl_mld_groeperingmeldingen") : L("lcl_complains")),
inlineDetails: accessOpdr ? "inlineOrdersUrl" : null,
hasInlineDetails: accessOpdr ? fnHasOrders : null,
inlineDetailsChanged: accessOpdr ? true : false,
summaryCalc: fnsummaryCalc,
summaryShow: fnsummaryShow,
endText: fnendText,
showAll: showall,
buttons: buttons,
totalCalc: fntotalCalc,
totalShow: fntotalShow
});
rst.addAction({ action: "mld_edit", caption: L("lcl_edit"), isDefault: true } ); // Deze 'altijd'
if (treat)
{
rst.addColumn(new Column({caption: L("lcl_mld_number"), datatype: "number", content: fncolKey, colName: "fncolKey" }));
rst.addColumn(new Column({caption: L("lcl_mld_meldinggroep"), content: "mld_stdmeldinggroep_naam"}));
rst.addColumn(new Column({caption: L("lcl_vakgroup"), content: "ins_discipline_omschrijving", combine: false}));
rst.addColumn(new Column({caption: L("lcl_mld_complain"), content: "mld_stdmelding_omschrijving", combine: true }));
rst.addColumn(new Column({caption: L("lcl_mld_subject"), content: fncolSubject, colName: "fncolSubject", thClass: "sorttable_alpha"}));
for (var i = 0; i < kenm.key.length; i++)
{
rst.addColumn(new Column({caption: String(kenm.omschr[i]),
content: fnfnHandled(String(kenm.key[i])),
colName: "fnfnHandled_" + String(kenm.key[i]),
tdClass: fnfncolClass(String((kenm.key[i])))
}));
}
rst.addColumn(new Column({caption: L("lcl_mld_progress"), content: fnfnProgress, colName: "fnfnProgress", colText: L("lcl_mld_progress"), align: "center"}));
}
else
{
rst.addColumn(new Column({caption: (outputmode == 0? I("fa-bell", { fastyle: "fas" }) : L("lcl_mld_actiecode")), content: fncolActiecode, colName: "fncolActiecode", colText: L("lcl_mld_actiecode"), align: "center"}));
if (S("mld_melding_flags") > 0 && (!frontend || (frontend && S("fac_flags_visible_for_fe") == 1)))
rst.addColumn(new Column({caption: (outputmode == 0? I("fa-fclt-flag0") : L("lcl_mld_flags")), content: fncolFlags, colName: "fncolFlags", colText: L("lcl_mld_flags"), align: "center"}));
rst.addColumn(new Column({caption: (outputmode == 0? I("fa-triangle-exclamation") : L("lcl_mld_urg")), content: fncolSpoed, colName: "fncolSpoed", colText: L("lcl_mld_urg"), hasActions: true}));
rst.addColumn(new Column({caption: L("lcl_mld_number"), datatype: "number", content: fncolKey, colName: "fncolKey" }));
if (anyexternnr)
rst.addColumn(new Column({caption: L("lcl_mld_externr"), content: "mld_melding_externnr", combine: true }));
if (!frontend && anygrdisc)
rst.addColumn(new Column({caption: L("lcl_mld_groep"), content: "mldgroup_prefix", align: "center" }));
if (!frontend)
rst.addColumn(new Column({caption: L("lcl_mld_meldinggroep"), content: "mld_stdmeldinggroep_naam"}));
if (!minfo)
{
rst.addColumn(new Column({caption: L("lcl_vakgroup"), content: "ins_discipline_omschrijving", combine: false}));
if (!tiny) // In tiny we show the stdm with the subject
rst.addColumn(new Column({caption: L("lcl_mld_complain"), content: "mld_stdmelding_omschrijving", combine: true }));
}
rst.addColumn(new Column({caption: L("lcl_mld_date"), content: "mld_melding_datum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), combine: true, content: "mld_melding_datum", colName: "mld_melding_tijd", datatype: "time", nowrap: true, nomidnight: true}));
if (minfo)
{
rst.addColumn(new Column({caption: L("lcl_region"), content: "alg_regio_omschrijving", purpose: PRINTING_ONLY}));
rst.addColumn(new Column({caption: L("lcl_district"), content: "alg_district_omschrijving"}));
}
if (anygeo) {
if (loc_key_arr.length != 1) rst.addColumn(new Column({caption: L("lcl_location"), content: "alg_locatie_code"}));
if (bld_key_arr.length != 1) rst.addColumn(new Column({caption: L("lcl_bld_terra"), content: fncolGebouwTerrein, colName: "fncolGebouwTerrein"}));
if (anydetailedgeo)
{
if (flr_key_arr.length != 1) rst.addColumn(new Column({caption: L("lcl_floor"), content: fncolVerdieping, colName: "fncolVerdieping"}));
if (room_key_arr.length != 1) rst.addColumn(new Column({caption: L("lcl_room"), content: fncolRuimte, colName: "fncolRuimte", nowrap: true}));
}
rst.addColumn(new Column({caption: L("lcl_place"), content: "plaatsmelding"}));
}
if (anyins) {
rst.addColumn(new Column({caption: L("lcl_mld_nr_objects"), content: fncolObject, colName: "fncolObject", combine: anygeo}));
}
// even 2 printonly kolommen tussendoor
if (S("mld_print_loc_address") == 1) {
rst.addColumn(new Column({caption: L("lcl_prs_address_bezoek_adres"), content: "alg_locatie_adres", purpose: PRINTING_ONLY}));
rst.addColumn(new Column({caption: L("lcl_prs_address_bezoek_plaats"), content: "alg_locatie_plaats", purpose: PRINTING_ONLY}));
}
if (minfo)
rst.addColumn(new Column({caption: L("lcl_complain"), content: fncolSoortMelding, colName: "fncolSoortMelding", purpose: PRINTING_ONLY}));
rst.addColumn(new Column({caption: L("lcl_mld_subject"), content: fncolSubject, colName: "fncolSubject", thClass: "sorttable_alpha"}));
if (tiny) // In tiny we show the stdm with the subject
rst.addColumn(new Column({caption: L("lcl_mld_complain"), content: "mld_stdmelding_omschrijving", combine: true }));
else // In tiny we prefer subject-only, unless our subject is empty
rst.addColumn(new Column({caption: L("lcl_txt"), content: "mld_melding_omschrijving", combine: true}));
if (S("mld_print_loc_address") == 2 || S("mld_print_loc_address") == 3)
{
rst.addColumn(new Column({caption: L("lcl_prs_address_bezoek_adres"), content: "alg_locatie_adres", combine: false}));
if (S("mld_print_loc_address") == 2)
rst.addColumn(new Column({caption: L("lcl_estate_gebouw_man_name"), content: "alg_gebouw_naam", combine: true}));
else
rst.addColumn(new Column({caption: L("lcl_prs_address_bezoek_plaats"), content: "alg_locatie_plaats", combine: true}));
}
if (minfo)
{
rst.addColumn(new Column({caption: L("lcl_mld_behandelaar"), content: fncolBehandelaar, colName: "fncolBehandelaar"}));
rst.addColumn(new Column({caption: L("lcl_behandelgegevens"), content: "mld_melding_opmerking"}));
if (mldlist.anybeh)
{
rst.addColumn(new Column({caption: L("mld_processing_group"), content: "behandelteam"}));
rst.addColumn(new Column({caption: L("lcl_mld_processor"), content: fncolBehandelaar2, colName: "fncolBehandelaar2", combine: true}));
}
}
// Meldernaam werd niet getoond bij FE, nieuw, en handig met collegas
rst.addColumn(new Column({caption: L("lcl_caller"), content: "melder"}));
// Behandelaar hoeft niet met de tooltip van de status getoond te worden. De behandelaar wordt wel in een kolom getoond indien het nodig is.
rst.addColumn(new Column({caption: L("lcl_mld_status"), content: fncolStatus, colName: "fncolStatus"}));
if (!frontend)
rst.addColumn(new Column({caption: L("lcl_mld_note"), content: "notitie", colName: "fncolNote", combine: outputmode == 0, tooltip: (outputmode == 0 && !frontend? fncolNoteTooltip : null)}));
if (backo)
{
// Als er geen meldingen zijn met een referentie, dan heeft deze kolom geen zin en wordt het niet getoond.
var refsql = mld.reference_sql();
var ref_oRs = Oracle.Execute(refsql);
if (!ref_oRs.eof)
rst.addColumn(new Column({caption: L("lcl_mld_kto"), content: fncolReferentie, colName: "fncolReferentie"}));
ref_oRs.Close();
}
if (!minfo)
{
rst.addColumn(new Column({caption: L("lcl_behandelgegevens"), content: "mld_melding_opmerking"}));
// als de frontend bij de statusinfo niet mag zien Wie het doet, mag die hier ook niet de behandelaar zien
if (!(frontend && S("mld_fe_show_statusnames") == 0))
rst.addColumn(new Column({caption: L("lcl_mld_behandelaar"), content: fncolBehandelaar, colName: "fncolBehandelaar", combine: (params.mldgroup_key > 0 ? true : false)}));
if (mldlist.anybeh)
{
rst.addColumn(new Column({caption: L("mld_processing_group"), content: "behandelteam"}));
if (!(frontend && S("mld_fe_show_statusnames") == 0))
rst.addColumn(new Column({caption: L("lcl_mld_processor"), content: fncolBehandelaar2, colName: "fncolBehandelaar2", combine: true }));
}
if (anySla) {
rst.addColumn(new Column({caption: L("lcl_mld_stduitvoer"), content: fnUitvoertijdTekst, colName: "fnUitvoertijdTekst", nowrap: true }));
}
rst.addColumn(new Column({caption: L("lcl_mld_actiondate"), content: "mld_melding_actiedatum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_end_date_plan"), content: fncolEindDatum, colName: "fncolEindDatum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), content: fncolEindTijd, colName: "fncolEindTijd", datatype: "time", nowrap: true, combine: true }));
rst.addColumn(new Column({caption: L("mld_melding_tag_naam"), content: "mld_melding_tag_naam", nowrap: true}));
rst.addColumn(new Column({caption: L("mld_melding_tag_einddatum"), content: "mld_melding_tag_datum_tot", datatype: "date", nowrap: true, showDefault: false }));
}
else // if (minfo)
{
rst.addColumn(new Column({caption: L("lcl_prs_organisatie"), content: "organisatie"}));
rst.addColumn(new Column({caption: L("lcl_account"), content: "kostenplaats" }));
rst.addColumn(new Column({caption: L("lcl_mld_oordeel"), content: fnOordeel, colName: "fnOordeel", datatype: "float", decimals: 1, total: true}));
if (excel || print)
rst.addColumn(new Column({caption: L("lcl_fac_like_remark"), content: "oordeel_opm"}));
}
if (anyflex)
{
rst.addColumn(new Column({caption: flexlabel, content: fncolFlexBijlagen, colName: "fncolFlexBijlagen" }));
}
// laatste actiedatum
if (!frontend)
{
rst.addColumn(new Column({caption: L("lcl_mld_laatste_actie"), content: fncolLaatsteActieDatum, colName: "fncolLaatsteActieDatum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), content: fncolLaatsteActieTijd, colName: "fncolLaatsteActieTijd", datatype: "time", nowrap: true, combine: true}));
}
/* de mogelijke acties */
var multiActions = !tiny || params.mldgroup_key > 0;
if ((urole=="fo" || urole =="bo") && !params.full) // dan hebben we fnrowActionEnabler aangezet
{
rst.addAction({ action: "mld_reject", caption: L("lcl_reject"), enabler:"eReject", multi: multiActions, multiOnce: true } );
if (S("mld_melding_close") == 0) // als ik dit via de enabler doe, heb ik em multi nog steeds
rst.addAction({ action: "mld_close", caption: L("lcl_close"), enabler:"eClose", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_accept", caption: L("lcl_mld_accept"), enabler:"eAccept", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_continue", caption: L("lcl_mld_continuation"), enabler: "eContinue", multi: multiActions, multiOnce: true } );
// E<>n van beiden, eEmptyRequiredFields of eForward, is true.
rst.addAction({ action: "mld_forward_disc", caption: L("lcl_mld_forward_disc"), enabler: "eForward" } );
rst.addAction({ action: "mld_forward_empty", caption: L("lcl_mld_forward_disc"), enabler: "eEmptyRequiredFields" } );
// eForward & eForwardTeam niet mutually exclusive
rst.addAction({ action: "mld_forward_team", caption: L("lcl_mld_forward_team"), enabler: "eForwardTeam" } );
rst.addAction({ action: "mld_group", caption: L("lcl_groeperen"), enabler:"eGroup", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_terugzet", caption: L("lcl_terugzet"), enabler: "eTerugzet", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_doorzet", caption: L("lcl_doorzet"), enabler: "eDoorzet", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_verwerk", caption: L("lcl_mld_verwerk"), enabler: "eVerwerk", multi: multiActions, multiOnce: true } );
rst.addAction({ action: "mld_herplan", caption: L("lcl_reschedule"), enabler: "eHerplan", multi: multiActions, multiOnce: true });
rst.addAction({ action: "mld_kenmerk", caption: L("lcl_properties"), enabler: "eKenmerk", multi: multiActions, multiOnce: true } );
}
}
var cnt = rst.processResultset();
if (!excel && !print)
{%>
<!-- LEGENDA -->
<script type="text/javascript">
<% if (Request.ServerVariables("REQUEST_METHOD") == "POST") { %>
if (FcltMgr._frmaccessible(parent) && FcltMgr._safe_parent() !== window && typeof parent.window.doSubmit === "function") {
var fnReloadByPost = parent.window.doSubmit.bind(null, 0);
}
<% } %>
$(function() {
$(".clickParent").parent().on("click", function(e) { e.stopPropagation(); $(this).find("> .clickParent").trigger("click"); });
});
function openLegenda()
{
var myPosition = "right top+30";
if (elems.$originalHeaderRow && elems.$originalHeaderRow.length)
myPosition = "right-15 top+"+(parseInt(elems.$fcltFrameHeader.css("top"))+30);
params = { width: 250,
minWidth: 250,
minHeight: 10,
resizable: false,
position: {my: "right top", at: myPosition},
title: L("lcl_mld_legenda"),
create: FcltMgr.fnCreateCloseButton("div#legenda")
};
$('div#legenda').dialog(params).dialog('open');
FcltMgr.resized();
}
</script>
<%=mldlist.legendaHtml({ treat: treat, anyorders: mldlist.anyorders })%>
<% } %>
</body>
</html>
<%
}
%>