693 lines
33 KiB
C++
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") + " (" + 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") + " (" + L("lcl_valutasign") + ")", content: "mld_opdr_uurloon", datatype: "currency", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mater_cost") + " (" + L("lcl_valutasign") + ")", content: "mld_opdr_materiaal", datatype: "currency", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_correct") + " (" + 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") + " (" + 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>
|
|
<%
|
|
}
|
|
%>
|