Files
Facilitor/APPL/MLD/mld_forward_save.asp
Erik Groener 7b2a572a00 HOUT#38057 Behandelaar gewist na doorsturen
svn path=/Website/trunk/; revision=31223
2016-10-26 09:37:18 +00:00

140 lines
5.7 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld_forward_save.asp
Description: Doorsturen van een opdracht naar een andere vakgroep
Parameters: mld_melding_key
Context:
Note: Merk op dat je ook naar vakgroepen mag sturen waar je normaal
geen rechten voor hebt!
Als S("mld_forward_all") == 0 dan alleen naar dezelfde srtdiscipline
*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc"-->
<!-- #include file="mld.inc" -->
<%
protectRequest.validateToken();
var mld_key = getQParamInt('mld_key');
var stdm_key = getFParamInt("stdm");
var opmerk = getFParam("opmerk", "");
var this_mld = mld.func_enabled_melding(mld_key);
user.auth_required_or_abort(this_mld.canForward || this_mld.canFixMelding);
var mld_melding = mld.mld_melding_info(mld_key);
lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
var locatiekey = mld_melding.loc_key;
if (locatiekey < 0 && mld_melding.deladdress)
{ // Als we geen locatiekey hebben maar wel een afleveradres, kunnen we mogelijk ook een locatiekey bepalen
var sql = "SELECT alg_locatie_key"
+ " FROM mld_adres"
+ " WHERE mld_adres_key = " + mld_melding.deladdress;
oRs = Oracle.Execute(sql);
if (!oRs.eof && oRs("alg_locatie_key").Value)
locatiekey = oRs("alg_locatie_key").Value;
oRs.Close();
}
var prs_bedrijf_key = mld.dienst_controle(stdm_key, locatiekey, mld_melding.bld_key, mld_melding.room_key, mld_melding.perslid_key_voor);
var sql = "SELECT mm.mld_stdmelding_key"
+ " , mm.mld_melding_opmerking"
+ " , mm.mld_melding_spoed"
+ " , msm.mld_ins_discipline_key"
+ " FROM mld_melding mm, mld_stdmelding msm"
+ " WHERE mm.mld_stdmelding_key = msm.mld_stdmelding_key"
+ " AND mld_melding_key = " + mld_key;
var oRs = Oracle.Execute(sql);
var old_stdm = oRs("mld_stdmelding_key").Value;
var old_disc = oRs("mld_ins_discipline_key").Value;
var mld_opm = oRs("mld_melding_opmerking").Value || "";
var spoed = oRs("mld_melding_spoed").Value;
oRs.Close();
var this_stdm = mld.mld_stdmeldinginfo(stdm_key);
var new_disc = this_stdm.ins_discipline_key;
var autoorder = (this_stdm.autoorder? 1 : 0) == 1;
var save_notitie = false;
var result = {success: true, message: "", key: mld_key, autoorder: autoorder};
if (stdm_key == old_stdm)
{
result.message = L("lcl_not_forwarded");
}
else
{
result.toaster = L("lcl_forwarded");
var fields = [ { dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), foreign: "mld_stdmelding" }
];
if (mld_melding.mld_status != 5)
fields.push({ dbs: "mld_melding_behandelaar_key", typ: "key", val: -1, track: L("lcl_mld_behandelaar"), foreign: "prs_perslid" });
if ((S("mld_forward_opm_flags") & 2) == 2 || S("mld_note_mode") == 2)
{ // Achteraan notitieveld.
save_notitie = true;
var note = getFParam("opmerk", "");
if (note != "")
{
var fields_note = [ { 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", frm: "opmerk", len: 4000 },
{ dbs: "mld_melding_note_flag", typ: "number", val: 0 }
];
var noteIns = buildInsert("mld_melding_note", fields_note);
Oracle.Execute(noteIns.sql);
}
}
else
{ // Achteraan opmerkingsveld.
var new_opm = mld_opm + "\n" + opmerk;
fields.push({ dbs: "mld_melding_opmerking", typ: "varchar", val: new_opm, track: L("lcl_mld_inf_Opmerking"), len: 4000 });
}
if (!this_stdm.prioriteiten[spoed])
fields.push({ dbs: "mld_melding_spoed", typ: "key", val: 3, track: L("lcl_mld_urg"), foreign: mld.getpriotext });
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + mld_key, fields);
Oracle.Execute(mldUpd.sql);
if (mldUpd.trackarray.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.join("\n"));
}
// 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);
mld.keepFlexDocuments(mld_key, old_stdm, stdm_key);
// 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
// nog adminstratief de melding corrigeerd. Dan blijven we wel van de status af.
if (mld_melding.mld_status != 5)
{ // Zetten van de status op ingevoerd en afhandelen van de tracking.
// De oude status kan 2, 3, en afhankelijk van discipline/setting
// mld_disc_params_keten of mld_forward_if_active ook 4 of 7 zijn.
if (old_disc != new_disc && S("mld_forward_if_active") == 0)
{
mld.setmeldingstatus(mld_key, 3); // Evt naar 'ingezien'
mld.setmeldingstatus(mld_key, 2); // Terug naar 'ingevoerd'
}
mld.nextworkflowstep(mld_key, -1); // Is de nieuwe een workflowstart?
}
}
Response.Write(JSON.stringify(result));
%>