Files
Facilitor/APPL/PDA/melding.asp
Ruud Lipper 2f8e686bcb FSN#37032 Kostenplaats wordt onterecht leeg gemaak op mobile
svn path=/Website/trunk/; revision=29904
2016-06-30 08:47:53 +00:00

797 lines
36 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld_edit_melding.asp
Description: Bekijk/wijzig melding (Mobile version)
Parameters: mld_key voor bestaande melding
mld_key=-1 voor nieuwe melding, en dan
stdm_key
ins_key
ruimte_key
-
rest optioneel
Nog niet helemaal uitgekristalliseerd hoe de stdm geslecteerd en gefilterd kan worden, handigst
Note:
Je kunt en moet eenkostenplaats invullen:
- als bij vakgroeptype Defaultwaarde kosten klant "Standaard Aan" is
- als bij Vakgroep Kostenplaats verplicht aangevinkt is
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/get_objecten_sql.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../mld/mld_flexkenmerk.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<%
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
FCLTHeader.Requires({plugins: ["suggest"]});
var mld_key = getQParamInt("mld_key",-1);
var action = getQParam("action", "");
var qrc = getQParamInt("qrc", 0) != 0;
var meldbron_key = getQParamInt("meldbronkey", 7);
var mld_info = {};
var plaats_key = -1;
var plaats_niveau = "";
var ins_keys_arr = [];
var ins_name_arr = [];
var addSubheader = false;
// Mogelijke parameters voor toevoegen only
if (mld_key == -1)
{
// Verplicht:
var stdm_key = getQParamInt("stdm_key", -1);
if (stdm_key == -1) {
Server.Transfer("melding_new.asp"); // Ga maar eerst stdmelding kiezen
}
// Optioneel:
var ins_key = getQParamInt("ins_key", -1); // test 5009 Het kan zijn dat ik vanuit de lijst deze meekrijg om een nieuwe aan te maken
var ruimte_key = getQParamInt("ruimte_key", -1); // Het kan zijn dat ik vanuit de lijst deze meekrijg om een nieuwe aan te maken
addSubheader = (ins_key > -1 || ruimte_key > -1);
if (ruimte_key==-1 && ins_key > -1)
{
// Als ik een object heb kan ik zelf de plaats precies bepalen (ruimte; TODO of terrein)
var sql = " SELECT alg_ruimte_key,"
+ " alg_verdieping_key,"
+ " alg_gebouw_key,"
+ " alg_terreinsector_key," // doen we nog niets mee
+ " alg_locatie_key,"
+ " ins_deel_omschrijving,"
+ lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key')
+ " FROM ins_v_deel_gegevens d, ins_srtdeel sd"
+ " WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND d.ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
var locatie_key = oRs("alg_locatie_key").value;
var gebouw_key = oRs("alg_gebouw_key").value;
var verdieping_key = oRs("alg_verdieping_key").value;
ruimte_key = oRs("alg_ruimte_key").value;
var ins_name = oRs("ins_srtdeel_omschrijving").value+ " " +oRs("ins_deel_omschrijving").value;
oRs.Close();
}
else
{
// Deze zijn niet waarschijnlijk meegegeven, maar de defaultwaarde is ook al handig
var locatie_key = getQParamInt("locatie_key", -1); // Locatie
var gebouw_key = getQParamInt("gebouw_key", -1); // Gebouw, kan -1 zijn, dan niet gebruiken
var verdieping_key = getQParamInt("verdieping_key", -1);
var ruimte_key = getQParamInt("ruimte_key", -1);
if (locatie_key < 0 && gebouw_key < 0 && verdieping_key < 0 && ruimte_key < 0)
{ // Geen waarden meegegeven. Neem eigen werklocatie.
var locatie_key = user.alg_locatie_key({withcurrent:true});
var gebouw_key = user.alg_gebouw_key({withcurrent:true});
var verdieping_key = user.alg_verdieping_key({withcurrent:true});
var ruimte_key = user.alg_ruimte_key({withcurrent:true});
}
else if (ruimte_key > 0)
{ // Bepaald bovenliggende waarden
var sql = "SELECT alg_locatie_key"
+ " , alg_gebouw_key"
+ " , alg_verdieping_key"
+ " FROM alg_v_allonroerendgoed aog"
+ " WHERE aog.alg_onroerendgoed_keys = " + ruimte_key
+ " AND aog.alg_type = 'R'";
var oRs = Oracle.Execute(sql);
var locatie_key = oRs("alg_locatie_key").value;
var gebouw_key = oRs("alg_gebouw_key").value;
var verdieping_key = oRs("alg_verdieping_key").value;
}
else if (verdieping_key > 0)
{ // Bepaald bovenliggende waarden
var sql = "SELECT alg_locatie_key"
+ " , alg_gebouw_key"
+ " FROM alg_v_allonroerendgoed aog"
+ " WHERE aog.alg_onroerendgoed_keys = " + verdieping_key
+ " AND aog.alg_type = 'V'";
var oRs = Oracle.Execute(sql);
var locatie_key = oRs("alg_locatie_key").value;
var gebouw_key = oRs("alg_gebouw_key").value;
}
else if (gebouw_key > 0)
{ // Bepaald bovenliggende waarden
var sql = "SELECT alg_locatie_key"
+ " FROM alg_v_allonroerendgoed aog"
+ " WHERE aog.alg_onroerendgoed_keys = " + gebouw_key
+ " AND aog.alg_type = 'G'";
var oRs = Oracle.Execute(sql);
var locatie_key = oRs("alg_locatie_key").value;
}
}
}
if (mld_key > -1)
{
// BESTAANDE MELDING
var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding
user.auth_required_or_abort(this_mld.canReadAny);
mld_info = mld.mld_melding_info(mld_key);
sql = "SELECT l.alg_locatie_code||"
+ "NVL2(g.alg_gebouw_code,'-'||g.alg_gebouw_code,'') ||"
+ "NVL2(g.alg_verdieping_code,'-'||g.alg_verdieping_code,'') ||"
+ "NVL2(g.alg_ruimte_nr,'-'||g.alg_ruimte_nr,'')||"
+ "NVL2(g.alg_terreinsector_code,'-'||g.alg_terreinsector_code,'') plaatscode"
+ ", alg_onroerendgoed_omschrijving plaats "
+ ", g.alg_ruimte_key"
+ ", g.alg_onroerendgoed_keys"
+ ", g.alg_type"
+ " FROM "
+ " mld_melding m"
+ ", alg_v_allonrgoed_gegevens g"
+ ", alg_locatie l"
+ " WHERE mld_melding_key = " + mld_key
+ " AND m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys(+)"
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)";
var oRs = Oracle.Execute(sql);
var plaats_string = oRs("plaatscode").value ? oRs("plaatscode").value+" "+(oRs("plaats").value||"") : "";
var stdm_key = mld_info.stdm;
var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm);
if (oRs("alg_ruimte_key").value)
ruimte_key = oRs("alg_ruimte_key").value; // kan ik aan de ruimtebutton meegeven
plaats_key = oRs("alg_onroerendgoed_keys").value;
plaats_niveau = oRs("alg_type").value;
oRs.Close();
// Haal gerelateerde objecten op.
sql = "SELECT d.ins_deel_key"
+ " , d.ins_deel_omschrijving"
+ " , sd.ins_srtdeel_omschrijving"
+ " FROM mld_melding_object mo"
+ " , ins_deel d"
+ " , ins_srtdeel sd"
+ " WHERE mo.ins_deel_key = d.ins_deel_key"
+ " AND d. ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND mo.mld_melding_key = " + mld_key;
var oRso = Oracle.Execute(sql);
while (!oRso.eof)
{
ins_keys_arr.push(oRso("ins_deel_key").value);
ins_name_arr.push(oRso("ins_srtdeel_omschrijving").value+ " " +oRso("ins_deel_omschrijving").value);
oRso.MoveNext();
}
oRso.Close();
}
else
{
// NIEUWE MELDING Stdm_Key is ondertussen gegarandeerd
mld_info.stdm = stdm_key;
this_mld = {};
var melder_obj = user;
// Bepaal de gedetailleerdste plaats die mobiel bekend is of meegegeven.
plaats_key = ruimte_key;
plaats_niveau = "R";
if (plaats_key == -1) {plaats_key = verdieping_key; plaats_niveau = "V";}
if (plaats_key == -1) {plaats_key = gebouw_key; plaats_niveau = "G";}
if (plaats_key == -1) {plaats_key = locatie_key; plaats_niveau = "L";}
if (plaats_niveau == 'L')
sql = "SELECT l.alg_locatie_code plaatscode"
+ " , l.alg_locatie_plaats plaats"
+ " FROM alg_locatie l"
+ " WHERE l.alg_locatie_key = " + plaats_key;
else
sql = "SELECT l.alg_locatie_code||"
+ " NVL2(g.alg_gebouw_code,'-'||g.alg_gebouw_code,'') ||"
+ " NVL2(g.alg_verdieping_code,'-'||g.alg_verdieping_code,'') ||"
+ " NVL2(g.alg_ruimte_nr,'-'||g.alg_ruimte_nr,'')||"
+ " NVL2(g.alg_terreinsector_code,'-'||g.alg_terreinsector_code,'') plaatscode"
+ ", alg_onroerendgoed_omschrijving plaats "
+ " FROM alg_v_allonrgoed_gegevens g"
+ ", alg_locatie l"
+ " WHERE g.alg_onroerendgoed_keys = " + plaats_key
+ " AND g.alg_type = " + safe.quoted_sql(plaats_niveau)
+ " AND g.alg_locatie_key = l.alg_locatie_key";
var oRs = Oracle.Execute(sql);
var plaats_string = !oRs.Eof && oRs("plaatscode").value? oRs("plaatscode").value + " " + oRs("plaats").value : "";
var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm);
mld_info.srtdisc = stdm_info.ins_srtdiscipline_key;
mld_info.show_ins = stdm_info.ins_srtdiscipline_ins;
mld_info.srtinst_verplicht = stdm_info.srtinst_verplicht;
var mandaat_eigen_kp = S("prs_dep_default_kpn") || stdm_info.show_eigen_kp == 1; // voor alle vakgroepen gemandateerd op eigen kp
mld_info.mld_kk = stdm_info.ins_srtdiscipline_kostenklant;
mld_info.prefix = stdm_info.ins_srtdiscipline_prefix;
if (mandaat_eigen_kp == 1 && mld_info.mld_kk == 1)
mld_info.kostenpl_key = melder_obj.afdeling().prs_kostenplaats_key() || -1;
mld_info.mld_stdmelding_omschrijving = stdm_info.stdmelding_omschrijving ;
mld_info.srtdisc_oms = stdm_info.srtdisc_oms;
mld_info.ins_discipline_omschrijving = stdm_info.discipline_omschrijving;
}
var subject = (mld_key > -1
? (mld_info.prefix || "")+ mld_key + " " + mld_info.mld_stdmelding_omschrijving
: L("lcl_mobile_new").format(mld_info.mld_stdmelding_omschrijving )
);
var subjectSubheader = "";
if (addSubheader)
{
if (ins_key > -1)
subjectSubheader = L("lcl_mobile_about").format(ins_name);
else if (ruimte_key > -1)
subjectSubheader = L("lcl_mobile_at").format(plaats_string);
}
// TODO lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
%>
<html>
<head>
<% FCLTMHeader.Generate({title: subject }); %>
<script type="text/javascript">
var timerID=null;
function delayed(delay, fn)
{
if (timerID) clearTimeout(timerID);
timerID = setTimeout(fn, delay);
}
function mld_accept()
{ // E<>rst accepteren, dan saven. Ander heb je met BOF maar zonder FOF een probleem
$.post( "../mld/mld_accept_save.asp?mld_key=<%=mld_key%>"
, $("[name=meld]").serialize()
, FcltCallbackAndThen(function ()
{
$.post( $("form[name=meld]")[0].action
, $("[name=meld]").serialize()
, McltCallbackRefresh
, "json");
})
, "json");
return false;
};
function mld_close()
{
$.post( $("form[name=meld]")[0].action
, $("[name=meld]").serialize()
, FcltCallbackAndThen(function ()
{
$.post( "../mld/mld_close_save.asp?mld_key=<%=mld_key%>"
, $("[name=meld]").serialize()
, McltCallbackRefresh
, "json");
})
, "json");
return false;
};
function mld_submit_callback(json)
{
if (json.doublecheck)
{
alert("<%=L("lcl_mld_already_registered")%>");
return;
}
if (json.success)
{
if (json.mld_key > 0 && !json.opdr_key) // Na opslaan opdracht niet nog een keer de melding weergeven.
<% if (qrc) { %>
alert("<%=L("lcl_pda_mld_call_confirm")%>");
McltCallbackClose(json);
<% } else { %>
jqToast(L("lcl_mobile_data_saved")); // ' onder nummer ... '
<% } %>
<% if (mld_key < 0)
{ %>
if (json.autoorder)
{
var data = { mld_key: json.mld_key,
urole: "fe",
autoorder: 1 };
<% protectRequest.dataToken("data"); %>
$.post("../mld/mld_edit_opdr_save.asp",
data,
McltCallbackAndThenAlways(function () { mld_submit_callback({success: true, mld_key: json.mld_key }) }),
"json");
verynew="0"; // zo nieuw zijn we niet meer.
}
else
<% } %>
{
<% if (qrc) { %>
// Waarschijnlijk QR-code op koffieautomaat. Niet naar andere schermen springen.
$("input[name=mld_key]").val(json.mld_key);
<% } else if (mld_key < 0){ %>
// Nieuwe melding aangemaakt. Altijd complete reload, we hebben nu een mld_key namelijk
window.location.href = "melding.asp?mld_key=" + json.mld_key;
<% } else { %>
// Opslaan button geklikt. Er hoeft niet gerefreshed te worden. Er kan direct weer gewijzigd worden (Afhandeling)
<% } %>
}
}
};
function mld_submit()
{
if (!validateForm("meld"))
return false;
// Als er een object gekozen is moet de ruimte_key daarvan ook in de formparams worden opgeslagen voor betere plaatsbepaling van de melding.
var rtyp = $("#r_objs :selected").attr("ins_alg_ruimte_type");
if (rtyp=="R")
{
var rkey = $("#r_objs :selected").attr("ins_alg_ruimte_key") || -1;
$("#ruimtekey").val(rkey);
}
// TODO: Wat met doublecheck
// Misschien automatisch forcesave of juist alert dat probleem al gemeld is?
// 5.2.2 Gold D: inderdaad vooralsnog forcesafe
$.post($("form[name=meld]")[0].action, $("form[name=meld]").serialize(), McltCallbackAndThenAlways(mld_submit_callback), "json");
return false;
}
function mld_forward()
{
window.location.href = "melding_new.asp?mld_key=<%=mld_key%>&action=forward";
}
function PasteFromSelectbox()
{
if ($("#stdremark :selected").val() > -1)
{
$("#remark").focus();
var PastedText = $("#stdremark :selected")[0].getAttribute("afmeldtekstoms");
$("#remark").val($("#remark").val() + ($("#remark").val() != ""? "\n" : "") + PastedText);
}
}
function mld_forward_cancel()
{
window.location.href = "../pda/melding.asp?mld_key=<%=mld_key%>";
}
function mld_forward_submit()
{
if (!validateForm("u2"))
return false;
$.post($("form[name=meld_fwd]")[0].action,
$("[name=meld_fwd]").serialize(),
mld_forward_submit_callback,
"json");
return true;
}
function mld_forward_submit_callback(jdata)
{
// Moet er voor de melding met een nieuwe stdmelding automatisch een opdracht aangemaakt worden?
if (jdata.autoorder)
{
var data = { mld_key: <%=mld_key%>,
message: jdata.message,
autoorder: 1
};
<% protectRequest.dataToken("data"); %>
$.post("../mld/mld_edit_opdr_save.asp",
data,
FcltCallbackAndThenAlways(afsluiten),
"json");
}
else
afsluiten(jdata);
}
function afsluiten(jdata)
{ // Sluit onszelf.
//jqToast(jdata.message);
alert(jdata.message);
window.location.href = "melding.asp?mld_key=<%=mld_key%>";
}
</script>
</head>
<body>
<div>
<%
if (action != "forward")
{
PAGE_START({id: "page-1-"+mld_key});
HEADER({title: safe.html(subject), back:!qrc, home: !qrc, datatheme: (1||mld_info.melder_key==user_key ? jQFrontEndTheme : null) });
if (addSubheader)
HEADER({title: safe.html(subjectSubheader), datatheme: jQHeaderTheme});
CONTENT_START();
// Altijd forcesave omdat we geen doublecheck aankunnen
%>
<form name="meld" id="meld" action="../mld/mld_edit_melding_save.asp" method="post">
<input type="hidden" name="mld_key" value="<%=mld_key%>">
<input type="hidden" name="forcesave" id="forcesave" value="0">
<input type="hidden" name="parent_key" id="parent_key" value="-1">
<input type="hidden" name="urole" value="<%=mld_key > 0? "bo" : "fe"%>">
<input type="hidden" name="stdm" value="<%=mld_info.stdm%>">
<%
if (mld_key == -1)
{ // Nieuw, maar deze velden kunnen we zelf verzinnen
%>
<input type="hidden" name="person" value="<%=user_key%>">
<input type="hidden" name="locatiekey" value="<%=locatie_key%>">
<input type="hidden" name="gebouwkey" value="<%=gebouw_key%>">
<input type="hidden" name="verdiepingkey" value="<%=verdieping_key%>">
<input type="hidden" name="ruimtekey" id="ruimtekey" value="<%=ruimte_key%>">
<input type="hidden" name="meldbronkey" value="<%=meldbron_key%>">
<%
}
else
{ // Voor bestaande melding moet de start en einddatum mee worden gegeven aan mld_edit_melding_save
// om te voorkomen dat deze daar gevuld worden met default sysdate.
%>
<input type="hidden" name="startdate" value="<%=mld_info.melddatum.getTime()%>">
<input type="hidden" name="enddate" value="<%=mld_info.einddatum.getTime()%>">
<%
}
if (mld_key > -1) // bestaande
{
BLOCK_START({collapsed: true, title: L("lcl_mld_frame_algemeen")});
var prs_melder = new Perslid(mld_info.melder_key);
ROFIELD("fld", L("lcl_caller") , prs_melder.naam(), { moreinfo: "tel:"+(prs_melder.prs_perslid_mobiel()||prs_melder.prs_perslid_telefoonnr()) });
ROFIELD("fld", L("lcl_mld_date_time") , toDateTimeString(mld_info.melddatum));
ROFIELD("fld", L("lcl_vakgroup") , (mld_info.prefix ? mld_info.prefix+"-" : "") + mld_info.ins_discipline_omschrijving);
BLOCK_END();
}
if (mld_info.show_ins && stdm_info.alg_onrgoed_obj_niveau)
{
if (ins_key > 0 && mld_key < 0)
{ // Nieuwe melding waarbij het object bekend is: via qrc-code
%><input type="hidden" name="has_r_objs" value="1">
<input type="hidden" name="r_objs" value="<%=ins_key%>">
<%
}
else if (ins_name_arr.length < 2 && (mld_key < 0 || this_mld.canPlaatsChange)) // Meerdere objecten bewerken ondersteunen we niet.
{
%><input type="hidden" name="has_r_objs" value="1"><%
var sql = get_objecten_sql(plaats_key, plaats_niveau, user_key, null, mld_info.stdm);
var tsql = "SELECT count(*) aantal FROM (" + sql + ")";
var toRs = Oracle.Execute(tsql);
var aantalObj = toRs("aantal").value;
toRs.close();
var EmptyOption = true;
if (aantalObj > 0 || mld_info.srtinst_verplicht)
{
if (aantalObj && mld_info.srtinst_verplicht)
EmptyOption = false;
FCLTselector( "r_objs"
, sql
, { initKey: ins_keys_arr.length?ins_keys_arr[0]:-1
, label: L("lcl_gerelateerdeobjecten")
, mobile: true
, extraParamValue: "ins_alg_ruimte_key,ins_alg_ruimte_type"
, emptyOption: (EmptyOption ? L("lcl_select_object") : null)
, required: mld_info.srtinst_verplicht
}
);
}
}
else if (ins_name_arr.length)
ROFIELD("fld", L("lcl_gerelateerdeobjecten"), ins_name_arr.join("\n"), {multi: ins_name_arr.length > 1});
}
if (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info.kpnverplicht) {
FCLTkostenplaatsselector("account",
"sgAccount",
user_key,
{ kostenplaatsKey: mld_info.kostenpl_key || -1,
label: L("lcl_mld_inf_Kostenplaats"),
extraParamField: "module",
extracode: "M",
filtercode: "AA",
required: true
});
}
else
{
%> <input type="hidden" name="account" id="sgAccount" value="<%=mld_info.kostenpl_key || -1 %>">
<%}
if (mld_key > -1)
{
ROFIELD("fld", L("lcl_place"), plaats_string, {suppressEmpty: true} );
ROFIELD("fld", L("lcl_txt") , mld_info.mld_omschr, {multi: true});
if (mld_info.mprio != 3) {
ROFIELD("attention", L("lcl_mld_urg") , mld.getpriotext(mld_info.mprio));
}
if (mld_info.behandel_key)
{
var prs_behandelaar = new Perslid(mld_info.behandel_key);
ROFIELD((mld_info._behandel_key != user_key ?"attention":"fld"), L("lcl_mld_behandelaar") , prs_behandelaar.naam(), {suppressEmpty: true });
}
generateFlexKenmerkBlock ({
fnpre : function () {},
fnpost : "",
stdm_arr : [mld_info.stdm],
mld_key : mld_key,
prs_key : user_key,
reado : (mld_key > 0 && !this_mld.canFlexChange),
mobile : true
});
}
else // Nieuwe
{
if (stdm_info.freetext > 0)
RWFIELD("melding_omschrijving", L("lcl_txt"), "", {multi: true, pclass: (stdm_info.freetext==2 ? "required" : "") });
generateFlexKenmerkBlock ({
fnpre : function () {},
fnpost : "",
stdm_arr : [mld_info.stdm],
mld_key : mld_key,
prs_key : user_key,
reado : (mld_key > 0 && !this_mld.canFlexChange),
mobile : true
});
}
if (mld_key > -1)
{
if (this_mld.canAfhandChange)
{
sql = "SELECT COUNT(*) aantal"
+ " FROM mld_afmeldtekst"
+ " WHERE mld_stdmelding_key IS NULL"
+ " OR mld_stdmelding_key = " + mld_info.stdm
oRs2 = Oracle.Execute(sql);
if (oRs2("aantal").value > 0)
{
sql = "SELECT mld_afmeldtekst_key"
+ " , " + lcl.xsqla('mld_afmeldtekst_naam', 'mld_afmeldtekst_key')
+ " , " + lcl.xsql('mld_afmeldtekst_omschrijving', 'mld_afmeldtekst_key') + " afmeldtekstoms"
+ " FROM mld_afmeldtekst"
+ " WHERE mld_stdmelding_key IS NULL"
+ " OR mld_stdmelding_key = " + mld_info.stdm
+ " ORDER BY 2";
FCLTselector("stdremark",
sql,
{ label: L("lcl_mld_inf_std_opm"),
initKey: -1,
emptyOption: "",
extraParamValue: "afmeldtekstoms",
onChange: "PasteFromSelectbox()",
mobile: true});
}
RWFIELD("remark", L("lcl_mld_inf_Opmerking"), mld_info.remark, {multi: true});
}
else
{
if (mld_info.parent_key) // gekoppelde melding verwijst naar de parent voor afhandeling
{
var sprefix = mld.mld_prefix(mld_info.parent_key);
var params = { moreinfo: "melding.asp?mld_key=" + mld_info.parent_key, disabled: true};
ROFIELD("fld", L("lcl_mld_completion_in"), sprefix + mld_info.parent_key, params);
}
else
ROFIELD("fld", L("lcl_mld_inf_Opmerking"), mld_info.remark);
}
}
// TODO: moeten we dit nog wel doen?
// Zijn er nog lopende opdrachten?
var canCloseOpdr = [];
var sqlC = "SELECT o.mld_opdr_key"
+ " FROM mld_opdr o"
+ " WHERE o.mld_melding_key = " + mld_key
+ " AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9)"
var oRsC = Oracle.Execute(sqlC);
while (!oRsC.eof)
{ // Voor elke opdracht controleren of deze afgemeld mogen worden
var this_opdr = mld.func_enabled_opdracht(oRsC("mld_opdr_key").value);
if (!this_opdr.canClose)
{ // Geen autorisatie om alle opdracht af te melden-->dan geen enkele
canCloseOpdr = [];
break;
}
canCloseOpdr.push(oRsC("mld_opdr_key").value);
oRsC.MoveNext();
}
if (mld_key > -1)
{
// Controleer of dit soort meldingen een BES component heeft of gedefinieerde MLD opdrachttypes.
// Bovendien hebben deze frames pas zin als de status minstens Geaccepteerd is
// (Alleen BO mag aanmaken, kan dat gelijk na invoer doen, maar zo niet dan eerst accepteren)
var mfe = mld.func_enabled_melding(mld_key); // heb ik uberhaubt leesrechten
var showbes = false;
var showord = false;
var ordzichtbaarfe = false;
if (mld_info.mld_status >= 4 )
{ // niet afgewezen(1), ingevoerd(2) of ingezien(3)
showbes = mld_info.show_bes; // Heeft voor een gegeven (srt)discipline een vaste waarde
// De opdrachttypes behorende bij de srtdiscipline of bij de discipline
sql = "SELECT mto.mld_typeopdr_zichtbaarfe"
+ " FROM ins_srtdiscipline sd"
+ " , mld_discipline d"
+ " , mld_typeopdr_srtdiscipline tsd"
+ " , mld_typeopdr mto"
+ " WHERE tsd.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
+ " AND tsd.ins_discipline_key IS NULL"
+ " AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key"
+ " AND tsd.mld_typeopdr_key = mto.mld_typeopdr_key"
+ " AND d.ins_discipline_key = " + mld_info.disc
+ " UNION ALL"
+ " SELECT mto.mld_typeopdr_zichtbaarfe"
+ " FROM ins_srtdiscipline sd"
+ " , mld_discipline d"
+ " , mld_typeopdr_srtdiscipline tsd"
+ " , mld_typeopdr mto"
+ " WHERE tsd.ins_discipline_key = d.ins_discipline_key"
+ " AND tsd.ins_discipline_key IS NOT NULL" // overbodig, maar wel duidelijk verschil met eerste clause
+ " AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key"
+ " AND tsd.mld_typeopdr_key = mto.mld_typeopdr_key"
+ " AND d.ins_discipline_key = " + mld_info.disc
+ " ORDER BY 1 DESC"; // zodat echte waarden eerder komen dan de null-waarden
ooRs = Oracle.Execute(sql);
if (!ooRs.eof)
showord = true;
while (!ooRs.eof)
{ // Alle opdrachttypes doorlopen. Wellicht zit er een opdrachttype bij die wel door de fe zichtbaar is en die mogelijk opdrachten bevat die de fe mag zien.
ordzichtbaarfe = ordzichtbaarfe || (ooRs("mld_typeopdr_zichtbaarfe").value == 1 && mld_info.melder_key == user_key); // Het moet ook mijn eigen melding zijn
ooRs.MoveNext();
}
ooRs.Close(); // de overige records interesseren me in het geheel niet, ik weet al genoeg.
}
// Heeft men voldoende rechten om naar opdrachten te gaan?
var opdr_page = "";
var hasParent = mld_info.parent_key != null; // dan geen opdrachten of bestellingen
if (!hasParent && mfe.canReadAny) // Mocht ik geen leesrechten hebben, dan ook de opdrachten en bestellingen niet tonen.
{
var this_opdr = mld.func_enabled_mld(mld_info.disc, "D"); // wat mag ik zoal op een nieuwe melding
if ((this_opdr.canORDBOFread) && showord)
{
opdr_page = "./orders_list.asp?mld_key="+mld_key+"&urole=" + (this_opdr.canORDBOFread? "bo" : urole);
}
}
}
CONTROLGROUP_START()
if (this_mld.canChange || mld_key == -1) {
BUTTON((mld_key>-1 ? L("lcl_submit") : L("lcl_newsubmit")), {click: "mld_submit()", dataicon: "refresh"});
}
if (mld_key > -1) {
if (this_mld.canAccept) {
BUTTON(L("lcl_mld_accept"), {click: "mld_accept()", dataicon: "check"});
}
if (this_mld.canClose) {
BUTTON(L("lcl_close"), {click: "mld_close()", dataicon: "check"});
}
if (this_mld.canForward || this_mld.canFixMelding) { // bo2bo
BUTTON( (this_mld.canForward?L("lcl_forward"):L("lcl_fixmelding")),
{ click: "mld_forward()",
dataicon: "forward",
dataajax: "false"} );
}
var tsql = "SELECT COUNT(ins_deel_key) FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key;
toRs = Oracle.Execute(tsql);
if (toRs(0).value>0) {
if (toRs(0).value==1)
{
tsql = "SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key;
toRs1 = Oracle.Execute(tsql);
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_deel.asp?ins_key="+toRs1("ins_deel_key").value, dataicon: "info", dataajax: 'false'});
}
else
BUTTON(L("lcl_mobile_objecten")+" ("+toRs(0).value+")", {linkid: "./ins_list.asp?mld_key="+mld_key, dataicon: "info", dataajax: 'false'});
}
trackinglines = mobile.hastrackingpage('melding', mld_key);
if (trackinglines>0) {
BUTTON(L("lcl_history"), {linkid: "#mld-2-"+mld_key, dataicon: "bullets", transition: "pop", datarel: "dialog"});
}
if (mfe.canReadNotes) { // Heb ik rechten om notities te zien
var tsql = "SELECT COUNT(*) FROM mld_melding_note n WHERE n.mld_melding_key = " + mld_key;
toRs = Oracle.Execute(tsql);
BUTTON(L("lcl_mld_frame_notes")+" ("+toRs(0).value+")", {linkid: "./notitie.asp?node=melding&key="+mld_key, dataicon: "comment", dataajax: 'false'});
}
if (ruimte_key > -1 && user.checkAutorisation( "WEB_ALGUSE", true)) {
BUTTON(L("lcl_room"), {linkid: "./ruimte.asp?ruimte_key="+ruimte_key, dataicon: "info", dataajax: 'false'});
}
if (opdr_page != "") {
var tsql = "SELECT COUNT(*) FROM mld_opdr o WHERE o.mld_melding_key = " + mld_key
+ " AND o.mld_statusopdr_key IN (4, 5, 8)"; // zelfde als die in orders_list worden getoond
toRs = Oracle.Execute(tsql);
BUTTON(L("lcl_mobile_opdrachten")+" ("+toRs(0).value+")", {linkid: opdr_page, dataicon: "action", dataajax: "false"});
}
}
CONTROLGROUP_END()
IFACE.FORM_END();
%>
</form>
<%
CONTENT_END();
FOOTER();
PAGE_END()
if (mld_key > -1)
{
if (trackinglines>0) {
PAGE_START({id: "mld-2-"+mld_key})
mobile.trackingpage('melding', mld_key, (mld_info.prefix || "")+ mld_key);
PAGE_END();
}
// Deze pagina zou nog niet hoeven als er geen notes zijn, geeft niks
PAGE_START({id: "mld-3-"+mld_key})
mobile.notespage('melding', mld_key, (mld_info.prefix || "")+ mld_key);
PAGE_END();
}
}
if (action == "forward")
{
var stdm_key = getQParamInt("stdm_key", -1);
var disc_key = getQParamInt("srtdisc", -1);
PAGE_START({id: "mld-4-"+mld_key});
HEADER({title: L("lcl_mld_forward_mld").format((mld_info.prefix || "") + mld_key), back:!qrc });
CONTENT_START();
%>
<form name="meld_fwd" id="meld_fwd" action="../mld/mld_forward_save.asp?mld_key=<%=mld_key%>" method="post">
<input type="hidden" name="disc" id="disc" value="<%=disc_key%>">
<input type="hidden" name="stdm" id="stdm" value="<%=stdm_key%>">
<%
ROFIELD("fld", L("lcl_vakgroup"), stdm_info.discipline_omschrijving);
ROFIELD("fld", L("lcl_complain"), stdm_info.stdmelding_omschrijving);
ROFIELD("fld", "", mld_info.remark); // De opmerking/afhandeling die er al stond...
RWFIELD("opmerk", L("lcl_mld_inf_Opmerking"), "", {multi: true, pclass: (stdm_info.freetext==2 ? "required" : "")});
CONTROLGROUP_START()
BUTTON(L("lcl_forward"), {click: "mld_forward_submit()", dataicon: "check"} );
BUTTON(L("lcl_cancel"), {click: "mld_forward_cancel()", dataicon: "back"} );
CONTROLGROUP_END()
IFACE.FORM_END();
%>
</form>
<%
CONTENT_END();
FOOTER();
PAGE_END();
}
%>
</div>
</body>
</html>