ARAI#38181: Opdracht-uitvoeringsconsole.

svn path=/Website/trunk/; revision=32870
This commit is contained in:
Maykel Geerdink
2017-02-20 08:21:41 +00:00
parent 4f53d5bab0
commit ddcfa8234d
5 changed files with 1195 additions and 622 deletions

View File

@@ -3058,7 +3058,7 @@ mld = {setmeldingstatus:
+ " , prs_kostenplaats k"
+ " , prs_kostenplaatsgrp kg"
+ " , mld_v_uitvoerende mu"
+ " WHERE o.mld_melding_key = m.mld_melding_key"
+ " WHERE o.mld_melding_key = m.mld_melding_key" // bij bgt-mode: opdracht zonder melding TODO: zo geen errors maar hoe goed zijn de waarden?
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sm.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND d.ins_discipline_key = mdp.mld_ins_discipline_key"
@@ -4376,6 +4376,616 @@ mld = {setmeldingstatus:
+ where
+ " ORDER BY mkm.mld_kenmerk_volgnummer DESC";
return sql;
},
getopdroverzicht_sql:
function (pautfunction, params)
{ // Lever opdrachten overzicht sql op.
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 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 verantw_key = params.verantw_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 uitvoerder = params.uitvoerder;
var planb = params.planb;
var bes = params.bes;
var tiny = params.tiny;
var inline = params.inline;
var from_mld = params.from_mld;
var showstatus = params.showstatus;
var showopdrstatus = params.showopdrstatus;
var mldopdrstrej = params.mldopdrstrej;
var mldopdrstafm = params.mldopdrstafm;
var mldopdrstver = params.mldopdrstver;
//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
// 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 (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_id"
+ " , o.mld_opdr_einddatum"
+ " , l.alg_locatie_code "
+ " ||(SELECT DECODE(v.alg_plaatsaanduiding, '', ' ('||l.alg_locatie_omschrijving||')',"
+ " '-'||v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,"
+ "' (' || v.alg_plaatsomschrijving || ')'))"
+ " FROM alg_v_allonrgoed_gegevens v"
+ " WHERE m.mld_alg_onroerendgoed_keys = v.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"
+ " , o.prs_perslid_key"
+ " , (SELECT " + S("prs_pers_string")
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.prs_perslid_key) behandelaar"
+ " , (SELECT " + S("prs_kpn_string")
+ " FROM prs_kostenplaats k"
+ " WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kpstring"
+ " , 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"
+ " , sd.ins_srtdiscipline_omschrijving"
+ " , " + 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"
+ " , t.mld_typeopdr_matchtype"
+ " , t.mld_typeopdr_kosten_verplicht"
+ " , mdp.mld_disc_params_opdr_kosten"
+ 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 || verantw_key
? " , alg_v_allonrgoed_gegevens g"
: "")
+ " , alg_locatie l"
+ (verantw_key ? ", alg_gebouw gg" : "")
+ " , 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 o.mld_melding_key = m.mld_melding_key" + (urole == 'bgt' ? '(+)' : '') // dat is nog niet genoeg
+ " 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 || verantw_key)
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 && 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)
{
var 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 UPPER(mld_opdr_id) 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 o.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 (verantw_key)
sql += " AND g.alg_gebouw_key = gg.alg_gebouw_key(+)"
+ " AND (gg.prs_perslid_key_verantw = " + verantw_key
+ " OR gg.prs_perslid_key_verantw2 = " + verantw_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) de opdracht toegekend is aan het eigen bedrijf. Opdrachten van het eigen bedrijf mag ik altijd zien.
// 3) 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)
var 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
{
var 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'" // Toegekend aan het EIGEN interne bedrijf
+ " 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 + ")"
+ " 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;
// Als er multicompany-achtige relatiebeperkingen gelden, dan moet dat ook hier worden afgedwongen
var lsql = "SELECT '' FROM prs_bedrijf_bedrijf pbb "
+ " WHERE prs_bedrijf_key1 = " + user.afdeling().prs_bedrijf_key()
+ " OR prs_bedrijf_key2 = "+ user.afdeling().prs_bedrijf_key();
var loRs = Oracle.Execute(lsql);
if (!loRs.eof)
{
sql += " AND o.mld_uitvoerende_keys IN (SELECT prs_bedrijf_key2 FROM prs_bedrijf_bedrijf WHERE prs_bedrijf_key1 = "+ user.afdeling().prs_bedrijf_key()
+ " UNION SELECT prs_bedrijf_key1 FROM prs_bedrijf_bedrijf WHERE prs_bedrijf_key2 = "+ user.afdeling().prs_bedrijf_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
+ (planb? " behandelaar," : "")
+ (excel? " UPPER(ins_discipline_omschrijving), mld_typeopdr_key," : "") // Flexkenmerken verschillen per opdrachttype (mld_typeopdr_key)
+ " mld_opdr_einddatum, mld_opdr_bedrijfopdr_volgnr";
return sql;
}

View File

@@ -26,7 +26,7 @@
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["./opdr_list.js", "./mld.js", "jquery-ui.js"]});
function opdr_list (params)
function opdr_list(params)
{
// VALIDATE AND PREPARE
// Als een parameter niet gedefinieerd of null is, dan doet-ie niks
@@ -37,42 +37,11 @@ function opdr_list (params)
// 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
// 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:
@@ -112,39 +81,8 @@ function opdr_list (params)
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 verantw_key = params.verantw_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)
@@ -155,6 +93,7 @@ function opdr_list (params)
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;
@@ -186,6 +125,8 @@ function opdr_list (params)
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";
@@ -198,10 +139,14 @@ function opdr_list (params)
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
var uitvoerder = false;
params.uitvoerder = false;
if (frontend)
{
// Dan zijn het alleen opdrachten van *mijn* meldingen waarop ik MLDUSE-read rechten heb
@@ -213,7 +158,7 @@ function opdr_list (params)
else
{
var pautfunction = "WEB_MLDORD";
uitvoerder = true;
params.uitvoerder = true;
}
}
else if (from_mld)
@@ -228,11 +173,6 @@ function opdr_list (params)
// 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;
@@ -247,7 +187,6 @@ function opdr_list (params)
}
}
%>
<html>
<head>
@@ -266,492 +205,7 @@ function opdr_list (params)
<%
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_id"
+ " , o.mld_opdr_einddatum"
+ " , l.alg_locatie_code "
+ " ||(SELECT DECODE(v.alg_plaatsaanduiding, '', ' ('||l.alg_locatie_omschrijving||')',"
+ " '-'||v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,"
+ "' (' || v.alg_plaatsomschrijving || ')'))"
+ " FROM alg_v_allonrgoed_gegevens v"
+ " WHERE m.mld_alg_onroerendgoed_keys = v.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"
+ " , (SELECT " + S("prs_kpn_string")
+ " FROM prs_kostenplaats k"
+ " WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kpstring"
+ " , 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"
+ " , sd.ins_srtdiscipline_omschrijving"
+ " , " + 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"
+ " , t.mld_typeopdr_matchtype"
+ " , t.mld_typeopdr_kosten_verplicht"
+ " , mdp.mld_disc_params_opdr_kosten"
+ 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 || verantw_key
? " , alg_v_allonrgoed_gegevens g"
: "")
+ " , alg_locatie l"
+ (verantw_key ? ", alg_gebouw gg" : "")
+ " , 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 o.mld_melding_key = m.mld_melding_key" // + (urole == 'bgt' ? '(+)' : '') // dat is nog niet genoeg
+ " 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 || verantw_key)
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 UPPER(mld_opdr_id) 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 o.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 (verantw_key)
sql += " AND g.alg_gebouw_key = gg.alg_gebouw_key(+)"
+ " AND (gg.prs_perslid_key_verantw = " + verantw_key
+ " OR gg.prs_perslid_key_verantw2 = " + verantw_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) de opdracht toegekend is aan het eigen bedrijf. Opdrachten van het eigen bedrijf mag ik altijd zien.
// 3) 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'" // Toegekend aan het EIGEN interne bedrijf
+ " 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 + ")"
+ " 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;
// Als er multicompany-achtige relatiebeperkingen gelden, dan moet dat ook hier worden afgedwongen
var lsql = "SELECT '' FROM prs_bedrijf_bedrijf pbb "
+ " WHERE prs_bedrijf_key1 = " + user.afdeling().prs_bedrijf_key()
+ " OR prs_bedrijf_key2 = "+ user.afdeling().prs_bedrijf_key();
var loRs = Oracle.Execute(lsql);
if (!loRs.eof)
{
sql += " AND o.mld_uitvoerende_keys IN (SELECT prs_bedrijf_key2 FROM prs_bedrijf_bedrijf WHERE prs_bedrijf_key1 = "+ user.afdeling().prs_bedrijf_key()
+ " UNION SELECT prs_bedrijf_key1 FROM prs_bedrijf_bedrijf WHERE prs_bedrijf_key2 = "+ user.afdeling().prs_bedrijf_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 sql = mld.getopdroverzicht_sql(pautfunction, params);
var status_oms = new Array();
var status_cnt = new Array();

497
APPL/MLD/opdr_plan.inc Normal file
View File

@@ -0,0 +1,497 @@
<% /*
$Revision$
$Id$
File: opdr_plan.inc
Description: Definieert de serverside functie opdr_plan() die een planbord 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: vanuit opdr_search_list.asp
Note:
*/ %>
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../mld/mld.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js: ["./opdr_plan.js",
"./mld.js",
"jquery-ui.js"] //, // Voor slepen
//css: ["../mld/opdr.css"]
});
// Om planbord kaarten in een kaartenbak te groeperen.
var __cardboxactive__ = false;
function CARDBOX_START(id, params)
{
params = params || {};
if (__cardboxactive__) ERROR_NESTED_BLOCK_START_DETECTED;
__cardboxactive__ = true;
%><!-- CARDBOX_START <%=id%> -->
<div id="<%=id%>" class="fcltcardbox <%=params.cardclass? params.cardclass : ""%>" <%=params.hidden? ' style="display:none"' : ''%>><%
}
function CARDBOX_END()
{
if (!__cardboxactive__) ERROR_BLOCK_END_WITHOUT_BLOCKSTART;
__cardboxactive__ = false;
%></div>
<!-- CARDBOX_END --><%
}
// Om velden in een planbord kaart te groeperen.
var __cardactive__ = false;
function CARD_START(id, params)
{
params = params || {};
if (__cardactive__) ERROR_NESTED_BLOCK_START_DETECTED;
__cardactive__ = true;
%><!-- CARD_START <%=id%> -->
<div id="<%=id%>" class="fcltcard <%=params.cardclass? params.cardclass : ""%>" <%=params.hidden? ' style="display:none"' : ''%>>
<table class="fcltcardtab" width="100%"><%
}
function CARD_END()
{
if (!__cardactive__) ERROR_BLOCK_END_WITHOUT_BLOCKSTART;
__cardactive__ = false;
%> </table>
</div>
<!-- CARD_END --><%
}
function opdr_plan(params)
{
__Log("opdr_plan");
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;
//// 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 mldopdrstrej = params.mldopdrstrej;
//var mldopdrstafm = params.mldopdrstafm;
//var mldopdrstver = params.mldopdrstver;
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;
}
}
%>
<html>
<head>
<% FCLTHeader.Generate({ outputmode: params.outputmode }); %>
<style>
.fcltcardbox {
position: relative;
width: 200px;
/*height: 300px;*/
padding: 0px;
background: #EFEFEF;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
border: #EFEFEF solid 10px;
float: left;
margin-left: 5px;
margin-top: 5px;
}
.fcltcardboxhead {
background-color: #EFEFEF;
color: #000000;
font-weight: bold;
font-size: 1.1em;
height: 25px;
}
.fcltcard {
position: relative;
width: 200px;
/*height: 300px;*/
background-color: #FFFFFF;
background: #FFFFFF;
border: #FFFFFF solid 0px;
float: left;
color: #000000;
/*margin-left: 5px;*/
margin-top: 5px;
}
html {
background-color: #D9F4FF;
}
.cardbeheerder {
background-color: #559CB9;
}
.cardmoving {
background-color: #DAA520;
}
.cardmoved {
background-color: #AEE9FF;
}
.ui-sortable-helper {
background-color: #FFDC23;
}
div.selected {
background-color: #DAA520;
}
</style>
<script type="text/javascript">
function sort(pkey)
{
var sortableList = $("#cardboxbeh" + pkey);
var listitems = $("div", sortableList);
listitems.sort(function (a, b)
{
return ($(a).text().toUpperCase() > $(b).text().toUpperCase()) ? 1 : -1;
});
sortableList.append(listitems);
}
//$(document).ready(function()
// {
//var selected;
//var selectedCurrent;
//var received = false;
//var selectedArray = [];
//$("div.cardbox").on('mousedown',
// 'div.cardbeheerder',
// function (e)
// {
// alert("mousdown");
// $('.ui-sortable div.cardbeheerder').not($(this).parent().find('div.cardbeheerder')).removeClass('selected');
// if (selectedCurrent != undefined && selectedCurrent.text() != $(this).text() && !selectedCurrent.next('div.cardbeheerder').hasClass('pholder') &&
// selectedCurrent.hasClass('selected') && ($(this).hasClass('selected') || (e.ctrlKey || e.metaKey)))
// {
// selectedCurrent.after(selectedCurrent.clone().removeClass('selected').addClass('pholder').hide());
// }
// if (e.ctrlKey || e.metaKey)
// {
// if($(this).next('div.cardbeheerder').hasClass('pholder'))
// $(this).next('div.cardbeheerder').remove();
// else
// $(this).after($(this).clone().addClass('pholder').hide());
// $(this).toggleClass("selected");
// }
// else
// {
// //selectedArray = [];
// //selectedArray.push($(this));
// }
// selectedCurrent = $(this);
// selected = $(this).clone().removeClass('selected');
// if(selectedCurrent.next('div.cardbeheerder').hasClass('pholder'))
// selectedCurrent.next('div.cardbeheerder').remove();
// });
//
//$("div.cardbox").on('mouseup',
// 'div.cardbeheerder',
// function (e)
// {
// alert("mouseup");
// if (e.ctrlKey || e.metaKey)
// {
// }
// else
// {
// $('.selected').not($(this)).each(function()
// {
// if($(this).next('div.cardbeheerder').hasClass('pholder'))
// $(this).next('div.cardbeheerder').remove();
// });
// $(this).addClass("selected").siblings().removeClass('selected');
// }
// });
// });
</script>
</head>
<body id="planbody">
<%
var buttons = [];
buttons.push({ icon: "legenda.png", title: L("lcl_res_legenda"), action: 'openLegenda()' });
buttons.push({ icon: "print.png", title: L("lcl_print_table"), action: 'opdr_print()' });
IFRAMER_HEADER(L("lcl_opdr_plan_uitv"), buttons);
%>
<div id="planbodylist">
<%
var sql = mld.getopdroverzicht_sql(pautfunction, params);
oRs = Oracle.Execute(sql);
var oldprs_key = -1
while (!oRs.eof)
{
var prs_key = oRs("prs_perslid_key").Value || -1;
var opdr_key = oRs("mld_opdr_key").Value;
var behandelaar = oRs("behandelaar").Value;
if (prs_key != oldprs_key)
{
CARDBOX_START("cardboxbeh" + prs_key, {cardclass: "cardbox cbsortable"});
%> <script type="text/javascript">
$(function() {
$("#cardboxbeh<%=prs_key%>").sortable({
items: '.sortable',
connectWith: ".cardbox",
helper: "clone",
opacity: 0.7,
cursor: "move",
//delay: 150, //Needed to prevent accidental drag when trying to select
//revert: 0,
//helper: function (e, item)
// {
// //Basically, if you grab an unhighlighted item to drag, it will deselect (unhighlight) everything else
// if (!item.hasClass('selected'))
// {
// item.addClass('selected').siblings().removeClass('selected');
// }
//
// //////////////////////////////////////////////////////////////////////
// //HERE'S HOW TO PASS THE SELECTED ITEMS TO THE `stop()` FUNCTION:
//
// // Clone the selected items into an array
// var elements = item.parent().children('.selected').clone();
//
// // Add a property to `item` called 'multidrag` that contains the
// // selected items, then remove the selected items from the source list
// item.data('multidrag', elements).siblings('.selected').remove();
//
// // Now the selected items exist in memory, attached to the `item`,
// // so we can access them later when we get to the `stop()` callback
//
// //Create the helper
// var helper = $('<div/>');
// return helper.append(elements);
// },
start: function (e, ui)
{
ui.item.addClass("cardmoving");
ui.item.show();
},
stop: function (e, ui)
{
ui.item.removeClass("cardmoving");
sort(<%=prs_key%>);
},
receive: function (e, ui)
{
ui.item.addClass("cardmoved");
sort(<%=prs_key%>);
},
create: function (event, ui)
{
sort(<%=prs_key%>);
}
//start: function (e, ui)
// {
// ui.item.after(selected);
// $('.pholder').show();
// },
//stop: function (e, ui)
// {
// //Now we access those items that we stored in `item`s data!
// if (!received)
// {
// selected.remove();
// $('.pholder').remove();
// }
// els
// {
// received = false;
// $('.pholder').removeClass('pholder');
// }
// var elements = ui.item.data('multidrag');
//
// //`elements` now contains the originally selected items from the source list (the dragged items)!!
//
// //Finally I insert the selected items after the `item`, then remove the `item`, since
// // item is a duplicate of one of the selected items.
// ui.item.after(elements).remove();
// $('.selected').removeClass('selected');
// $('.ui-sortable').not(ui.sender)
// .each(function()
// {
// $(this).find('div.cardbeheerder')
// .each(function()
// {
// if($(this).parent().find('div.cardbeheerder:contains("'+$(this).text()+'")').length > 1)
// $(this).remove();
// });
// });
// },
//receive: function (e, ui)
// {
// received = true;
// },
});
//$("#cardboxbeh<%=prs_key%>").sortable("disable");
});
</script>
<% CARD_START("cardbeh" + prs_key, {cardclass: "cardbeheerder"});
if (prs_key > 0)
{
var thisUser = new Perslid(prs_key); // geeft ook handige informatie
%> <tr><td><span class="readonly fldnaam"><%=safe.html(behandelaar)%></span></td></tr>
<tr><td><span class="readonly fldnaam"><%=safe.html(thisUser.afdeling().naam())%></span></td></tr>
<% }
else
{
%> <tr><td><span class="readonly fldnaam"><%="LCL Niet toegekend"%></span></td></tr>
<% }
CARD_END();
}
var uitvoerende = oRs("naam").Value;
var opdracht = oRs("ins_srtdiscipline_prefix").Value + oRs("mld_opdr_key").Value + "/" + oRs("mld_opdr_bedrijfopdr_volgnr").Value;
CARD_START("opdrcard" + opdr_key, {cardclass: "sortable"});
%> <tr><td><span class="readonly fldnaam"><%=safe.html(opdracht)%></span></td></tr>
<tr><td><span class="readonly fldnaam"><%=safe.html(uitvoerende)%></span></td></tr>
<% CARD_END();
//Response.write("<tr><td class='profile'><img id='photo' class='profile' src='" + thisUser.photoinfo().photopaththumb + "'></td></tr>");
oldprs_key = prs_key;
oRs.MoveNext();
if (oRs.eof || (oRs("prs_perslid_key").Value || -1) != oldprs_key)
CARDBOX_END();
}
%>
</div>
<!-- LEGENDA -->
<script type="text/javascript">
function openLegenda()
{
params = { width: 170,
resizable: false,
position: {my: "right top", at: "right top+30"},
title: "<%=L("lcl_res_legenda")%>"
}
$('div#legenda').dialog(params).dialog('open');
}
</script>
<div id="legenda" style="display:none; line-height: 30px;">
<table id="planbordlegenda">
<tr><td class="res_definitief"><%= L("lcl_def") %></td></tr>
<tr><td class="res_optie"><%= L("lcl_optie") %></td></tr>
</table>
</div>
</body>
</html>
<%
}
%>

View File

@@ -142,27 +142,30 @@ oRs.close();
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function doSubmit()
function doSubmit(mode) // 0=lijst, 1=planbord
{
<% if (xd.enabled()) { %>
if ($("#xd").is(":checked"))
<% if (xd.enabled())
{ %>
if ($("#xd").is(":checked"))
{
$("form[name=u2]").attr("action", "opdr_search_list_xd.asp");
} else {
$("form[name=u2]").attr("action", "opdr_search_list.asp");
}
<% } %>
$("#planb").val(mode);
doSubmitWithKenmerken();
}
<% if (xd.enabled())
{ %>
function xdclicked()
{
$("form[name=u2]").attr("action", "opdr_search_list_xd.asp");
} else {
$("form[name=u2]").attr("action", "opdr_search_list.asp");
var doxd = document.getElementById("xd").checked;
$(".noxd").toggle(!doxd);
$(".onlyxd").toggle(doxd);
iface_toggleSecondarySearchblock(false); // altijd uitschakelen
}
<% } %>
doSubmitWithKenmerken();
}
<% if (xd.enabled()) { %>
function xdclicked()
{
var doxd = document.getElementById("xd").checked;
$(".noxd").toggle(!doxd);
$(".onlyxd").toggle(doxd);
iface_toggleSecondarySearchblock(false); // altijd uitschakelen
}
<% } %>
<% } %>
function myModal()
{
if ($('#opdrtype').val() == -1)
@@ -181,7 +184,7 @@ oRs.close();
<%
if (autosearch)
{
%> $(document).ready(doSubmit);
%> $(document).ready(doSubmit(0));
<% } %>
</script>
</head>
@@ -196,6 +199,7 @@ oRs.close();
<input type="hidden" name="user_key" value="<%=user_key%>">
<input type="hidden" name="bes" value="<%=bes? 1 : 0%>">
<input type="hidden" name="offerte" id="offerte" value="<%=offerte%>">
<input type="hidden" name="planb" id="planb" value="0">
<table><!-- x rijen, 2 kolommen: label + veld -->
<%
if (xd.enabled())
@@ -656,10 +660,13 @@ oRs.close();
</td>
</tr>
<% BLOCK_END();
var buttons = [{ title: L("lcl_search"), action: "doSubmit();"}];
if (!bgtmode) {
buttons.push ( {title: L("lcl_shared_more"), action:"iface_toggleSecondarySearchblock()", id : "btnMoreLess", xclass: "noxd" } );
buttons.push({ title: L("lcl_obj_advanced"), action: "myModal()", xclass: "noxd"});
var buttons = [{ title: L("lcl_search"), action: "doSubmit(0);"}];
if (!xd.enabled())
buttons.push ( { title: L("lcl_planboard"), action: "doSubmit(1);"} );
if (!bgtmode)
{
buttons.push ( {title: L("lcl_shared_more"), action:"iface_toggleSecondarySearchblock()", id : "btnMoreLess", xclass: "noxd" } );
buttons.push({ title: L("lcl_obj_advanced"), action: "myModal()", xclass: "noxd"});
}
CreateButtons(buttons, { entersubmit: true });
%>
@@ -671,7 +678,7 @@ oRs.close();
src="../Shared/empty.asp"
name="workFrame" id="workFrame"
onload="FcltMgr.iframeLoaded(this)"
frameborder="0" scrolling="no">
frameborder="0" scrolling="yes">
</iframe>
</div>
</body>

View File

@@ -13,6 +13,7 @@
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="opdr_list.inc" -->
<!-- #include file="opdr_plan.inc" -->
<%
// Zie opdr_list.inc voor uitleg
@@ -56,7 +57,7 @@ var behandelgrp_key = getQParamInt("behandelgrp_key", -1); // Behandelgroep
var offerte = getQParamInt("offerte", -1); // Opdrachttype is een offerteaanvraag. Kan -1:don't care, 0:niet, 1:wel zijn.
var searchtekst = getQParam("searchtekst", ""); // Zoektekst
var verantw_key = getQParamInt("verantw", -1); // Gebouw verantwoordelijke
var planb = getQParamInt("planb", 1) == 1; // Op planbord button geklikt.
if (opdrtype > 0)
lcl.set_dialect(opdrtype, "MLD_TYPEOPDR_KEY");
@@ -92,42 +93,46 @@ var status10 = st_opdrNew;
var date_to = getQParamDate("date_to", null);
var date_from = getQParamDate("date_from", null);
opdr_list ( { urole : urole,
opdr_key: opdr_key,
outputmode: outputmode,
showall: showall,
caller_key: (sName_key != -1 ? sName_key : null),
reg_key: (regiokey != -1 ? regiokey : null),
dist_key: (districtkey != -1 ? districtkey : null),
adr_key: (adr_key != -1 ? adr_key : null),
loc_key: (locatiekey != -1 ? locatiekey : null),
bld_key: (gebouwkey != -1 ? gebouwkey : null),
verantw_key: (verantw_key != -1 ? verantw_key : null),
behandel_key: (behandel_key != -1 ? behandel_key : null),
contract: (contract != -1 ? contract : null),
cnt_key: (cntnr != -1 ? cntnr : null),
searchtekst: (searchtekst != "" ? searchtekst : null),
handler_key: (handler != -1 ? handler : null),
dateto: date_to,
datefrom: date_from,
opdrtype_key: (opdrtype != -1 ? opdrtype : null),
srtdisc_key : (srtdisc_key != -1 ? srtdisc_key : null),
disc_key_arr : (disc_key_str.length > 0 && disc_key_str.join(",").indexOf("-1") == -1? disc_key_str : null),
stdm_key_arr : (stdm_key_str.length > 0 && stdm_key_str.join(",").indexOf("-1") == -1? stdm_key_str : null),
meldinggrp_key: (meldinggrp_key != -1 ? meldinggrp_key : null),
behandelgrp_key: (behandelgrp_key != -1 ? behandelgrp_key : null),
bes: bes,
offerte: offerte,
mldopdrstrej: status1,
mldopdrstnak: status2,
mldopdrsttfi: status3,
mldopdrstfia: status4,
mldopdrstuit: status5,
mldopdrstafm: status6,
mldopdrstver: status7,
mldopdrstacp: status8,
mldopdrstafr: status9,
mldopdrstgoe: status10
}
);
var params = { urole : urole,
opdr_key: opdr_key,
outputmode: outputmode,
showall: showall,
caller_key: (sName_key != -1 ? sName_key : null),
reg_key: (regiokey != -1 ? regiokey : null),
dist_key: (districtkey != -1 ? districtkey : null),
adr_key: (adr_key != -1 ? adr_key : null),
loc_key: (locatiekey != -1 ? locatiekey : null),
bld_key: (gebouwkey != -1 ? gebouwkey : null),
verantw_key: (verantw_key != -1 ? verantw_key : null),
behandel_key: (behandel_key != -1 ? behandel_key : null),
contract: (contract != -1 ? contract : null),
cnt_key: (cntnr != -1 ? cntnr : null),
searchtekst: (searchtekst != "" ? searchtekst : null),
handler_key: (handler != -1 ? handler : null),
dateto: date_to,
datefrom: date_from,
opdrtype_key: (opdrtype != -1 ? opdrtype : null),
srtdisc_key : (srtdisc_key != -1 ? srtdisc_key : null),
disc_key_arr : (disc_key_str.length > 0 && disc_key_str.join(",").indexOf("-1") == -1? disc_key_str : null),
stdm_key_arr : (stdm_key_str.length > 0 && stdm_key_str.join(",").indexOf("-1") == -1? stdm_key_str : null),
meldinggrp_key: (meldinggrp_key != -1 ? meldinggrp_key : null),
behandelgrp_key: (behandelgrp_key != -1 ? behandelgrp_key : null),
bes: bes,
offerte: offerte,
planb: planb,
mldopdrstrej: status1,
mldopdrstnak: status2,
mldopdrsttfi: status3,
mldopdrstfia: status4,
mldopdrstuit: status5,
mldopdrstafm: status6,
mldopdrstver: status7,
mldopdrstacp: status8,
mldopdrstafr: status9,
mldopdrstgoe: status10
};
if (planb)
opdr_plan (params);
else
opdr_list (params);
%>