MNNL#52151 Bulkactie groeperen toegevoegd

svn path=/Website/trunk/; revision=38140
This commit is contained in:
2018-06-11 08:49:01 +00:00
parent af5e54d580
commit 03661fb62d
11 changed files with 424 additions and 9 deletions

View File

@@ -129,8 +129,8 @@ var multi = ingesloten.length > 1;
<body class="modal" id="mod_mldcontinue">
<form id="rejectform" name="rejectform" action="mld_continue_save.asp?mld_key=<%=ingesloten.join(",")%>&urole=<%=urole%>" method="post">
<%
BLOCK_START("mldContinue", L("lcl_mld_continueblok") + (multi? (mld_info.prefix||"") + ingesloten[0]
: "(" + ingesloten.length + " " + L("lcl_complains") + ")"));
BLOCK_START("mldContinue", L("lcl_mld_continueblok") + (multi ? "(" + ingesloten.length + " " + L("lcl_complains") + ")"
: (mld_info.prefix||"") + ingesloten[0]));
// Vakgroep
FCLTdisciplineselector("disc",
"sgDisc",

View File

@@ -1083,7 +1083,11 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
// hier komen vaste aanwijzingen
BLOCK_END();
BLOCK_START("mldRef", L("lcl_reference"), { xxhidden: !stdm_info.kanverwijzen}); %>
var hideRefBlock = !(stdm_info.ins_srtdiscipline_mldgroup & 2) && // Kan niet gegroepeerd worden
!stdm_info.kanverwijzen && // Kan niet verwijzen
(mld_melding.meldbron_key != 10 || mld_melding.kto_type != 'T'); // Geen Taak/Inspectie referentielink
BLOCK_START("mldRef", L("lcl_reference"), { hidden: hideRefBlock}); %>
<input type="hidden" name="kto_type" value="<%=mld_melding.kto_type%>">
<input type="hidden" name="kto_key" value="<%=mld_melding.kto_key%>">
<input type="hidden" name="filtercode" id="filtercode" value=<%=((stdm_info.kanverwijzen==128)?"M" :"O")%>>

198
APPL/MLD/mld_group.asp Normal file
View File

@@ -0,0 +1,198 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
Status: 100%
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/stdmeldingselector.inc" -->
<!-- #include file="../Shared/referentieselector.inc" -->
<!-- #include file="mld.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"] });
var urole = getQParamSafe("urole");
var autfunction = "";
switch(urole)
{
case "fo": autfunction = "WEB_MLDFOF";
break;
case "bo": autfunction = "WEB_MLDBOF";
break;
case "mi": autfunction = "WEB_MLDBAC";
break;
case "fe":
default : autfunction = "WEB_MLDUSE";
break;
}
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation(autfunction);
var mld_key_arr = getQParamIntArray("mld_key");
var ingesloten = [];
var this_mld;
var mld_info;
var this_stdm;
// Bepaal de meldingen in de selectie die
// ook echt gegroepeerd kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
// TODO: canGroup ? -> this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
mld_info = mld.mld_melding_info(mld_key_arr[i]);
this_stdm = mld.mld_stdmeldinginfo(mld_info.stdm);
if (this_stdm.ins_srtdiscipline_mldgroup & 2)
ingesloten.push(mld_key_arr[i]);
}
user.anything_todo_or_abort(ingesloten.length); // We klagen niet over enkele wel en enkele niet
var multi = ingesloten.length > 1;
var titel = L("lcl_mld_groeperen") + (multi ? "(" + ingesloten.length + " " + L("lcl_complains") + ")"
: (mld_info.prefix||"") + ingesloten[0]);
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
$(function() {
parent.$('span.ui-dialog-title').html("<%=safe.jsstring(titel)%>");
})
function onChangeRef(ref_key)
{
$("#mldGroupNew").toggle(ref_key == -1);
FcltMgr.resized();
}
function onChangeVakgroep(vakgroep_key)
{
// Melding leegmaken
sgStdm.setValue(-1, "", true, false, null, true);
sgStdm.CheckJustOne();
}
function process_stdm_info(data, textStatus)
{
// Zet de discipline indien niet ingevuld
if ($("#disc").val() <= 0)
sgDisc.setValue(data.ins_discipline_key, (data.ins_srtdiscipline_prefix != null ? data.ins_srtdiscipline_prefix + "-" : "") + data.discipline_omschrijving, false /*doonChange*/, true /*checkExist*/);
$("#subject").toggle(data.subject != 0)
.closest("td").prev().toggle(data.subject != 0);
$("#descr").toggle(data.freetext != 0)
.closest("td").prev().toggle(data.freetext != 0);
if (data.subject == 2)
{
if (!$("#subject").hasClass("required"))
$("#subject").addClass("required");
}
else
$("#subject").removeClass("required");
if (data.freetext == 2)
{
if (!$("#descr").hasClass("required"))
$("#descr").addClass("required");
}
else
$("#descr").removeClass("required");
}
function onChangeStdMelding(stdmelding_key)
{
if (stdmelding_key > 0)
{
$.getJSON("./get_mld_info_ajax.asp",
{ req_info: "mld_stdmelding",
mld_stdmelding_key: stdmelding_key,
caller_key: <%=user_key%> },
process_stdm_info);
}
}
function mld_submit()
{
document.activeElement.blur(); // trigger laatste onChanges
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
if (!validateForm("groupform"))
return false;
document.groupform.submit();
return true; // disable button
}
function mld_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
</script>
</head>
<body class="modal" id="mod_mldgroup">
<form id="groupform" name="groupform" action="mld_group_save.asp?mld_keys=<%=ingesloten.join(",")%>&urole=<%=urole%>" method="post">
<%
BLOCK_START("mldGroup", L("lcl_mld_kies_bestaand") + L("lcl_mld_groepering"));
FCLTreferentieselector("mldgroup_key",
"sgmldgroup",
{ label: L("lcl_mldgroup_key"),
referenceKey: -1,
referenceType: "MG",
onChange: "onChangeRef",
excludemldkey: ingesloten,
filtercode: "MG"
});
BLOCK_END();
BLOCK_START("mldGroupNew", L("lcl_mld_maak_nieuw"));
// Vakgroep
FCLTdisciplineselector("disc",
"sgDisc",
{ label: L("lcl_vakgroup"),
disc_key: null,
module: "MLD",
perslidKey: user_key,
autfunctionKey: -1, // alles is toegestaan! authparams.autfunctionkey,
filtercode: "MG",
onChange: "onChangeVakgroep",
required: true
});
// Standaardmelding
FCLTstdmeldingselector("stdm",
"sgStdm",
{ label: L("lcl_complain"),
perslidKey: multi? user_key : mld_info.melder_key,
autfunctionKey: -1, // alles is toegestaan! authparams.autfunctionkey,
filtercode: "MG",
initOnChange: true,
urlAdd: [{urlParam: "disc_key", field: "disc"}],
stdmelding_key: null,
onChange: "onChangeStdMelding",
required: true
} );
RWFIELDTR("subject", "fldsubject", L("lcl_mld_subject"), "", {maxlength: 80});
RWTEXTAREATR("descr", "fldremark", L("lcl_mld_inf_Omschrijving"), "", {html: "rows='8'"});
BLOCK_END();
var buttons = [ {title: L("lcl_groeperen"), icon: "opslaan.png", action: "mld_submit()", singlepress: true, id: "btn_grp_submit" },
{title: L("lcl_cancel"), icon: "undo.png", action: "mld_cancel()" } ];
CreateButtons(buttons);
IFACE.FORM_END();
%>
</form>
</body>
</html>

184
APPL/MLD/mld_group_save.asp Normal file
View File

@@ -0,0 +1,184 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: MLD/mld_group_save.asp
Description: Groeperen van meldingen.
"Incidenten" met this_stdm.ins_srtdiscipline_mldgroup & 1 mogen gegroepeerd
worden onder een "Problem" of "Change" melding met this_stdm.ins_srtdiscipline_mldgroup & 2.
Deze groepering is een wat lossere vorm van vervolg en koppelen, een soort van groeps-referentie.
Parameters: urole Userrole voor Autorisatie
mld_keys Array van mld_key die gegroepeerd gaan worden
mldgroup_key De mld_keys worden onder deze melding gegroepeerd
Indien gegroepeerd onder een nieuwe melding, dan ook:
stdm Standaardmelding_key
disc Discipline_key
subject Onderwerp
descr Omschrijving
Context: Save code van mld_group.asp
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="mld.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"],
js: [] })
var urole = getQParamSafe("urole");
// De te-groepren mld_keys
var mld_key_arr = getQParamIntArray("mld_keys");
// Te-groeperen onder deze melding
var mldgroup_key = getFParamInt("mldgroup_key", -1);
var isNew = mldgroup_key == -1;
if (isNew)
{
var stdm_key = getFParamInt("stdm", -1);
var disc_key = getFParamInt("disc", -1);
var subject = getFParam("subject", "");
var descr = getFParam("descr", "");
}
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var autfunction = "";
switch(urole)
{
case "fo": autfunction = "WEB_MLDFOF";
break;
case "bo": autfunction = "WEB_MLDBOF";
break;
case "mi": autfunction = "WEB_MLDBAC";
break;
case "fe":
default : autfunction = "WEB_MLDUSE";
break;
}
var authparams = user.checkAutorisation(autfunction);
var ingesloten = [];
var this_mld;
var this_stdm;
var mld_info;
if (!isNew)
{
mld_info = mld.mld_melding_info(mldgroup_key);
this_stdm = mld.mld_stdmeldinginfo(mld_info.stdm);
}
else
this_stdm = mld.mld_stdmeldinginfo(stdm_key);
// Er moet natuurlijk wel op de "Problem" melding te groeperen zijn
user.anything_todo_or_abort(this_stdm.ins_srtdiscipline_mldgroup & 1);
// Bepaal de meldingen in de selectie die
// ook echt gegroepeerd kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
// TODO: canGroup ? -> this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
mld_info = mld.mld_melding_info(mld_key_arr[i]);
if (!mld_info.mldgroup_key) // alleen indien leeg
{
this_stdm = mld.mld_stdmeldinginfo(mld_info.stdm);
if (this_stdm.ins_srtdiscipline_mldgroup & 2)
ingesloten.push(mld_key_arr[i]);
}
}
user.anything_todo_or_abort(ingesloten.length); // We klagen niet over enkele wel en enkele niet
var multi = ingesloten.length > 1;
if (isNew)
{ // Maak eerst de nieuwe melding aan
sql = "SELECT mld_s_mld_melding_key.nextval FROM DUAL";
oRs = Oracle.Execute(sql);
mldgroup_key = oRs(0).Value;
oRs.close();
sql = "INSERT INTO mld_melding ("
+ " mld_melding_key"
+ ", mld_melding_module"
+ ", mld_meldbron_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", mld_melding_datum"
+ ", mld_melding_onderwerp"
+ ", mld_melding_omschrijving"
+ ", mld_stdmelding_key"
+ ", mld_kosten_klant"
+ ", prs_perslid_key"
+ ", mld_adres_key"
+ ", mld_melding_spoed"
+ ", prs_kostenplaats_key"
+ ")"
+ " VALUES ("
+ mldgroup_key
+ ", 'MLD'"
+ ", " + S("mld_meldbron_key")
+ ", " + (user.alg_locatie_key() > 0 ? user.alg_locatie_key() : "NULL")
+ ", NULL"
+ ", SYSDATE"
+ ", " + safe.quoted_sql(subject)
+ ", " + safe.quoted_sql(descr)
+ ", " + stdm_key
+ ", " + (this_stdm.ins_srtdiscipline_kostenklant == 1 ? 1 : "NULL")
+ ", " + user_key
+ ", " + user.mld_adres_key() // "NULL" indien niet ingevuld.
+ ", 3" // Normaal.
+ ", NULL"
+ ")";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
mld.setmeldingstatus(mldgroup_key, 2); // Zorgt ook voor tracking & daarmee notificatie
}
%>
<html>
<head>
<% FCLTHeader.Generate();
function mld_foreign (pval)
{
if (!pval)
return "";
return mld.referentielabel("M", pval);
}
for (var i = 0; i < ingesloten.length; i++)
{
var fields = [ { dbs: "mld_melding_mldgroup_key", typ: "key", val: mldgroup_key, track: L("lcl_mldgroup_key"), foreign: mld_foreign } ];
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i], fields);
oRs = Oracle.Execute(mldUpd.sql);
if (mldUpd.trackarray.length)
{
mld.trackmeldingupdate(ingesloten[i], L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
}
}
%>
</head>
<body id="info">
<script>
FcltToast("<%=ingesloten.length%> " + L("lcl_complains") + " " + L("lcl_mld_gegroepeerd"));
if (<%=(isNew ? 1 : 0)%>)
FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=<%=urole%>&mld_key=<%=mldgroup_key%>");
$(window).on("load", function(){
FcltMgr.closeDetail( window );
});
</script>
</body>
</html>

View File

@@ -304,6 +304,7 @@ function mld_list (pautfunction, params)
+ ", sd.ins_srtdiscipline_alg"
+ ", sd.ins_srtdiscipline_ins"
+ ", sd.ins_srtdiscipline_bes"
+ ", sd.ins_srtdiscipline_mldgroup"
+ ", md.ins_discipline_key"
+ ", md.ins_discipline_kpnverplicht"
+ ", std.ins_srtinst_verplichtstatus"
@@ -613,7 +614,8 @@ function mld_list (pautfunction, params)
eForward = eForward && !eEmptyRequiredFields; // Als er verplichte velden niet zijn ingevuld dan niet doorsturen maar eerste de lege velden in laten vullen.
}
var eTerugzet = this_mld.canTerugzet; // Terugzetten naar frontoffice
var eDoorzet = this_mld.canDoorzet; // Doorzetten naar backoffice
var eDoorzet = this_mld.canDoorzet; // Doorzetten naar backoffice
var eGroup = oRs("ins_srtdiscipline_mldgroup").Value & 2; // this_mld.canGroup; // TODO: Groeperen Auth
var eVerwerk = this_mld.canVerwerk;
@@ -624,6 +626,7 @@ function mld_list (pautfunction, params)
eContinue: eContinue,
eForward: eForward,
eEmptyRequiredFields: eEmptyRequiredFields,
eGroup: eGroup,
eTerugzet: eTerugzet,
eDoorzet: eDoorzet,
eVerwerk: eVerwerk
@@ -1053,6 +1056,7 @@ function mld_list (pautfunction, params)
// E<>n van beiden, eEmptyRequiredFields of eForward, is true.
rst.addAction({ action: "mld_forward", caption: L("lcl_forward"), enabler: "eForward" } );
rst.addAction({ action: "mld_forward_empty", caption: L("lcl_forward"), enabler: "eEmptyRequiredFields" } );
rst.addAction({ action: "mld_group", caption: L("lcl_groeperen"), enabler:"eGroup", multi: !tiny, multiOnce: true } );
rst.addAction({ action: "mld_terugzet", caption: L("lcl_terugzet"), enabler: "eTerugzet", multi: !tiny, multiOnce: true } );
rst.addAction({ action: "mld_doorzet", caption: L("lcl_doorzet"), enabler: "eDoorzet", multi: !tiny, multiOnce: true } );

View File

@@ -172,6 +172,19 @@ function mld_doorzet(rowArray, isMulti)
});
}
function mld_group(rowArray, isMulti)
{
var mldKeyString = getKeyString(rowArray);
var mldData = eval("(" + rowArray[0].getAttribute("ROWDATA") + ")");
var mldPrefix = mldData.mldPrefix;
var mldUrl = "../mld/mld_group.asp?urole=" + urole + "&mld_key=" + mldKeyString
FcltMgr.openModalDetail( mldUrl
, L("lcl_mld_groeperen") + (rowArray.length == 1 ? mldPrefix + rowArray[0].getAttribute("ROWKEY")
: "(" + rowArray.length + " " + L("lcl_complains") + ")")
);
}
function mld_terugzet(rowArray, isMulti)
{
var mldKeyString = getKeyString(rowArray);

View File

@@ -30,7 +30,7 @@ var bAll = getQParamInt("SuggestAll", 0) == 1;
var perslidKey = getQParamInt("prs_key", user_key); // Voor wie is de melding
var stdm_key = getQParamInt("stdm_key", -1); // Voor wie is de melding
var filtercode = getQParam("filtercode", "");
var excludemldkey = getQParamInt("excludemldkey", -1);
var excl_mld_key_arr = getQParamIntArray("excludemldkey", []);
if (filtercode == "MG")
@@ -86,8 +86,8 @@ if (ikBenVerantwoordelijke || mld_read)
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ filtClause.M
+ (excludemldkey > 0
? " AND mld_melding_key != " + excludemldkey
+ (excl_mld_key_arr && excl_mld_key_arr.length
? " AND mld_melding_key NOT IN (" + excl_mld_key_arr.join(",") + ")"
: "")
+ " AND TRUNC(m.mld_melding_einddatum, 'DD') >= SYSDATE - " + S("mld_reference_days");
}
@@ -322,8 +322,8 @@ if (ikBenVerantwoordelijke || mld_read)
+ " AND m.mld_stdmelding_key = sm.mld_stdmelding_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ filtClause.M
+ (excludemldkey > 0
? " AND mld_melding_key != " + excludemldkey
+ (excl_mld_key_arr && excl_mld_key_arr.length
? " AND mld_melding_key NOT IN (" + excl_mld_key_arr.join(",") + ")"
: "")
+ " AND m.mld_melding_datum >= SYSDATE - " + S("mld_reference_days");
}

View File

@@ -78,6 +78,9 @@ function getFiltClauseDiscipline(pfiltcode, params)
lfiltClause.where += " AND dp.mld_ins_discipline_key = td.ins_discipline_key"
+ " AND dp.mld_disc_params_keten = 1";
break;
case "MG": // Alleen de vakgroepen waarop gegroepeerd kan worden mag je zien
lfiltClause.where += " AND BITAND(sd.ins_srtdiscipline_mldgroup, 1) = 1"
break;
default: __Log("KIES JUISTE FILTERCODE!!!");
lfiltClause.where += " AND 1 = 2";
break;

View File

@@ -27,6 +27,9 @@ function getFiltClauseStdmelding(pfiltcode, params, init)
lfiltClause.where += " AND dp.mld_ins_discipline_key = di.ins_discipline_key"
+ " AND dp.mld_disc_params_keten = 1";
break;
case "MG": // Alleen de vakgroepen waarop gegroepeerd kan worden mag je zien
lfiltClause.where += " AND BITAND(sd.ins_srtdiscipline_mldgroup, 1) = 1";
break;
default: __Log("KIES JUISTE FILTERCODE!!!");
lfiltClause.where = " AND 1 = 2";
break;

View File

@@ -60,8 +60,10 @@ function FCLTdisciplineselector(fieldName, objectName, params)
sql = "SELECT COUNT(distinct td.ins_discipline_key) aantal"
+ " FROM ins_tab_discipline td"
+ " , ins_srtdiscipline sd"
+ filtClause.from
+ " WHERE ins_discipline_verwijder IS NULL"
+ " AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)" // Alleen bij MLD is de ins_srtdiscipline_key (altijd) ingevuld
+ filtClause.where;
var oRs = Oracle.Execute(sql);
// Als er maar <20><>n vakgroep is, dan deze selecteren.

View File

@@ -53,8 +53,10 @@ function FCLTstdmeldingselector(fieldName, objectName, params)
sql = "SELECT COUNT(*) aantal"
+ " FROM mld_stdmelding sm"
+ ", mld_discipline di"
+ ", ins_srtdiscipline sd"
+ filtClause.from
+ " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
+ " AND di.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)"
+ filtClause.where;
var oRs = Oracle.Execute(sql);
// Als er maar <20><>n vakgroep is, dan deze selecteren.
@@ -67,8 +69,10 @@ function FCLTstdmeldingselector(fieldName, objectName, params)
+ extraInf
+ " FROM mld_stdmelding sm"
+ ", mld_discipline di"
+ ", ins_srtdiscipline sd"
+ filtClause.from
+ " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
+ " AND di.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)"
+ filtClause.where;
var oRs = Oracle.Execute(sql);
lstdmeldingName = oRs("mld_stdmelding_omschrijving").value;