482 lines
24 KiB
Plaintext
482 lines
24 KiB
Plaintext
<%@language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mld_forward_save.asp
|
|
Description: Doorsturen van een melding 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/save2db.inc" -->
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<!-- #include file="../Shared/get_objecten_sql.inc" -->
|
|
<!-- #include file="mld.inc" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
|
|
var mld_key = getQParamInt("mld_key");
|
|
var fwdType = getQParamInt("fwdType");
|
|
var opmerk = getFParam("opmerk", "");
|
|
|
|
var this_mld = mld.func_enabled_melding(mld_key);
|
|
user.auth_required_or_abort(fwdType & 1 ? (this_mld.canForward || this_mld.canFixMelding) : this_mld.canForwardTeam);
|
|
|
|
var mld_melding = mld.mld_melding_info(mld_key);
|
|
|
|
var old_disc = mld_melding.disc_key;
|
|
var new_disc = getFParamInt("disc", old_disc);
|
|
var old_stdm = mld_melding.stdm_key;
|
|
var new_stdm = getFParamInt("stdm", old_stdm);
|
|
var has_new_stdm = fwdType == 1 && old_stdm != new_stdm;
|
|
|
|
var old_mld_disc = mld_melding.mld_ins_discipline_key || -1;
|
|
var new_mld_disc = getFParamInt("mld_ins_discipline", old_mld_disc);
|
|
|
|
var old_beh = mld_melding.behandel_key || -1;
|
|
var new_beh = getFParamInt("sBehandel", old_beh);
|
|
var old_beh2 = mld_melding.behandel2_key || -1;
|
|
var new_beh2 = getFParamInt("sBehandel2", old_beh2);
|
|
var old_kpkey = mld_melding.kostenpl_key || -1;
|
|
var new_kpkey = getFParamInt("account", old_kpkey);
|
|
|
|
lcl.set_dialect(mld_melding.srtdisc_key, "MLD_SRTDISCIPLINE_KEY");
|
|
|
|
var locatiekey = mld_melding.loc_key;
|
|
if (locatiekey < 0 && mld_melding.deladdress_key > 0)
|
|
{ // 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_key;
|
|
oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof && oRs("alg_locatie_key").Value)
|
|
locatiekey = oRs("alg_locatie_key").Value;
|
|
oRs.Close();
|
|
}
|
|
|
|
// Zijn er objecten aan de melding gekoppeld? Zet de ins_deel_keys in een array.
|
|
var obj_key_arr = [];
|
|
for (var i=0; i<mld_melding.room_obj_arr.length; i++)
|
|
{
|
|
obj_key_arr.push(mld_melding.room_obj_arr[i].ins_key);
|
|
}
|
|
var prs_bedrijf_key = mld.dienst_controle(new_stdm, locatiekey, (mld_melding.bttype == "B"? mld_melding.bld_key : null), mld_melding.room_key, obj_key_arr, mld_melding.perslid_key_voor);
|
|
|
|
var sql = "SELECT m.mld_melding_opmerking"
|
|
+ " , m.mld_melding_spoed"
|
|
+ " , m.mld_melding_einddatum"
|
|
+ " , m.mld_melding_einddatum_std"
|
|
+ " , m.mld_alg_locatie_key alg_locatie_key"
|
|
+ " , COALESCE (aog.alg_gebouw_key, aog.alg_terreinsector_key) alg_gebouw_key"
|
|
+ " , aog.alg_verdieping_key alg_verdieping_key"
|
|
+ " , aog.alg_ruimte_key alg_ruimte_key"
|
|
+ " FROM mld_melding m, mld_stdmelding sm, alg_v_allonrgoed_gegevens aog"
|
|
+ " WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key"
|
|
+ " AND m.mld_melding_key = " + mld_key
|
|
+ " AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
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);
|
|
var alg_ruimte_key = oRs("alg_ruimte_key").Value || -1;
|
|
var alg_verdieping_key = oRs("alg_verdieping_key").Value || -1;
|
|
var alg_gebouw_key = oRs("alg_gebouw_key").Value || -1;
|
|
var alg_locatie_key = oRs("alg_locatie_key").Value || -1;
|
|
oRs.Close();
|
|
|
|
var this_stdm = mld.mld_stdmeldinginfo(new_stdm);
|
|
|
|
// Alleen als stdm veranderd is
|
|
if (has_new_stdm)
|
|
{
|
|
// Abort als required alg_level van new_stdm niet ingevuld is
|
|
// Alleen als dit ingevuld kon worden in de oude melding (volgens de old_srtdisc)
|
|
sql = "SELECT sd.ins_srtdiscipline_alg"
|
|
+ " FROM mld_stdmelding sm"
|
|
+ " , mld_discipline d"
|
|
+ " , ins_srtdiscipline sd"
|
|
+ " WHERE sm.mld_ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
|
|
+ " AND sm.mld_stdmelding_key = " + old_stdm;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var ins_srtdiscipline_alg = oRs("ins_srtdiscipline_alg").Value || 0;
|
|
if (ins_srtdiscipline_alg > 0)
|
|
{
|
|
switch (this_stdm.alg_onrgoed_niveau)
|
|
{
|
|
case "R": if (alg_ruimte_key == -1 && ins_srtdiscipline_alg == 1) { abort_with_warning(L("lcl_mld_room_not_specified")); }
|
|
break;
|
|
case "V": if (alg_verdieping_key == -1 && ins_srtdiscipline_alg <= 3) { abort_with_warning(L("lcl_mld_floor_not_specified")); }
|
|
break;
|
|
case "G": if (alg_gebouw_key == -1 && ins_srtdiscipline_alg <= 5) { abort_with_warning(L("lcl_mld_building_not_specified")); }
|
|
break;
|
|
case "L": if (alg_locatie_key == -1 && ins_srtdiscipline_alg <= 7) { abort_with_warning(L("lcl_mld_location_not_specified")); }
|
|
break;
|
|
}
|
|
}
|
|
oRs.Close();
|
|
}
|
|
|
|
if (has_new_stdm)
|
|
{ // gewijzigde standaardmelding
|
|
var sql = "SELECT sd.ins_srtdiscipline_ins obj"
|
|
+ " , sm.ins_srtinst_verplichtstatus req"
|
|
+ " , sm.alg_onrgoed_obj_niveau canhave_niveau"
|
|
+ " , sm.mld_stdmelding_prsafdobj canhave_prsafd"
|
|
+ " FROM mld_stdmelding sm"
|
|
+ " , mld_discipline md"
|
|
+ " , ins_srtdiscipline sd"
|
|
+ " WHERE sm.mld_ins_discipline_key = md.ins_discipline_key"
|
|
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
|
|
+ " AND sm.mld_stdmelding_key = ";
|
|
var oRs = Oracle.Execute(sql + new_stdm);
|
|
var new_obj_soft_req = oRs("req").Value == 21;
|
|
var new_obj_required = oRs("req").Value == 2;
|
|
oRs.Close;
|
|
var oRs = Oracle.Execute(sql + old_stdm);
|
|
var old_obj_allowed = oRs("obj").Value == 1;
|
|
var old_obj_niveau = oRs("canhave_niveau").Value || "";
|
|
var old_obj_prsafd = oRs("canhave_prsafd").Value;
|
|
oRs.Close();
|
|
if (new_obj_required)
|
|
{ // Het is nu verplicht een object te hebben waar de melding over gaat.
|
|
if (old_obj_allowed && (old_obj_niveau != "" || old_obj_prsafd > 0))
|
|
{ // De huidige melding kan objecten bevatten. Zijn er objecten bij de huidige melding geregistreerd?
|
|
var sql = "SELECT COUNT(*) aantal"
|
|
+ " FROM mld_melding_object"
|
|
+ " WHERE mld_melding_key = " + mld_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var old_has_obj = oRs("aantal").Value > 0;
|
|
oRs.Close();
|
|
if (!old_has_obj) // Geen objecten -> selecteer eerst object
|
|
abort_with_warning(L("lcl_mld_forward_err_add_obj"));
|
|
}
|
|
else
|
|
{
|
|
abort_with_warning(L("lcl_mld_forward_err_add_cont"));
|
|
}
|
|
}
|
|
else if (new_obj_soft_req)
|
|
{
|
|
// Heeft de oude situatie objecten.
|
|
var sql = "SELECT COUNT(*) aantal"
|
|
+ " FROM mld_melding_object"
|
|
+ " WHERE mld_melding_key = " + mld_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var old_has_obj = oRs("aantal").Value > 0;
|
|
oRs.Close();
|
|
|
|
// Als de oude situatie geen objecten heeft, hadden die wel ingevuld kunnen zijn.
|
|
if (!old_has_obj && old_obj_allowed)
|
|
{
|
|
var sql = "SELECT COALESCE(m.mld_alg_onroerendgoed_keys, m.mld_alg_locatie_key) onrgoed_keys"
|
|
+ " , COALESCE(a.alg_type, 'L') alg_type"
|
|
+ " FROM mld_melding m"
|
|
+ " , alg_v_allonroerendgoed a"
|
|
+ " WHERE m.mld_alg_onroerendgoed_keys = a.alg_onroerendgoed_keys(+)"
|
|
+ " AND mld_melding_key = " + mld_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var alg_key = oRs("onrgoed_keys").Value;
|
|
var alg_niveau = oRs("alg_type").Value;
|
|
oRs.Close();
|
|
|
|
var sql = get_objecten_sql(alg_key, alg_niveau, user_key, null, old_stdm, {extracode: "UITV"});
|
|
var oRs = Oracle.Execute(sql);
|
|
var old_had_obj = !oRs.eof;
|
|
oRs.Close();
|
|
if (old_had_obj) // geen objecten terwijl het wel mogelijk was -> selecteer eerst object
|
|
{
|
|
abort_with_warning(L("lcl_mld_forward_err_add_obj"));
|
|
}
|
|
}
|
|
// else: Er zijn objecten bekend bij deze melding, of er hadden nooit objecten ingevuld kunnen worden
|
|
}
|
|
}
|
|
|
|
var autoorder = has_new_stdm && this_stdm.autoorder == 1;
|
|
|
|
var result = { success: true, message: "", key: mld_key, autoorder: autoorder };
|
|
if ((fwdType == 1 && new_stdm == old_stdm && new_beh == old_beh) ||
|
|
(fwdType == 2 && new_mld_disc == old_mld_disc && new_beh2 == old_beh2))
|
|
{
|
|
result.message = L("lcl_not_forwarded");
|
|
result.success = false;
|
|
}
|
|
else
|
|
{
|
|
result.toaster = L("lcl_forwarded");
|
|
|
|
var fields = [];
|
|
if (fwdType == 1)
|
|
{
|
|
fields = [{ dbs: "mld_stdmelding_key", typ: "key", frm: "stdm", track: L("lcl_complain"), buildTrackText: buildStdmTrackText }];
|
|
|
|
if (S("mld_forward_can_assign") && mld_melding.primaire_behandelaar != 0)
|
|
{
|
|
fields.push({ dbs: "mld_melding_behandelaar_key", typ: "key", frm: "sBehandel", foreign: "prs_perslid" });
|
|
}
|
|
else if (mld_melding.mld_status != 5)
|
|
{
|
|
fields.push({ dbs: "mld_melding_behandelaar_key", typ: "key", val: -1, foreign: "prs_perslid" });
|
|
}
|
|
|
|
if (has_new_stdm && this_stdm.default_ins_disc_key && this_stdm.default_ins_disc_key > 0)
|
|
{
|
|
fields.push({ dbs: "mld_ins_discipline_key", typ: "key", val: this_stdm.default_ins_disc_key, track: L("mld_processing_group"), foreign: "mld_discipline" });
|
|
}
|
|
}
|
|
else if (fwdType == 2)
|
|
{
|
|
fields = [{ dbs: "mld_ins_discipline_key", typ: "key", frm: "mld_ins_discipline", track: true /*L("mld_processing_group")*/, foreign: "mld_discipline" }];
|
|
|
|
if (S("mld_forward_can_assign"))
|
|
{
|
|
fields.push({ dbs: "mld_melding_behandelaar2_key", typ: "key", frm: "sBehandel2", foreign: "prs_perslid" });
|
|
}
|
|
else if (mld_melding.mld_status != 5)
|
|
{
|
|
fields.push({ dbs: "mld_melding_behandelaar2_key", typ: "key", val: -1, foreign: "prs_perslid" });
|
|
}
|
|
}
|
|
|
|
fields.push({ dbs: "mld_melding_tag_key", typ: "key", frm: "tag_key", track: L("mld_melding_tag_naam"), foreign: "mld_tag" });
|
|
|
|
if (old_kpkey != new_kpkey)
|
|
fields.push({ dbs: "prs_kostenplaats_key", typ: "key", val: new_kpkey, track: L("lcl_mld_inf_Kostenplaats"), foreign: "prs_kostenplaats" });
|
|
|
|
if (S("mld_melding_flags") > 0)
|
|
fields.push({ dbs: "mld_melding_flag", typ: "number", frm: "mldflag" /* notrack */ });
|
|
|
|
// Altijd toevoegen als notitieveld.
|
|
|
|
var note = getFParam("opmerk", "");
|
|
var eigenMelding = user.isCollega(mld_melding.melder_key);
|
|
var zichtbaarFE = getFParam("zichtbaarFE", (eigenMelding ? "on" : "off"));
|
|
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: (zichtbaarFE=="on" ? 1 : 0) }
|
|
];
|
|
var noteIns = buildInsert("mld_melding_note", fields_note);
|
|
Oracle.Execute(noteIns.sql);
|
|
}
|
|
|
|
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 (this_stdm.planbaar != 2)
|
|
{
|
|
// 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();
|
|
|
|
var enddateTracking = "";
|
|
// Compare minutes, not (milli)seconds
|
|
if (Math.floor(einddatum.getTime()/60000) != Math.floor(einddatum_new.getTime()/60000))
|
|
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_new);
|
|
}
|
|
|
|
// 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);
|
|
|
|
if (this_stdm.planbaar != 2)
|
|
{
|
|
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();
|
|
|
|
// Compare minutes, not (milli)seconds
|
|
if (Math.floor(einddatum_std.getTime()/60000) != Math.floor(einddatum_std_new.getTime()/60000))
|
|
{
|
|
sql = "UPDATE mld_melding"
|
|
+ " SET mld_melding_einddatum = " + einddatum_std_new.toSQL(true)
|
|
+ " WHERE mld_melding_key = " + mld_key;
|
|
Oracle.Execute(sql);
|
|
enddateTracking = L("lcl_mld_enddate") + ": " + buildTrackText("datetime", einddatum, einddatum_std_new); // Vervangt mogelijke bestaande enddate-tracking
|
|
}
|
|
|
|
if (enddateTracking != "")
|
|
mldUpd.trackarray.push(enddateTracking);
|
|
}
|
|
|
|
mld.keepFlexDocuments(mld_key, old_stdm, new_stdm);
|
|
var flexdoctrack = mld.moveFlexStdmelding(mld_key, old_stdm, new_stdm);
|
|
|
|
// Sql met de huidige kenmerken rekening houdend met de juiste vakgroep en melding.
|
|
// Ander kenmerken worden door de functie saveFlexKenmerken verwijderd (FSN#18613)
|
|
// Alleen de verplichte kenmerken werden getoond en opgeslagen.
|
|
// Niet verplichte kenmerken die bij de oude melding ook voorkwamen blijven opgeslagen/bestaan.
|
|
currentKenmerkenSQL = "SELECT vk.mld_kenmerk_key"
|
|
+ " , mld_kenmerkmelding_waarde"
|
|
+ " , vk.mld_kenmerk_toonbaar"
|
|
+ " , vk.fac_functie_key"
|
|
+ " FROM mld_kenmerkmelding km"
|
|
+ " , mld_kenmerk vk"
|
|
+ " , mld_melding m"
|
|
+ " , mld_stdmelding s"
|
|
+ " , mld_discipline d"
|
|
+ " WHERE km.mld_kenmerk_key = vk.mld_kenmerk_key"
|
|
+ " AND km.mld_kenmerkmelding_verwijder IS NULL"
|
|
+ " AND km.mld_melding_key = m.mld_melding_key"
|
|
+ " AND m.mld_melding_key = " + mld_key
|
|
+ " AND s.mld_stdmelding_key = m.mld_stdmelding_key"
|
|
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND ((vk.mld_stdmelding_key IS NULL AND vk.mld_kenmerk_niveau = 'A')"
|
|
+ " OR (vk.mld_stdmelding_key = s.mld_stdmelding_key AND vk.mld_kenmerk_niveau = 'S')"
|
|
+ " OR (vk.mld_stdmelding_key = s.mld_ins_discipline_key AND vk.mld_kenmerk_niveau = 'D')"
|
|
+ " OR (vk.mld_stdmelding_key = d.ins_srtdiscipline_key AND vk.mld_kenmerk_niveau = 'T'))"
|
|
+ " AND vk.mld_kenmerk_key IN (SELECT mk.mld_kenmerk_key"
|
|
+ " FROM mld_kenmerk mk"
|
|
+ " , mld_srtkenmerk sk"
|
|
+ " , mld_stdmelding s"
|
|
+ " , mld_discipline d"
|
|
+ " , (SELECT mko.mld_kenmerk_key"
|
|
+ " , mko.mld_srtkenmerk_key"
|
|
+ " FROM mld_kenmerkmelding mkm"
|
|
+ " , mld_kenmerk mko"
|
|
+ " , mld_stdmelding so"
|
|
+ " , mld_discipline do"
|
|
+ " WHERE mkm.mld_kenmerk_key = mko.mld_kenmerk_key"
|
|
+ " AND so.mld_ins_discipline_key = do.ins_discipline_key"
|
|
+ " AND ((mko.mld_stdmelding_key IS NULL AND mko.mld_kenmerk_niveau = 'A')"
|
|
+ " OR (mko.mld_stdmelding_key = so.mld_stdmelding_key AND mko.mld_kenmerk_niveau = 'S')"
|
|
+ " OR (mko.mld_stdmelding_key = so.mld_ins_discipline_key AND mko.mld_kenmerk_niveau = 'D')"
|
|
+ " OR (mko.mld_stdmelding_key = do.ins_srtdiscipline_key AND mko.mld_kenmerk_niveau = 'T'))"
|
|
+ " AND mkm.mld_melding_key = " + mld_key
|
|
+ " AND so.mld_stdmelding_key = " + old_stdm + ") kenm_old"
|
|
+ " WHERE s.mld_ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND mk.mld_srtkenmerk_key = sk.mld_srtkenmerk_key"
|
|
+ " AND sk.mld_srtkenmerk_kenmerktype NOT IN ('M')"
|
|
+ " AND ((mk.mld_stdmelding_key IS NULL AND mk.mld_kenmerk_niveau = 'A')"
|
|
+ " OR (mk.mld_stdmelding_key = s.mld_stdmelding_key AND mk.mld_kenmerk_niveau = 'S')"
|
|
+ " OR (mk.mld_stdmelding_key = s.mld_ins_discipline_key AND mk.mld_kenmerk_niveau = 'D')"
|
|
+ " OR (mk.mld_stdmelding_key = d.ins_srtdiscipline_key AND mk.mld_kenmerk_niveau = 'T'))"
|
|
+ " AND mk.mld_srtkenmerk_key = kenm_old.mld_srtkenmerk_key(+)"
|
|
+ " AND s.mld_stdmelding_key = " + new_stdm
|
|
+ " AND mk.mld_kenmerk_verwijder IS NULL)";
|
|
|
|
allKenmerkenSQL = "SELECT COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
|
|
+ " , " + lcl.xsql("t.mld_srtkenmerk_omschrijving", "t.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
|
|
+ " , t.mld_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
|
+ " , t.mld_srtkenmerk_systeem kenmerk_systeem"
|
|
+ " , k.mld_kenmerk_toonbaar kenmerk_readonly"
|
|
+ " , k.mld_kenmerk_uniek kenmerk_uniek"
|
|
+ " , fac_kenmerkdomein_key"
|
|
+ " FROM mld_kenmerk k"
|
|
+ " , mld_srtkenmerk t"
|
|
+ " WHERE k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
|
|
+ " AND k.mld_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
|
|
|
|
var flextrack = [];
|
|
if (this_mld.canFlexChange) // anders veel te riskant (FSN#38017)
|
|
{
|
|
var flextrack = saveFlexKenmerken(mld_key, { kenmerkTable: "mld_kenmerkmelding",
|
|
kenmerkParentKey : "mld_melding_key",
|
|
kenmerkWaarde: "mld_kenmerkmelding_waarde",
|
|
kenmerkKey: "mld_kenmerk_key",
|
|
kenmerkToonbaar: "mld_kenmerk_toonbaar",
|
|
currentKenmerkenSQL: currentKenmerkenSQL,
|
|
allKenmerkenSQL: allKenmerkenSQL,
|
|
requestQF: Request.Form,
|
|
isNew: false,
|
|
flexPath: "MLD/M",
|
|
tracking: true,
|
|
module: "MLD"
|
|
});
|
|
}
|
|
|
|
if (mldUpd.trackarray.length || flexdoctrack.length || flextrack.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.concat(flexdoctrack).concat(flextrack).join("\n"));
|
|
}
|
|
|
|
// Als er child meldingen zijn, dan volgen het behandelteam en de behandelaar2 van de child die van de parent.
|
|
// Eerst nagaan of beide velden zijn gewijzigd.
|
|
var parentparams = {saveBehandelteam: old_mld_disc != new_mld_disc,
|
|
saveBehandelaar2: old_beh2 != new_beh2,
|
|
behandelteam_key: new_mld_disc,
|
|
behandelaar2_key: new_beh2
|
|
};
|
|
|
|
// Nu de childmeldingen als het behandelteam en/of de behandelaar2 zijn gewijzigd.
|
|
if (parentparams.saveBehandelteam || parentparams.saveBehandelaar2)
|
|
{
|
|
var child_arr = mld.getchildmeldingen(mld_key);
|
|
mld.updatechildren(child_arr, parentparams);
|
|
}
|
|
|
|
// 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 (has_new_stdm && 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)
|
|
{
|
|
if (mld_melding.mld_status == 2)
|
|
{
|
|
// Status blijft "Ingevoerd(2)". Zetten van de status genereert geen tracking en notificaties. Daarom daar zelf voor zorgen.
|
|
mld.trackmeldingforward(mld_key); // Zorgt voor "MLDFWD" tracking en daarme "MLD2BO" notificaties via mld.notifybackoffice.
|
|
}
|
|
else
|
|
{
|
|
// Status was "Geaccepteerd(4)" of "Uitgegeven(7)", kan alleen voorkomen als S("mld_forward_if_active") == 1, maar dat boeit ons hier niet
|
|
// Melding niet terugzetten naar 2 (nieuw) als er al opdrachten zijn. Dat is te zot (en geeft problemen met de opdracht update trigger)
|
|
var sql = "SELECT COUNT(mld_opdr_key) aantal"
|
|
+ " FROM mld_opdr o"
|
|
+ " WHERE mld_melding_key = " + mld_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var nrOpdracht = oRs("aantal").Value;
|
|
oRs.Close();
|
|
|
|
if (nrOpdracht == 0)
|
|
mld.setmeldingstatus(mld_key, 2); // Terug naar status "Ingevoerd(2)". Zorgt daarmee voor "MLDFWD" tracking en "MLD2BO" notificaties via mld.notifybackoffice.
|
|
}
|
|
}
|
|
mld.nextworkflowstep(mld_key, -1); // Is de nieuwe een workflowstart?
|
|
}
|
|
|
|
// Submit additional tracking MLDBEH als behandelaar is aangepast.
|
|
if (old_beh != new_beh)
|
|
mld.trackbehandelaar(mld_key, new_beh);
|
|
|
|
// Submit additional tracking MLDBHG als behandelteam is aangepast.
|
|
if (old_mld_disc != new_mld_disc)
|
|
mld.trackAndNotifyBehandelteam(mld_key, new_mld_disc);
|
|
// Submit additional tracking MLDABH als team-behandelaar is aangepast.
|
|
if (old_beh2 != new_beh2)
|
|
mld.trackbehandelaar2(mld_key, new_beh2);
|
|
}
|
|
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|
|
<% ASPPAGE_END(); %>
|