Files
Facilitor/APPL/MLD/mld_groep_list.inc
Erik Groener e214ef30b6 YASK#89085 Management informatie geeft foutieve informatie
svn path=/Website/trunk/; revision=69253
2025-06-03 11:49:38 +00:00

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>
<%
}
%>