188 lines
9.0 KiB
C++
188 lines
9.0 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mld_edit_note.inc
|
|
Description: Functie vooor het echte bewaren van een melding notitie
|
|
Context: Vanuit mld_edit_note.asp
|
|
|
|
*/
|
|
%>
|
|
<%
|
|
// params: note_key, isFE, zichtFE
|
|
function note_save(mld_key, note, params)
|
|
{
|
|
var mld_info = mld.mld_melding_info(mld_key);
|
|
lcl.set_dialect(mld_info.srtdisc, "MLD_SRTDISCIPLINE_KEY");
|
|
|
|
var mfe = mld.func_enabled_melding (mld_key);
|
|
// Heb ik rechten om notities te wijzigen?
|
|
user.auth_required_or_abort(mfe.canWriteNotes);
|
|
|
|
var eigenMelding = user_key == mld_info.melder_key || user.isCollega(mld_info.melder_key);
|
|
|
|
if (params.note != "")
|
|
{
|
|
var fields = [ { dbs: "mld_melding_key", typ: "key", val: mld_key },
|
|
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
|
{ dbs: "mld_melding_note_omschrijving", typ: "varchar", val: note, len: 4000 }
|
|
]
|
|
|
|
if (params.note_key > -1)
|
|
{
|
|
var sql = buildUpdate("mld_melding_note", fields)
|
|
+ " mld_melding_note_key = " + params.note_key
|
|
+ " AND prs_perslid_key = " + user_key; // Voorkom dat er een notitie van een ander aangepast wordt.
|
|
Oracle.Execute(sql);
|
|
}
|
|
else
|
|
{
|
|
// fenotes is afhankelijk van de discipline (vakgroep) en geeft aan of FE notities mag zien.
|
|
// 00 (0) Notitie is default niet zichtbaar voor FE (&1 == 0)
|
|
// 01 (1) Notitie is default wel zichtbaar voor FE (&1 == 1)
|
|
// 10 (2) Door FOBO te kiezen (per notitie) of FE notitie mag zien. Default waarde volgens &1 is niet zien (&2 == 1 en &1 == 0)
|
|
// 11 (3) Door FOBO te kiezen (per notitie) of FE notitie mag zien. Default waarde volgens &1 is wel zien (&2 == 1 en &1 == 1)
|
|
|
|
var zichtbaarFE = true; // default: zelf ingevoerd-->zichtbaar
|
|
if (!eigenMelding)
|
|
{ // FOBO
|
|
zichtbaarFE = (mld_info.fenotes & 1); // Default waarden
|
|
if (mld_info.fenotes & 2 || (S("mld_note_mode") == 2 && mld_info.fenotes == 0))
|
|
{ // Afhankelijk van checkbox die door FOBO kan worden ingevuld.
|
|
zichtbaarFE = params.zichtFE;
|
|
}
|
|
}
|
|
|
|
fields.push({ dbs: "mld_melding_note_flag", typ: "number", val: (zichtbaarFE? 1 : 0) });
|
|
fields.push({ dbs: "mld_melding_note_key", typ: "key", seq: "mld_s_mld_melding_note_key" });
|
|
|
|
var noteIns = buildInsert("mld_melding_note", fields);
|
|
var note_key = noteIns.sequences["mld_melding_note_key"];
|
|
|
|
Oracle.Execute(noteIns.sql);
|
|
|
|
// Tracking (MLDNOT) indien notitie zichtbaar is voor FE.
|
|
// PF: niemand zal er over zeuren, maar ik vind het (met huidige kennis) raar om sommige notities te tracken
|
|
// Ik denk eigenlijk dat het putnotificationsrtprio() zou moeten zijn: notificeren zonder tracken.
|
|
// Als niemand bezwaar heeft: TODO.
|
|
if (zichtbaarFE)
|
|
{ // 'Notitie bij {0}: {1}'
|
|
var txt = L("lcl_mld_is_mldnotetrack").format((mld_info.prefix||"") + mld_key, note);
|
|
var txt = txt.split("\n")[0].split("\r")[0]; // Altijd alleen eerste regel
|
|
if (txt.length > 80)
|
|
txt = txt.substr(0, 80);
|
|
txt = txt + "...";
|
|
// Door de omschrijving expliciet te prefixen met een # wordt een event niet genotificeerd
|
|
mld.trackaddnote(mld_key, (eigenMelding? "#" : "") + txt); // MLDNOT tracking. Notificatie naar melder afhankelijk van setting voor fac_srtnotificatie_code
|
|
}
|
|
|
|
if (!params.isFE && zichtbaarFE)
|
|
{
|
|
if (S("mld_flag_on_fenote") > 0) // Misschien 'notificeren' naar FE
|
|
{
|
|
var sql = "UPDATE mld_melding"
|
|
+ " SET mld_melding_flag = " + S("mld_flag_on_fenote")
|
|
+ " WHERE mld_melding_key = " + mld_key
|
|
+ " AND( (mld_melding_flag = " + S("mld_flag_on_bonote") + ")"
|
|
+ " OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL)"
|
|
+ " )";
|
|
}
|
|
else
|
|
{
|
|
var sql = "UPDATE mld_melding"
|
|
+ " SET mld_melding_flag = 0"
|
|
+ " WHERE mld_melding_key = " + mld_key
|
|
+ " AND mld_melding_flag = " + S("mld_flag_on_bonote");
|
|
}
|
|
Oracle.Execute(sql);
|
|
}
|
|
else if (params.isFE)
|
|
{
|
|
if ((S("mld_flag_on_bonote") > 0) && eigenMelding) // Misschien 'notificeren' naar BO
|
|
{
|
|
var sql = "UPDATE mld_melding"
|
|
+ " SET mld_melding_flag = " + S("mld_flag_on_bonote")
|
|
+ " WHERE mld_melding_key = " + mld_key
|
|
+ " AND( (mld_melding_flag = " + S("mld_flag_on_fenote") + ")"
|
|
+ " OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL)"
|
|
+ " )";
|
|
}
|
|
else if (S("mld_flag_on_fenote") > 0) // Misschien 'notificeren' naar FE
|
|
{
|
|
var sql = "UPDATE mld_melding"
|
|
+ " SET mld_melding_flag = " + S("mld_flag_on_fenote")
|
|
+ " WHERE mld_melding_key = " + mld_key
|
|
+ " AND( (mld_melding_flag = " + S("mld_flag_on_bonote") + ")"
|
|
+ " OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL)"
|
|
+ " )";
|
|
}
|
|
else
|
|
{
|
|
var sql = " UPDATE mld_melding"
|
|
+ " SET mld_melding_flag = 0"
|
|
+ " WHERE mld_melding_key = " + mld_key
|
|
+ " AND mld_melding_flag = " + S("mld_flag_on_fenote");
|
|
}
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
|
|
// Laat de Behandelaar weten dat er iemand (anders) een notitie heeft toegevoegd of gewijzigd
|
|
if (mld_info.behandel_key && mld_info.behandel_key != user_key)
|
|
{
|
|
// putnotificationsrtprio doet geen vertaling van andere vars dan ##KEY## (notify_tracking zou dat wel doen)
|
|
// dus doen we het hier zelf maar.
|
|
var omssql = "SELECT fac_srtnotificatie_oms"
|
|
+ " FROM fac_srtnotificatie"
|
|
+ " WHERE fac_srtnotificatie_code = 'MLDNOB'";
|
|
var oRs = Oracle.Execute(omssql);
|
|
var oms = oRs("fac_srtnotificatie_oms").Value;
|
|
oRs.Close();
|
|
Oracle.Execute("BEGIN fac.putnotificationsrtprio("
|
|
+ "NULL"
|
|
+ ", "
|
|
+ mld_info.behandel_key
|
|
+ ", 'MLDNOB'"
|
|
+ ", "
|
|
+ mld_key
|
|
+ ", mld.mldsprintf(" + safe.quoted_sql(oms) + ", " + mld_key + ")"
|
|
+ ", NULL, NULL, NULL, NULL, 2, NULL); END;");
|
|
}
|
|
}
|
|
return note_key || params.note_key;
|
|
}
|
|
|
|
function note_recently_changed(mld_key, lastdate)
|
|
{
|
|
// Is de melding recent nog gewijzigd.
|
|
var changedby = "";
|
|
var sql_t = "SELECT t.fac_tracking_datum"
|
|
+ " , " + S("prs_pers_string") + " naam"
|
|
+ " FROM (SELECT f.fac_tracking_datum"
|
|
+ " , f.prs_perslid_key"
|
|
+ " , f.fac_tracking_refkey mld_melding_key"
|
|
+ " FROM fac_tracking f"
|
|
+ " , fac_srtnotificatie n"
|
|
+ " WHERE f.fac_srtnotificatie_key = n.fac_srtnotificatie_key"
|
|
+ " AND n.fac_srtnotificatie_xmlnode = 'melding'"
|
|
+ " UNION "
|
|
+ "SELECT mld_melding_note_aanmaak"
|
|
+ " , prs_perslid_key"
|
|
+ " , mld_melding_key"
|
|
+ " FROM mld_melding_note"
|
|
+ ") t"
|
|
+ " , prs_perslid p"
|
|
+ " WHERE t.prs_perslid_key = p.prs_perslid_key"
|
|
+ " AND t.mld_melding_key = " + mld_key
|
|
+ " AND t.prs_perslid_key <> " + user_key
|
|
+ " AND t.fac_tracking_datum > " + lastdate.toSQL(true)
|
|
+ " ORDER BY t.fac_tracking_datum DESC";
|
|
var oRs_t = Oracle.Execute(sql_t);
|
|
if (!oRs_t.eof)
|
|
{
|
|
changedby = oRs_t("naam").Value;
|
|
}
|
|
oRs_t.Close();
|
|
return changedby;
|
|
}
|
|
%> |