659 lines
31 KiB
Plaintext
659 lines
31 KiB
Plaintext
<%@ language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: pda/orders_list.asp
|
|
Description: Toont een beknopte opdrachtenlijst voor op de pda
|
|
Parameters:
|
|
Context: -
|
|
Status optie a nog testen
|
|
Note: Twee varianten:
|
|
- opdrachten die aan mij toegekend zijn (ik ben de uitvoerder)
|
|
- intern
|
|
- als contactpersoon van een extern bedrijf
|
|
- opdrachten die ik mag zien (gegroepeerd per uitvoerder)
|
|
|
|
*/ %>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/discxalg3d.inc" -->
|
|
<!-- #include file="../Shared/status.inc" -->
|
|
<!-- #include file="../MLD/mld.inc" -->
|
|
<!-- #include file="./resultset_table.inc" -->
|
|
<!-- #include file="./mobile.inc" -->
|
|
<!-- #include file="./iface.inc" -->
|
|
|
|
<%
|
|
var qrc = getQParamInt("qrc", 0) != 0;
|
|
var mld_key = getQParamInt("mld_key", -1);
|
|
var grp_sel = getQParamUTF8("grp", "");
|
|
var own = getQParamInt("own", 0) == 1;
|
|
var klus = getQParamInt("klus", 0) == 1;
|
|
var disc_type = getQParamInt("grpby", 1); // 1 = Vakgroep (default), 2 = Behandelteam
|
|
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
|
|
|
|
/* Self;
|
|
-2: Opdrachten zonder actieve behandelaar
|
|
0/null: Alle opdrachten, ongeacht actieve behandelaar
|
|
1: Opdrachten waarbij ik de actieve behandelaar ben
|
|
2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
|
|
*/
|
|
var self = getQParamInt("self", null);
|
|
|
|
function getDistrictKey()
|
|
{
|
|
var loc_key = user.alg_locatie_key({withcurrent:true});
|
|
if (loc_key == -1)
|
|
return -1;
|
|
var sqlDis = "SELECT alg_district_key FROM alg_locatie WHERE alg_locatie_key = " + loc_key;
|
|
var oRsDis = Oracle.Execute(sqlDis);
|
|
var initDis = oRsDis(0).Value;
|
|
oRsDis.Close();
|
|
return initDis;
|
|
}
|
|
|
|
// bepaal filterlevel voor mobiel. Filterlevel kan afwijken van werklocatie niveau
|
|
var filterLevel = (S("mobile_alg_filterlevel") ? S("mobile_alg_filterlevel") : S("mobile_alg_level"));
|
|
|
|
var verdieping_key = -1;
|
|
var gebouw_key = -1;
|
|
var locatie_key = -1;
|
|
var district_key = -1;
|
|
|
|
// cases zonder break om bovenliggende niveaus mee te pakken
|
|
// Als filterlevel=A dan blijven alle keys op default -1 staan.
|
|
switch(filterLevel) {
|
|
case "V": verdieping_key = getQParamInt("verdieping_key" , user.alg_verdieping_key({withcurrent:true}));
|
|
case "G": gebouw_key = getQParamInt("gebouw_key" , user.alg_gebouw_key({withcurrent:true}));
|
|
case "L": locatie_key = getQParamInt("locatie_key" , user.alg_locatie_key({withcurrent:true}));
|
|
case "D": district_key = getQParamInt("district_key" , getDistrictKey());
|
|
}
|
|
|
|
// Wat zijn de criteria voor de orderslijst?
|
|
// Standaard lopende meldingen (0,2,3,4,7)
|
|
var urole = getQParamSafe("urole", "bo");
|
|
var params = { urole: urole };
|
|
|
|
params.disc_type = disc_type;
|
|
|
|
params.flags = [];
|
|
var checkboxParams = [];
|
|
var hasParamFlag = false;
|
|
|
|
for (flagkey=0; flagkey < S("mld_opdracht_flags"); flagkey++)
|
|
{
|
|
if (getQParam("flag" + flagkey, "off") == "on")
|
|
{
|
|
hasParamFlag = true;
|
|
checkboxParams[flagkey] = "on";
|
|
|
|
params.flags.push(flagkey);
|
|
}
|
|
else
|
|
{
|
|
checkboxParams[flagkey] = "false";
|
|
}
|
|
}
|
|
|
|
if (!hasParamFlag)
|
|
{
|
|
for (flagkey=0; flagkey < S("mld_opdracht_flags"); flagkey++)
|
|
{
|
|
if (getQParam("flag" + flagkey, "on") == "off")
|
|
{
|
|
checkboxParams[flagkey] = "off";
|
|
}
|
|
else
|
|
{
|
|
params.flags.push(flagkey);
|
|
checkboxParams[flagkey] = "on";
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
%>
|
|
|
|
<html><head>
|
|
<% FCLTMHeader.Generate({title: L("lcl_mobile_opdrachten")}); %>
|
|
</head>
|
|
<body>
|
|
<%
|
|
// Filter
|
|
var thisfilter = "";
|
|
var listmode = 0;
|
|
var autfunction = [];
|
|
var addAllowed = false;
|
|
// Bepaal mijn hoedanigheid voor deze lijst; er is een logische hierarchy
|
|
|
|
// 1. is er een mld_key bekend?, dan wil ik alleen de opdrachten bij die melding.
|
|
if (mld_key > -1)
|
|
{
|
|
var sql = "SELECT sd.ins_srtdiscipline_prefix"
|
|
+ " FROM mld_melding m"
|
|
+ " , mld_stdmelding s"
|
|
+ " , mld_discipline md"
|
|
+ " , ins_srtdiscipline sd"
|
|
+ " WHERE m.mld_melding_key = " + mld_key
|
|
+ " AND s.mld_stdmelding_key = m.mld_stdmelding_key"
|
|
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
|
|
+ " AND md.ins_discipline_key = s.mld_ins_discipline_key";
|
|
var oRs = Oracle.Execute(sql);
|
|
var meldingNr = oRs("ins_srtdiscipline_prefix").Value + mld_key;
|
|
oRs.Close();
|
|
var this_mld = mld.func_enabled_melding(mld_key);
|
|
addAllowed = this_mld.canAddOpdr;
|
|
listmode = 4;
|
|
}
|
|
else
|
|
{
|
|
var exhandler = user.iamContact();
|
|
if (exhandler)
|
|
{ // a. ben ik een contactpersoon van een extern bedrijf?
|
|
// Autorisatie (WEB_EXTORD: Dan mag ik opdrachten zien/afmelden waar ik volgens de WEB_EXTORD (ALG) autorisatie rechten op heb.
|
|
listmode = 1;
|
|
autfunction = ["WEB_EXTORD"];
|
|
|
|
// Op mobile een dag(en)overzicht tonen van opdrachten op basis van een from en een to datum, voor mij als contactpersoon van de uitvoerende.
|
|
// Die datums zijn dan gebaseerd op de plandatum.
|
|
var plandatefrom = getQParamDate("plandate_from", getQParamDate("plandate", null));
|
|
var plandateto = getQParamDate("plandate_to", plandatefrom);
|
|
plandatefrom = plandatefrom || plandateto;
|
|
// Nu zijn ze altijd allebei wel of allebei niet gedefinieerd
|
|
|
|
if (self === null) { // Default van self bij listmode = 1
|
|
self = 1;
|
|
}
|
|
}
|
|
else
|
|
{ // b. heb ik dan opdrachtrechten binnen een scope, dat is ORDBOF of ORDBO2? Dan mag ik opdrachten binnen de scope zien.
|
|
// ORDBOF is aanmaken, wijzigen en afmelden, maar aanmaken doet er niet toe
|
|
// ORDBO2 is alleen afmelden. Voor de lijst is er geen verschil; ik interpreteer BOF zwaarder dan BO2 (..)
|
|
// Ik wil voor de scope wel weten welke autorisatie geldig is
|
|
authparams = user.checkAutorisation(["WEB_ORDBOF", "WEB_ORDBO2"], true);
|
|
if (authparams)
|
|
{
|
|
autfunction = ["WEB_ORDBOF", "WEB_ORDBO2"];
|
|
listmode = 2;
|
|
}
|
|
__Log ('autfunction bepaald op '+ autfunction.join(","));
|
|
// Zo nee
|
|
if (autfunction.length == 0 || urole == "fe")
|
|
{ // c. ben ik een interne uitvoerder van opdrachten? Dan mag ik de aan mij toegekende opdrachten zien.
|
|
// Dat kan ik passief controleren: zijn er actieve opdrachten op mijn naam?
|
|
listmode = 3;
|
|
// De actieve controle is of ik MLDORD rechten heb. Dubbelop? Met MLDORD rechten mag je eigen opdrachten afmelden.
|
|
authparams = user.checkAutorisation("WEB_MLDORD"); // Als je ook geen WEB_MLDORD rechten hebt, mag je verder niets meer.
|
|
autfunction = ["WEB_MLDORD"];
|
|
}
|
|
}
|
|
}
|
|
|
|
// Vooralsnog is dit altijd false, want dit overzicht toont alleen actieve opdrachten
|
|
function canBeVerwerkt(oRs) {
|
|
return oRs("mld_statusopdr_key").Value == 6 || oRs("mld_statusopdr_key").Value == 9;
|
|
}
|
|
|
|
// Wel, afhankelijk van mijn bepaalde rol kan ik mijn overzicht anders willen,
|
|
// toegespitster op mijn behoefte (listmode):
|
|
// 1. Alle opdrachten, met de naam van de contactpersoon erbij (ik of mijn collega, leeg als ik)
|
|
// 2. Alle opdrachten per uitvoerder, kan ik makkelijk afmelden
|
|
// 3. Al mijn opdrachten, mijn todolijst
|
|
// 4. Alle opdracht van de meegegeven melding
|
|
|
|
function grp_sel_listmode2(grp)
|
|
{
|
|
var x = " AND mu.naam = " + safe.quoted_sql(grp);
|
|
return x;
|
|
}
|
|
function grp_sel_listmode3(grp)
|
|
{
|
|
var x = " AND ( (m.mld_alg_onroerendgoed_keys IS NOT NULL AND va.plaatsmelding = " + safe.quoted_sql(grp) + ")"
|
|
+ " OR (m.mld_alg_onroerendgoed_keys IS NULL AND l.alg_locatie_code = " + safe.quoted_sql(grp) + ")"
|
|
+ " )";
|
|
return x;
|
|
}
|
|
|
|
sql = "SELECT o.mld_opdr_key"
|
|
+ " , " + lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
|
|
+ " , " + lcl.xsqla('std.mld_stdmelding_omschrijving','std.mld_stdmelding_key')
|
|
+ " , sd.ins_srtdiscipline_prefix || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht"
|
|
+ " , NVL(va.plaatsmelding, l.alg_locatie_code) plaatsmelding"
|
|
+ " , m.mld_melding_spoed"
|
|
+ " , o.mld_opdr_plandatum"
|
|
+ " , o.mld_opdr_datumbegin"
|
|
+ " , o.mld_opdr_einddatum"
|
|
+ " , o.mld_opdr_omschrijving"
|
|
+ " , o.mld_opdr_bedrijfopdr_volgnr"
|
|
+ " , o.mld_statusopdr_key"
|
|
+ " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
|
|
+ " , " + S("prs_contactpers_string") + " contactpersoon"
|
|
+ " , mu.naam"
|
|
+ " , mu.type"
|
|
+ " , mu.intern"
|
|
+ " , CASE"
|
|
+ " WHEN o.mld_statusopdr_key = 8"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END actief"
|
|
+ " , COALESCE(o.mld_opdr_plandatum, o.mld_opdr_einddatum) einddatum"
|
|
+ " , o.mld_opdr_halted halted"
|
|
+ " , o.mld_opdr_flag"
|
|
+ " , o.mld_opdr_actiecode"
|
|
+ " , (SELECT LISTAGG( COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
|
|
+ " ," + lcl.xsql("skm.mld_srtkenmerk_omschrijving", "skm.mld_srtkenmerk_key")
|
|
+ " ) || ':'|| CHR(160) || "
|
|
+ " CASE WHEN skm.mld_srtkenmerk_kenmerktype IN ('R', 'r', 'S')"
|
|
+ " THEN flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.mld_kenmerkopdr_waarde)"
|
|
+ " WHEN ( skm.mld_srtkenmerk_kenmerktype = 'N'"
|
|
+ " AND skm.mld_srtkenmerk_lengte = 1"
|
|
+ " AND skm.mld_srtkenmerk_nmin = 0"
|
|
+ " AND skm.mld_srtkenmerk_nmax = 1"
|
|
+ " AND (skm.mld_srtkenmerk_dec = 0 OR skm.mld_srtkenmerk_dec IS NULL)"
|
|
+ " )"
|
|
+ " THEN DECODE (km.mld_kenmerkopdr_waarde,"
|
|
+ " 0, "+safe.qL("lcl_check_0")+", "
|
|
+ " 1, "+safe.qL("lcl_check_1")+", "
|
|
+ " km.mld_kenmerkopdr_waarde)"
|
|
+ " ELSE km.mld_kenmerkopdr_waarde"
|
|
+ " END"
|
|
+ " , CHR(13)"
|
|
+ " )"
|
|
+ " WITHIN GROUP (ORDER BY mld_kenmerk_volgnummer)"
|
|
+ " FROM mld_srtkenmerk skm, mld_kenmerk k, mld_kenmerkopdr km"
|
|
+ " WHERE km.mld_opdr_key = o.mld_opdr_key"
|
|
+ " AND k.mld_kenmerk_key = km.mld_kenmerk_key"
|
|
+ " AND BITAND(k.mld_kenmerk_inlijst,1) = 1"
|
|
+ " AND BITAND(skm.mld_srtkenmerk_systeem,4) = 0" // niet als vertrouwelijk
|
|
+ " AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
|
|
+ " AND skm.mld_srtkenmerk_verwijder IS NULL"
|
|
+ " AND k.mld_kenmerk_verwijder IS NULL"
|
|
+ " AND km.mld_kenmerkopdr_verwijder IS NULL"
|
|
+ " ) flex "
|
|
+ " FROM mld_opdr o"
|
|
+ " , mld_melding m"
|
|
+ " , mld_stdmelding std"
|
|
+ " , ins_tab_discipline d"
|
|
+ " , ins_srtdiscipline sd"
|
|
+ " , (SELECT v.alg_onroerendgoed_keys"
|
|
+ " , v.alg_gebouw_key"
|
|
+ " , v.alg_verdieping_key"
|
|
+ " , v.alg_ruimte_key"
|
|
+ " , " + (listmode == 1 ? "l.alg_locatie_code||'-'||" : "") /* voor uitvoerders is locatie handig want currentlocatie doet dan niet mee */
|
|
+ " DECODE(v.alg_plaatsaanduiding, '', ' ('||l.alg_locatie_omschrijving||')', v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,' (' || v.alg_plaatsomschrijving || ')'))"
|
|
+ " plaatsmelding"
|
|
+ " FROM alg_v_allonrgoed_gegevens v, alg_locatie l"
|
|
+ " WHERE l.alg_locatie_key = v.alg_locatie_key"
|
|
+ ") va"
|
|
+ " , alg_locatie l"
|
|
+ " , alg_district di"
|
|
+ " , mld_v_uitvoerende mu"
|
|
+ " , prs_contactpersoon cp"
|
|
+ " WHERE o.mld_melding_key = m.mld_melding_key (+)"
|
|
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key (+)"
|
|
+ " AND std.mld_ins_discipline_key = d.ins_discipline_key (+)"
|
|
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)"
|
|
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key" // type b of p toch nog ergens doen@?
|
|
+ " AND cp.prs_contactpersoon_key(+) = o.prs_contactpersoon_key"
|
|
+ (grp_sel==""
|
|
? ""
|
|
: (listmode == 2
|
|
? grp_sel_listmode2(grp_sel) // listmode=2
|
|
: grp_sel_listmode3(grp_sel) // listmode=3
|
|
)
|
|
)
|
|
+ " AND o.mld_statusopdr_key IN (4, 5, 8) "
|
|
+ " AND m.mld_alg_onroerendgoed_keys = va.alg_onroerendgoed_keys(+)" // De opdracht heeft zelf ook een plaats of nie?
|
|
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)"
|
|
+ " AND l.alg_district_key = di.alg_district_key(+)";
|
|
var filterNull = false;
|
|
|
|
for (var i=0; i< params.flags.length; i++)
|
|
{
|
|
if (params.flags[i] === 0)
|
|
{
|
|
filterNull = true;
|
|
}
|
|
}
|
|
|
|
if(params.flags.length > 0)
|
|
{
|
|
sql += " AND (o.mld_opdr_flag IN (" + params.flags.join(",") + ")";
|
|
if (filterNull)
|
|
{
|
|
sql += " or o.mld_opdr_flag is null";
|
|
}
|
|
sql += ")";
|
|
}
|
|
|
|
if (listmode != 4 && listmode !=1)
|
|
{
|
|
// Verrassing: we tonen een niveau hoger dan dat we weten waar we zitten
|
|
// zo heeft de uitvoerder meer overzicht. We weten dat de hogere keys goed gevuld zijn.
|
|
if (verdieping_key > -1)
|
|
sql += " AND (l.alg_locatie_key IS NULL OR va.alg_gebouw_key = " + gebouw_key + ")";
|
|
else if (gebouw_key > -1)
|
|
sql += " AND (l.alg_locatie_key IS NULL OR l.alg_locatie_key = " + locatie_key + ")";
|
|
//else if (locatie_key > -1)
|
|
}
|
|
|
|
if (listmode == 1)
|
|
{
|
|
var plandate_where = "";
|
|
var oneday = false;
|
|
if (plandatefrom || plandateto) {
|
|
var oneday = plandatefrom.midnight().getTime() == plandateto.midnight().getTime();
|
|
plandate_where = " AND o.mld_opdr_plandatum BETWEEN " + plandatefrom.beginToSQL() + " AND " + plandateto.endToSQL();
|
|
}
|
|
|
|
sql += " 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)"
|
|
+ plandate_where;
|
|
}
|
|
|
|
if (listmode == 3)
|
|
{ // Eerst controleren of ik misschien een plaatsvervanger ben. Ook als plaatsvervanger heb ik "WEB_MLDORD" rechten (listmode 3)
|
|
var prsKeys = user.collegakeylist();
|
|
// Zijn er actieve opdrachten op mijn naam of als plaatsvervanger op mijn bordje?
|
|
sql += " AND o.mld_uitvoerende_keys IN (" + prsKeys + ")"; // is scherper dan evt voorgaande
|
|
}
|
|
if (listmode == 4)
|
|
sql += " AND m.mld_melding_key = " + mld_key;
|
|
if (own)
|
|
sql += " AND o.prs_perslid_key = " + user_key;
|
|
if (klus)
|
|
sql += " AND o.prs_perslid_key IS NULL"
|
|
+ " AND o.mld_uitvoerende_keys = (SELECT a.prs_bedrijf_key"
|
|
+ " FROM prs_perslid p"
|
|
+ " , prs_v_aanwezigafdeling a"
|
|
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
|
|
+ " AND p.prs_perslid_key = " + user_key + ")";
|
|
if (self) {
|
|
// Self heeft betrekking op de actieve behandelaar, dat kan zowel de contactpersoon als de behandelaar zijn
|
|
// -2: Opdrachten zonder actieve behandelaar
|
|
// 0/null: Alle opdrachten, ongeacht actieve behandelaar
|
|
// 1: Opdrachten waarbij ik de actieve behandelaar ben
|
|
// 2: -2 & 1 (Dus; Geen actieve behandelaar, of ik ben de actieve behandelaar)
|
|
switch (self) {
|
|
case -2:
|
|
sql += " AND COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL";
|
|
break;
|
|
case 1:
|
|
sql += " AND ( cp.prs_perslid_key = " + user_key
|
|
+ " OR o.prs_perslid_key = " + user_key + ")";
|
|
break;
|
|
case 2:
|
|
sql += " AND ( COALESCE(o.prs_contactpersoon_key, o.prs_perslid_key) IS NULL"
|
|
+ " OR cp.prs_perslid_key = " + user_key
|
|
+ " OR o.prs_perslid_key = " + user_key + ")";
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Een afmelder (ORDBO2 of EXTORD) mag externe opdrachten zien/afmelden onder bepaalde voorwaarden:
|
|
// EXTORD: Hij mag opdrachten zien/afmelden van externe bedrijven waar hij contactpersoon van is,
|
|
// als hij ALG read/write rechten (WEB_EXTORD) heeft op de plaats van de bijbehorende melding van de opdracht.
|
|
// ORDBO2: Setting mld_typeopdr_afmelden_extern: Afmelder (ORDBO2) mag externe opdrachten (0=Niet zien, 1=Zien, 2=Afmelden)
|
|
// Als hij een interne (decentraal/intern) uitvoerder is mag hij de externe opdrachten niet zien/afmelden als mld_typeopdr_afmelden_extern==0/(0 of 1).
|
|
// De voorwaarde en setting geldt niet als:
|
|
// 1) de opdracht toegekend is aan een (intern) persoon (P). Dan mag hij alleen eigen opdrachten zien.
|
|
// 2) de opdracht toegekend is aan het eigen (intern) bedrijf (BI). Opdrachten van het eigen bedrijf mag hij alleen zien.
|
|
var sql_ORDBO2 = " AND ((SELECT mto.mld_typeopdr_afmelden_extern"
|
|
+ " FROM mld_typeopdr mto"
|
|
+ " WHERE mto.mld_typeopdr_key = o.mld_typeopdr_key) IN (1, 2)"
|
|
+ " OR EXISTS (SELECT 'X' " // Toegekend aan een intern persoon (P).
|
|
+ " FROM prs_perslid"
|
|
+ " WHERE prs_perslid_key = o.mld_uitvoerende_keys)"
|
|
+ " OR EXISTS (SELECT 'X'" // Toegekend aan het EIGEN interne bedrijf (B).
|
|
+ " FROM prs_bedrijf b"
|
|
+ " , prs_perslid p"
|
|
+ " , prs_v_afdeling a"
|
|
+ " WHERE b.prs_bedrijf_key = a.prs_bedrijf_key"
|
|
+ " AND p.prs_afdeling_key = a.prs_afdeling_key"
|
|
+ " AND b.prs_bedrijf_intern = 1"
|
|
+ " AND b.prs_bedrijf_key = o.mld_uitvoerende_keys"
|
|
+ " AND p.prs_perslid_key = " + user_key + ")"
|
|
+ " )";
|
|
|
|
var sqlA = "";
|
|
if (listmode == 4)
|
|
sqlA = sql;
|
|
else
|
|
{ // pautfunction is nu altijd een Array met webfuncties
|
|
for (var ii = 0; ii < autfunction.length; ii++)
|
|
{
|
|
// Voorwaarden die meegenomen moeten worden voor de verschillende listmodes (1 t/m 3):
|
|
// Als listmode == 1: Voorwaarde: 1) Ik ben contactpersoon van externe bedrijf (is al toegevoegd voor listmode == 1) en
|
|
// 2) 3d WEB_EXTORD(ALG)/WEB_ORDBO2 autorisatie
|
|
// Als listmode == 2: Voorwaarde: 1) Voor a) WEB_ORDBO2: 3d WEB_ORDBO2 autorisatie + sql_ORDBO2 of
|
|
// b) Rest: 3d WEB_XXXXXX autorisatie
|
|
// Als listmode == 3: Voorwaarde: 3d WEB_XXXXXX autorisatie.
|
|
if (listmode == 2 && autfunction[ii] == "WEB_ORDBO2")
|
|
var sql3d = sql + sql_ORDBO2;
|
|
else
|
|
var sql3d = sql;
|
|
sqlA = (ii > 0? sqlA + " UNION " : "") + discxalg3d(sql3d,
|
|
"o.mld_opdr_discipline_key",
|
|
"di.alg_regio_key",
|
|
"l.alg_district_key",
|
|
"l.alg_locatie_key",
|
|
"va.alg_gebouw_key",
|
|
"va.alg_verdieping_key",
|
|
"va.alg_ruimte_key",
|
|
autfunction[ii],
|
|
''
|
|
);
|
|
}
|
|
}
|
|
|
|
// Bij groepslijst tonen (orders_list.asp) sorteren op naam of stdmelding omschrijving
|
|
sql = "SELECT * FROM (" + sqlA + ") ORDER BY "
|
|
+ ((grp_sel == "" && listmode == 2)
|
|
? " naam, mld_opdr_datumbegin"
|
|
: (listmode == 1 && plandatefrom ? " mld_opdr_plandatum," : "") + " actief DESC, halted, einddatum, opdracht");
|
|
|
|
function fncolLink(oRs)
|
|
{
|
|
var url = "";
|
|
if (grp_sel == "")
|
|
{
|
|
if (listmode == 1 || listmode == 4 || listmode == 3)
|
|
{
|
|
url = "../pda/order.asp?opdr_key=" + oRs("mld_opdr_key").Value;
|
|
}
|
|
else
|
|
{
|
|
var col = (listmode == 2 ? "naam" : "");
|
|
if (col != "")
|
|
url = "../pda/orders_list.asp?grp=" + safe.urlUTF8(oRs(col).Value) + "&urole=" + urole + (own? "&own=1" : "") + (klus? "&klus=1" : "");
|
|
for (flagkey=0; flagkey < S("mld_opdracht_flags"); flagkey++)
|
|
{
|
|
url += ((getQParam("flag" + flagkey, "off") == "on") ? "&flag" + flagkey + "=on" : "");
|
|
}
|
|
}
|
|
}else{
|
|
url = "../pda/order.asp?opdr_key=" + oRs("mld_opdr_key").Value + "&urole=" + urole;
|
|
}
|
|
return url;
|
|
};
|
|
|
|
function fncolaside(oRs)
|
|
{
|
|
// PF: vind de status in zo'n ballon eigenlijk niet mooi
|
|
return mld.getextendedopdrstatustext(oRs("mld_statusopdr_key").Value, oRs("mld_opdr_key").Value);
|
|
}
|
|
function fncolSubHeader(oRs)
|
|
{
|
|
// Ik wil zo goed mogelijk de actieve behandelaar tonen: wie is er actief mee bezig?
|
|
// Sinds DJIN#35660 zijn daar wat smaken in:
|
|
// extern bedrijf (en behandelaar is de interne BO-contactpersoon)
|
|
// extern bedrijf + contactpersoon (en behandelaar is de interne BO-contactpersoon)
|
|
// intern bedrijf
|
|
// intern bedrijf + behandelaar
|
|
|
|
var bedrijf = oRs("naam").Value;
|
|
var behandelaar = oRs("behandelaar").Value;
|
|
var contactpersoon = oRs("contactpersoon").Value;
|
|
var intern = oRs("intern").Value == 1;
|
|
var PBtype = oRs("type").Value;
|
|
var safeuitv = "";
|
|
var flagkey = oRs("mld_opdr_flag").Value||0;
|
|
var actiecode = S("mld_opdr_actiecode") > 0 ? oRs("mld_opdr_actiecode").Value : 0;
|
|
if (contactpersoon != null)
|
|
safeuitv = "" + I("fa-user") + " " + safe.html(contactpersoon);
|
|
else if (listmode !=1 && bedrijf != null && !intern)
|
|
safeuitv = "" + I("fa-industry", { fastyle: "far" }) + " " + safe.html(bedrijf);
|
|
else if (behandelaar != null)
|
|
safeuitv = "" + I("fa-user", { fastyle: "far" }) + " " + safe.html(behandelaar);
|
|
var subheader = "<div class='listbodykop'>"
|
|
+ (actiecode & 128 ? "<span class='ac'>" + I("fa-bell", { fastyle: "far" }) + " " + L("lcl_mld_actiecodeATT") + "</span><br>" : "")
|
|
+ (actiecode & 4 ? "<span class='ac'>" + I("fa-comment-smile fa-flip-horizontal", { fastyle: "far" }) + " " + L("lcl_mld_actiecodeUITV") + "</span><br>" : "")
|
|
+ (oRs("plaatsmelding").Value? "" + I("fa-map-marker", { fastyle: "far" }) + " "+safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
|
|
+ (safeuitv != "" ? safeuitv + "<br>" : "")
|
|
+ "" + I("fa-clock", { fastyle: "far" }) + " " + toDateTimeString(oRs("einddatum").Value, false, false, true, true)
|
|
+ (flagkey ? "<br> <span class='opdrflag"+flagkey+"'>" + I("fa-fclt-flag", { fastyle: "far" }) + "</span> " + L("lcl_opdr_flag" + flagkey) : "")
|
|
+ "</div>"
|
|
+ "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_opdr_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>";
|
|
var flexkenmerken = LIST_KENMERK_COL(oRs, {kmcol: "flex"});
|
|
return subheader + flexkenmerken;
|
|
};
|
|
|
|
// Om wat explicieter te zijn in wat we zien specifieke titels per mode
|
|
var listtitle = L("lcl_mobile_opdrachten");
|
|
switch (listmode) {
|
|
case 1:
|
|
if (plandatefrom) {
|
|
var datefrom_str = toDateString(plandatefrom, true, true).toLowerCase();
|
|
if (oneday) {
|
|
listtitle = "Planning van {0}".format(datefrom_str);
|
|
} else {
|
|
listtitle = "Planning van {0} t/m {1}".format(datefrom_str, toDateString(plandateto, true, true).toLowerCase());
|
|
}
|
|
} else {
|
|
listtitle = L("lcl_mobile_opdrachten1");
|
|
}
|
|
break;
|
|
case 2: listtitle = L("lcl_mobile_opdrachten2") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
|
|
case 3: listtitle = L("lcl_mobile_opdrachten3") + " " + CurrentPositionMinus1; break; /* is niveau hoger */
|
|
case 4: listtitle = L("lcl_mobile_opdrachten") + " " + L("lcl_mobile_objbijmelding") + " " + meldingNr; break;
|
|
}
|
|
|
|
var addaction = (addAllowed? "../pda/order.asp?mld_key=" + mld_key : "");
|
|
|
|
PAGE_START({datacache:false});
|
|
%>
|
|
<script>
|
|
|
|
function orders_filter()
|
|
{
|
|
document.forms.orders_filter_list.submit();
|
|
}
|
|
|
|
function orders_home()
|
|
{
|
|
window.location.href = rooturl + "/appl/pda/Facilitor.asp";
|
|
}
|
|
|
|
function orders_close(opdr_key_arr) {
|
|
var data = {};
|
|
protectRequest.dataToken(data);
|
|
$.post( "<%=rooturl%>/appl/mld/opdr_close_save.asp?opdr_key=" + opdr_key_arr.join(",")
|
|
, data
|
|
, McltCallbackRefresh
|
|
, "json");
|
|
}
|
|
|
|
// Deze functie zal nooit gebruikt worden, omdat deze pagina alleen actieve opdrachten laat zien, maar misschien ooit
|
|
function orders_verwerk(opdr_key_arr) {
|
|
var data = {
|
|
opdr_key: [opdr_key_arr]
|
|
};
|
|
protectRequest.dataToken(data);
|
|
$.post( "<%=rooturl%>/appl/mld/opdr_verwerk_save.asp"
|
|
, data
|
|
, McltCallbackRefresh
|
|
, "json");
|
|
}
|
|
|
|
</script>
|
|
|
|
<% FILTER_PANEL_START(); %>
|
|
|
|
<form name="u2" id="orders_filter_list" action="<%=rooturl%>/appl/pda/orders_list.asp" method="get">
|
|
<input type="hidden" name="grp" id="grp" value="<%=safe.htmlattr(grp_sel)%>">
|
|
<input type="hidden" name="grpby" id="grpby" value="<%=disc_type%>">
|
|
<input type="hidden" name="qrc" id="qrc" value="<%=(qrc ? 1 : 0)%>">
|
|
<input type="hidden" name="deelsrtcont_key" id="deelsrtcont_key" value="<%=deelsrtcont_key%>">
|
|
<%
|
|
if (S("mld_opdracht_flags") > 1)
|
|
{
|
|
CONTROLGROUP_START();
|
|
for (flagkey=0; flagkey < S("mld_opdracht_flags"); flagkey++) {
|
|
var label_html = '<span class="opdrflag' + flagkey + ' flag">' + I("fa-fclt-flag" + (flagkey == 0 ? "0" : ""))
|
|
+ ' <span>' + L("lcl_opdr_flag" + flagkey) + '</span>'
|
|
+ '</span>';
|
|
CHB_FIELD("flag" + flagkey, label_html, checkboxParams[flagkey] == "on", { "inline": true });
|
|
}
|
|
CONTROLGROUP_END();
|
|
}
|
|
|
|
CONTROLGROUP_START();
|
|
BUTTON(L("lcl_mobile_panel_filter"), { id: "search_submit", click: "orders_filter()", icon: "fa-fclt-refresh" });
|
|
CONTROLGROUP_END();
|
|
%>
|
|
</form>
|
|
<%
|
|
FILTER_PANEL_END();
|
|
|
|
var multiactions = [];
|
|
if (user.has("WEB_ORDBOF") || user.has("WEB_ORDBO2")) {
|
|
multiactions.push({ icon: "fa-flag-checkered", action: "orders_close", caption: L("lcl_close") });
|
|
}
|
|
if (S("mld_opdr_archive_by_gui")) {
|
|
var authparamsORDAFR = user.checkAutorisation("WEB_ORDAFR", true);
|
|
var authparamsORDBOF = user.checkAutorisation("WEB_ORDBOF", true);
|
|
var canWriteORDAFR = authparamsORDAFR && authparamsORDAFR.PRSwritelevel < 9 && authparamsORDAFR.ALGwritelevel < 9;
|
|
var canReadORDBOF = authparamsORDBOF && authparamsORDBOF.PRSreadlevel < 9 && authparamsORDBOF.ALGreadlevel < 9;
|
|
if (canWriteORDAFR && canReadORDBOF) {
|
|
multiactions.push({ icon: "fa-archive", action: "orders_verwerk", caption: L("lcl_mld_opdr_verwerk"), fnCheckIfAny: canBeVerwerkt });
|
|
}
|
|
}
|
|
var isGrouped = (grp_sel == "" && listmode == 2);
|
|
|
|
HEADER({
|
|
title: listtitle,
|
|
filterPanel: S("mld_opdracht_flags") > 0,
|
|
addaction: addaction,
|
|
multiactions: !isGrouped && multiactions.length
|
|
});
|
|
|
|
CONTENT_START();
|
|
|
|
var rst = new ResultsetTable({ keyColumn: "mld_opdr_key",
|
|
sql: sql,
|
|
ID: "orderstable",
|
|
linkColumn: fncolLink,
|
|
groupColumn: (listmode == 2 ? "naam" : ""),
|
|
groupSelect: grp_sel,
|
|
headerColumn: "opdracht",
|
|
detailColumn: "mld_stdmelding_omschrijving",
|
|
subheaderColumn: fncolSubHeader,
|
|
asideColumn: fncolaside,
|
|
multiactions: multiactions,
|
|
showAll: true
|
|
});
|
|
|
|
var cnt = rst.processResultset();
|
|
|
|
CONTENT_END();
|
|
FOOTER({});
|
|
PAGE_END();
|
|
PDA_PAGE_END(); %>
|
|
</body>
|
|
</html>
|
|
<% ASPPAGE_END(); %>
|