138 lines
5.7 KiB
Plaintext
138 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" },
|
|
{ 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));
|
|
%>
|