From 83b886db01ea8424d6e0dfeaad2571f4ceabcdc2 Mon Sep 17 00:00:00 2001 From: Jos Groot Lipman Date: Thu, 21 Sep 2017 09:10:55 +0000 Subject: [PATCH] FSN#42267: Omschrijving van de tracking van stdmelding verfijnder svn path=/Website/trunk/; revision=35397 --- APPL/MLD/mld_edit_melding_save.asp | 2 +- APPL/MLD/mld_forward_save.asp | 2 +- APPL/Shared/save2db.inc | 65 +++++++++++++++++++++--------- 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/APPL/MLD/mld_edit_melding_save.asp b/APPL/MLD/mld_edit_melding_save.asp index d52f46813a..96e8334404 100644 --- a/APPL/MLD/mld_edit_melding_save.asp +++ b/APPL/MLD/mld_edit_melding_save.asp @@ -247,7 +247,7 @@ if (savemode) savewhen: "personFor", track: L("lcl_mld_call_for"), foreign: "prs_perslid" }, { dbs: "prs_kostenplaats_key", typ: "key", val: kpkey, track: L("lcl_mld_inf_Kostenplaats"), foreign: "prs_kostenplaats" }, { dbs: "mld_melding_opmerking", typ: "varchar", frm: "remark", track: L("lcl_mld_inf_Opmerking"), len: 4000 }, - { dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), foreign: "mld_stdmelding" }, + { dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), buildTrackText: buildStdmTrackText }, { dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: alg_onroerendgoed_keys, savewhen: "locatiekey", track: true /* afzonderlijke tracking, wel oldjsval */ }, diff --git a/APPL/MLD/mld_forward_save.asp b/APPL/MLD/mld_forward_save.asp index 3a18ea592a..cf703ef9ab 100644 --- a/APPL/MLD/mld_forward_save.asp +++ b/APPL/MLD/mld_forward_save.asp @@ -83,7 +83,7 @@ if (stdm_key == old_stdm && old_beh == sBehandel) else { result.toaster = L("lcl_forwarded"); - var fields = [ { dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), foreign: "mld_stdmelding" } + var fields = [ { dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), buildTrackText: buildStdmTrackText } ]; if (S("mld_forward_can_assign")) diff --git a/APPL/Shared/save2db.inc b/APPL/Shared/save2db.inc index f148af34c0..28291a4282 100644 --- a/APPL/Shared/save2db.inc +++ b/APPL/Shared/save2db.inc @@ -125,6 +125,22 @@ function shorttxt(txt, len) return txt.substr(0, len-4) + "..."; } +function getForeignText(key, foreign) +{ + var sql = "SELECT " + foreign.desc + + " FROM " + foreign.tbl + " " + (foreign.alias||""); + if (foreign.where) + sql += " WHERE " + foreign.where + " AND "; + else + sql += " WHERE "; + sql += foreign.key + " = " + key; + var oRs = Oracle.Execute(sql); + var oldtxt = oRs(0).Value; + oRs.Close(); + + return oldtxt; +} + // tracktxt.push(buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, oRs(tupel.field.dbs).DefinedSize)); // bouw een mooie tekst die de van-naar wijziging beschrijft // params: nodiff: geen L("lcl_trackappend") of L("lcl_trackpercent") @@ -174,25 +190,10 @@ function buildTrackText(typ, oldjsval, newjsval, params) if (!foreign) abort_with_warning("INTERNAL ERROR:\nForeign key for tracking " + params.foreign.toUpperCase()+" is not defined in foreignKeyTable"); - var sqlf = "SELECT " + foreign.desc - + " FROM " + foreign.tbl + " " + (foreign.alias||"") - if (foreign.where) - sqlf += " WHERE " + foreign.where + " AND "; - else - sqlf += " WHERE "; - sqlf += foreign.key + " = "; if (oldjsval) - { - var oRs = Oracle.Execute(sqlf + oldjsval); - oldtxt = oRs(0).Value; - oRs.Close() - } + oldtxt = getForeignText(oldjsval, foreign) if (newjsval) - { - var oRs = Oracle.Execute(sqlf + newjsval); - newtxt = oRs(0).Value; - oRs.Close(); - } + newtxt = getForeignText(newjsval, foreign) break; } } @@ -242,6 +243,30 @@ function buildTrackText(typ, oldjsval, newjsval, params) return tracktxt; } +// Die is wat specifiekers omdat een andere stdm dezelfde tekst kan hebben +// maar dan onder een andere vakgroep. +// Een vakgroepwissel wil je eventueel ook tracken +function buildStdmTrackText(typ, oldjsval, newjsval, params) +{ + var old_disc_key = Oracle.Get("mld_ins_discipline_key", "mld_stdmelding", oldjsval); + var new_disc_key = Oracle.Get("mld_ins_discipline_key", "mld_stdmelding", newjsval); + var olddisctxt = getForeignText(old_disc_key, foreignKeyTable("mld_discipline")); + var newdisctxt = getForeignText(new_disc_key, foreignKeyTable("mld_discipline")); + var oldstdmtxt = getForeignText(oldjsval, foreignKeyTable("mld_stdmelding")); + var newstdmtxt = getForeignText(newjsval, foreignKeyTable("mld_stdmelding")); + if (olddisctxt == newdisctxt) + olddisctxt = newdisctxt = ""; + if (oldstdmtxt == newstdmtxt) + oldstdmtxt = newstdmtxt = ""; + if (newdisctxt && newstdmtxt) + return L("lcl_complain") + ": " + olddisctxt + "/" + oldstdmtxt + L("lcl_trackto") + newdisctxt + "/" + newstdmtxt + else + if (newstdmtxt) + return L("lcl_complain") + ": " + oldstdmtxt + L("lcl_trackto") + newstdmtxt; + else + return L("lcl_vakgroup") + ": " + olddisctxt + L("lcl_trackto") + newdisctxt; +} + var known_adotypes = { @@ -422,7 +447,11 @@ function buildTrackingUpdate(tabel, where, xfields, params) var lbl = tupel.field.track; // if (params.dialect_key) // lbl = lcl.x(tupel.field.track, params.dialect_key); - trackarray.push(lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } )); + if (tupel.field.buildTrackText) + var tracktxt = tupel.field.buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } ); + else + var tracktxt = lbl + ": " + buildTrackText(tupel.field.typ, oldjsval, tupel.jsval, { foreign: tupel.field.foreign, oldjsvals: oldjsvals } ); + trackarray.push(tracktxt); } oldjsvals[tupel.field.dbs] = oldjsval; }