Files
Facilitor/APPL/MLD/opdr_list.inc
Maykel Geerdink ab3099e794 FSN#35591: Lijst exporteren naar excel zonder kenmerken geeft extra text.
svn path=/Website/trunk/; revision=28293
2016-02-25 09:35:22 +00:00

1120 lines
53 KiB
PHP

<% /*
$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.org_key : key
// params.reg_key : key
// params.dist_key : key
// params.loc_key : key
// params.behandel_key : key
// params.bld_key : key
// params.handler_key : key
// params.opdrtype_key : key
// params.cnt_key : key
// params.caller_key : key
// params.srtdisc_key : key
// params.disc_key_arr : Array met keys (e.g. [3, 4, 5])
// params.stdm_key_arr : Array met keys (e.g. [3, 4, 5])
// params.searchtekst : wildcard string
// params.opdrtype_key : key
// params.bes : true | false
// params.offerte(s) : -1, 0 or 1
// 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)
// Opdrachtstatussen:
// params.opdrstuit:
// params.opdrstafm:
// params.opdrstver:
// afdel =
// kp = kostenplaats (wildcard)
//
// if a parameters 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. 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");
// 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 opdr_key = params.opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key
var behandel_key = params.behandel_key;
var srtdisc_key = params.srtdisc_key;
var searchtekst = params.searchtekst;
var reg_key = params.reg_key;
var dist_key = params.dist_key;
var adr_key = params.adr_key;
var loc_key = params.loc_key;
var bld_key = params.bld_key;
var caller_key = params.caller_key;
var org_key = params.org_key;
var srtdisc_key = params.srtdisc_key;
var disc_key_arr = params.disc_key_arr; // Array met keys (e.g. [3, 4, 5])
var meldinggrp_key = params.meldinggrp_key;
var behandelgrp_key = params.behandelgrp_key;
var stdm_key_arr = params.stdm_key_arr;
var kp = params.kp;
var handler_key = params.handler_key;
var mldstatus_arr = params.mldstatus_arr;
var opdrstatus_arr = params.opdrstatus_arr;
var chkAcceptEx = params.chkAcceptEx;
var chkRunEx = params.chkRunEx;
var chkSpoed = params.chkSpoed;
var chkAfgerond = params.chkAfgerond;
var datefrom = params.datefrom;
var dateto = params.dateto;
var opdrtype_key = params.opdrtype_key
var contract = params.contract
var cnt_key = params.cnt_key;
var offerte = params.offerte; // Opdrachttype is een offerteaanvraag. Kan -1:don't care, 0:niet, 1:wel zijn.
if (params.offertes) // Helaas geeft mld_search_list.asp het meervoud door
offerte = 1;
// 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 != "");
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
var groepering_key = params.groepering_key; // Voor maninfo. 2 en 16 ondersteund
var 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";
uitvoerder = true;
}
}
else if (from_mld)
var pautfunction = ["WEB_ORDBO2","WEB_ORDBOF"];
else if (urole == 'b2')
var pautfunction = "WEB_ORDBO2";
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);
// AUTORISATIES
// Autorisatie check is al gedaan in mld_search_list.asp
// Dit lijkt me om te kunnen bepalen of ik uberhaupt naar de PRS-autorisatie hoef te kijken
var add_prs_restrict = prshasrestrict(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;
}
}
%>
<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
if (from_mld)
{
var functiecode = "'WEB_MLDBOF'";
for (var i = 0; i < pautfunction.length; i++)
{
functiecode += "," + safe.quoted_sql(pautfunction[i]);
}
}
else
var functiecode = safe.quoted_sql(pautfunction);
// check if user has a building or lower scope. If so we have to include onroerendgoed view.
sql2 = "SELECT fac_groeprechten_key "
+ " FROM fac_functie f"
+ " , fac_groeprechten gr"
+ " , fac_gebruikersgroep gg"
+ " WHERE gg.prs_perslid_key = " + user_key
+ " AND gr.fac_groep_key = gg.fac_groep_key"
+ " AND gr.fac_functie_key = f.fac_functie_key"
+ " AND (f.fac_functie_code IN (" + functiecode + "))"
+ " AND ( ( gr.fac_gebruiker_alg_level_read < 9 "
+ " AND gr.fac_gebruiker_alg_level_read > 2 "
+ " ) "
+ " OR ( gr.fac_gebruiker_alg_level_write < 9 "
+ " AND gr.fac_gebruiker_alg_level_write > 2 "
+ " ) "
+ " ) ";
bld_scope = false;
oRs2 = Oracle.Execute(sql2);
if (!oRs2.eof)
{
bld_scope = true;
}
sqltrack = (groepering_key == 2 || groepering_key == 16 // Minfo groepering Opdracht(2) en Opdracht + Kosten(16).
? ", TO_DATE('01-01-1970', 'DD-MM-YYYY')"
: ", (SELECT MAX(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 = o.mld_opdr_key" // opdracht key uit "sql"
+ " AND sn.fac_srtnotificatie_xmlnode = 'opdracht')")
+ " recentdatum";
var whereUs = ""; // straks voor de statussen
sql = "SELECT o.mld_melding_key"
+ " , o.mld_opdr_bedrijfopdr_volgnr"
+ " , o.mld_opdr_einddatum"
+ " , l.alg_locatie_code ||"
+ " (SELECT NVL2(geg.alg_gebouw_code,'-'||geg.alg_gebouw_code,'') ||"
+ " NVL2(geg.alg_verdieping_code,'-'||geg.alg_verdieping_code,'') ||"
+ " NVL2(geg.alg_ruimte_nr,'-'||geg.alg_ruimte_nr,'')||"
+ " NVL2(geg.alg_terreinsector_code,'-'||geg.alg_terreinsector_code,'')"
+ " FROM alg_v_allonrgoed_gegevens geg"
+ " WHERE m.mld_alg_onroerendgoed_keys = geg.alg_onroerendgoed_keys"
+ " AND rownum = 1"
+ " ) plaatsmelding"
+ " , l.alg_locatie_adres"
+ (S("mld_print_loc_address") == 2
? " , (SELECT geg.alg_gebouw_naam"
+ " FROM alg_v_allonrgoed_gegevens geg"
+ " WHERE geg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys) alg_gebouw_naam"
: "")
+ " , di.alg_district_omschrijving"
+ " , (SELECT u.naam FROM mld_v_uitvoerende u WHERE U.mld_uitvoerende_key = O.mld_uitvoerende_keys) naam"
+ " , (SELECT " + S("prs_pers_string")
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
+ " , o.mld_opdr_key"
+ " , c.cnt_contract_key"
+ " , c.cnt_contract_nummer"
+ " , c.cnt_contract_nummer_intern"
+ " , c.cnt_contract_versie"
+ " , o.mld_opdr_datumbegin"
+ " , o.mld_opdr_plandatum"
+ " , " + lcl.xsqla('t.mld_typeopdr_omschrijving', 't.mld_typeopdr_key')
+ " , t.mld_typeopdr_decentraal"
+ " , t.mld_typeopdr_afmelden_extern"
+ " , sd.ins_srtdiscipline_prefix"
+ " , " + lcl.xsqla('std.mld_stdmelding_omschrijving','std.mld_stdmelding_key')
+ " , " + S("prs_pers_string")+ " melder"
+ " , SYSDATE nu"
+ " , o.mld_opdr_kosten"
+ (urole == 'mi'
? " , COALESCE((SELECT SUM(f.fin_factuur_totaal)"
+ " FROM fin_factuur f"
+ " WHERE f.mld_opdr_key = o.mld_opdr_key "
+ " AND f.fin_factuur_statuses_key <> 1"
+ " AND f.fin_factuur_verwijder IS NULL), 0) gefactureerd"
: "")
+ " , o.mld_opdr_uren"
+ " , o.mld_opdr_materiaal"
+ " , o.mld_opdr_uurloon"
+ " , o.mld_opdr_kosten - ((mld_opdr_uren * mld_opdr_uurloon) + mld_opdr_materiaal) correctie"
+ " , o.mld_opdr_opmerking"
+ " , (SELECT " + S("prs_pers_string")
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = m.prs_perslid_key_voor) aanvrager"
+ " , COALESCE((SELECT 'B'"
+ " FROM prs_bedrijf"
+ " WHERE prs_bedrijf_key = o.mld_uitvoerende_keys)"
+ " , (SELECT 'P'"
+ " FROM prs_perslid"
+ " WHERE prs_perslid_key = o.mld_uitvoerende_keys)) B_OF_P"
+ " , m.mld_melding_spoed"
+ " , m.mld_melding_acceptdatum_std"
+ " , m.mld_melding_einddatum_std"
+ " , m.mld_melding_status"
+ " , m.mld_melding_einddatum"
+ " , std.mld_stdmelding_slabewaken"
+ " , m.mld_melding_indult"
+ " , m.mld_melding_parentkey"
+ " , (SELECT COUNT(o1.mld_opdr_key)"
+ " FROM mld_opdr o1"
+ " WHERE o1.mld_melding_key = m.mld_melding_key) nrOrders"
+ " , (SELECT COUNT(o2.mld_statusopdr_key)"
+ " FROM mld_opdr o2"
+ " WHERE o2.mld_melding_key = m.mld_melding_key"
+ " AND o2.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)) nrActief"
+ " , o.mld_opdr_omschrijving"
+ " , o.mld_statusopdr_key"
+ " , o.mld_opdr_verzonden"
+ " , t.mld_typeopdr_key" // Voor flexGroupId
+ " , " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
+ " , pfiat.prs_perslid_naam_full fiatteur"
+ " , (SELECT COUNT (o.mld_opdr_key)"
+ " FROM mld_opdr o "
+ " WHERE o.mld_melding_key = mld_melding_key"
+ " AND o.fac_activiteit_key IS NOT NULL) opdr_action"
+ " , m.fac_activiteit_key mld_action"
+ " , t.mld_typeopdr_kosten"
+ " , t.mld_typeopdr_isofferte"
+ sqltrack
+ " , m.mld_melding_t_respijt.tijdsduur tijdsduur"
+ " , m.mld_melding_t_respijt.eenheid eenheid"
+ " , std.mld_stdmelding_key"
+ " , (SELECT COUNT(f.fin_factuur_key)"
+ " FROM fin_factuur f"
+ " WHERE f.mld_opdr_key = o.mld_opdr_key"
+ " AND f.fin_factuur_verwijder IS NULL) aantal_facturen"
+ " FROM mld_opdr o"
+ " , cnt_v_aanwezigcontract c"
+ " , mld_stdmelding std"
+ " , mld_melding m"
+ (bld_key || bld_scope
? " , alg_v_allonrgoed_gegevens g"
: "")
+ " , alg_locatie l"
+ " , alg_district di"
+ " , mld_discipline md"
+ " , mld_disc_params mdp"
+ " , ins_srtdiscipline sd"
+ ((add_prs_restrict)
? " , prs_v_afdeling_boom b"
: "")
// and more here
+ " , mld_typeopdr t"
+ " , prs_v_perslid_fullnames_all pfiat"
+ " , prs_perslid p" // de melder
+ " WHERE m.mld_melding_key = o.mld_melding_key"
+ " AND pfiat.prs_perslid_key(+) = prs.getkpverantwoordelijke(o.prs_kostenplaats_key, "+S("prs_approvemethod")+", -1)"
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)"
+ " AND l.alg_district_key = di.alg_district_key(+)"
+ " AND std.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND md.ins_discipline_key = mdp.mld_ins_discipline_key"
+ " AND o.fac_activiteit_key IS NULL"
+ " AND o.cnt_contract_key = c.cnt_contract_key(+)"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key"
+ " AND p.prs_perslid_key = m.prs_perslid_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key";
if (add_prs_restrict)
sql += " AND p.prs_afdeling_key = b.prs_afdeling_key";
if (bld_key || bld_scope)
sql += " AND m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys(+)";
if (urole == 'b2')
sql += " AND (o.mld_statusopdr_key NOT IN (3, 10) OR o.mld_statusopdr_key_refiat IS NOT NULL)"
if (frontend && params.mld_key)
sql += " AND t.mld_typeopdr_zichtbaarfe = 1";
if (mld_key)
{
sql += " AND o.mld_melding_key = " + mld_key;
}
else if (opdr_key)
{
sql += " AND o.mld_melding_key = " + opdr_key; // opdracht nummer is voor de gebruiker hetzelfde als mld_key
}
else
{ //
if (offerte >= 0)
sql += " AND t.mld_typeopdr_isofferte = " + offerte;
// --------- De statussen ------
// Meldingstatus
if (mldstatus_arr && ((mldstatus_arr.length > 1) || (mldstatus_arr != -1)))
{
mldstatus_arr = mldstatus_arr.join(",");
}
else
{
mldstatus_arr = showstatus;
}
var sql_status = mld.getStatusSql(mldstatus_arr, "m");
if (sql_status)
sql += " AND" + sql_status;
// Opdrachtstatus
if (opdrstatus_arr && ((opdrstatus_arr.length > 1) || (opdrstatus_arr != -1)))
{
sql += " AND o.mld_statusopdr_key IN (" + opdrstatus_arr.join(",") + ")";
} else {
if (showopdrstatus != "")
sql += " AND o.mld_statusopdr_key IN (" + showopdrstatus + ")";
}
// Spoed
if (chkSpoed)
sql += " AND m.mld_melding_spoed < 3";
// Afgerond
if (chkAfgerond)
sql += " AND m.mld_melding_afgerond = 1";
// Actie/door
sql += mld.getwhereSrttracking(params);
sql += mld.getwherePrstracking(params);
//
// Overschrijding acceptatietijd
if (chkAcceptEx)
{
whereUs += " WHERE " + mld.getwhere_to_late_accept_sql("us") + " = 1";
}
// Overschijding doorlooptijd
if (chkRunEx)
{
whereT = mld.getwhere_to_late_run_sql("us", "us", "O") + " = 1";
if (whereUs.length > 0)
whereUs += " AND " + whereT;
else
whereUs = " WHERE " + whereT;
}
if (S("mld_max_history") > 0 && (mldopdrstafm || mldopdrstver)) // was alleen als je in de history keek
sql += " AND (o.mld_opdr_datumbegin >= SYSDATE - " + S("mld_max_history") + ")";
// Hier wordt gezocht in de omschrijving, opmerking en de eventuele (tekst-)kenmerken
// Dit is een potentieel en onvermijdelijk dure zoekactie.
// Conform meldingen
if (searchtekst)
sql += " AND (UPPER(mld_opdr_omschrijving) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%")
+ " OR UPPER(mld_opdr_opmerking) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%")
+ " OR EXISTS (SELECT mld_opdr_key"
+ " FROM mld_kenmerkopdr ko"
+ " WHERE ko.mld_opdr_key = o.mld_opdr_key"
+ " AND ko.mld_kenmerkopdr_verwijder IS NULL"
+ " AND UPPER(ko.mld_kenmerkopdr_waarde) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") + "))";
if (bld_key)
sql += " AND (g.alg_gebouw_key = " + bld_key + " OR g.alg_terreinsector_key = " + bld_key + ")";
else if (loc_key)
sql += " AND m.mld_alg_locatie_key = " + loc_key;
else if (dist_key)
sql += " AND di.alg_district_key = " + dist_key;
else if (reg_key)
sql += " AND di.alg_regio_key = " + reg_key;
if (adr_key)
{ // opdrachten van een bepaald afleveradres
sql += " AND m.mld_adres_key = " + adr_key;
}
if (kp)
sql += " AND m.prs_kostenplaats_key IN"
+ " (SELECT k.prs_kostenplaats_key"
+ " FROM prs_kostenplaats k"
+ " WHERE (UPPER(k.prs_kostenplaats_omschrijving) LIKE " + safe.quoted_sql_wild(kp+"%")
+ " OR UPPER(k.prs_kostenplaats_nr) LIKE " + safe.quoted_sql_wild(kp+"%") + "))";
if (org_key)
sql += " AND p.prs_afdeling_key IN"
+ " (SELECT a.prs_afdeling_key"
+ " FROM prs_v_afdeling_familie a"
+ " WHERE a.prs_afdeling_elder_key = " + org_key + ")";
if (caller_key)
sql += " AND m.prs_perslid_key = " + caller_key;
if (behandel_key)
sql += " AND o.prs_perslid_key = " + behandel_key;
if (opdrtype_key)
sql += " AND o.mld_typeopdr_key = " + opdrtype_key;
// Soort melding, productgroep, melding (stdmelding), meldinggroep
if (stdm_key_arr || meldinggrp_key)
{
if (stdm_key_arr)
sql += " AND m.mld_stdmelding_key IN (" + stdm_key_arr.join(",") + ")";
if (meldinggrp_key)
sql += " AND std.mld_stdmeldinggroep_key IN (" + meldinggrp_key + ")";
}
else if (disc_key_arr)
sql += " AND std.mld_ins_discipline_key IN (" + disc_key_arr.join(",") + ")" ;
else if (srtdisc_key)
sql += " AND sd.ins_srtdiscipline_key IN (" + srtdisc_key + ") ";
// Behandelgroep
if (behandelgrp_key)
sql += " AND mdp.mld_behandelgroep_key = " + behandelgrp_key;
if (cnt_key)
sql += " AND o.cnt_contract_key IN (" + cnt_key + ")";
if (urole == 'b2') // decentraal
sql += " AND t.mld_typeopdr_decentraal <> 0";
if (bes)
sql += " AND sd.ins_srtdiscipline_bes = 1";
if (datefrom)
{
sql += " AND o.mld_opdr_datumbegin >= " + datefrom.beginToSQL();
}
if (dateto)
{
sql += " AND o.mld_opdr_datumbegin < " + dateto.endToSQL();
}
if (offerte >= 0)
sql += " AND t.mld_typeopdr_isofferte = " + offerte;
}
// Als ik uitvoerder ben dan mag ik de aan mij toegekende opdrachten zien.
if (uitvoerder)
{ // Ben ik misschien nog plaatsvervanger
var prsKeys = user.collegakeylist();
sql += " AND o.mld_uitvoerende_keys IN (" + prsKeys + ")";
}
// Setting mld_typeopdr_afmelden_extern: Afmelder (ORDBO2) mag externe opdrachten (0=Niet zien, 1=Zien, 2=Afmelden)
// Als ik een interne (decentraal/intern) uitvoerder ben mag ik de externe opdrachten niet zien als mld_typeopdr_afmelden_extern==0.
// De voorwaarde geldt niet als
// 1) de opdracht toegekend is aan een persoon. Eigen opdrachten mag ik altijd zien.
// 2) ik de contactpersoon ben van het uitvoerende externe bedrijf. Opdrachten van eigen bedrijf mag ik altijd zien.
// Let op!!! Deze voorwaarde geldt dus alleen voor de WEB_ORDBO2 rechten.
var exhandler = mld.iamContact(); // Later nodig voor bepaling eClose.
if (exhandler) // Dan mag ik *echt* alleen opdrachten toegekend aan mijn bedrijf zien
{ // De andere helft van deze if is dan niet genoeg en bovendien *extreem* traag (FSN#29867)
sql_extern = " AND EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder IS NULL"
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys)";
}
else
{
sql_extern = " AND (mld_typeopdr_afmelden_extern IN (1, 2)"
+ " OR EXISTS (SELECT 'X' " // Toegekend aan een persoon
+ " FROM prs_perslid"
+ " WHERE prs_perslid_key = o.mld_uitvoerende_keys)"
+ " OR EXISTS (SELECT 'X' " // Ben ik contactpersoon van het uitvoerende externe bedrijf
+ " FROM prs_contactpersoon"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_contactpersoon_verwijder IS NULL"
+ " AND prs_bedrijf_key = o.mld_uitvoerende_keys)"
+ " )";
}
// Hier zijn nu alle meegegeven condities verwerkt, dat is:
// Ofwel het nummer, ofwel de andere criteria.
// We weten echter ook dat uitvoerende kan worden gehanteerd als een soort autorisatie
// dus moeten we die ook checken, zelfs als er een nummer werd opgegeven.
// De 3D autorisatie komt daar nog eens overheen.
if (handler_key)
sql = sql + " AND o.mld_uitvoerende_keys = " + handler_key;
sql += getKenmerkSql("OPD", "o.mld_opdr_key");
var sqlA = sql;
if (from_mld)
{ // Dan moeten we het opdracht overzicht tonen voor het meldingen backoffice overzicht "Afhandelen Meldingen".
// Dan wil ik alleen die opdrachten zien van de meldingen waar ik rechten voor heb. Dan moet ik WEB_MLDBOF rechten hebben voor de meldingen
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
sqlA = discx3d (sql,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"g.alg_gebouw_key",
"g.alg_verdieping_key",
"g.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
"WEB_MLDBOF",
(!mld_key && disc_key_arr ? disc_key_arr.join(",") : ""),
2);
}
// Indien sqlA uit meerdere delen (UNION ALL) bestaat dan al deze delen combineren met de pautfunction rechten.
sqlA = sqlA.split("UNION ALL");
if (typeof pautfunction != "object" || !(pautfunction instanceof Array))
// Maak van de String een Array
pautfunction = [pautfunction];
var sqlAB = "";
for (var jj = 0; jj < sqlA.length; jj++)
{
// pautfunction is nu altijd een Array met webfuncties
for (var ii = 0; ii < pautfunction.length; ii++)
{
// Voorwaarde sql_extern t.b.v. setting mld_typeopdr_afmelden_extern alleen toevoegen voor WEB_ORDBO2 rechten.
var sql3d = sqlA[jj] + (pautfunction[ii] == "WEB_ORDBO2"? sql_extern : "");
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
// if "disc == 0" or disc is not defined then disc should be ""
// otherwise de 3d authorization adds a "AND (1=0)" line to the query and you will have never a result
sqlB = (ii > 0? sqlB + " UNION " : "") + discx3d (sql3d,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"g.alg_gebouw_key",
"g.alg_verdieping_key",
"g.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
pautfunction[ii],
(!(mld_key || opdr_key) && disc_key_arr ? disc_key_arr.join(",") : ""),
(add_prs_restrict ? 2 : 0)
);
}
sqlAB = sqlAB + (jj > 0? " UNION " : "") + sqlB;
}
if (pautfunction.length > 1)
{ // We hebben dan rechten van meerdere autorisatie functies. Daardoor kan door discx3d() " UNION ALL " gebruikt worden om verschillende SELECT aan elkaar te plakken.
// In dat geval krijgen we dan dubbele resultataten.
// We moeten daarom deze UNION ALL's vervangen door UNION's.
sqlAB = sqlAB.replace(/UNION ALL/g, "UNION");
}
// Voeg laatste tracking datum toe
sql = "SELECT * FROM (" + sqlAB + ") us"
+ whereUs
+ " ORDER BY" // ins_discipline_omschrijving is hier al vertaald
+ (excel? " UPPER(ins_discipline_omschrijving), mld_typeopdr_key," : "") // Flexkenmerken verschillen per opdrachttype (mld_typeopdr_key)
+ " mld_opdr_einddatum, mld_opdr_bedrijfopdr_volgnr";
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());
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
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, 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);
if (outputmode != 2) { // maak er dan nog leuke plaatjes van
switch (oRs("mld_melding_spoed").Value)
{
case 1: displ = "<span id='urg_kritiek1' title='" + displ+"'>" + L("lcl_mld_urg_kritiek1") + "</span>"; break;
case 2: displ = "<span id='urg_hoog1' title='" + displ+"'>" + L("lcl_mld_urg_hoog1") + "</span>"; break;
case 3: displ = "<span id='urg_normaal1' title='" + displ + "'>" + L("lcl_mld_urg_normaal1") + "</span>"; break;
case 4: displ = "<span id='urg_laag1' title='" + displ+"'>" + L("lcl_mld_urg_laag1") + "</span>"; break;
case 5: displ = "<span id='urg_hold1' title='" + displ+"'>" + L("lcl_mld_urg_hold1") + "</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 = status.getopdrstatustext(oRs("mld_statusopdr_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);
}
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_mld_typeopdr"), content: "mld_typeopdr_omschrijving", combine:true}));
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}));
}
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}));
rst.addColumn(new Column({caption: L("lcl_mld_mldstatus"), content: fnMldStatus}));
rst.addColumn(new Column({caption: L("lcl_mld_opdr_status"), content: fnOpdrStatus, combine: true}));
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: "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 (!tiny)
rst.addColumn(new Column({caption: L("lcl_opdr_kosten") + "&nbsp;(" + S("currency_pref") + ")", 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") + "(" + S("currency_pref") + ")", content: "mld_opdr_uurloon", datatype: "currency", total: true}));
rst.addColumn(new Column({caption: L("lcl_mater_cost") + "(" + S("currency_pref") + ")", content: "mld_opdr_materiaal", datatype: "currency", total: true}));
rst.addColumn(new Column({caption: L("lcl_correct") + "(" + S("currency_pref") + ")", content: "correctie", datatype: "currency", total: true}));
}
if (groepering_key == 2 || groepering_key == 16)
{
rst.addColumn(new Column({caption: L("lcl_mld_invoiced") + "(" + S("currency_pref") + ")", content: "gefactureerd", datatype: "currency", total: true}));
}
// 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: "NotExist", 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: ['right','top'],
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>
</table>
<!-- Geen flags -->
</div>
<%
}
%>
</body>
</html>
<%
}
%>