Files
Facilitor/APPL/MLD/opdr_list.inc
Jos Groot Lipman fa8cbebcd2 MARX#39537 flexkenmerken kunnen worden aangegeven voor tonen in lijsten (MLD+OPDR)
svn path=/Website/trunk/; revision=33639
2017-05-01 13:33:22 +00:00

693 lines
33 KiB
C++

<% /*
$Revision$
$Id$
File: opdr_list.inc
Description: Definieert de serverside functie opdr_list() die een lijst van opdrachten toont die
voldoen aan de gegeven parameters/criteria.
Zoals altijd wordt hierbij wel autorisatie betrokken,
maar verder geen contextafhankelijke zaken; dat behoort de aanroeper te doen.
Parameters: -
Context: Word sinds 5.3.1 ook gebruikt vanuit Maninfo als je groepering 2 (opdrachten)
of 16 (opdrachten-->kosten) kiest. Overigens is deze laatste geen andere groepering maar
toont hij alleen iets meer kolommen dan 2
Note: -
*/ %>
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/status.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="../MLD/mld.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["./opdr_list.js", "./mld.js", "jquery-ui.js"]});
function opdr_list(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.print : true | false
// params.excel : true | false
// params.cnt_key : key
// params.bes : true | false
// params.offerte(s) : -1, 0 or 1
// params.withflex : boolean
// if a parameter has a value of -1, then it is assumed not to be set and to be ignored.
/// Deze functie toont de opdrachten, en kan op diverse manieren gebruikt worden:
///
/// a. als overzicht van opdrachten die IK uit moet voeren (En kan aanpassen en afmelden).
/// urole == 'fe', interne uitvoerder
///
/// b. als overzicht van opdrachten die decentraal door mij afgemeld kunnen worden
/// urole=b2, interne uitvoerder decentraal of externe uitvoerdr
/// dit zijn dan opdrachten met opdrachttype.decentraal = 1 die binnen mijn WEB_ORDBOF scope vallen
/// (melding.ins_discipline: afdeling in PRS scope en plaats in ALG scope)
///
/// c. als overzicht van opdrachten die centraal door mij beheerd (ingevoerd en/of afgemeld) kunnen worden
/// urole == 'bo'
/// dit zijn opdrachten die binnen mijn WEB_ORDBOF scope vallen
/// Om een opdracht te kunnen maken moet de melding aan mijn MLDBOF [en ORDBOF] scope voldoen
/// de minima van beides scope gelden hier dan
///
/// d. als overzicht van opdrachten bij een bepaald "budget" ks_key
/// urole == 'bgt'
/// dit zijn opdrachten die binnen mijn WEB_BGTORD scope vallen
///
/// e. tiny: Als passief overzicht (geen event op rows) van opdrachten behorende bij melding, geen headers en dergelijke
/// inline: samen met tiny: Dit is een inline overzicht, Samen met tiny, ook geen headers en dergelijke
///
var urole = params.urole;
var fronto = (urole == "fo");
var backo = (urole == "bo");
var frontend = (urole == "fe");
var bgtmode = (urole == "bgt");
// 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 mld_key = params.mld_key;
var contract = params.contract
var cnt_key = params.cnt_key;
var ks_key = params.ks_key;
var intopdr_key = params.intopdr_key;
// Er kunen twee contract keys meegegeven worden. Een extra contract key die bij contract hoort.
// Als cnt_key en contract_key verschillen kun het nooit een resultaat opleveren
if (contract > 0)
cnt_key = cnt_key + (cnt_key != ""? ", " : "") + contract;
var bes = params.bes;
var tiny = params.tiny;
var inline = params.inline;
//var justClose = params.justClose;
// close_only is vervangen door (pautfunction == "WEB_ORDBO2"): Als je die rechten hebt mag je ook afmelden
var mldstpen = params.mldstpen;
var mldstnew = params.mldstnew;
var mldsting = params.mldsting;
var mldstacc = params.mldstacc;
var mldstuit = params.mldstuit;
var mldstrej = params.mldstrej;
var mldstafm = params.mldstafm;
var mldstver = params.mldstver;
var mldnieto = params.mldnieto;
var mldopdrstrej = params.mldopdrstrej;
var mldopdrstnak = params.mldopdrstnak;
var mldopdrsttfi = params.mldopdrsttfi;
var mldopdrstfia = params.mldopdrstfia;
var mldopdrstuit = params.mldopdrstuit;
var mldopdrstafm = params.mldopdrstafm;
var mldopdrstver = params.mldopdrstver;
var mldopdrstacp = params.mldopdrstacp;
var mldopdrstafr = params.mldopdrstafr;
var mldopdrstgoe = params.mldopdrstgoe;
var showstatus = "";
if (mldstpen) showstatus = (showstatus == ""? "" : showstatus + ",") + "0";
if (mldstrej) showstatus = (showstatus == ""? "" : showstatus + ",") + "1";
if (mldstnew) showstatus = (showstatus == ""? "" : showstatus + ",") + "2";
if (mldsting) showstatus = (showstatus == ""? "" : showstatus + ",") + "3";
if (mldstacc) showstatus = (showstatus == ""? "" : showstatus + ",") + "4";
if (mldstafm) showstatus = (showstatus == ""? "" : showstatus + ",") + "5";
if (mldstver) showstatus = (showstatus == ""? "" : showstatus + ",") + "6";
if (mldstuit) showstatus = (showstatus == ""? "" : showstatus + ",") + "7";
if (mldnieto) showstatus = (showstatus == ""? "" : showstatus + ",") + "99";
var from_mld = (showstatus != "");
params.showstatus = showstatus;
params.from_mld = from_mld;
var showopdrstatus = "";
if (mldopdrstrej) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "1";
if (mldopdrstnak) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "2";
if (mldopdrsttfi) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "3"; // Verderop wordt wel bepaald of 'b2' status 3 mag zien
if (mldopdrstfia) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "4";
if (mldopdrstuit) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "5";
if (mldopdrstafm) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "6";
if (mldopdrstver) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "7";
if (mldopdrstacp) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "8";
if (mldopdrstafr) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "9";
if (mldopdrstgoe) showopdrstatus = (showopdrstatus == ""? "" : showopdrstatus + ",") + "10"; // Verderop wordt wel bepaald of 'b2' status 10 mag zien
params.showopdrstatus = showopdrstatus;
params.mldopdrstrej = mldopdrstrej;
params.mldopdrstafm = mldopdrstafm;
params.mldopdrstver = mldopdrstver;
var groepering_key = params.groepering_key; // Voor maninfo. 2 en 16 ondersteund
params.uitvoerder = false;
if (frontend)
{
// Dan zijn het alleen opdrachten van *mijn* meldingen waarop ik MLDUSE-read rechten heb
// en van het type waarbij mld_typeopdr_zichtbaarfe = 1 als ik een mld_key heb
// Omdat uitsluitend vanuit subframe van mld_melding wordt aangeroepen in deze mode veronderstellen we dat geregeld.
// OF het zijn de opdrachten waarvan ik uitvoerende ben (MLDORD)
if (params.mld_key)
var pautfunction = "WEB_MLDUSE";
else
{
var pautfunction = "WEB_MLDORD";
params.uitvoerder = true;
}
}
else if (from_mld)
var pautfunction = ["WEB_ORDBO2","WEB_ORDBOF"];
else if (urole == 'b2')
var pautfunction = "WEB_ORDBO2";
else if (urole == 'bgt')
var pautfunction = "WEB_BGTORD";
else
var pautfunction = "WEB_ORDBOF";
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation(pautfunction);
if (mld_key)
{ // Bestaat de gezochte melding?
var sql = "SELECT '1' FROM mld_melding WHERE mld_melding_key = " + mld_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{ // Melding bestaat. Dan kan de info opgevraagd worden.
var mld_melding = mld.mld_melding_info(mld_key);
lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
// Moet hier eigenlijk niet ook gecontroleerd worden of ik de opdrachten van deze melding wel mag zien?
// var this_mld = mld.func_enabled_melding(mld_key, {verynew: verynew}); // Wat heb ik zoal aan rechten op deze specifieke melding
// var hasFOBOread = this_mld.canFOread || this_mld.canBOread;
}
}
if (params.withflex && !excel && !print)
{
// Fast check to see if we have any listable flex at all, to prevent superfluous empty column
var sql= "SELECT 1"
+" FROM mld_srtkenmerk sk, mld_kenmerk k"
+" WHERE BITAND (mld_srtkenmerk_systeem, 2) = 2"
+" AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+" AND k.mld_kenmerk_niveau = 'O'"
+" AND k.mld_kenmerk_verwijder IS NULL"
+" AND sk.mld_srtkenmerk_verwijder IS NULL"
+" AND ROWNUM = 1";
var oRs = Oracle.Execute(sql);
params.anyflex = !oRs.eof;
oRs.close();
}
%>
<html>
<head>
<%
if (!params.inline)
FCLTHeader.Generate({ outputmode: params.outputmode });
%>
<script type="text/javascript">
// Text strings used by opdr_list.js
var urole = "<%=urole%>";
var setting_mld_accept_confirm = <%=S("mld_accept_confirm")?1:0%>;
</script>
</head>
<body id="listbody">
<%
var prefix = ';-)'; // even if no result it must have a value
var sql = mld.getopdroverzicht_sql(pautfunction, params);
var status_oms = new Array();
var status_cnt = new Array();
/**********************************
* Callback functies ResultsetTable
*********************************/
var recent = new Date();
recent.setMinutes(recent.getMinutes() - S("mld_opdracht_recent"));
function fnrowClass(oRs)
{
if (oRs("mld_opdr_einddatum").Value > oRs("nu").Value ||
oRs("mld_statusopdr_key").Value == 1 ||
oRs("mld_statusopdr_key").Value == 2 ||
oRs("mld_statusopdr_key").Value == 6 ||
oRs("mld_statusopdr_key").Value == 7 ||
oRs("mld_statusopdr_key").Value == 9)
{ // Alleen open opdrachten kunnen een rode kleur krijgen.
class1 = "";
}
else
{
class1 = " expired2";
}
var mld_recent = new Date(oRs("recentdatum").Value);
if (mld_recent > recent)
{
class1 += " updated";
}
return class1;
}
// Extra data voor de client om daar dynamisch buttons te kunnen activeren.
function fnrowData(oRs)
{
var mldKey = oRs("mld_melding_key").Value;
var mldPrefix = oRs("ins_srtdiscipline_prefix").Value ? oRs("ins_srtdiscipline_prefix").Value : "";
var mldVolgnr = oRs("mld_opdr_bedrijfopdr_volgnr").Value;
var data = {mldKey: mldKey, mldPrefix: mldPrefix, mldVolgnr: mldVolgnr};
return JSON.stringify(data);
}
// Opdracht rechten.
var my_mldrechten = user.func_enabled("MLD");
var canWriteORDBOF = my_mldrechten.canWrite("WEB_ORDBOF");
var canWriteORDAFR = my_mldrechten.canWrite("WEB_ORDAFR");
// Factuur rechten.
var authparamsFINUSE = user.checkAutorisation("WEB_FINUSE", true);
var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true);
var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true);
// Alleen PRSreadlevel en PRSwritelevel van belang want fac_functie_min_level = 7 (lezen en schrijven organisatie)
// Alleen FE (als contactpersoon) of FO kan aanmaken.
var hasAddFactuurRights = ((authparamsFINUSE && authparamsFINUSE.PRSwritelevel < 9) || (authparamsFINFOF && authparamsFINFOF.PRSwritelevel));
var hasListFactuurRights = (authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder());
var exhandler = mld.iamContact(); // Later nodig voor bepaling eClose.
function fnrowActionEnabler(oRs)
{
var o_stat = oRs("mld_statusopdr_key").Value;
eAdd = (urole == 'bo') && canWriteORDBOF /* && TODO melding binnen scope daarvan maar dat maakt de query erg ingewikkeld */;
var eClose = (o_stat == 5 || o_stat == 8) && authparams.ALGwritelevel < 9;
// Afmelden van opdrachten toegekend aan bedrijven mag ik alleen als
// mld_typeopdr_afmelden_extern == 2 of als je contactpersoon bent
// Dus: ik ben interne uitvoerder en mld_typeopdr_afmelden_extern == 2, of
// ik ben externe uitvoerder (contactpersoon van dit bedrijf)
if (urole == 'b2' && oRs("mld_typeopdr_afmelden_extern").Value < 2 && oRs("B_OF_P").Value == 'B' && !exhandler)
eClose = false;
if (urole == 'bo' && oRs("mld_typeopdr_decentraal").Value == 2)
eClose = false; // Exclusief decentraal
// Als kosten bij afmelden verplicht zijn:
var matchtype = oRs("mld_typeopdr_matchtype").Value;
var req_type = oRs("mld_typeopdr_kosten_verplicht").Value;
var req_opdr = oRs("mld_disc_params_opdr_kosten").Value || 0;
var kosten_verplicht_afm = (matchtype != 4 && (req_type & 2 || (req_type == 0 && req_opdr & 2))? 1 : 0) == 1;
var opdr_kosten = oRs("mld_opdr_kosten").Value;
if (kosten_verplicht_afm && opdr_kosten == null)
eClose = false;
// Voor het accepteren van meldingen gelden bijna dezelfde conditites als voor het sluiten
// Alleen mag dat natuurlijk niet als een melding al is geaccepteerd.
var eAccept = eClose && o_stat == 5;
var eCopy = eAdd;
var isofferte = oRs("mld_typeopdr_isofferte").Value == 1;
var typehas_cost = oRs("mld_typeopdr_kosten").Value == 1;
var is_planned_action = oRs("mld_action").Value != null || oRs("opdr_action").Value > 0;
var eFinish = (o_stat == 6 && // Opdracht status Afgemeld(6)
!isofferte &&
typehas_cost &&
canWriteORDAFR &&
!is_planned_action);
var has_facturen = oRs("aantal_facturen").Value > 0; // De opdracht heeft facturen.
var eAddFactuur = typehas_cost && !has_facturen && hasAddFactuurRights; // Kan rechtstreeks vanuit deze opdracht een factuur aanmaken.
var eListFactuur = typehas_cost && has_facturen && hasListFactuurRights; // Mag lijst met facturen zien die bij deze opdracht horen.
var data = {eAdd: eAdd, eClose: eClose, eCopy: eCopy, eAccept: eAccept, eFinish: eFinish, eAddFactuur: eAddFactuur, eListFactuur: eListFactuur};
return data;
}
function fncolSpoed(oRs) // exacte kopie vanuit mld_list.inc
{
var displ = mld.getpriotext(oRs("mld_melding_spoed").Value);
var hprio = "<div style='display:none'>"+oRs("mld_melding_spoed").Value+"</div>"; // for sorting i presume
if (outputmode ==0) { // maak er dan nog leuke plaatjes van
switch (oRs("mld_melding_spoed").Value)
{
case 1: displ = "<span class='fa fa-exclamation-triangle fa-lg fa-fw' id='urg_kritiek1' title='" + displ+"'>"+hprio+"</span>"; break;
case 2: displ = "<span class='fa fa-exclamation-triangle fa-lg fa-fw' id='urg_hoog1' title='" + displ+"'>"+hprio+"</span>"; break;
case 3: displ = "<span id='urg_normaal1' title='" + displ + "'>"+hprio+"</span>"; break;
case 4: displ = "<span class='fa fa-arrow-circle-o-down fa-lg fa-fw' id='urg_laag1' title='" + displ+"'>"+hprio+"</span>"; break;
case 5: displ = "<span class='fa fa-pause-circle-o fa-lg fa-fw' id='urg_hold1' title='" + displ+"'>"+hprio+"</span>"; break;
}
}
return displ;
}
function fncolKey(oRs)
{
return oRs("ins_srtdiscipline_prefix") + oRs("mld_melding_key") + "/" + oRs("mld_opdr_bedrijfopdr_volgnr");
}
function fnMldStatus(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_melding_status").Value);
var nrOrders = oRs("nrOrders").Value;
var nrActief = oRs("nrActief").Value;
// Een melding is nog niet opgelost als er opdrachten/offertes zijn bij de melding en waarvan er geen enkele meer actief is.
// De status voor deze meldingen is geaccepteerd(4).
var not_solved = nrOrders > 0 && oRs("nrActief").Value == 0 && backo && mldStatus == 4;
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)
}
var mld_status = mld.getmldstatustext(mldStatus);
return mld_status;
}
function fnOpdrStatus(oRs)
{
var txt = mld.getextendedopdrstatustext(oRs("mld_statusopdr_key").Value, oRs("mld_opdr_key").Value);
if (oRs("mld_opdr_verzonden").Value == null && L("lcl_mld_opdr_notyetsent"))
txt += "<br>" + L("lcl_mld_opdr_notyetsent");
return txt;
}
var summaryParams = { status_oms: new Array(),
status_cnt : new Array()
};
function fnsummaryCalc(oRs)
{
with (summaryParams)
{
var opd_status = status.getopdrstatustext(oRs("mld_statusopdr_key").Value);
var order = oRs("mld_statusopdr_key").Value;
if (status_oms[order])
{
status_cnt[order] = status_cnt[order] + 1;
}
else
{
status_oms[order] = opd_status;
status_cnt[order] = 1;
}
}
return;
}
function fnsummaryShow()
{
with (summaryParams)
{
status_row = "";
status_row += (status_oms[10] != undefined? ", " + status_oms[10] + " <b>" + status_cnt[10] + "</b>" : "");
status_row += (status_oms[3] != undefined? ", " + status_oms[3] + " <b>" + status_cnt[3] + "</b>" : "");
status_row += (status_oms[4] != undefined? ", " + status_oms[4] + " <b>" + status_cnt[4] + "</b>" : "");
status_row += (status_oms[5] != undefined? ", " + status_oms[5] + " <b>" + status_cnt[5] + "</b>" : "");
status_row += (status_oms[8] != undefined? ", " + status_oms[8] + " <b>" + status_cnt[8] + "</b>" : "");
status_row += (status_oms[6] != undefined? ", " + status_oms[6] + " <b>" + status_cnt[6] + "</b>" : "");
status_row += (status_oms[9] != undefined? ", " + status_oms[9] + " <b>" + status_cnt[9] + "</b>" : "");
status_row += (status_oms[7] != undefined? ", " + status_oms[7] + " <b>" + status_cnt[7] + "</b>" : "");
status_row += (status_oms[1] != undefined? ", " + status_oms[1] + " <b>" + status_cnt[1] + "</b>" : "");
status_row += (status_oms[2] != undefined? ", " + status_oms[2] + " <b>" + status_cnt[2] + "</b>" : "");
status_row = status_row.substr(2);
}
return status_row;
}
function fnendText()
{
var endText = "";
if (S("mld_max_history") > 0 && (mldopdrstrej || mldopdrstafm || mldopdrstver) && !mld_key)
endText = L("lcl_newrows1") + S("mld_max_history") + L("lcl_newrows2");
return endText;
}
var buttons = [];
var addallowed = false;
if (mld_key)
{
var sqlm = "SELECT COUNT(*) aantal FROM mld_melding WHERE mld_melding_key = " + mld_key;
var oRs3 = Oracle.Execute(sqlm);
if (oRs3("aantal").Value == 1) // De mld_key moet ook echt bestaan.
{
var this_mld = mld.func_enabled_melding(mld_key);
addallowed = this_mld.canAddOpdr;
}
oRs3.Close();
if (addallowed)
{
var addurl = "appl/mld/mld_opdr.asp?urole=bo&mld_key=" + mld_key;
if (!inline)
buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
// else ooit eens testen/ netjes
// buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "parent.$('#tdinline').load(window.location.href, resizeWhenInIFrame);" });
buttons.push({ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')" });
}
}
// Een kalender met opdrachten tonen; dit is niet zinvol als ik embedded ben
// Je kunt dit bv afmeten aan tiny of aan het gedefinieerd zijn van een meldingkey
// In b2 mode zie je minder opdrachten (alleen waar je ORDBO2 voor hebt), dan is de relatie
// met de kalender verwarrend, dus dan ook liever weg.
if (!mld_key && urole != 'b2' && urole != 'mi') {
// Dit is het OCP filter van de persoonselector: *ik* kan een interne contactpersoon zijn
// Dan is er een kalenderknop om mijn lopende in een overzicht te zien
// Goedkoper is wellicht of er een exist is van mld_opdr.prs_perslid_key = me
var csql = "SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker f"
+ ", fac_functie ff"
+ " WHERE f.fac_functie_key = ff.fac_functie_key"
+ " AND prs_perslid_key = " + user_key
+ " AND (fac_functie_code = 'WEB_MLDBOF' OR fac_functie_code = 'WEB_MLDBO3')"
+ " AND f.fac_gebruiker_prs_level_write <9"
+ " AND f.fac_gebruiker_alg_level_write <9";
var coRs = Oracle.Execute(csql);
if (!coRs.eof) {
var calendarurl = 'appl/shared/fullcalendar.asp?worker=opdrlist';
buttons.push ({ icon: "calendar_1.png", title: L("lcl_calendar"), action: "FcltMgr.openDetail('" + calendarurl + "', '" + L("lcl_mld_opdr_lopende") + "')" });
}
}
if (!frontend)
buttons.push({ icon: "legenda.png", title: L("lcl_mld_legenda"), action: "openLegenda()" });
function fncolFiatteur(oRs)
{
if (oRs("mld_statusopdr_key").Value == 3)
return oRs("fiatteur").Value;
else
return "";
}
function fncolContractnr(oRs)
{
var cnt_nr = oRs("cnt_contract_nummer_intern").Value;
if (oRs("cnt_contract_versie").Value)
cnt_nr += "."+oRs("cnt_contract_versie").Value;
return safe.html(cnt_nr);
}
// We really need to suppress columns that are obviously irrelevant for this configuration
// Fast check to see if we have anything to do with geographics
var algsql= "SELECT COUNT(*) FROM ins_srtdiscipline WHERE ins_srtdiscipline_alg > 0 AND ins_srtdiscipline_verwijder IS NULL";
var algoRs = Oracle.Execute(algsql);
var anyalg = algoRs(0).value > 0;
algoRs.close();
// Fast check to see if we have just one opdrachttype
var otsql= "SELECT COUNT(*) FROM mld_typeopdr";
var otoRs = Oracle.Execute(otsql);
var singleOT = otoRs(0).value == 1;
otoRs.close();
var rst = new ResultsetTable({ keyColumn: "mld_opdr_key",
ID: "opdrtable",
rowClass: fnrowClass,
rowData: fnrowData,
rowActionEnabler: fnrowActionEnabler,
sql: sql,
flexModule: "OPDR",
flexId: "mld_opdr_key",
flexGroupId: "mld_typeopdr_key", // Flexkenmerken verschillen per opdrachttype (mld_typeopdr_key)
filterParams: params,
outputmode: outputmode,
title: L("lcl_orders"),
inline: inline,
summaryCalc: (!tiny ? fnsummaryCalc : null),
summaryShow: (!tiny ? fnsummaryShow : null),
summaryId : (!tiny && mld_key ? mld_key : null),
endText: fnendText,
showAll: showall,
buttons: buttons
});
// Gebruik (!tiny) om bepaalde kolommen in compacte mode niet te tonen
rst.addColumn(new Column({caption: "!", content: fncolSpoed}));
var nrtooltip = (!tiny ? "mld_typeopdr_omschrijving" : null);
rst.addColumn(new Column({caption: L("lcl_shared_order"), content: fncolKey, tooltip: nrtooltip, hasActions: true }));
rst.addColumn(new Column({caption: L("lcl_opdr_id"), content: "mld_opdr_id", combine:true}));
if (!singleOT)
{
rst.addColumn(new Column({caption: L("lcl_mld_typeopdr"), content: "mld_typeopdr_omschrijving"}));
}
if (anyalg)
{
rst.addColumn(new Column({caption: L("lcl_district"), content: "alg_district_omschrijving", purpose: PRINTING_ONLY}));
rst.addColumn(new Column({caption: L("lcl_place"), content: "plaatsmelding"}));
if (S("mld_print_loc_address") == 1)
rst.addColumn(new Column({caption: L("lcl_location_address"), content: "alg_locatie_adres", purpose: PRINTING_ONLY}));
if (S("mld_print_loc_address") == 2)
{
rst.addColumn(new Column({caption: L("lcl_location_address"), content: "alg_locatie_adres", combine: false}));
rst.addColumn(new Column({caption: L("lcl_estate_gebouw_man_name"), content: "alg_gebouw_naam", combine: true}));
}
}
if (excel)
{
rst.addColumn(new Column({caption: L("lcl_vakgroup_type"), content: "ins_srtdiscipline_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_vakgroup"), content: "ins_discipline_omschrijving"}));
}
rst.addColumn(new Column({caption: (cnt_key? L("lcl_cnt_service_name") : L("lcl_complain")), content: "mld_stdmelding_omschrijving"}));
if (!tiny) {
rst.addColumn(new Column({caption: L("lcl_mld_opdr_description"), content: "mld_opdr_omschrijving", combine:true}));
}
rst.addColumn(new Column({caption: L("lcl_orderdate"), content: "mld_opdr_datumbegin", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), content: "mld_opdr_datumbegin", datatype: "time", combine: true, nomidnight: true}));
var hasMLD = user.has(["WEB_MLDBOF","WEB_MLDFOF"]);
if (hasMLD)
{
rst.addColumn(new Column({caption: L("lcl_mld_mldstatus"), content: fnMldStatus}));
}
rst.addColumn(new Column({caption: L("lcl_mld_opdr_status"), content: fnOpdrStatus, combine: hasMLD}));
if (S("mld_plandate_in_list") == 1) {
rst.addColumn(new Column({caption: L("lcl_opdr_plandate"), content: "mld_opdr_plandatum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), content: "mld_opdr_plandatum", datatype: "time", combine: true, nomidnight: true}));
}
rst.addColumn(new Column({caption: L("lcl_opdr_enddate"), content: "mld_opdr_einddatum", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_time"), content: "mld_opdr_einddatum", datatype: "time", combine: true, nomidnight: true}));
rst.addColumn(new Column({caption: L("lcl_handler"), content: "uitv_naam"}));
if (!tiny)
if (bes)
rst.addColumn(new Column({caption: L("lcl_mld_inf_name"), content: "melder"}));
else
rst.addColumn(new Column({caption: L("lcl_mld_behandelaar"), content: "behandelaar", combine: true}));
rst.addColumn(new Column({caption: L("lcl_requestor"), content: "aanvrager", purpose: PRINTING_ONLY}));
if (cnt_key)
{
rst.addColumn(new Column({caption: L("lcl_cnt_contractnr"), content: "cnt_contract_nummer"}));
rst.addColumn(new Column({caption: L("lcl_cnt_intern_nr"), content: fncolContractnr}));
}
if (!tiny && S("mld_show_order_details"))
rst.addColumn(new Column({caption: L("lcl_mld_inf_Opmerking"), content: "mld_opdr_opmerking"})); // INKORTEN als niet print??
if (groepering_key == 2 || groepering_key == 16)
{
rst.addColumn(new Column({caption: L("lcl_account"), content: "kpstring"}));
}
if (!tiny)
rst.addColumn(new Column({caption: L("lcl_opdr_kosten") + "&nbsp;(" + L("lcl_valutasign") + ")", content: "mld_opdr_kosten", datatype: "currency", total: true}));
if (fronto || backo)
rst.addColumn(new Column({caption: L("lcl_mld_approver"), content: fncolFiatteur}));
if (groepering_key == 16)
{
rst.addColumn(new Column({caption: L("lcl_hours"), content: "mld_opdr_uren", datatype: "currency", total: true}));
rst.addColumn(new Column({caption: L("lcl_hour_rate") + "&nbsp;(" + L("lcl_valutasign") + ")", content: "mld_opdr_uurloon", datatype: "currency", total: true}));
rst.addColumn(new Column({caption: L("lcl_mater_cost") + "&nbsp;(" + L("lcl_valutasign") + ")", content: "mld_opdr_materiaal", datatype: "currency", total: true}));
rst.addColumn(new Column({caption: L("lcl_correct") + "&nbsp;(" + L("lcl_valutasign") + ")", content: "correctie", datatype: "currency", total: true}));
}
if (groepering_key == 2 || groepering_key == 16)
{
rst.addColumn(new Column({caption: L("lcl_mld_invoiced") + "&nbsp;(" + L("lcl_valutasign") + ")", content: "gefactureerd", datatype: "currency", total: true}));
}
if (params.anyflex)
rst.addColumn(new Column({caption: L("lcl_flexlist"), content: "flex"}));
// actions conditioneel maken?
rst.addAction({ action: "opdr_edit", caption: L("lcl_details"), isDefault: true });
if (urole=="fo" || urole =="bo" || urole =="b2")
{
if (!mld_key || addallowed)
rst.addAction({ action: "opdr_copy", caption: L("lcl_mld_copy"), enabler: "eCopy" });
if (S("mld_opdr_close") == 0)
{
if (tiny)
rst.addAction({ action: "opdr_close_one", caption: L("lcl_close"), enabler: "eClose", multi: false });
else
rst.addAction({ action: "opdr_close", caption: L("lcl_close"), enabler: "eClose", multi: true, multiOnce: true });
}
rst.addAction({ action: "opdr_accept", caption: L("lcl_accept"), enabler: "eAccept", multi: true, multiOnce: true });
rst.addAction({ action: "opdr_finish", caption: L("lcl_opdr_closekosten"), enabler: "eFinish", multi: true, multiOnce: true });
}
rst.addAction({ action: "opdr_add_invoice", caption: L("lcl_mld_invoicing"), enabler: "eAddFactuur" });
rst.addAction({ action: "opdr_list_invoice", caption: L("lcl_mld_invoicing"), enabler: "eListFactuur" });
var count = rst.processResultset();
if (!excel && !print)
{
%>
<!-- LEGENDA -->
<script type="text/javascript">
function openLegenda()
{
params = { width: 250,
minWidth: 250,
//height: 130,
minHeight: 10,
resizable: false,
position: {my: "right top", at: "right top+30"},
title: "<%=L("lcl_mld_legenda")%>"
}
$('div#legenda').dialog(params).dialog('open');
FcltMgr.resized();
}
</script>
<div id="legenda" style="display:none; line-height: 30px;">
<table id="opdrachtlegenda">
<tr>
<td title="<%= L("lcl_mld_legenda_normal_tt") %>"><%= L("lcl_mld_legenda_normal") %></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>
</table>
<!-- Geen flags -->
</div>
<%
}
%>
</body>
</html>
<%
}
%>