MNNL#51514 Melding einddatum zo veel mogelijk onderdrukken

svn path=/Website/trunk/; revision=36966
This commit is contained in:
Jos Groot Lipman
2018-02-13 15:10:09 +00:00
parent 94c00788da
commit 9b3901ca59
8 changed files with 80 additions and 59 deletions

View File

@@ -141,8 +141,12 @@ function model_mld_stdmelding()
},
"plannable": {
"dbs": "mld_stdmelding_planbaar",
"typ": "check0",
"label": L("lcl_mld_planbaar")
"typ": "number",
"label": L("lcl_mld_planbaar"),
"LOV": L("lcl_mld_planbaarLOV"),
"required": true,
"defaultvalue": 0,
"multiedit": true
},
"subjectlist": {
"dbs": "mld_stdmelding_subject",

View File

@@ -1611,7 +1611,8 @@ mld = {setmeldingstatus:
if (chkRunEx)
{
sqln += " AND " + mld.getwhere_to_late_run_sql("m", "std", "M") + " = 1";
sqln += " AND std.mld_stdmelding_planbaar != 2"
+ " AND " + mld.getwhere_to_late_run_sql("m", "std", "M") + " = 1";
}
if (chkSpoed)
@@ -1989,7 +1990,7 @@ mld = {setmeldingstatus:
subject: oRs("mld_stdmelding_subject").Value,
module: oRs("module").Value,
srtinst_verplicht: (oRs("ins_srtinst_verplicht").Value == 1),
planbaar: (oRs("mld_stdmelding_planbaar").Value == 1),
planbaar: oRs("mld_stdmelding_planbaar").Value,
alg_onrgoed_niveau: oRs("alg_onrgoed_niveau").Value,
kpnverplicht: (oRs("ins_discipline_kpnverplicht").Value == 1),
show_eigen_kp: (oRs("mld_disc_params_eigen_kp").Value == 1),
@@ -2710,7 +2711,7 @@ mld = {setmeldingstatus:
startdatum: oRs("mld_disc_params_startdatum").Value == 1,
accepttijd: oRs("accepttijd_t").Value,
eenheid_accepttijd: oRs("accepttijd_e").Value || 'D',
planbaar: oRs("mld_stdmelding_planbaar").Value == 1,
planbaar: oRs("mld_stdmelding_planbaar").Value,
kpnverplicht: oRs("ins_discipline_kpnverplicht").Value,
show_eigen_kp: (oRs("mld_disc_params_eigen_kp").Value == 1),
freetext: oRs("mld_stdmelding_freetext").Value,
@@ -3195,7 +3196,7 @@ mld = {setmeldingstatus:
var doublecheck = moRs("mld_stdmelding_doublecheck").Value;
var fenotes = moRs("mld_disc_params_fenotes").Value;
var keten = moRs("mld_disc_params_keten").Value == 1;
var planbaar = moRs("mld_stdmelding_planbaar").Value == 1;
var planbaar = moRs("mld_stdmelding_planbaar").Value;
var hasopenopdrachten = moRs("openopdrachten").Value > 0;
var hasclosedopdrachten = moRs("closedopdrachten").Value > 0;
var hasopdrachten = hasopenopdrachten || hasclosedopdrachten;
@@ -3386,7 +3387,7 @@ mld = {setmeldingstatus:
mresult.canPlaatsChange = true;
mresult.canAflChange = true;
// Alleen FO kan melding aanpassen. FE toevoegen voor canPrioChange heeft geen zin.
mresult.canPrioChange = (!planbaar && mresult.canWrite("WEB_MLDFOF"));
mresult.canPrioChange = (planbaar == 0 && mresult.canWrite("WEB_MLDFOF"));
mresult.canOmsChange = mresult.canWrite("WEB_MLDFOF");
mresult.canAfhandChange = mresult.canWrite("WEB_MLDFOF");
mresult.canWriteDatums = mresult.canWrite("WEB_MLDFOF");
@@ -3408,12 +3409,12 @@ mld = {setmeldingstatus:
mresult.canPlaatsChange = true;
mresult.canAflChange = true;
mresult.canPersChange = mresult.canWrite("WEB_MLDFOF");
mresult.canPrioChange = (!planbaar && mresult.canWrite("WEB_MLDFOF") || (mresult.canFEwrite && frontendprio));
mresult.canPrioChange = (planbaar == 0 && mresult.canWrite("WEB_MLDFOF") || (mresult.canFEwrite && frontendprio));
mresult.canTerugzet = (is_fo_melding && mresult.canWrite("WEB_MLDBOF") && !is_planned_action);
// Alleen FO en FE kan melding aanpassen. BOF/BO3 toevoegen heeft voor volgende twee geen zin
mresult.canOmsChange = mresult.canWrite("WEB_MLDFOF") || mresult.canFEwrite;
mresult.canAfhandChange = mresult.canWrite("WEB_MLDFOF");
mresult.canWriteDatums = (mresult.canWrite("WEB_MLDFOF") || (mresult.canFEwrite && planbaar));
mresult.canWriteDatums = (mresult.canWrite("WEB_MLDFOF") || (mresult.canFEwrite && planbaar == 1));
mresult.canAddOpdr = mresult.canWrite("WEB_ORDBOF");
mresult.canSLAChange = (S("mld_sla_indult_for_mldafr_only") == 0 && mresult.canWrite("WEB_MLDBOF")) ||
(S("mld_sla_indult_for_mldafr_only") == 1 && mresult.canWrite("WEB_MLDAFR"));
@@ -3437,7 +3438,7 @@ mld = {setmeldingstatus:
mresult.canAflChange = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3"));
mresult.canPersChange = mresult.canWrite("WEB_MLDFOF");
// Alleen BO/FO kan melding aanpassen. FE toevoegen voor canPrioChange heeft geen zin.
mresult.canPrioChange = (!planbaar && (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3")));
mresult.canPrioChange = (planbaar == 0 && (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3")));
mresult.canTerugzet = (is_fo_melding && mresult.canWrite("WEB_MLDBOF") && !is_planned_action);
mresult.canOmsChange = (mresult.canWrite("WEB_MLDFOF") || mresult.canWrite("WEB_MLDBOF")|| mresult.canWrite("WEB_MLDBO3"));
mresult.canAfhandChange = mresult.canWrite("WEB_MLDBOF");
@@ -3453,7 +3454,7 @@ mld = {setmeldingstatus:
mresult.canPlaatsChange = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3"));
mresult.canAflChange = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3"));
// Alleen BO/FO kan melding aanpassen. FE toevoegen voor canPrioChange heeft geen zin.
mresult.canPrioChange = (!planbaar && mresult.canStdmChange);
mresult.canPrioChange = (planbaar == 0 && mresult.canStdmChange);
mresult.canTerugzet = (!hasclosedopdrachten && !is_wf_root && is_fo_melding && mresult.canWrite("WEB_MLDBOF") && !is_planned_action);
/* GEEN BREAK !! */
case 7: // Uitgegeven
@@ -5181,6 +5182,9 @@ mld = {setmeldingstatus:
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key" + (urole == 'bgt' ? '(+)' : '')
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key";
if (chkRunEx)
sql += " AND std.mld_stdmelding_planbaar != 2"
if (add_prs_restrict)
sql += " AND p.prs_afdeling_key = b.prs_afdeling_key";

View File

@@ -238,7 +238,7 @@ else
var stdm_info = { mld_stdmelding_key: -1,
ins_srtinst: [],
kanverwijzen: 0,
planbaar: true // Je weet nog niet of de nieuwe melding planbaar is. Wijzigen tot het niet meer mag.
planbaar: 1 // Je weet nog niet of de nieuwe melding planbaar is. Wijzigen tot het niet meer mag.
};
// is dit een KTO deeplink?
@@ -310,7 +310,7 @@ else
// hebben we hem al
}
else
stdm_info.planbaar = oRs("planbaar").Value > 0;
stdm_info.planbaar = oRs("planbaar").Value;
sql = "SELECT COALESCE(ins_srtdiscipline_kostenklant, 0) kostenklant"
+ ", ins_srtdiscipline_prefix prefix"
@@ -913,14 +913,14 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
// Einddatum verborgen als FE een melding invoert en toch readonly is.
// Readonly gebeurd dynamisch in functie processEinddatum(...) in mld_edit_melding.js.
// In FE mode staat de melding (stdmelding) en daarmee ook de planbaarheid vast (readonly).
var einddatumHidden = !stdm_info.planbaar && frontend && mld_key < 0;
var einddatumHidden = stdm_info.planbaar == 2 || (stdm_info.planbaar == 0 && frontend && mld_key < 0);
// Wordt mogelijk dynamisch vervangen
FCLTcalendar("enddate",
{ label : L("lcl_mld_enddate"),
datum : mld_melding.einddatum,
minDate : (frontend ? mld_melding.einddatum : null),
timeField: !frontend || (frontend && !stdm_info.planbaar), // Bij FE dus afh van Planbaar eind(datum+tijd) wel/niet in te vullen, anderen (FO en zo) kunnen eind(datum+tijd) altijd invullen.
timeField: !frontend || (frontend && stdm_info.planbaar == 0), // Bij FE dus afh van Planbaar eind(datum+tijd) wel/niet in te vullen, anderen (FO en zo) kunnen eind(datum+tijd) altijd invullen.
timeStep : 15, // TODO: Is nog wel erg hard. Zie ook mld_edit_melding.js
startTime: S("fac_t_startofworkday"),
endTime : S("fac_t_endofworkday"),

View File

@@ -676,7 +676,7 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
// FO en BO mogen als ze mogen wijzigen ook altijd datums aanpassen
// FE mag datums aanpassen bij 1) nieuwe melding, 2) status 1 en 2.
// Als melding planbaar is mag prioriteit nooit aangepast worden.
var canPrioChange = (!stdm_info.planbaar && (canFOwrite || (canFEwrite && stdm_info.frontendprio && (mld_key < 0 || mld_status == 1 || mld_status == 2)))? 1 : 0);
var canPrioChange = (stdm_info.planbaar == 0 && (canFOwrite || (canFEwrite && stdm_info.frontendprio && (mld_key < 0 || mld_status == 1 || mld_status == 2)))? 1 : 0);
$("#prio,#prio_ro").closest("td").load("loadPrioriteit.asp",
{ stdm_key: stdm_info.mld_stdmelding_key,
mprio: $("#prio :selected").val() || mprio,
@@ -766,7 +766,7 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
}
}
$("label[for=show_enddate]").html((stdm_info.planbaar? L("lcl_mld_desirable_enddate"): L("lcl_mld_enddate")) + ":");
$("label[for=show_enddate]").html((stdm_info.planbaar == 1? L("lcl_mld_desirable_enddate"): L("lcl_mld_enddate")) + ":");
if (stdmChanged) // Alleen bij nieuwe meldingen met een gekozen melding (stdmelding) en bij wijzigen van de melding (stdmelding)
{
@@ -953,7 +953,7 @@ function onChangeEnddate()
// Als dan de eindatum weer naar de toekomst wordt gezet blijft de startdatum in het verleden staan wat niet de bedoeling is.
var startdate = parseInt($("#startdate").val()); // Inclusief tijd
var enddate = parseInt($("#enddate").val());
if (mld_key > 0 && !stdm_info.planbaar && startdate < melddatum)
if (mld_key > 0 && stdm_info.planbaar == 0 && startdate < melddatum)
{
if (enddate < melddatum)
var nw = enddate; // startdatum wordt einddatum.
@@ -1140,16 +1140,16 @@ function processEinddatum(data, textStatus)
// MGE : Voor canFOwrite geldt eigenlijk ook (mld_status == 0 || mld_status == 1 || mld_status == 2)
// Voor canBOwrite geldt eigenlijk ook (mld_status == 3 || mld_status == 7)
// Maar het gaat goed omdat bij editen canChange is gecheckt en daardoor wordt het wel afgedwongen (dezelfde rechten voor dezelfde status)
var canWriteDatums = (stdm_info.planbaar && canFEwrite && (mld_key < 0 || mld_status == 2)) || canFOwrite || canBOwrite;
var canWriteDatums = (stdm_info.planbaar == 1 && canFEwrite && (mld_key < 0 || mld_status == 2)) || canFOwrite || canBOwrite;
// Ook al kan de FE bij nieuwe invoer de einddatum niet aanpassen (readonly), dan moet deze datum wel opgeslagen worden.
var saveValue = !canWriteDatums && mld_key < 0;
var prio = $("#prio :selected").val() || 3;
$(".trenddate").toggle((stdm_info.planbaar && canFEwrite) || canFOwrite || canBOwrite);
$(".trenddate").toggle(stdm_info.planbaar != 2 && (stdm_info.planbaar == 1 && canFEwrite || canFOwrite || canBOwrite));
FcltMgr.resized(window);
$("#show_enddate").closest("td").load("../Shared/loadCalendar.asp",
{ cal_id: "enddate",
datum: data.einddatum.getTime(),
timeField: (stdm_info.prioriteiten[prio].eenheid == "U" || (mld_show_endtime == 1 && !stdm_info.planbaar)? 1 : 0),
timeField: (stdm_info.prioriteiten[prio].eenheid == "U" || (mld_show_endtime == 1 && stdm_info.planbaar == 0)? 1 : 0),
timeStep: 15, // TODO: Is nog wel erg hard. Zie ook mld_edit_melding.asp
startTime: startOfWorkDay,
endTime : endOfWorkDay,
@@ -1187,7 +1187,7 @@ function recalcEinddatum()
}
// Indien nieuwe reservering behorend bij een toekomstige reservering dan bij planbare meldingen de einddatum niet aanpassen.
if (stdm_info.planbaar && withFutureRes)
if (stdm_info.planbaar == 1 && withFutureRes)
return;
// var startdate = $("#show_startdate").datepicker("getDate"); // bij nieuwe melding is er nog geen datepicker van gemaakt

View File

@@ -362,7 +362,7 @@ if (savemode)
// gewoon enddate_std en dat regelt de trigger wel, dus DAN MOET IK HEM NIET MEEGEVEN
// De tijd van de einddatum wordt nu altijd opgeslagen onafhankelijk of de tijd getoond wordt.
if (Request.Form("enddate").count > 0)
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", frm: "enddate", track: L("lcl_mld_enddate") });
fields.push({ dbs: "mld_melding_einddatum", typ: "datetime", frm: "enddate", track: stdm_info.planbaar == 2? false: L("lcl_mld_enddate") });
if (!isNew)
{ // Update an existing mld_melding record

View File

@@ -120,44 +120,49 @@ else
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + mld_key, fields);
Oracle.Execute(mldUpd.sql);
// Als een melding wordt doorgestuurd naar een andere stdmelding die niet planbaar is, kan de einddatum aangepast worden door de trigger mld_t_mld_melding_B_IU.
// Dan wordt dat niet getrackt. Hier controleren of de einddatum door de trigger is aangepast en desnoods tracking toevoegen.
var sql = "SELECT m.mld_melding_einddatum"
+ " FROM mld_melding m"
+ " WHERE m.mld_melding_key = " + mld_key;
var oRs = Oracle.Execute(sql);
var einddatum_new = new Date(oRs("mld_melding_einddatum").Value);
oRs.Close();
if (this_stdm.planbaar != 2)
{
// Als een melding wordt doorgestuurd naar een andere stdmelding die niet planbaar is, kan de einddatum aangepast worden door de trigger mld_t_mld_melding_B_IU.
// Dan wordt dat niet getrackt. Hier controleren of de einddatum door de trigger is aangepast en desnoods tracking toevoegen.
var sql = "SELECT m.mld_melding_einddatum"
+ " FROM mld_melding m"
+ " WHERE m.mld_melding_key = " + mld_key;
var oRs = Oracle.Execute(sql);
var einddatum_new = new Date(oRs("mld_melding_einddatum").Value);
oRs.Close();
var enddateTracking = "";
// Compare minutes, not (milli)seconds
if (Math.floor(einddatum.getTime()/60000) != Math.floor(einddatum_new.getTime()/60000))
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_new);
var enddateTracking = "";
// Compare minutes, not (milli)seconds
if (Math.floor(einddatum.getTime()/60000) != Math.floor(einddatum_new.getTime()/60000))
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_new);
}
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen.
// Nu kan de definitieve mld_melding.mld_melding_einddatum_std en mld_melding.mld_melding_t_uitvoertijd bepaald en gezet worden.
mld.finishmeldingiu(mld_key);
var sql = "SELECT m.mld_melding_einddatum_std"
+ " FROM mld_melding m"
+ " WHERE m.mld_melding_key = " + mld_key;
var oRs = Oracle.Execute(sql);
var einddatum_std_new = new Date(oRs("mld_melding_einddatum_std").Value);
oRs.Close();
// Compare minutes, not (milli)seconds
if (Math.floor(einddatum_std.getTime()/60000) != Math.floor(einddatum_std_new.getTime()/60000))
if (this_stdm.planbaar != 2)
{
sql = "UPDATE mld_melding"
+ " SET mld_melding_einddatum = " + einddatum_std_new.toSQL(true)
+ " WHERE mld_melding_key = " + mld_key;
Oracle.Execute(sql);
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_std_new); // Vervangt mogelijke bestaande enddate-tracking
}
var sql = "SELECT m.mld_melding_einddatum_std"
+ " FROM mld_melding m"
+ " WHERE m.mld_melding_key = " + mld_key;
var oRs = Oracle.Execute(sql);
var einddatum_std_new = new Date(oRs("mld_melding_einddatum_std").Value);
oRs.Close();
if (enddateTracking != "")
mldUpd.trackarray.push(enddateTracking);
// Compare minutes, not (milli)seconds
if (Math.floor(einddatum_std.getTime()/60000) != Math.floor(einddatum_std_new.getTime()/60000))
{
sql = "UPDATE mld_melding"
+ " SET mld_melding_einddatum = " + einddatum_std_new.toSQL(true)
+ " WHERE mld_melding_key = " + mld_key;
Oracle.Execute(sql);
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_std_new); // Vervangt mogelijke bestaande enddate-tracking
}
if (enddateTracking != "")
mldUpd.trackarray.push(enddateTracking);
}
mld.keepFlexDocuments(mld_key, old_stdm, stdm_key);
var flexdoctrack = mld.moveFlexStdmelding(mld_key, old_stdm, stdm_key);

View File

@@ -455,10 +455,12 @@ function mld_list (pautfunction, params)
var lnow = new Date();
// Alles wat al geaccepteerd had moeten zijn wordt expired1
// in deze statussen zijn geen opdrachten aanwezig dus kan nooit status unsolved optreden
if ((mldStatus == 2 || mldStatus == 3) && oRs("eindacceptatie").Value < lnow) class1 += ' expired1';
if ((mldStatus == 2 || mldStatus == 3) && oRs("eindacceptatie").Value < lnow)
class1 += ' expired1';
// Alles wat al klaar had moeten zijn wordt expired2
if (((mldStatus == 4 || mldStatus == 7) && oRs("optijd").Value == 0)) class1 += ' expired2';
if (oRs("mld_stdmelding_planbaar").Value != 2 && (mldStatus == 4 || mldStatus == 7) && oRs("optijd").Value == 0)
class1 += ' expired2';
// Meldingen met uitgegeven(7) worden unsolved als er 0 lopende opdrachten zijn
// en meer dan 0 opdrachten so wie so (er zijn dus opdrachten geweest)
@@ -715,6 +717,9 @@ function mld_list (pautfunction, params)
function fncolEindDatum(oRs)
{
if (oRs("mld_stdmelding_planbaar").Value == 2)
return "";
if (oRs("mld_melding_parentkey").Value > 0)
return L("lcl_mld_parent_status").format(oRs("mld_melding_parentkey").Value); // default leeg
@@ -723,11 +728,14 @@ function mld_list (pautfunction, params)
function fncolEindTijd(oRs)
{
if (oRs("mld_stdmelding_planbaar").Value == 2)
return "";
if (oRs("mld_melding_parentkey").Value > 0)
return "";
var result = "";
if (oRs("uitvoertijd_eenheid").Value == 'U' || (S("mld_show_endtime")==1 && !oRs("mld_stdmelding_planbaar").Value))
if (oRs("uitvoertijd_eenheid").Value == 'U' || (S("mld_show_endtime")==1 && oRs("mld_stdmelding_planbaar").Value == 0))
{
if (toTimeString(oRs("mld_melding_einddatum").Value) != "00:00")
result = toTimeString(oRs("mld_melding_einddatum").Value);

View File

@@ -359,16 +359,16 @@ function parentButton()
ROFIELDTR("flddatetime", L("lcl_mld_startdate"), toDateTimeString(mld_melding.melddatum));
}
if (!mld_melding.parent_key)
if (stdm_info.planbaar != 2 && !mld_melding.parent_key)
{
// Extra class "expired2" toevoegen indien: ((einddatum + respijttijd) > sla_datum) && slabewaken
// TODO: Respijt hier (ook) tonen?
var klaar_na_sla = (mld_actualuitvoertijd > mld_uitvoertijd + mld_respijt) && stdm_info.slabewaken;
var lclass = (klaar_na_sla? " expired2" : "");
if (mld_melding.uitvoertijd_eenheid == "U" || S("mld_show_endtime") == 1)
ROFIELDTR("flddatetime" + lclass, (stdm_info.planbaar? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateTimeString(mld_melding.einddatum), { title: (klaar_na_sla? L("lcl_mld_klaar_na_sla") : "") });
ROFIELDTR("flddatetime" + lclass, (stdm_info.planbaar == 1 ? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateTimeString(mld_melding.einddatum), { title: (klaar_na_sla? L("lcl_mld_klaar_na_sla") : "") });
else
ROFIELDTR("flddate" + lclass, (stdm_info.planbaar? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateString(mld_melding.einddatum));
ROFIELDTR("flddate" + lclass, (stdm_info.planbaar == 1? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateString(mld_melding.einddatum));
}
BLOCK_END();