<%@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; %> <% 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" + " , mm.mld_melding_einddatum" + " , mm.mld_melding_einddatum_std" + " 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; var einddatum = new Date(oRs("mld_melding_einddatum").Value); var einddatum_std = new Date(oRs("mld_melding_einddatum_std").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); // Als een melding wordt doorgestuurd naar een andere stdmelding die niet planbaar is, kan de einddatum aangepast worden door de trigger mld_t_mld_melding_B_IU. // Dan wordt dat niet getrackt. Hier controleren of de einddatum door de trigger is aangepast en desnoods tracking toevoegen. var sql = "SELECT m.mld_melding_einddatum" + " FROM mld_melding m" + " WHERE m.mld_melding_key = " + mld_key; var oRs = Oracle.Execute(sql); var einddatum_new = new Date(oRs("mld_melding_einddatum").Value); oRs.Close(); if (einddatum.getTime() != einddatum_new.getTime()) mldUpd.trackarray.push(L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_new)); 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); var sql = "SELECT m.mld_melding_einddatum_std" + " FROM mld_melding m" + " WHERE m.mld_melding_key = " + mld_key; var oRs = Oracle.Execute(sql); var einddatum_std_new = new Date(oRs("mld_melding_einddatum_std").Value); oRs.Close(); if (einddatum_std.getTime() != einddatum_std_new.getTime()) { sql = "UPDATE mld_melding" + " SET mld_melding_einddatum = " + einddatum_std_new.toSQL(true) + " WHERE mld_melding_key = " + mld_key; Oracle.Execute(sql); } 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)); %>