896 lines
41 KiB
SQL
896 lines
41 KiB
SQL
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mld_groep_list.inc
|
|
Description: Definieert de serverside functie mld_groep_list() die een lijst van aantal meldingen/opdrachten toont die
|
|
voldoen aan de gegeven parameters/criteria, binnen de readautorisaties van de user.
|
|
Parameters: -
|
|
Context: -
|
|
|
|
Note: Note gekopieerd van mld_list.inc
|
|
Dit bestand verzorgt de groeperings variant van de meldinglijst (maninfo)
|
|
|
|
*/ %>
|
|
<!-- #include file="../Shared/discx3d.inc" -->
|
|
<!-- #include file="../Shared/status.inc" -->
|
|
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
|
<!-- #include file="../Shared/getkenmerksql.inc" -->
|
|
<!-- #include file="../Shared/rater.inc" -->
|
|
<!-- #include file="mld.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({plugins:["suggest","jQuery"],
|
|
js: ["../mld/mld_list.js", "jquery-ui.js"]});
|
|
|
|
function mld_groep_list (pautfunction, params)
|
|
{ // VALIDATE AND PREPARE
|
|
// Als een parameter niet gedefinieerd of null is, dan doet-ie niks
|
|
// anders wordt die verondersteld een zinvolle waarde te hebben
|
|
// NB: -1 is vaak geen zinvolle waarde; null had het dan moeten zijn!
|
|
|
|
// Valid and supported parameters are:
|
|
// params.urole : the usuals two-letter lowercase string
|
|
// params.outputmode : print to 0 = screen, 1 = printer, 2 = excel, etc.
|
|
// params.showall : boolean
|
|
// params.perform : boolean
|
|
// params.mld_key : key
|
|
// params.opdr_key : key
|
|
// params.mldstatus_str : String met keys (e.g. "3,4,5")
|
|
// params.opdrstatus_str : String met keys (e.g. "3,4,5")
|
|
// params.caller_key : key
|
|
// params.comp_key : key
|
|
// params.org_key : key
|
|
// params.reg_key : key
|
|
// params.reg_key_arr : key
|
|
// params.dist_key : key
|
|
// params.dist_key_arr : key
|
|
// params.loc_key : key
|
|
// params.loc_key_arr : key
|
|
// params.bld_key : key
|
|
// params.bld_key_arr : key
|
|
// params.flr_key : key
|
|
// params.flr_key_arr : key
|
|
// params.room_key : key
|
|
// params.room_key_arr : key
|
|
// params.mld_ins_discipline_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.behandel_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.behandel2_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.srtdisc_key_arr: key
|
|
// params.disc_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.meldinggrp : String met een meldinggroep
|
|
// params.stdm_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.kpgrp_key_arr : array met keys
|
|
// params.kp_key_arr : Array met keys
|
|
// params.handler_key : key
|
|
// params.contact_key : key
|
|
// params.opdrtype_key : key
|
|
// params.searchtekst : wildcard string
|
|
// params.omschr : wildcard string
|
|
// params.disc_key : key
|
|
// params.insgroup_key : key
|
|
// params.objsrt_key_arr : Array met keys (e.g. [3, 4, 5])
|
|
// params.groepering_key : key
|
|
// params.chkAcceptEx : boolean
|
|
// params.chkRunEx : boolean
|
|
// params.chkSpoed : boolean
|
|
// params.chkAfgerond : boolean
|
|
// params.datefrom : date
|
|
// params.dateto : date
|
|
|
|
// params.dienst_key : key
|
|
// cnt_key: contract,
|
|
// params.deel_key : ins_deel_key
|
|
|
|
// 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
|
|
//
|
|
// if a parameters has a value of -1, then it is assumed not to be set and to be ignored.
|
|
|
|
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
|
|
var authparams = user.checkAutorisation(pautfunction);
|
|
|
|
var urole = params.urole;
|
|
var fronto = (urole == "fo");
|
|
var backo = (urole == "bo");
|
|
var minfo = (urole == "mi"); // NOT APPLICABLE?
|
|
var frontend = (urole == "fe" || (!fronto && !backo && !minfo));
|
|
params.minfo = minfo;
|
|
|
|
// AUTORISATIES
|
|
// Ik zoek wat zaken van de huidige gebruiker uit, die gevolgen kunnen hebben voor met name de actions
|
|
// Bepaling MLDFOF write rechten, dan kan ik nl. ongeacht de overige rechten ook (iets) toevoegen
|
|
// Autorisatie check is al gedaan in mld_search_list.asp
|
|
if (fronto) {
|
|
var locauthparams = user.checkAutorisation("WEB_MLDFOF", true);
|
|
var mldfof_write = !(locauthparams.PRSwritelevel == 9 && locauthparams.ALGwritelevel==9);
|
|
}
|
|
else {
|
|
var mldfof_write = false;
|
|
}
|
|
|
|
//// Dit lijkt me om te kunnen bepalen of ik uberhaupt naar de PRS-autorisatie hoef te kijken
|
|
//var add_prs_restrict = prshasrestrict(pautfunction);
|
|
|
|
|
|
// 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 perform = params.perform;
|
|
var mld_key = params.mld_key;
|
|
var disc_key_arr = params.disc_key_arr;
|
|
var groepering_key = params.groepering_key;
|
|
var toon_opdr_overz = (groepering_key == 10 || groepering_key == 11 || groepering_key == 17);
|
|
%>
|
|
<html>
|
|
<head>
|
|
<%
|
|
FCLTHeader.Generate({ outputmode: outputmode });
|
|
%>
|
|
<script type="text/javascript">
|
|
// Text strings used by mld_list.js
|
|
var urole = "<%=urole%>";
|
|
</script>
|
|
</head>
|
|
|
|
<body id="listbody">
|
|
<%
|
|
sqln = "SELECT " + (toon_opdr_overz? "" : "DISTINCT")
|
|
+ " m.mld_melding_key mld_key"
|
|
+ (groepering_key == 11 ? ", o.mld_opdr_bedrijfopdr_volgnr" : "")
|
|
+ ", m.mld_melding_satisfaction"
|
|
+ (groepering_key == 3
|
|
? ", m.mld_melding_status"
|
|
: "")
|
|
+ (groepering_key == 7
|
|
? ", (SELECT " + S("prs_kpn_string")
|
|
+ " FROM prs_kostenplaats k"
|
|
+ " WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats"
|
|
: "")
|
|
+ (groepering_key == 5
|
|
? ", (SELECT COUNT(o.mld_opdr_key)"
|
|
+ " FROM mld_opdr o"
|
|
+ " WHERE o.mld_melding_key = m.mld_melding_key) opdr_key"
|
|
: "")
|
|
+ (groepering_key == 4 || groepering_key == 5 || groepering_key == 6 || groepering_key == 13 || groepering_key == 14
|
|
? ", (SELECT " + lcl.xsqla("sd.ins_srtdiscipline_omschrijving", "ins_srtdiscipline_key")
|
|
+ " FROM ins_srtdiscipline sd"
|
|
+ " WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key) vakgroeptype"
|
|
: "")
|
|
+ (groepering_key == 5 || groepering_key == 6 || groepering_key == 13 || groepering_key == 14
|
|
? ", "+ lcl.xsql("md.ins_discipline_omschrijving", "md.ins_discipline_key") + " vakgroep"
|
|
: "")
|
|
+ (groepering_key == 6
|
|
? ", (SELECT " + lcl.xsqla("sm.mld_stdmelding_omschrijving", "sm.mld_stdmelding_key")
|
|
+ " FROM mld_stdmelding sm"
|
|
+ " WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key) melding"
|
|
: "")
|
|
+ ((groepering_key == 9 || groepering_key == 8)
|
|
? ", di.alg_district_upper district"
|
|
: "")
|
|
+ ((groepering_key == 23 || groepering_key == 9)
|
|
? ", l.alg_locatie_code locatie"
|
|
: "")
|
|
+ ((groepering_key == 23) // terrein zou hier ook bij mogen horen eigenlijk
|
|
? ", g.alg_gebouw_naam gebouw"
|
|
: "")
|
|
+ (groepering_key == 10
|
|
? ", o.mld_statusopdr_key"
|
|
: "")
|
|
+ (groepering_key == 11
|
|
? ", (SELECT naam"
|
|
+ " FROM mld_v_uitvoerende u"
|
|
+ " WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys) uitvoerende"
|
|
: "")
|
|
+ (groepering_key == 17
|
|
? ", (SELECT mld_typeopdr_omschrijving"
|
|
+ " FROM mld_typeopdr ot"
|
|
+ " WHERE ot.mld_typeopdr_key = o.mld_typeopdr_key) opdrachttype"
|
|
: "")
|
|
+ (groepering_key == 12
|
|
? ", COALESCE((SELECT ks.prs_kostensoort_oms"
|
|
+ " FROM prs_kostensoort ks"
|
|
+ " , mld_stdmelding sm"
|
|
+ " WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key"
|
|
+ " AND sm.prs_kostensoort_key = ks.prs_kostensoort_key),"
|
|
+ " (SELECT ks.prs_kostensoort_oms"
|
|
+ " FROM prs_kostensoort ks"
|
|
+ " WHERE md.prs_kostensoort_key = ks.prs_kostensoort_key)) kostensoort"
|
|
: "")
|
|
+ (groepering_key == 13 || groepering_key == 14 || groepering_key == 23
|
|
? ", (SELECT d.alg_district_omschrijving"
|
|
+ " FROM alg_locatie ll"
|
|
+ ", alg_district d"
|
|
+ " WHERE l.alg_locatie_key = ll.alg_locatie_key"
|
|
+ " AND ll.alg_district_key = d.alg_district_key) district"
|
|
: "")
|
|
|
|
+ (groepering_key == 8 || groepering_key == 9 || groepering_key == 13 || groepering_key == 14 || groepering_key == 23
|
|
? ", (SELECT r.alg_regio_omschrijving"
|
|
+ " FROM alg_district d"
|
|
+ ", alg_regio r"
|
|
+ " WHERE d.alg_district_key = l.alg_district_key"
|
|
+ " AND d.alg_regio_key = r.alg_regio_key) regio"
|
|
: "")
|
|
+ (groepering_key == 14
|
|
? ", (SELECT ll.alg_locatie_omschrijving"
|
|
+ " FROM alg_locatie ll"
|
|
+ ", alg_district d"
|
|
+ " WHERE l.alg_locatie_key = ll.alg_locatie_key"
|
|
+ " AND ll.alg_district_key = d.alg_district_key) locatie"
|
|
: "")
|
|
+ (!perform
|
|
? ", COALESCE((SELECT SUM(f.fin_factuur_totaal)"
|
|
+ " FROM fin_factuur f"
|
|
+ (toon_opdr_overz
|
|
? " WHERE f.mld_opdr_key = o.mld_opdr_key"
|
|
+ " AND fin_factuur_statuses_key <> 1"
|
|
+ " AND fin_factuur_verwijder IS NULL), 0) werkelijke_kosten"
|
|
: " , mld_opdr o2"
|
|
+ " WHERE f.mld_opdr_key = o2.mld_opdr_key"
|
|
+ " AND fin_factuur_statuses_key <> 1"
|
|
+ " AND fin_factuur_verwijder IS NULL"
|
|
+ " AND o2.mld_melding_key = m.mld_melding_key), 0) werkelijke_kosten")
|
|
: "")
|
|
+ (groepering_key == 15
|
|
? ", COALESCE((SELECT " + lcl.xsql('ksg.prs_kostensoortgrp_oms','ksg.prs_kostensoortgrp_key')
|
|
+ " FROM prs_kostensoortgrp ksg"
|
|
+ " , prs_kostensoort ks"
|
|
+ " , mld_stdmelding sm"
|
|
+ " WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key"
|
|
+ " AND sm.prs_kostensoort_key = ks.prs_kostensoort_key"
|
|
+ " AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key),"
|
|
+ " (SELECT "+ lcl.xsql('ksg.prs_kostensoortgrp_oms','ksg.prs_kostensoortgrp_key')
|
|
+ " FROM prs_kostensoort ks"
|
|
+ " , prs_kostensoortgrp ksg"
|
|
+ " WHERE ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key"
|
|
+ " AND md.prs_kostensoort_key = ks.prs_kostensoort_key), '') kostensoortgroep"
|
|
: "")
|
|
+ (groepering_key == 18
|
|
? ", (SELECT " + lcl.xsqla('smg.mld_stdmeldinggroep_naam','smg.mld_stdmeldinggroep_key')
|
|
+ " FROM mld_stdmeldinggroep smg"
|
|
+ " WHERE smg.mld_stdmeldinggroep_key = std.mld_stdmeldinggroep_key) groep"
|
|
: "")
|
|
+ (groepering_key == 19
|
|
? ", (SELECT " + lcl.xsqla('sd.ins_srtdiscipline_omschrijving', 'ins_srtdiscipline_key')
|
|
+ " FROM ins_srtdiscipline sd"
|
|
+ " WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key) vakgroeptype"
|
|
+ ", (SELECT "+lcl.xsqla('sm.mld_stdmeldinggroep_naam','sm.mld_stdmeldinggroep_key')
|
|
+ " FROM mld_stdmeldinggroep sm"
|
|
+ " WHERE sm.mld_stdmeldinggroep_key = std.mld_stdmeldinggroep_key) groep"
|
|
: "")
|
|
+ (groepering_key == 20
|
|
? ", (SELECT " + lcl.xsqla('sm.mld_stdmeldinggroep_naam','sm.mld_stdmeldinggroep_key')
|
|
+ " FROM mld_stdmeldinggroep sm"
|
|
+ " WHERE sm.mld_stdmeldinggroep_key = std.mld_stdmeldinggroep_key) groep"
|
|
+ ", (SELECT " + S("prs_kpn_string")
|
|
+ " FROM prs_kostenplaats k"
|
|
+ " WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats"
|
|
: "")
|
|
+ (groepering_key == 21
|
|
? ", (SELECT " + lcl.xsqla('mb.mld_meldbron_omschrijving', 'mb.mld_meldbron_key')
|
|
+ " FROM mld_meldbron mb"
|
|
+ " WHERE mb.mld_meldbron_key = m.mld_meldbron_key) meldbron"
|
|
: "")
|
|
+ (groepering_key == 22
|
|
? ", mld_melding_spoed"
|
|
: "")
|
|
+ (groepering_key == 24 || groepering_key == 26
|
|
? ", (SELECT " + lcl.xsqla('d.ins_discipline_omschrijving', 'ins_discipline_key')
|
|
+ " FROM mld_discipline d"
|
|
+ " WHERE d.ins_discipline_key = m.mld_ins_discipline_key) behandelteam"
|
|
: "")
|
|
+ (groepering_key == 25 || groepering_key == 26
|
|
? ", (SELECT pf.prs_perslid_naam_friendly"
|
|
+ " FROM prs_v_perslid_fullnames_all pf"
|
|
+ " WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key) behandelaar"
|
|
: "")
|
|
+ (groepering_key == 27
|
|
? ", (SELECT pf.prs_perslid_naam_friendly"
|
|
+ " FROM prs_v_perslid_fullnames_all pf"
|
|
+ " WHERE pf.prs_perslid_key = m.prs_perslid_key) melder"
|
|
: "")
|
|
+ (groepering_key == 28
|
|
? ", (SELECT pf.prs_perslid_naam_friendly"
|
|
+ " FROM prs_v_perslid_fullnames_all pf"
|
|
+ " WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key) aanspreekpunt"
|
|
: "")
|
|
+ (groepering_key == 29
|
|
? ", (SELECT DECODE (prs_kostenplaatsgrp_nr, NULL, '', prs_kostenplaatsgrp_nr || ' - ') ||" + lcl.xsqla('kpg.prs_kostenplaatsgrp_oms','kpg.prs_kostenplaatsgrp_key')
|
|
+ " FROM prs_kostenplaatsgrp kpg, prs_kostenplaats kp"
|
|
+ " WHERE kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key"
|
|
+ " AND kp.prs_kostenplaats_key = m.prs_kostenplaats_key) kpgroep"
|
|
: "")
|
|
+ (groepering_key == 30
|
|
? ", (SELECT mmt.mld_melding_tag_naam"
|
|
+ " FROM mld_melding_tag mmt"
|
|
+ " WHERE mmt.mld_melding_tag_key = m.mld_melding_tag_key) mijlpaal"
|
|
: "");
|
|
|
|
if (!perform)
|
|
{
|
|
if (toon_opdr_overz)
|
|
{
|
|
sqln += ", COALESCE((SELECT SUM(topdr.mld_opdr_kosten)"
|
|
+ " FROM mld_opdr topdr"
|
|
+ ", mld_typeopdr ty"
|
|
+ " WHERE topdr.mld_opdr_key = o.mld_opdr_key"
|
|
+ " AND topdr.mld_typeopdr_key = ty.mld_typeopdr_key"
|
|
+ " AND ty.mld_typeopdr_kosten = 1"
|
|
+ " GROUP BY o.mld_opdr_key), 0) kosten";
|
|
}
|
|
else
|
|
{
|
|
sqln += ", COALESCE((SELECT SUM(topdr.mld_opdr_kosten)"
|
|
+ " FROM mld_opdr topdr"
|
|
+ ", mld_typeopdr ty"
|
|
+ " WHERE topdr.mld_melding_key = m.mld_melding_key"
|
|
+ " AND topdr.mld_typeopdr_key = ty.mld_typeopdr_key"
|
|
+ " AND ty.mld_typeopdr_kosten = 1"
|
|
+ " GROUP BY m.mld_melding_key), 0) kosten";
|
|
}
|
|
}
|
|
|
|
sql_on_time_accept = " CASE WHEN mld_melding_acceptdatum_std < "
|
|
+ " COALESCE(fac.gettrackingdate('MLDREJ', m.mld_melding_key), COALESCE(fac.gettrackingdate('MLDACP', m.mld_melding_key), sysdate))"
|
|
+ " THEN 0"
|
|
+ " ELSE 1"
|
|
+ " END";
|
|
|
|
sql_on_time_run_sla = " CASE"
|
|
+ " WHEN std.mld_stdmelding_slabewaken = 0 OR m.mld_melding_indult = 1 THEN NULL" // Als "SLA bewaken" niet is gezet, dan niet meerekenen.
|
|
+ " ELSE CASE WHEN gau.actualuitvoertijd.tijdsduur / CASE"
|
|
+ " WHEN gau.actualuitvoertijd.eenheid = 'U'"
|
|
+ " THEN 24"
|
|
+ " ELSE 1"
|
|
+ " END"
|
|
+ " <= "
|
|
+ " (CASE"
|
|
+ " WHEN m.mld_melding_t_uitvoertijd.eenheid = 'U'"
|
|
+ " THEN m.mld_melding_t_uitvoertijd.tijdsduur / 24"
|
|
+ " ELSE m.mld_melding_t_uitvoertijd.tijdsduur"
|
|
+ " END + CASE"
|
|
+ " WHEN m.mld_melding_t_respijt.tijdsduur IS NULL"
|
|
+ " THEN 0"
|
|
+ " WHEN m.mld_melding_t_respijt.eenheid = 'U'"
|
|
+ " THEN m.mld_melding_t_respijt.tijdsduur / 24"
|
|
+ " ELSE m.mld_melding_t_respijt.tijdsduur"
|
|
+ " END)"
|
|
+ " THEN 1" // op tijd
|
|
+ " ELSE 0"
|
|
+ " END"
|
|
+ " END";
|
|
|
|
sql_on_time_run_afspraak = " CASE WHEN m.mld_melding_einddatum >="
|
|
+ " COALESCE(fac.gettrackingdate('MLDAFM', m.mld_melding_key), fac.gettrackingdate('MLDREJ', m.mld_melding_key), sysdate)"
|
|
+ " THEN 1" // op tijd
|
|
+ " ELSE 0"
|
|
+ " END";
|
|
|
|
sql_on_time_accept_opd = "0"; // Unsupported yet, er is nog geen accept-SLA voor opdrachten
|
|
|
|
sql_on_time_run_afspraak_opd = " CASE"
|
|
+ " WHEN fac.gettrackingdate('ORDREJ', o.mld_opdr_key) IS NOT NULL"
|
|
+ " THEN 1" // Rejected is altijd op tijd uitgevoerd.
|
|
+ " ELSE CASE WHEN o.mld_opdr_einddatum IS NULL OR" // Als er geen einddatum van de opdracht is opgegeven, dan is die altijd op tijd.
|
|
+ " o.mld_opdr_einddatum >= COALESCE(fac.gettrackingdate('ORDAFM', o.mld_opdr_key)"
|
|
+ " , fac.gettrackingdate('ORDCAN', o.mld_opdr_key)"
|
|
+ " , sysdate)"
|
|
+ " THEN 1" // op tijd
|
|
+ " ELSE 0"
|
|
+ " END"
|
|
+ " END";
|
|
|
|
if (perform)
|
|
if (toon_opdr_overz)
|
|
sqln += ", " + sql_on_time_accept_opd + " acceptoptijd"
|
|
+ ", 0 uitvoeringoptijd_sla" // Deze doet voor SLA-opdrachten niet mee.
|
|
+ ", " + sql_on_time_run_afspraak_opd + " uitvoeringoptijd_afspraak";
|
|
else
|
|
sqln += ", " + sql_on_time_accept + " acceptoptijd"
|
|
+ ", " + sql_on_time_run_sla + " uitvoeringoptijd_sla"
|
|
+ ", " + sql_on_time_run_afspraak + " uitvoeringoptijd_afspraak";
|
|
|
|
// Voeg aan de sql het FROM en WHERE gedeelte toe
|
|
var sqln_arr = mld.getfromwherelist_sql(pautfunction, params);
|
|
|
|
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
|
|
sqln = discx3d (sqln + sqln_arr[0],
|
|
"md.ins_discipline_key",
|
|
"di.alg_regio_key",
|
|
"l.alg_district_key",
|
|
"l.alg_locatie_key",
|
|
"v.alg_gebouw_key",
|
|
"v.alg_verdieping_key",
|
|
"v.alg_ruimte_key",
|
|
"b.prs_bedrijf_key",
|
|
"b.prs_afdeling_key",
|
|
pautfunction,
|
|
(!mld_key && disc_key_arr.length? disc_key_arr : []),
|
|
2)
|
|
+ " UNION "
|
|
+ sqln + sqln_arr[1];
|
|
|
|
var caption = [];
|
|
var content = [];
|
|
var sql_perform = (perform
|
|
? ", SUM(acceptoptijd) acceptoptijd"
|
|
+ ", SUM(uitvoeringoptijd_sla) uitvoeringoptijd_sla"
|
|
+ ", COUNT(uitvoeringoptijd_sla) cnt_uitvoeringoptijd_sla"
|
|
+ ", SUM(uitvoeringoptijd_afspraak) uitvoeringoptijd_afspraak"
|
|
: ", SUM(kosten) totaal_kosten"
|
|
+ ", SUM(werkelijke_kosten) werkelijke_totaal_kosten")
|
|
+ ", SUM (mld_melding_satisfaction) sum_satisfaction"
|
|
+ ", COUNT (mld_melding_satisfaction) cnt_satisfaction"
|
|
+ ", AVG (mld_melding_satisfaction) oordeel";
|
|
|
|
if (groepering_key == 3)
|
|
{ // melding status
|
|
sqln = "SELECT mld_melding_status"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY mld_melding_status";
|
|
caption = [L("lcl_mld_mldstatus")];
|
|
content = [fncolMldStatus];
|
|
}
|
|
else if (groepering_key == 4)
|
|
{ // vakgroeptype
|
|
sqln = "SELECT vakgroeptype"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY vakgroeptype";
|
|
caption = [L("lcl_mld_vakgroeptype")];
|
|
content = ["vakgroeptype"];
|
|
}
|
|
else if (groepering_key == 5)
|
|
{ // vakgroeptype - vakgroep
|
|
sqln = "SELECT vakgroeptype, vakgroep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ ", SUM(opdr_key) aantal_opdrachten"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY vakgroeptype, vakgroep";
|
|
caption =[L("lcl_mld_vakgroeptype"), L("lcl_mld_vakgroep")];
|
|
content = ["vakgroeptype", "vakgroep"];
|
|
}
|
|
else if (groepering_key == 13)
|
|
{ // district - vakgroeptype - vakgroep
|
|
sqln = "SELECT regio, district, vakgroeptype, vakgroep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY regio, district, vakgroeptype, vakgroep";
|
|
caption = [L("lcl_region"), L("lcl_district"), L("lcl_mld_vakgroeptype"), L("lcl_mld_vakgroep")];
|
|
content = ["regio", "district", "vakgroeptype", "vakgroep"];
|
|
}
|
|
else if (groepering_key == 14)
|
|
{ // district - vakgroeptype - vakgroep
|
|
sqln = "SELECT regio, district, locatie, vakgroeptype, vakgroep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY regio, district, locatie, vakgroeptype, vakgroep";
|
|
caption = [L("lcl_region"), L("lcl_district"), L("lcl_location"), L("lcl_mld_vakgroeptype"), L("lcl_mld_vakgroep")];
|
|
content = ["regio", "district", "locatie", "vakgroeptype", "vakgroep"];
|
|
}
|
|
else if (groepering_key == 6)
|
|
{ // vakgroeptype - vakgroep - stdmelding
|
|
sqln = "SELECT vakgroeptype, vakgroep, melding"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY vakgroeptype, vakgroep, melding";
|
|
caption = [L("lcl_mld_vakgroeptype"), L("lcl_mld_vakgroep"), L("lcl_complain")];
|
|
content = ["vakgroeptype", "vakgroep", "melding"];
|
|
}
|
|
else if (groepering_key == 12)
|
|
{ // kostensoort
|
|
sqln = "SELECT kostensoort"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY kostensoort";
|
|
caption = [L("lcl_charge_type")];
|
|
content = ["kostensoort"];
|
|
}
|
|
else if (groepering_key == 15)
|
|
{ // kostensoortgroep
|
|
sqln = "SELECT kostensoortgroep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY kostensoortgroep";
|
|
caption = [L("lcl_charge_type_group")];
|
|
content = ["kostensoortgroep"];
|
|
}
|
|
else if (groepering_key == 7)
|
|
{ // kostenplaats
|
|
sqln = "SELECT kostenplaats"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY kostenplaats";
|
|
caption = [L("lcl_account")];
|
|
content = ["kostenplaats"];
|
|
}
|
|
else if (groepering_key == 8)
|
|
{ // plaats district
|
|
sqln = "SELECT regio, district"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY regio, district";
|
|
caption = [L("lcl_region"), L("lcl_district")];
|
|
content = ["regio", "district"];
|
|
}
|
|
else if (groepering_key == 9)
|
|
{ // plaats locatie
|
|
sqln = "SELECT regio, district, locatie"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY regio, district, locatie";
|
|
caption = [L("lcl_region"), L("lcl_district"), L("lcl_location")];
|
|
content = ["regio", "district", "locatie"];
|
|
}
|
|
else if (groepering_key == 23)
|
|
{ // plaats gebouw
|
|
sqln = "SELECT regio, district, locatie, gebouw"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY regio, district, locatie, gebouw";
|
|
caption = [L("lcl_region"), L("lcl_district"), L("lcl_location"), L("lcl_building")];
|
|
content = ["regio", "district", "locatie", "gebouw"];
|
|
}
|
|
else if (groepering_key == 10)
|
|
{ // opdracht status
|
|
|
|
sqln = "SELECT mld_statusopdr_key"
|
|
+ ", COUNT(mld_key) aantal_opdrachten"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY mld_statusopdr_key";
|
|
caption = [L("lcl_mld_opdrachtstatus")];
|
|
content = [fncolOpdrStatus];
|
|
}
|
|
else if (groepering_key == 11)
|
|
{ // uitvoerende
|
|
sqln = "SELECT uitvoerende"
|
|
+ ", COUNT(mld_key) aantal_opdrachten"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY uitvoerende";
|
|
caption = [L("lcl_handler")];
|
|
content = ["uitvoerende"];
|
|
}
|
|
else if (groepering_key == 17)
|
|
{ // opdrachttype
|
|
sqln = "SELECT opdrachttype"
|
|
+ ", COUNT(mld_key) aantal_opdrachten"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY opdrachttype";
|
|
caption = [L("lcl_mld_typeopdr")];
|
|
content = ["opdrachttype"];
|
|
}
|
|
else if (groepering_key == 18)
|
|
{ // meldinggroep
|
|
sqln = "SELECT groep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY groep";
|
|
caption = [L("lcl_mld_meldinggroep")];
|
|
content = ["groep"];
|
|
}
|
|
else if (groepering_key == 19)
|
|
{ // vakgroeptype - meldinggroep
|
|
sqln = "SELECT vakgroeptype, groep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY vakgroeptype, groep";
|
|
caption = [L("lcl_mld_vakgroeptype"), L("lcl_mld_meldinggroep")];
|
|
content = ["vakgroeptype", "groep"];
|
|
}
|
|
else if (groepering_key == 20)
|
|
{ // meldinggroep
|
|
sqln = "SELECT groep, kostenplaats"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY groep, kostenplaats";
|
|
caption = [L("lcl_mld_meldinggroep"), L("lcl_mld_kosten")];
|
|
content = ["groep", "kostenplaats"];
|
|
}
|
|
else if (groepering_key == 21)
|
|
{ // meldbron
|
|
sqln = "SELECT meldbron"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY meldbron";
|
|
caption = [L("lcl_mld_meldbron")];
|
|
content = ["meldbron"];
|
|
}
|
|
else if (groepering_key == 22)
|
|
{ // prioriteit
|
|
sqln = "SELECT mld_melding_spoed"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY mld_melding_spoed";
|
|
caption = [L("lcl_mld_urg")];
|
|
content = [fncolMldPriotext];
|
|
}
|
|
else if (groepering_key == 24)
|
|
{ // behandelteam
|
|
sqln = "SELECT behandelteam"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY behandelteam";
|
|
caption = [L("mld_processing_group")];
|
|
content = ["behandelteam"];
|
|
}
|
|
else if (groepering_key == 25)
|
|
{ // behandelaar
|
|
sqln = "SELECT behandelaar"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY behandelaar";
|
|
caption = [L("lcl_mld_processor")];
|
|
content = ["behandelaar"];
|
|
}
|
|
else if (groepering_key == 26)
|
|
{ // behandelteam + behandelaar
|
|
sqln = "SELECT behandelteam, behandelaar"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY behandelteam, behandelaar";
|
|
caption = [L("lcl_mld_processor"), L("lcl_mld_processor")];
|
|
content = ["behandelteam", "behandelaar"];
|
|
}
|
|
else if (groepering_key == 27)
|
|
{ // behandelaar
|
|
sqln = "SELECT melder"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY melder";
|
|
caption = [L("lcl_caller")];
|
|
content = ["melder"];
|
|
}
|
|
else if (groepering_key == 28)
|
|
{ // primaire behandelaar
|
|
sqln = "SELECT aanspreekpunt"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY aanspreekpunt";
|
|
caption = [L("lcl_mld_behandelaar")];
|
|
content = ["aanspreekpunt"];
|
|
}
|
|
else if (groepering_key == 29)
|
|
{ // kostenplaatsgroep
|
|
sqln = "SELECT kpgroep"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY kpgroep";
|
|
caption = [L("lcl_prs_kostenpl_group")];
|
|
content = ["kpgroep"];
|
|
}
|
|
else if (groepering_key == 30)
|
|
{ // tag=mijlpaal
|
|
sqln = "SELECT mijlpaal"
|
|
+ ", COUNT(mld_key) aantal_meldingen"
|
|
+ sql_perform
|
|
+ " FROM (" + sqln + ")"
|
|
+ " GROUP BY mijlpaal";
|
|
caption = [L("mld_melding_tag")];
|
|
content = ["mijlpaal"];
|
|
};
|
|
|
|
sqln += " ORDER BY 1";
|
|
|
|
/**********************************
|
|
* Callback functies ResultsetTable
|
|
*********************************/
|
|
function fnendText()
|
|
{
|
|
var endText = "";
|
|
if (no_old_closed_calls && (isNaN(mldnum)))
|
|
endText = L("lcl_newrows1") + S("mld_max_history") + L("lcl_newrows2");
|
|
return endText;
|
|
}
|
|
|
|
function fncolMldStatus(oRs)
|
|
{
|
|
return mld.getmldstatustext(oRs("mld_melding_status").Value);
|
|
}
|
|
|
|
function fncolOpdrStatus(oRs)
|
|
{
|
|
return status.getopdrstatustext(oRs("mld_statusopdr_key").Value);
|
|
}
|
|
|
|
function fnacceptopTijdP(oRs)
|
|
{
|
|
var procentueel = oRs("acceptoptijd").Value / oRs(toon_opdr_overz? "aantal_opdrachten" : "aantal_meldingen").Value * 100;
|
|
return safe.curr(procentueel);
|
|
}
|
|
|
|
function fnUitvoeringOpTijdSlaP(oRs)
|
|
{
|
|
var procentueel = oRs("cnt_uitvoeringoptijd_sla").Value > 0? oRs("uitvoeringoptijd_sla").Value / oRs("cnt_uitvoeringoptijd_sla").Value * 100 : "";
|
|
return safe.curr(procentueel);
|
|
}
|
|
|
|
function fnUitvoeringOpTijdAfspraakP(oRs)
|
|
{
|
|
var procentueel = oRs("uitvoeringoptijd_afspraak").Value / oRs(toon_opdr_overz? "aantal_opdrachten" : "aantal_meldingen").Value * 100;
|
|
return safe.curr(procentueel);
|
|
}
|
|
|
|
function fncolMldPriotext(oRs)
|
|
{
|
|
return mld.getpriotext(oRs("mld_melding_spoed").Value);
|
|
}
|
|
|
|
var totaal_kosten = 0;
|
|
var werkelijke_totaal_kosten = 0;
|
|
var tot_aantal_mld = 0;
|
|
var tot_aantal_opdr = 0;
|
|
var tot_acceptoptijd = 0;
|
|
var tot_pct_uitvoeringoptijd_sla = 0;
|
|
var tot_cnt_uitvoeringoptijd_sla = 0;
|
|
var tot_pct_uitvoeringoptijd_afspraak = 0;
|
|
var sum_satisfaction = 0;
|
|
var cnt_satisfaction = 0;
|
|
function fntotalCalc(oRs)
|
|
{
|
|
if (!toon_opdr_overz)
|
|
tot_aantal_mld += oRs("aantal_meldingen").Value;
|
|
if (toon_opdr_overz || groepering_key == 5)
|
|
tot_aantal_opdr += oRs("aantal_opdrachten").Value;
|
|
|
|
if (!perform)
|
|
{
|
|
totaal_kosten += oRs("totaal_kosten").Value;
|
|
werkelijke_totaal_kosten += oRs("werkelijke_totaal_kosten").Value;
|
|
}
|
|
else
|
|
{
|
|
tot_acceptoptijd += oRs("acceptoptijd").Value;
|
|
tot_pct_uitvoeringoptijd_sla += oRs("uitvoeringoptijd_sla").Value;
|
|
tot_cnt_uitvoeringoptijd_sla += oRs("cnt_uitvoeringoptijd_sla").Value;
|
|
tot_pct_uitvoeringoptijd_afspraak += oRs("uitvoeringoptijd_afspraak").Value;
|
|
}
|
|
|
|
// Totaal oordeel is alle cijfers opgeteld gedeeld door het aantal beoordelingen.
|
|
sum_satisfaction += oRs("sum_satisfaction").Value;
|
|
cnt_satisfaction += oRs("cnt_satisfaction").Value;
|
|
}
|
|
|
|
var percentage_teller = 0;
|
|
function fntotalShow(column, nrlines)
|
|
{
|
|
function doOordeel(cnt_satisfaction, sum_satisfaction)
|
|
{
|
|
var result = cnt_satisfaction > 0? sum_satisfaction/cnt_satisfaction : 0;
|
|
if (excel)
|
|
result = (result!=0? safe.displayfloat(sum_satisfaction/cnt_satisfaction, 1) : "");
|
|
else
|
|
result = rater(result, {readonly: true});
|
|
return result;
|
|
}
|
|
|
|
var result = "";
|
|
switch (column.caption)
|
|
{
|
|
case L("lcl_mld_aantal_meldingen") : result = tot_aantal_mld; break;
|
|
case L("lcl_mld_oordeel") : result = doOordeel(cnt_satisfaction, sum_satisfaction); break;
|
|
case L("lcl_mld_aantal_opdrachten") : result = tot_aantal_opdr; break;
|
|
case L("lcl_mld_accepted_in_time") : result = tot_acceptoptijd; break;
|
|
case L("lcl_mld_handled_in_time_sla_pct") : result = tot_cnt_uitvoeringoptijd_sla > 0? safe.curr((tot_pct_uitvoeringoptijd_sla / tot_cnt_uitvoeringoptijd_sla) * 100) : ""; break;
|
|
case L("lcl_mld_handled_in_time_agreement_pct"): result = safe.curr((tot_pct_uitvoeringoptijd_afspraak / (toon_opdr_overz ? tot_aantal_opdr : tot_aantal_mld)) * 100); break;
|
|
case L("lcl_mld_percentage") : result = safe.curr((tot_acceptoptijd / (toon_opdr_overz ? tot_aantal_opdr : tot_aantal_mld)) * 100);
|
|
percentage_teller++;
|
|
break;
|
|
case L("lcl_mld_handled_in_time_sla") : result = tot_pct_uitvoeringoptijd_sla; break;
|
|
case L("lcl_mld_handled_in_time_agreement") : result = tot_pct_uitvoeringoptijd_afspraak; break;
|
|
case L("lcl_mld_totaal_kosten") : result = safe.curr(totaal_kosten); break;
|
|
case L("lcl_mld_werkelijke_kosten") : result = safe.curr(werkelijke_totaal_kosten); break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
function fnOordeel(oRs)
|
|
{
|
|
var result = null;
|
|
var displ_val = oRs("oordeel").Value;
|
|
if (displ_val && displ_val != 0)
|
|
{
|
|
if (excel)
|
|
result = "<span class='oordeel' style='text-align:right'>" + safe.displayfloat(Math.round(displ_val * 10) / 10 ,1) + "</span>";
|
|
else
|
|
result = rater(displ_val, {readonly: true}); // deze bevat al een span
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// MGE: TODO: Als je als backo geen fronto rechten hebt dan hoeft de toevoeg button ook niet getoond te worden toch??. Inderdaad-PF
|
|
var addurl = "appl/mld/mld_melding.asp?urole=" + (backo ? "fo" : urole); // backo mag niet toevoegen
|
|
addurl += buildTransitParam(["loc_key", "bld_key", "flr_key", "room_key"], params) // TODO: welke allemaal?
|
|
|
|
var rst = new ResultsetTable({ sql: sqln,
|
|
ID: "complainstable",
|
|
rowClass: "",
|
|
filterParams: params,
|
|
outputmode: outputmode,
|
|
title: (toon_opdr_overz ? L("lcl_orders"): L("lcl_complains")),
|
|
endText: fnendText,
|
|
showAll: showall,
|
|
totalCalc: ((groepering_key > 2 && groepering_key < 16) || groepering_key >= 17)? fntotalCalc : null,
|
|
totalShow: ((groepering_key > 2 && groepering_key < 16) || groepering_key >= 17)? fntotalShow : null,
|
|
buttons: [] // niet toevoegen in PPI
|
|
});
|
|
|
|
var index;
|
|
for (index = 0; index < caption.length; index++)
|
|
{
|
|
rst.addColumn(new Column({caption: caption[index], content: content[index]}));
|
|
}
|
|
if (toon_opdr_overz)
|
|
rst.addColumn(new Column({caption: L("lcl_mld_aantal_opdrachten"), content: "aantal_opdrachten", datatype: "number", total: true}));
|
|
else
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_mld_aantal_meldingen"), content: "aantal_meldingen", datatype: "number", total: true}));
|
|
}
|
|
if (groepering_key == 5)
|
|
rst.addColumn(new Column({caption: L("lcl_mld_aantal_opdrachten"), content: "aantal_opdrachten", datatype: "number", total: true}));
|
|
if (!perform)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_mld_totaal_kosten"), content: "totaal_kosten", datatype: "currency", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mld_werkelijke_kosten"), content: "werkelijke_totaal_kosten", datatype: "currency", total: true}));
|
|
}
|
|
else
|
|
{
|
|
if (!toon_opdr_overz)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_mld_accepted_in_time"), content: "acceptoptijd", datatype: "number", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mld_percentage"), content: fnacceptopTijdP, datatype: "float", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mld_handled_in_time_sla"), content: "uitvoeringoptijd_sla", datatype: "number", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mld_handled_in_time_sla_pct"), content: fnUitvoeringOpTijdSlaP, datatype: "float", total: true}));
|
|
}
|
|
rst.addColumn(new Column({caption: L("lcl_mld_handled_in_time_agreement"), content: "uitvoeringoptijd_afspraak", datatype: "number", total: true}));
|
|
rst.addColumn(new Column({caption: L("lcl_mld_handled_in_time_agreement_pct"), content: fnUitvoeringOpTijdAfspraakP, datatype: "float", total: true}));
|
|
}
|
|
if (!toon_opdr_overz) // alleen voor meldingen
|
|
rst.addColumn(new Column({caption: L("lcl_mld_oordeel"), content: fnOordeel, datatype: "float", decimals: 1, total: true}));
|
|
|
|
var cnt = rst.processResultset();
|
|
%>
|
|
</body>
|
|
</html>
|
|
<%
|
|
}
|
|
%>
|