FSN#39592: Flexkenmerken verdwijnen na doorsturen en later bewerken.

svn path=/Website/trunk/; revision=35868
This commit is contained in:
Maykel Geerdink
2017-11-01 08:36:29 +00:00
parent be49021e79
commit 59a94b1257
2 changed files with 74 additions and 0 deletions

View File

@@ -781,6 +781,73 @@ mld = {setmeldingstatus:
}
},
moveFlexStdmelding:
function(mld_key, old_stdm, stdmelding)
{
/* Match de kenmerk_key-s van de oude en nieuwe mld_stdmelding */
var trackarray = []; // Eventuele tracking
if (old_stdm != stdmelding)
{
__Log("Old MLD_STDMELDING_KEY: " + old_stdm + " New: " + stdmelding);
// pas op dat zelfs de vakgroep (mld_ins_discipline_key) gewijzigd kan zijn
var flexsql = "SELECT mk.mld_kenmerk_key kenm_key_old"
+ " , kenm_new.mld_kenmerk_key kenm_key_new"
+ " , mld_kenmerkmelding_key"
+ " , sk.mld_srtkenmerk_omschrijving"
+ " , mkm.mld_kenmerkmelding_waarde"
+ " FROM mld_kenmerkmelding mkm"
+ " , mld_kenmerk mk"
+ " , mld_srtkenmerk sk"
+ " , mld_stdmelding s"
+ " , mld_discipline d"
+ " , (SELECT mkn.mld_kenmerk_key"
+ " , mkn.mld_srtkenmerk_key"
+ " FROM mld_kenmerk mkn"
+ " , mld_stdmelding sn"
+ " , mld_discipline dn"
+ " WHERE sn.mld_ins_discipline_key = dn.ins_discipline_key"
+ " AND ((mkn.mld_stdmelding_key = sn.mld_stdmelding_key AND mkn.mld_kenmerk_niveau = 'S')"
+ " OR (mkn.mld_stdmelding_key = sn.mld_ins_discipline_key AND mkn.mld_kenmerk_niveau = 'D')"
+ " OR (mkn.mld_stdmelding_key = dn.ins_srtdiscipline_key AND mkn.mld_kenmerk_niveau = 'T'))"
+ " AND sn.mld_stdmelding_key = " + stdmelding + ") kenm_new"
+ " WHERE mkm.mld_kenmerk_key = mk.mld_kenmerk_key"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND mk.mld_srtkenmerk_key = sk.mld_srtkenmerk_key"
+ " AND sk.mld_srtkenmerk_kenmerktype NOT IN ('F', 'E', 'M')"
+ " AND ((mk.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND mk.mld_kenmerk_niveau = 'S')"
+ " OR (mk.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND mk.mld_kenmerk_niveau = 'D')"
+ " OR (mk.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND mk.mld_kenmerk_niveau = 'T'))"
+ " AND mk.mld_srtkenmerk_key = kenm_new.mld_srtkenmerk_key(+)"
+ " AND mkm.mld_melding_key = " + mld_key
+ " AND s.mld_stdmelding_key = " + old_stdm
+ " ORDER BY mk.mld_kenmerk_key";
var oRs = Oracle.Execute(flexsql);
while (!oRs.eof)
{
var kenm_key_new = oRs("kenm_key_new").Value;
if (kenm_key_new)
{ // Overeenkomende flexkenmerken van de oude naar de nieuwe stdmelding overzetten.
// De waarde veranderd niet, dus geen tracking nodig.
sql = "UPDATE mld_kenmerkmelding"
+ " SET mld_kenmerk_key = " + kenm_key_new
+ " WHERE mld_kenmerkmelding_key = " + oRs("mld_kenmerkmelding_key").Value;
Oracle.Execute(sql);
}
else
{ // Nieuwe stdmelding heeft het flexkenmerk niet. Track dat dit flexkenmerk verloren gaat.
trackarray.push(oRs("mld_srtkenmerk_omschrijving").Value + " (" + oRs("mld_kenmerkmelding_waarde").Value + "): " + L("lcl_mld_prop_not_exist"));
}
oRs.MoveNext();
}
oRs.Close();
}
return trackarray;
},
getStatusSql:
function(mldstatus_str, alias)
{

View File

@@ -166,6 +166,13 @@ else
}
mld.keepFlexDocuments(mld_key, old_stdm, stdm_key);
var flextrack = mld.moveFlexStdmelding(mld_key, old_stdm, stdm_key);
if (mldUpd.trackarray.length || flextrack.length)
{
var formattedID = this_stdm.ins_srtdiscipline_prefix + mld_key + " (" + this_stdm.discipline_omschrijving + "/" + this_stdm.stdmelding_omschrijving + ")";
mld.trackmeldingupdate(mld_key, L("lcl_mld_is_mldupdtrack").format(formattedID) + "\n" + mldUpd.trackarray.concat(flextrack).join("\n"));
}
// mldUpd.oldjsvals bevat helaas niet old_disc dus die hebben we al eerder bepaald.
// Met status=5 (afgemeld) zitten we in de uitzonderlijke situatie dat iemand achteraf