Files
Facilitor/APPL/MLD/mld_search_list.asp
Koen Reefman e7b952f56a Merge 2025.2 RC2 patches (ongoing)
svn path=/Website/trunk/; revision=69511
2025-06-23 07:36:36 +00:00

384 lines
20 KiB
Plaintext

<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: mld_search_list.asp
Description: Vangt de parameters van mld_search op en verwerkt die in een aanroep van mld_list
Parameters: urole
Alle zoek-criteria van mld_search.asp
Context: Vanuit mld_search.asp
met justaccept=1 wordt MLDBO3 autorisatie verondersteld
met justclose=1 wordt MLDBO2 autorisatie verondersteld
Note:
TODO:
decentraal / close_only verwerken (mld en ord)
*/ %>
<!--#include file="../Shared/common.inc" -->
<!--#include file="mld_list.inc" -->
<!--#include file="mld_bord.inc" -->
<!--#include file="opdr_list.inc" -->
<!--#include file="mld_groep_list.inc" -->
<%
// ROLE and ACTION parameters
var urole = getFQParamSafe("urole", "");
if (!urole)
{
var autfunctions = { fo: "WEB_MLDFOF", bo: ["WEB_MLDBOF", "WEB_MLDBO2", "WEB_MLDBO3"], mi: "WEB_MLDBAC", fe: "WEB_MLDUSE" }; // pas op voorkeursvolgorde!
urole = user.autoUrole("fo", autfunctions, false); // false->verplicht, je moet 1 van de rechten hebben.
}
var fronto = (urole == "fo");
var backo = (urole == "bo");
var minfo = (urole == "mi");
var frontend = (urole == "fe" || (!fronto && !backo && !minfo));
var cnt = getFQParamInt("cnt", 0) == 1; // Werd/wordt gebruikt vanuit cntmodule?
var justClose = getFQParamInt("justclose", 0) == 1;
var justAccept = getFQParamInt("justaccept", 0) == 1;
var perform = getFQParamInt("perform", 0) == 1;
var treat = (getFQParamInt("treat", 0) == 1);
var onlyConcepts = getFQParamInt("onlyConcepts", 0) == 1; // Laat alleen concepten zien
var inclConcepts = (frontend?1:0); // Laat je zelden zien, alleen in fe-overzicht en instemmers-overzicht
var mldbordColumn = getFQParamInt("mldbord-columns", 0);
var mldbordColumnDescr = getFQParam("bord_descr", "");
var searchmode = getFQParamSafe("searchmode", "list");
// FORM parameters: de waarde indien aanwezig, anders null
// Vaak is een lege selectie ook een -1, dus dan is-ie wel aanwezig, maar hoeft niet
// als filter te worden toegepast. Dan is null dus gelijk aan -1, qua betekenis,
// Vandaar dat een default van -1 ipv null ook mag
// In eerste instantie identificeren we elk veld gewoon 1-op-1.
var outputmode = getFQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
var full = getFQParamInt("full", 0) == 1; // alle meldingen tonen.
var showall = getFQParamInt("showall", 0) == 1;
var tiny = getFQParamInt("tiny", 0) == 1;
var linked = getFQParam("linked", (full ? "on" : "off")) == "on";
var respijt = getFQParam("respijt", (full ? "on" : "off")) == "on";
var indult = getFQParam("indult", (full ? "on" : "off")) == "on";
var public = getFQParamInt("public", 0);
// Voor velden die de user in kan typen valideren we zodanig dat we er tegen kunnen
var mldnum = getFQParamInt("mldnum", -1, true); // Meldingnr
var opdrnum = getFQParamInt("opdrnum", -1, true); // Opdrachtnr
var mld_key_arr = getFQParamKeyArray("mld_key_arr", []);
var mld_or_opdr = getFQParamInt("mld_or_opdr", 0) == 1;
var rsv_ruimte_key = getFQParamInt("rsv_ruimte_key", -1); // Komt niet uit mld_search.asp, maar ik maak er geen mld_list.asp voor
var cnt_key = getFQParamInt("cnt_key", -1); // Contract key
var ref_key = getFQParamInt("ref_key", -1); // Referentie
var ref_type = getFQParam("ref_type", ""); // Referentie type ('M', 'O', 'R', 'B', 'X', 'C' of 'F')
var params = { urole : urole,
outputmode: outputmode,
showall: showall,
tiny: tiny,
linked: linked,
respijt: respijt,
indult: indult,
onlyConcepts:onlyConcepts,
inclConcepts: inclConcepts,
mldbordColumn: mldbordColumn,
mldbordColumnDescr: mldbordColumnDescr,
withflex: !tiny,
perform: perform,
treat: treat,
full: full,
public: public
}
var srtdisc_key_arr = getFQParamKeyArray("srtdiscmulti", []); // Soort melding
if (srtdisc_key_arr.length)
lcl.set_dialect(srtdisc_key_arr[0], "MLD_SRTDISCIPLINE_KEY");
// else mixed srtdisc, terugvallen op de default
params.srtdisc_key_arr = srtdisc_key_arr;
if (mld_key_arr.length || mldnum > 0 || opdrnum > 0 || ref_key > 0)
{
params.mld_key = (mldnum != -1 ? mldnum : null);
params.mld_key_arr = mld_key_arr;
params.opdr_key = (opdrnum != -1 ? opdrnum : null);
if (!params.mld_key && !params.opdr_key)
{
params.ref_key = (ref_key != -1 ? ref_key : null);
params.ref_type = (ref_type != "" ? ref_type : null);
}
var groepering_key = getFQParamInt("groupby", -1); // Groepering
params.groepering_key = (groepering_key != -1 ? groepering_key : null);
if (justClose)
{
// Alleen maar afmelden, slecht mldnum is relevant, maar de status is impliciet bepaald:
status4 = true;
status7 = true;
}
}
else if (rsv_ruimte_key > 0)
{
cache.whenNoRecords("SELECT 1 FROM mld_melding WHERE res_rsv_ruimte_key = " + rsv_ruimte_key);
params.rsv_ruimte_key = (rsv_ruimte_key != -1 ? rsv_ruimte_key : null);
}
else if (cnt_key > 0)
{
cache.whenNoRecords("SELECT 1 FROM mld_melding WHERE cnt_contract_key = " + cnt_key);
params.cnt_key = (cnt_key != -1 ? cnt_key : null);
}
else if (full)
{
var sName_key = getFQParamInt("sName_key", -1); // Melder
params.caller_key = (sName_key != -1 ? sName_key : null);
}
else
{ // Alleen als mldnum en opdrnum niet opgegeven is, zijn de resterende parameters van belang!
var mldstatus_arr = getFQParamIntArray("mldstatusmulti", [-1]); // Meldingstatus
var opdrstatus_arr = getFQParamIntArray("opdrstatusmulti", [-1]); // Opdrachtstatus
var sName_key = getFQParamInt("sName_key", -1); // Melder
var sComp_key = getFQParamInt("sComp_key", -1); // Bedrijf
var sDept_key = getFQParamInt("sDept_key", -1); // Organisatie
if (sDept_key == -1) // Indien geen organisatie (afdeling) is meegegeven dan wellicht wel cluster (alleen hoofdafdelingen)
sDept_key = getFQParamInt("sDeptH_key", -1); // Bussiness Unit (Cluster/Hoofdafdeling)
var reg_key_arr = getFQParamKeyArray("regiokey", []); // Regio
var dist_key_arr = getFQParamKeyArray("districtkey", []); // District
var loc_key_arr = getFQParamKeyArray("locatiekey", []); // Locatie
var bld_key_arr = getFQParamKeyArray("gebouwkey", []); // Gebouw
var flr_key_arr = getFQParamKeyArray("verdiepingkey", []); // Verdieping
var room_key_arr = getFQParamKeyArray("ruimtekey", []); // ruimtes
var mld_ins_discipline_key_arr = getFQParamKeyArray("mld_ins_discipline", []); // MLD Behandelteam
var behandel_key_arr = getFQParamKeyArray("sBehandel_key", []); // Behandelaar
var behandel2_key_arr = getFQParamKeyArray("sBehandel2_key", []); // Behandelaar2
var disc_key_arr = getFQParamKeyArray("discmulti", []); // Productgroep
var meldinggrp_key = getFQParamInt("meldinggrp_key", -1); // Meldinggroep
var behandelgrp_key = getFQParamInt("behandelgrp_key", -1); // MLD Disc Params Behandelgroep
var stdm_key_arr = getFQParamKeyArray("sm", []); // Melding (Stdmelding)
var kpgrp_key_arr = getFQParamKeyArray("kpgrp_key", []); // Kostenplaatsgroep.
var kp_key_arr = getFQParamKeyArray("kp", []); // Kostenplaats
var referencetype = getFQParam("referencetype", null); // Referentie type ('B', 'X', 'C', 'F', 'M', 'O' of 'R')
var tag_key_arr = getFQParamKeyArray("tag_key", []); // Mijlpalen
var handler = getFQParamInt("handler", -1); // Uitvoerende
var uitvopdr_key = getFQParamInt("uitvopdr_key", -1); // Uitvoerende opdracht
var contact_key = getFQParamInt("sContact_key", -1); // Contactpersoon
var opdrtype_key = getFQParamInt("opdrtype", -1); // Opdrachttype
var chkSearchOR = getFQParamInt("chkSearchOR", 0) == 1; // boolean zoeken in tekst met OR
var searchtekst = getFQParam("searchtekst", ""); // Zoektekst
var omschr = getFQParam("omschr", ""); // Omschrijving
var disc_key = getFQParamInt("insdisc", -1); // Objectdiscipline
var insgroup_key = getFQParamInt("inssrtgroup", -1); // Objectgroep
var objsrt_key_arr = getFQParamKeyArray("inssrtdeelmulti", []); // Objectsoort
var objectoms = getFQParam("objectoms", null); // Object omschrijving
var groepering_key = getFQParamInt("groupby", -1); // Groepering
var meldbron_key = getFQParamInt("meldbronkey", -1); // Meldbron
var ingevoerd = getFQParam("ingevoerd", -1); // ingevoerd door: "fe", "fo" of -1 voor beide
var verantw_key = getFQParamInt("verantw", -1); // Gebouw verantwoordelijke
var bosort = getFQParamInt("bosort", (fronto ? 1 : S("mld_bo_sort_descending")));
var vervolgmld = getFQParamInt("vervolgmld", -1);
var completed = getFQParamInt("completed", -1);
var priority_arr = getFQParamKeyArray("priority", [-1]);
var chkAcceptEx = getFQParamInt("chkAcceptEx", 0) == 1; // Overschrijding acceptatietijd
var chkRunEx = getFQParamInt("chkRunEx", 0) == 1; // Overschrijding doorlooptijd
var chkSpoed = getFQParamInt("chkSpoed", 0) == 1; // Spoed
var chkAfgerond = getFQParamInt("chkAfgerond", 0) == 1; // Afgerond
var datefrom = getFQParamDate("date_from", null); // Periode van
var dateto = getFQParamDate("date_to", null); // Perdiode tot
var enddatefrom = getFQParamDate("enddate_from", null); // Periode van
var enddateto = getFQParamDate("enddate_to", null); // Perdiode tot
var deel_key = getFQParamInt("ins_key", -1); // Komt niet uit mld_search.asp, maar als dit de enige is maak ik er geen mld_list.asp voor
var deelsrtcont_key = getFQParamInt("deelsrtcont_key", -1);
var offertes = getFQParamInt("offertes", 0) == 1; // Beperk de meldingen tot die die nog ergens in het offerte traject hangen, waar dan ook. Er is bij die meldingen nog geen (uitvoerings-)opdracht.
params.mldstatus_arr = (mldstatus_arr.length > 0 && mldstatus_arr.join(",").indexOf("-1") == -1? mldstatus_arr : null);
params.opdrstatus_arr = (opdrstatus_arr.length > 0 && opdrstatus_arr.join(",").indexOf("-1") == -1? opdrstatus_arr : null);
params.caller_key = (sName_key != -1 ? sName_key : null);
params.comp_key = (sComp_key != -1 ? sComp_key : null);
params.org_key = (sDept_key != -1 ? sDept_key : null);
params.reg_key_arr = reg_key_arr;
params.dist_key_arr = dist_key_arr;
params.loc_key_arr = loc_key_arr;
params.bld_key_arr = bld_key_arr;
params.flr_key_arr = flr_key_arr;
params.room_key_arr = room_key_arr;
params.mld_ins_discipline_key_arr = mld_ins_discipline_key_arr;
params.behandel_key_arr = behandel_key_arr;
params.behandel2_key_arr = behandel2_key_arr;
params.disc_key_arr = disc_key_arr;
params.meldinggrp_key = (meldinggrp_key != -1 ? meldinggrp_key : null);
params.behandelgrp_key = (behandelgrp_key != -1 ? behandelgrp_key : null);
params.stdm_key_arr = stdm_key_arr;
params.kpgrp_key_arr = kpgrp_key_arr;
params.kp_key_arr = kp_key_arr;
params.tag_key_arr = tag_key_arr;
params.referencetype = (referencetype != "-1" ? referencetype : null);
params.handler_key = (handler != -1 ? handler : null);
params.uitvopdr_key = (uitvopdr_key != -1 ? uitvopdr_key : null);
params.contact_key = (contact_key != -1 ? contact_key : null);
params.opdrtype_key = (opdrtype_key != -1 ? opdrtype_key : null);
params.chkSearchOR = chkSearchOR;
params.searchtekst = (searchtekst != "" ? searchtekst : null);
params.omschr = (omschr != "" ? omschr : null);
params.disc_key = (disc_key != -1 ? disc_key : null);
params.insgroup_key = (insgroup_key != -1 ? insgroup_key : null);
params.objsrt_key_arr = objsrt_key_arr;
params.objectoms = (objectoms != ""? objectoms : null);
params.groepering_key = (groepering_key != -1 ? groepering_key : null);
params.chkAcceptEx = chkAcceptEx;
params.chkRunEx = chkRunEx;
params.chkSpoed = chkSpoed;
params.chkAfgerond = chkAfgerond;
// BO/FE-vinkje (=on of niks): standaard wil je alles zien, dus standaard aangevinkt en bij niet-existent ook.
params.actiecodeBO = getFQParam("actiecodeBO", (getFQParamInt("has_actiecodeBO", 0) == 1 ? "off" :"on")) == "on";
params.actiecodeFE = getFQParam("actiecodeFE", (getFQParamInt("has_actiecodeFE", 0) == 1 ? "off" :"on")) == "on";
// Attentie-vinkje: indien gezet dan wordt het resultaat BEPERKT tot alles met attentie
// Dus bij uitgevinkt of niet-existent dan wordt de parameter false en gaat er dus niet beperkt worden
params.actiecodeATT = (getFQParamInt("has_actiecodeATT", 0) == 1) && (getFQParam("actiecodeATT", "off") == "on");
params.datefrom = datefrom;
params.dateto = dateto;
params.enddatefrom = enddatefrom;
params.enddateto = enddateto;
params.srt_tracking = getFQParamArray("srt_tracking", null);
params.prs_tracking = getFQParamInt("prs_tracking", null);
params.actiondatefrom = getFQParamDate("actiondate_from", null);
params.actiondateto = getFQParamDate("actiondate_to", null);
params.deel_key = (deel_key != -1 ? deel_key : null);
params.deelsrtcont_key = (deelsrtcont_key != -1 ? deelsrtcont_key : null);
params.offertes = offertes;
params.meldbron_key = (meldbron_key != -1 ? meldbron_key : null);
params.ingevoerd = (ingevoerd != -1 ? ingevoerd : null);
params.verantw_key = (verantw_key != -1 ? verantw_key : null);
params.bosort = (bosort != -1 ? bosort : null);
params.vervolgmld = (vervolgmld != -1 ? vervolgmld : null);
params.completed = (completed != -1 ? completed : null);
params.priority_arr = priority_arr;
params.mldgroup_key = getFQParamInt("mldgroup_key", -1);
// Flags
params.flags = [];
for (flagkey=0; flagkey < S('mld_melding_flags'); flagkey++)
{
if (getFQParam("flag" + flagkey, "off") == "on")
params.flags.push(flagkey);
}
// FORM status checkboxes
var st_mldNew = getFQParamInt("mldNew", 0) == 1; // Te behandelen
var st_mldSelf = getFQParamInt("mldSelf", 0) == 1; // In behandeling
var st_mldBusy = getFQParamInt("mldBusy", 0) == 1; // Bij Frontoffice
var st_mldUitg = getFQParamInt("mldUitg", 0) == 1; // Uitgegeven
var st_mldRej = getFQParamInt("mldRej", 0) == 1; // Afgewezen
var st_mldAfm = getFQParamInt("mldAfm", 0) == 1; // Afgemeld
var st_mldVer = getFQParamInt("mldVer", 0) == 1; // Archief
var st_mldDone = getFQParamInt("mldDone", 0) == 1; // Gereed
// ** de velden van de form zijn nu allemaal bekend **
// ** nu volgt de verwerking
// Fast check to see if we have anything to do with FO-BO handling (doorzetten)
sql= "SELECT 1 FROM "
+ "(SELECT 1 FROM mld_disc_params dp, mld_discipline d "
+ "WHERE d.ins_discipline_key = dp.mld_ins_discipline_key AND mld_disc_params_directklaar>0 and d.ins_discipline_verwijder IS NULL "
+ "UNION ALL "
+ "SELECT 1 FROM mld_stdmelding "
+ "WHERE mld_stdmelding_directklaar>0 AND mld_stdmelding_verwijder IS NULL) "
+ "WHERE ROWNUM = 1";
oRs = Oracle.Execute(sql);
var anyfobodiscs = !oRs.eof;
oRs.close();
// Statusfilters:
// FE: nog niks mee gedaan (2), mee bezig (0, 3, 4, 7), afgewezen (1), klaar (5, 6)
// FO: [zelf mee bezig (0)], bij BO (2, 3, 4, 7), afgewezen (1), afgemeld (5), archief (6)
// BO: te behandelen (2, 3) zelf mee bezig (4,7), bij FO (0), afgewezen (1), afgemeld (5), archief (6)
// Merk op: de ids kunnen afhankelijk van de urole andere betekenis hebben, dus.
// Interpreteer: status0 wordt true betekent meldingen van status 0 tonen.
// status99 is "niet opgelost" (we doen hier maar aan mee..)
// 0=Pending (@frontoffice), 1=Afgewezen, 2=Ingevoerd, 4=Geaccepteerd (@backoffice), 5=Afgemeld, 6=Verwerkt, 7=Uitgegeven.
var status0 = (frontend && st_mldBusy) || (fronto && st_mldSelf) || (backo && st_mldBusy);
var status1 = st_mldRej;
var status2 = (frontend && st_mldNew) || (fronto && st_mldBusy && anyfobodiscs) || (fronto && st_mldSelf && !anyfobodiscs) || (backo && st_mldNew);
var status4 = (frontend && st_mldBusy) || (fronto && st_mldBusy) || (backo && st_mldSelf);
var status5 = (frontend && st_mldDone) || (fronto && st_mldAfm) || (backo && st_mldAfm);
var status6 = (frontend && st_mldDone) || (fronto && st_mldVer) || (backo && st_mldVer);
var status7 = (frontend && st_mldBusy) || (fronto && st_mldUitg) || (backo && st_mldUitg);
var status99 = (frontend && st_mldBusy) || (fronto && st_mldBusy) || (backo && st_mldNew); // denk ik
}
params.mldstpen = status0;
params.mldstrej = status1;
params.mldstnew = status2;
params.mldstacc = status4;
params.mldstafm = status5;
params.mldstver = status6;
params.mldstuit = status7;
params.mldnieto = status99;
// TODO: deze autorisaties zijn voor MLD, maar voor Opdr irrelevant. Daar dus op ORD* controleren
// En ook (belangrijk!) de juiste ROLE hanteren (fo=behandelaar, bo=opperhoofd)
var autfunction = "";
// ** ik spreek af dat ik alleen relevante parameters doorgeef
if (groepering_key == 2 || groepering_key == 16) // 'opdrachten' en 'opdrachten + kosten'
mld_or_opdr = 1;
if (searchmode == "bord" || mld_or_opdr != 1)
{
if (justAccept)
autfunction = "WEB_MLDBO3";
else if (justClose)
autfunction = "WEB_MLDBO2";
else if (backo)
autfunction = "WEB_MLDBOF"
else if (fronto)
autfunction = "WEB_MLDFOF";
else if (cnt)
autfunction = "WEB_CNTUSE"; // nagaan of gebruikt
else if (minfo)
autfunction = "WEB_MLDBAC"
else
autfunction = "WEB_MLDUSE";
if (searchmode == "bord") {
params.kaarten = true;
mld_bord(autfunction, params);
} else if (!params.groepering_key || params.groepering_key == 1) {
mld_list(autfunction, params);
} else {
mld_groep_list(autfunction, params);
}
}
else
{
// Men zoekt opdrachten. Relevante autorisaties zijn daarbij:
//- ORDBOF (alles van opdrachten/binnen scope)
//- MLDORD (eigen opdrachten afmelden)
//- EXTORD (opdrachten van externe bedrijven, waar ik contactpersoon ben, afmelden/binnen scope)
//- ORDBO2 (opdrachten afmelden/binnen scope)
//- ORDFIN (opdrachtgegevens aanpassen/binnen scope)
//- ORDSUP (hoge flexkenmerken aanpassen/binnen scope)
//
// Alleen: hoe weet ik welke? reguliere handling van opdrachten gaat via ord_search, niet hierlangs
// Er zijn geen intern/extern vinkjes aanwezig. Dan zowel interne als ezterne tonen.
params.internuit = true;
params.externuit = true;
params.flags = {}; // DJIN#37690 temporarily until opdr flag-filters are implemented in mld screens
// Sinds VLKC#71073
params.startdatefrom = params.datefrom;
params.startdateto = params.dateto;
opdr_list ( params );
}
%>
<% ASPPAGE_END(); %>