<% /* $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 || !params.notifyFE? "#" : "") + txt); // MLDNOT tracking. Notificatie naar melder afhankelijk van setting voor fac_srtnotificatie_code } if (!params.isFE && zichtbaarFE) { if (S("mld_flag_on_fenote") > 0 && params.notifyFE) // 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" + " , prs_perslid_naam_friendly 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_v_perslid_fullnames_all 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; } %>