AAIT#33554: Object aan melding kunnen koppelen via opdracht.

svn path=/Website/trunk/; revision=27487
This commit is contained in:
Maykel Geerdink
2015-12-17 15:01:39 +00:00
parent 571b3a8f1e
commit b0e7cb440e
5 changed files with 324 additions and 113 deletions

View File

@@ -136,6 +136,61 @@ mld = {setmeldingstatus:
shared.trackaction("MLDAFR", mld_key, ptxt);
},
gettrackobjects:
function (mld_key, obj_arr)
{ // Objecten tracken die worden verwijderd.
sql = "SELECT '' || d.ins_deel_omschrijving || ' (' || s.ins_srtdeel_omschrijving || ')' deel"
+ " FROM mld_melding_object mo"
+ " , ins_deel d"
+ " , ins_srtdeel s"
+ " WHERE mo.ins_deel_key = d.ins_deel_key"
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND mo.mld_melding_key = " + mld_key
+ " AND d.ins_deel_key NOT IN (" + obj_arr.join(",") + ")";
var oRs = Oracle.Execute(sql);
var first = true;
var deleted_objects = "";
while(!oRs.eof)
{
if (first)
{
deleted_objects = L("lcl_mld_del_obj") + ": ";
first = false;
}
else
deleted_objects += ",\n";
deleted_objects += oRs("deel").Value;
oRs.MoveNext();
}
// Objecten tracken die worden toegevoegd.
sql = "SELECT '' || d.ins_deel_omschrijving || ' (' || s.ins_srtdeel_omschrijving || ')' deel"
+ " FROM ins_deel d"
+ " , ins_srtdeel s"
+ " WHERE d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_deel_key IN (" + obj_arr.join(",") + ")"
+ " AND d.ins_deel_key NOT IN (SELECT mo.ins_deel_key FROM mld_melding_object mo WHERE mo.mld_melding_key = " + mld_key + ")";
var oRs = Oracle.Execute(sql);
first = true;
var added_objects = "";
while(!oRs.eof)
{
if (first)
{
added_objects = L("lcl_mld_add_obj") + ": ";
first = false;
}
else
added_objects += ",\n";
added_objects += oRs("deel").Value;
oRs.MoveNext();
}
oRs.Close();
return (deleted_objects != ""? deleted_objects + "\n" : "") + added_objects;
},
notifyopdrachtgoedkeuren:
function (opdr_key)
{ // Alle goedkeurders een notificatie (ORD2GO) sturen voor de volgend goedkeuring.
@@ -1402,7 +1457,7 @@ mld = {setmeldingstatus:
+ " , mld_melding_datum"
+ " , s.mld_ins_discipline_key"
+ " , m.mld_stdmelding_key"
+ " , mld_alg_onroerendgoed_keys"
+ " , m.mld_alg_onroerendgoed_keys"
+ " , m.mld_melding_t_uitvoertijd.tijdsduur uitvoertijd_tijdsduur"
+ " , m.mld_melding_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ " , m.mld_melding_einddatum"
@@ -1416,7 +1471,6 @@ mld = {setmeldingstatus:
+ " , m.mld_melding_opmerking"
+ " , m.prs_perslid_key"
+ " , m.prs_perslid_key_voor"
+ " , m.mld_alg_onroerendgoed_keys"
+ " , m.mld_melding_status"
+ " , m.mld_melding_t_respijt.tijdsduur respijt_tijdsduur"
+ " , m.mld_melding_t_respijt.eenheid respijt_eenheid"

View File

@@ -496,28 +496,11 @@ if (savemode)
mld.setmeldingstatus(mld_key, 5);
}
if (getFParamInt("has_r_objs",0)==1) // voorkom dat we wissen vanuit mobile-save die helemaal geen listbox heeft
{
// Objecten
sql = " DELETE mld_melding_object"
+ " WHERE mld_melding_key = " + mld_key
+ (obj_arr.length != 0
? " AND ins_deel_key NOT IN (" + obj_arr.join(",") + ")"
: "")
Oracle.Execute(sql);
if (obj_arr.length != 0)
{
sql = "INSERT INTO mld_melding_object"
+ " (mld_melding_key, ins_deel_key)"
+ " SELECT " + mld_key
+ ", ins_deel_key"
+ " FROM ins_v_aanwezigdeel"
+ " WHERE ins_deel_key IN (" + obj_arr.join(",") + ")"
+ " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND ins_deel_key NOT IN"
+ " (SELECT ins_deel_key FROM mld_v_aanwezigmelding_object WHERE mld_melding_key = " + mld_key + ")";
Oracle.Execute(sql);
}
if (getFParamInt("has_r_objs", 0) == 1) // voorkom dat we wissen vanuit mobile-save die helemaal geen listbox heeft
{ // Objecten tracken die worden verwijderd of toegevoegd.
var objtrack = mld.gettrackobjects(mld_key, obj_arr);
if (!isNew)
mldUpd.trackarray.push(objtrack);
}
// Eventuele (gewijzigde) objecten zijn nu ook opgeslagen.

View File

@@ -29,6 +29,7 @@
<!-- #include file="../Shared/uitvoerendeselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/kostensoortselector.inc" -->
<!-- #include file="../Shared/get_objecten_sql.inc" -->
<!-- #include file="mld_flexkenmerk.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="mld.inc" -->
@@ -146,83 +147,42 @@ if (autfunction == "WEB_ORDBOF" && !(authparams.PRSwritelevel < 9 || authparams.
// JGL Het omgekeerde, write op ORDBOF maar read ORDBO2 kwam bij ATCH voor: FSN#17306
// Haal gerelateerde melding gegevens op
sql = "SELECT COALESCE(mld_alg_locatie_key, -1) alg_locatie_key"
+ " , COALESCE(g.alg_gebouw_key, -1) alg_gebouw_key"
+ " , COALESCE(g.alg_verdieping_key, -1) alg_verdieping_key"
+ " , COALESCE(g.alg_ruimte_key, -1) alg_ruimte_key"
+ " , m.mld_melding_omschrijving"
+ " , " + lcl.xsqla('s.mld_stdmelding_omschrijving', 's.mld_stdmelding_key')
+ " , s.mld_stdmelding_key"
+ " , s.mld_typeopdr_key"
+ " , s.prs_dienst_key"
+ " , s.mld_ins_discipline_key"
+ " , md.ins_srtdiscipline_key"
+ " , md.ins_discipline_kpnverplicht"
+ " , l.alg_locatie_key"
+ " , m.prs_kostenplaats_key"
+ " , COALESCE(s.prs_kostensoort_key, md.prs_kostensoort_key) prs_kostensoort_key"
+ " , m.mld_kosten_klant"
+ " , m.mld_melding_ordernr"
+ " , m.mld_alg_onroerendgoed_keys"
+ " , m.prs_perslid_key"
+ " , m.mld_melding_datum"
+ " , m.mld_melding_einddatum"
var mld_melding = mld.mld_melding_info(mld_key); // Globale variabele met alle mld_melding informatie
sql = "SELECT s.prs_dienst_key"
+ " , CASE"
+ " WHEN COALESCE (kp.prs_kostenplaats_eind, SYSDATE + 1) > SYSDATE"
+ " THEN 1"
+ " ELSE 0"
+ " END kpgeldig"
+ " , m.mld_melding_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ " , sd.ins_srtdiscipline_prefix"
+ " , s.alg_onrgoed_obj_niveau"
+ " , m.prs_kostenplaats_key"
+ " FROM mld_melding m"
+ " , alg_v_allonrgoed_gegevens g"
+ " , alg_locatie l"
+ " , mld_stdmelding s"
+ " , mld_discipline md"
+ " , prs_kostenplaats kp"
+ " , ins_srtdiscipline sd"
+ " WHERE m.mld_melding_key = " + mld_key
+ " AND s.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
+ " AND m.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND m.mld_alg_locatie_key = l.alg_locatie_key(+)"
+ " AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)"
+ " AND m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys(+)";
+ " AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)";
oRs = Oracle.Execute(sql);
var stdm_prs_dienst_key = oRs("prs_dienst_key").Value || -1; // default volgens stdm
var defkp_key = oRs("kpgeldig").Value == 1? (oRs("prs_kostenplaats_key").Value || -1) : -1; // de defaultwaarde komt van de melding en moet nog wel geldig zijn.
var alg_onrgoed_obj_niveau = oRs("alg_onrgoed_obj_niveau").Value || "";
oRs.close();
var loc_key = oRs("alg_locatie_key").Value;
var bld_key = oRs("alg_gebouw_key").Value;
var flr_key = oRs("alg_verdieping_key").Value;
var room_key = oRs("alg_ruimte_key").Value;
var stdm = oRs("mld_stdmelding_omschrijving").Value;
if (opdr_key < 0 && !copy) // Nu default omschrijving van de opdracht vullen met flexkenmerken
{
mld_opdr.opdr_omschr = oRs("mld_melding_omschrijving").Value? oRs("mld_melding_omschrijving").Value : ""; // initieel melding omschrijving overnemen
mld_opdr.opdr_omschr = mld_melding.mld_omschr? mld_melding.mld_omschr : ""; // initieel melding omschrijving overnemen
if (S("mld_ord_flexsummary") == 1)
mld_opdr.opdr_omschr += mld.getFlexSummary(mld_key);
}
var kosten_klant = oRs("mld_kosten_klant").Value? 1 : 0;
var disckey = oRs("mld_ins_discipline_key").Value;
var stdm_prs_dienst_key = oRs("prs_dienst_key").Value || -1; // default volgens stdm
var defkp_key = oRs("kpgeldig").Value == 1? (oRs("prs_kostenplaats_key").Value || -1) : -1; // de defaultwaarde komt van de melding en moet nog wel geldig zijn.
var def_ordernr = oRs("mld_melding_ordernr").Value; // de defaultwaarde
var kpnverplicht = (oRs("ins_discipline_kpnverplicht").Value == 1); // Is kostenplaats verplicht
var onrgoed_key = oRs("mld_alg_onroerendgoed_keys").Value;
var srtkp_key = oRs("prs_kostensoort_key").Value;
var mld_startdatum = new Date(oRs("mld_melding_datum").Value);
var mld_einddatum = new Date(oRs("mld_melding_einddatum").Value);
var mld_caller_key = oRs("prs_perslid_key").Value;
var mld_uitvoertijd_eenheid = oRs("uitvoertijd_eenheid").Value;
var prefix = oRs("ins_srtdiscipline_prefix").Value;
oRs.close();
if (opdr_key > 0)
{ // Voor bestaande melding is wellicht andere dienst dan default gekozen
sql = "SELECT prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie"
+ " WHERE prs_bedrijf_key = " + mld_opdr.uitvoerende_key
+ " AND (alg_locatie_key = " + loc_key + " OR alg_locatie_key IS NULL)"
+ " AND (alg_gebouw_key = " + bld_key + " OR alg_gebouw_key IS NULL)"
+ " AND (alg_locatie_key = " + mld_melding.loc_key + " OR alg_locatie_key IS NULL)"
+ " AND (alg_gebouw_key = " + mld_melding.bld_key + " OR alg_gebouw_key IS NULL)"
oRs = Oracle.Execute(sql);
if (!oRs.eof)
stdm_prs_dienst_key = oRs("prs_dienst_key").Value;
@@ -241,12 +201,12 @@ if (opdr_key < 0)
// Voor nieuwe opdrachten is de default Startdatum *vandaag*,
// tenzij de meldingdatum in de toekomst ligt, dan is het die datum
mld_opdr.mld_opdr_datumbegin = new Date();
if (mld_opdr.mld_opdr_datumbegin.midnight() < mld_startdatum.midnight() || S("mld_enforce_orderdates") == 1)
mld_opdr.mld_opdr_datumbegin = mld_startdatum;
if (mld_opdr.mld_opdr_datumbegin.midnight() < mld_melding.melddatum.midnight() || S("mld_enforce_orderdates") == 1)
mld_opdr.mld_opdr_datumbegin = mld_melding.melddatum;
// Voor nieuwe opdrachten is de default Einddatum gelijk aan de einddatum van de melding
// tenzij die in het verleden ligt, dan is het de opdrachtstartdatum
mld_opdr.mld_opdr_einddatum = mld_einddatum;
mld_opdr.mld_opdr_einddatum = mld_melding.einddatum;
if (S("mld_enforce_orderdates") != 1 && mld_opdr.mld_opdr_einddatum.midnight() < mld_opdr.mld_opdr_datumbegin.midnight())
mld_opdr.mld_opdr_einddatum = mld_opdr.mld_opdr_datumbegin;
}
@@ -262,7 +222,7 @@ if (oRs("work_days").Value > 0)
mld_opdr.period = oRs("work_days").Value;
oRs.close();
if (opdr_key < 0) mld_opdr.mld_opdr_ordernr = def_ordernr;
if (opdr_key < 0) mld_opdr.mld_opdr_ordernr = mld_melding.mld_ordernr;
// Bepaal de initi<74>le kostenplaats
if (!mld_opdr.kp_key || mld_opdr.kp_key == -1) mld_opdr.kp_key = defkp_key; // initialiseer op de mld_melding-kostenplaats
@@ -313,11 +273,11 @@ if (mld_opdr.kp_key == -1)
oRs.Close();
}
var autoGebouwKp = false;
if (mld_opdr.kp_key == -1 && kosten_klant == 0 && bld_key > 0)
if (mld_opdr.kp_key == -1 && mld_melding.mld_kk == 0 && mld_melding.bld_key > 0)
{ // Is er een gebouw kostenplaats die ingevuld kan worden.
sql = "SELECT COALESCE(prs_kostenplaats_key, -1) prs_kostenplaats_key"
+ " FROM alg_gebouw"
+ " WHERE alg_gebouw_key = " + bld_key;
+ " WHERE alg_gebouw_key = " + mld_melding.bld_key;
oRs = Oracle.Execute(sql);
mld_opdr.kp_key = oRs("prs_kostenplaats_key").Value;
autoGebouwKp = true;
@@ -345,13 +305,13 @@ oRs.Close();
var frontend = "<%=frontend%>";
var opdr_key = <%=opdr_key%>;
var mld_key = <%=mld_key%>;
var prefix = "<%=prefix%>";
var prefix = "<%=mld_melding.prefix%>";
var volgnr = "<%=mld_opdr.volgnr%>";
var cnt_key = <%=cnt_key%>;
var act_key = <%=mld_opdr.act_key%>;
var kp_key = <%=mld_opdr.kp_key%>;
var defkp_key = <%=defkp_key%>;
var kpnverplicht = (<%=kpnverplicht? 1 : 0%> == 1);
var kpnverplicht = (<%=mld_melding.kpnverplicht? 1 : 0%> == 1);
var opdr_status = <%=mld_opdr.opdr_status%>;
var typeopdr_matchtype = <%=mld_opdr.typeopdr_matchtype || -1%>; // voor als readonly
var typeopdr_offertelimiet = <%=mld_opdr.typeopdr_offertelimiet%>;
@@ -362,21 +322,27 @@ oRs.Close();
var copy = (<%=copy? 1 : 0%> == 1);
var srtdiscbes = <%=mld_opdr.srtdiscbes? 1 : 0%> == 1;
var autlevel = <%=authparams.PRSwritelevel%>;
var loc_key = <%=loc_key||-1%>;
var onrgoed_key = <%=onrgoed_key||-1%>;
var bld_key = <%=bld_key||-1%>;
var disckey = <%=disckey%>;
var loc_key = <%=mld_melding.loc_key || -1%>;
var onrgoed_key = <%=mld_melding.place||-1%>;
var bld_key = <%=mld_melding.bld_key||-1%>;
var flr_key = <%=mld_melding.flr_key || -1%>;
var room_key = <%=mld_melding.room_key || -1%>;
var disckey = <%=mld_melding.disc%>;
var typeopdr_contract = <%=mld_opdr.typeopdr_contract%>;
var canDatesChange = (<%=this_opdr.canDatesChange? 1 : 0%> == 1);
var canWriteDatumsMld = (<%=this_mld.canWriteDatums? 1 : 0%> == 1);
var mld_startdatum = new Date(<%=mld_startdatum.getTime()%>);
var mld_einddatum = new Date(<%=mld_einddatum.getTime()%>);
var mld_startdatum = new Date(<%=mld_melding.melddatum.getTime()%>);
var mld_einddatum = new Date(<%=mld_melding.einddatum.getTime()%>);
var mld_opdr_datumbegin = new Date(<%=mld_opdr.mld_opdr_datumbegin.getTime()%>);
var mld_opdr_einddatum = new Date(<%=mld_opdr.mld_opdr_einddatum.getTime()%>);
var registratiedatum = new Date(<%=registratiedatum.getTime()%>);
var kosten_verplicht_afr = <%=mld_opdr.typeopdr_matchtype != 4 && (mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4))? 1 : 0%> == 1;
var nrOpenOpdr = <%=nrOpenOpdr%>;
var opdrachtid = "<%=(mld_opdr.srtdiscprefix||"") + mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
var alg_onrgoed_obj_niveau = "<%=alg_onrgoed_obj_niveau%>";
var melder_key = <%=mld_melding.melder_key%>;
var perslid_key_voor = <%=mld_melding.perslid_key_voor || -1%>;
var stdm = <%=mld_melding.stdm%>;
jQuery(document).ready(function()
{
@@ -429,10 +395,10 @@ oRs.Close();
label: mld_opdr.srtdiscbes? L("lcl_bes_Supplier") : L("lcl_ord_company_uit"),
autlevel: authparams.PRSwritelevel,
whenEmpty: mld_opdr.srtdiscbes? L("lcl_select_bedrijf") : null,
locatiekey: loc_key,
onrgoedkey: onrgoed_key,
gebouwkey: bld_key,
disciplinekey: disckey,
locatiekey: mld_melding.loc_key,
onrgoedkey: mld_melding.place,
gebouwkey: mld_melding.bld_key,
disciplinekey: mld_melding.disc,
lutype: mld_opdr.srtdiscbes? "L" : "U", // leverancier of uitvoerende
urlAdd: [{urlParam: "dienst", field: "dienstfilt"}],
onChange: "onChangeUitv",
@@ -447,7 +413,7 @@ oRs.Close();
{ contactpersoonKey: mld_opdr.contactpersuitv_key,
label: L("lcl_contact_pers"),
suppressEmpty: true,
locatiekey: loc_key,
locatiekey: mld_melding.loc_key,
filtercode: "U",
urlAdd: [{urlParam: "uitv_key", field: "uitvoerende"}],
moreinfo: !frontend,
@@ -560,8 +526,8 @@ oRs.Close();
// Volgorde in tijd: maxPast, minPast, sysdate, minFuture, maxFuture
FCLTcalendar("orderdate",
{ datum: mld_opdr.mld_opdr_datumbegin,
minDate: (S("mld_enforce_orderdates") == 1 ? mld_startdatum : registratiedatum),
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_einddatum : null),
minDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.melddatum : registratiedatum),
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.einddatum : null),
label: L("lcl_orderdate"),
onChange: "DateChanged()",
readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
@@ -578,16 +544,16 @@ oRs.Close();
<% FCLTcalendar("date_done",
{ //label : handmatig want period komt nog
datum: mld_opdr.mld_opdr_einddatum,
minDate: (S("mld_enforce_orderdates") == 1 ? mld_startdatum : registratiedatum),
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_einddatum : null),
timeField: mld_uitvoertijd_eenheid == "U",
minDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.melddatum : registratiedatum),
maxDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.einddatum : null),
timeField: mld_melding.uitvoertijd_eenheid == "U",
timeStep : 15, // TODO: Is nog wel erg hard. Zie ook mld_edit_opdr.js
startTime: 8,
endTime : 18,
onChange: "DateChanged()",
readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
volgnr: 2,
addClass: (mld_einddatum.getTime() < mld_opdr.mld_opdr_einddatum.getTime()? "expired2" : null), // Als de eindatum van de opdracht na de einddatum van de melding valt dan addClass toevoegen.
addClass: (mld_melding.einddatum.getTime() < mld_opdr.mld_opdr_einddatum.getTime()? "expired2" : null), // Als de eindatum van de opdracht na de einddatum van de melding valt dan addClass toevoegen.
required: true
} );
%>
@@ -605,7 +571,7 @@ oRs.Close();
autlevel: authparams.PRSwritelevel,
moreinfo: true,
filtercode: "OCP",
disc_key: disckey,
disc_key: mld_melding.disc,
readonly: (opdr_key > 0 && !this_opdr.canVeldChange),
suppressEmpty: true
});
@@ -683,21 +649,21 @@ oRs.Close();
// <!-- MELDER -->
FCLTpersoonselector("sgCaller",
"sgCaller",
{ perslidKey: mld_caller_key,
{ perslidKey: mld_melding.melder_key,
label: L("lcl_caller"),
readonly: true,
moreinfo: true
});
ROFIELDTR ("fld", L("lcl_complain"), mld_opdr.vakgroep + "/" + stdm); // Melding
ROFIELDTR ("fld", L("lcl_complain"), mld_opdr.vakgroep + "/" + mld_melding.mld_stdmelding_omschrijving); // Melding
// Locatie, gebouw, verdieping, ruimte
// NB: is nu nog van de melding, maar binnenkort van de opdracht zelf
FCLTplaatsselector (authparams.ALGwritelevel,
{ locatiekey: loc_key,
gebouwkey: bld_key,
verdiepingkey: flr_key,
ruimtekey: room_key,
{ locatiekey: mld_melding.loc_key,
gebouwkey: mld_melding.bld_key,
verdiepingkey: mld_melding.flr_key,
ruimtekey: mld_melding.room_key,
moreinfo: (backo || fronto),
readonly: true,
suppressEmpty: true,
@@ -728,7 +694,7 @@ oRs.Close();
filtercode: "AA", // Alleen actieve kostenplaatsen kunnen selecteren "All Active". Huidige waarde als initi<74>le waarde kan bij kostenplaatsen altijd.
extraParamField: "budgeth",
extracode: "B", // extra informatie is budgethouder (B)
required: kpnverplicht || (mld_opdr.typeopdr_kosten == 1 && mld_opdr.typeopdr_matchtype != 4),
required: mld_melding.kpnverplicht || (mld_opdr.typeopdr_kosten == 1 && mld_opdr.typeopdr_matchtype != 4),
label: L("lcl_mld_kosten"),
suppressEmpty: true,
checkInit: opdr_key < 0 && autoGebouwKp // Alleen bij nieuwe opdracht checken of kostenplaats wel mag worden ingevuld en als het een gebouw kostenplaats is.
@@ -744,7 +710,7 @@ oRs.Close();
}
FCLTkostensoortselector("srtkosten",
"sgSrtkosten",
{ kostensoortKey: srtkp_key,
{ kostensoortKey: mld_melding.stdm_ksrt_key,
readonly: true,
label: L("lcl_charge_type"),
suppressEmpty: true
@@ -757,7 +723,7 @@ oRs.Close();
if (opdr_key < 0)
{
// Alleen bij nieuwe opdrachten en dus ook bij copy.
if (kpnverplicht || (mld_opdr.typeopdr_kosten == 1 && mld_opdr.typeopdr_matchtype != 4))
if (mld_melding.kpnverplicht || (mld_opdr.typeopdr_kosten == 1 && mld_opdr.typeopdr_matchtype != 4))
var html = null;
else
var html = "onClick='onChangeFiat();'"
@@ -924,6 +890,118 @@ oRs.Close();
reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)),
flexcolumns: S("mld_flexcolumns")
});
if (mld_melding.show_ins)
{ // Zijn er objecten te tonen?
var sql = "SELECT m.ins_deel_key"
+ " FROM mld_melding_object m"
+ " WHERE m.mld_melding_key = " + mld_key
+ " ORDER BY m.ins_deel_key";
oRs = Oracle.Execute(sql);
var thereAreObjects = !oRs.Eof;
oRs.close();
// Als de objecten knop aanwezig is bij meldingen of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
if (this_mld.canPlaatsChange || thereAreObjects)
{
BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"));
// Als de objecten knop aanwezig is bij meldingen dan hier ook de knop tonen.
// De object button grijs weergeven als de plaats niet is ingevuld tot en met het alg_onrgoed_obj_niveau niveau.
var disableobjects = ((alg_onrgoed_obj_niveau == "L" && mld_melding.loc_key < 0) ||
(alg_onrgoed_obj_niveau == "G" && mld_melding.bld_key < 0) ||
(alg_onrgoed_obj_niveau == "V" && mld_melding.flr_key < 0) ||
(alg_onrgoed_obj_niveau == "R" && mld_melding.room_key < 0) ||
(alg_onrgoed_obj_niveau == "A" && mld_melding.melder_key < 0) ||
(alg_onrgoed_obj_niveau == ""));
//$("#r_objs_button").attr('disabled', disableobjects);
var alg_key = -1;
var aantalobj = 0;
if (!disableobjects)
{
switch(alg_onrgoed_obj_niveau)
{
case "L": alg_key = mld_melding.loc_key;
break;
case "G": alg_key = mld_melding.bld_key;
break;
case "V": alg_key = mld_melding.flr_key;
break;
case "R": alg_key = mld_melding.room_key;
break;
case "A": alg_key = mld_melding.melder_key;
break;
}
var prs_key = mld_melding.perslid_key_voor;
var sql = get_objecten_sql(alg_key, alg_onrgoed_obj_niveau, prs_key, null, mld_melding.stdm);
var oRs = Oracle.Execute(sql);
while(!oRs.eof)
{
aantalobj++;
oRs.MoveNext();
}
}
if (this_mld.canPlaatsChange)
{
var params = { datatype: "button",
html: "title='" + L("lcl_mld_objects_select") + "' onclick='mld_opdracht_object()'" + (disableobjects? " disabled" : "")
}
RWFIELDTR("r_objs_button", "button", L("lcl_mld_objects"), L("lcl_mld_objects") + "(" + aantalobj + ")", params);
}
%>
<tr>
<td>
</td>
<td>
<%
var plaatsaanduiding = (S("prs_wpprefix_objectid") == 1
? " CASE"
+ " WHEN o.prs_werkplek_omschrijving IS NOT NULL"
+ " THEN o.prs_werkplek_omschrijving || ' ' "
+ " ELSE ''"
+ " END"
: "''");
sql = "SELECT d.ins_deel_key"
+ " , " + plaatsaanduiding + " || ins_deel_omschrijving || ' (' || " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " || ')' deel "
+ " , CASE"
+ " WHEN d.ins_deel_t_uitvoertijd.eenheid = 'U'"
+ " THEN d.ins_deel_t_uitvoertijd.tijdsduur / 24"
+ " ELSE d.ins_deel_t_uitvoertijd.tijdsduur"
+ " END uitvoertijd" // Uitvoertijd is in dagen.
+ " FROM ins_v_aanwezigdeel d"
+ " , ins_srtdeel s"
+ " , mld_melding_object m"
+ " , ins_v_alg_overzicht o"
+ " WHERE m.mld_melding_key = " + mld_key
+ " AND d.ins_deel_key = m.ins_deel_key"
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys(+)"
+ " AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type(+)"
+ " AND d.ins_alg_locatie_key = o.alg_locatie_key(+)"
+ " ORDER BY deel";
// showObjDetail alleen in show-mode
FCLTselector("r_objs",
sql,
{ label: "", //L("lcl_mld_objects"),
multi: true,
size: 1,
required: mld_melding.srtinst_verplicht,
extraParamValue: "uitvoertijd" // uitvoertijd is hier in uren
});
%> <input type='hidden' name='has_r_objs' value='1'>
</td>
</tr>
<script>
$(document).ready(function ()
{
$('#r_objs').attr("size", ($("#r_objs")[0].options.length == 0? 1 : $("#r_objs")[0].options.length));
});
</script>
<% BLOCK_END();
}
} // if (mld_melding.show_ins)
%>
<input type=hidden name="copyorder_key" value="<%=copy?opdr_copy_key:'-1'%>">
<input type=hidden name="act_key" value="<%=mld_opdr.act_key%>">

View File

@@ -260,6 +260,8 @@ function mld_submit(json)
if (document.activeElement.tagName != "BODY")
document.activeElement.blur(); // trigger laatste onChanges
$('#r_objs>option').prop("selected", "true"); // Zet selected zodat verplicht ze ziet en zodat waarden worden gesubmit
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
if (!validateForm("u2"))
return false;
@@ -506,3 +508,65 @@ function mld_melding_uitvoerenden()
callback: mld_melding_uitvoerenden_callback
});
}
function mld_opdracht_object_callback(data)
{
// TODO: Moet er niet ook <SELECT> omheen? WERKT DIT
$("#r_objs").html(data.obj_html);
$("#r_objs").attr("size", ($("#r_objs")[0].options.length == 0? 1 : $("#r_objs")[0].options.length));
$("#r_objs > option").removeAttr("selected");
FcltMgr.resized(window);
var obj_keys = $.map($("#r_objs option") , function(option) { return $(option).val(); }); // Levert array met objecten op.
}
function mld_opdracht_object()
{
var alg_key = -1;
// De stdmelding is ingevuld. alg_onrgoed_niveau is het verplichte ingevulde niveau en alg_onrgoed_niveau heeft dan een geldige waarde
// Wellicht is het niveau eronder ook ingevuld!
var alg_key = -1;
var alg_niveau = "";
// Objecten opvragen met
// 1) Met plaatsgegevens die ingevuld zijn en verplicht. Als een plaats niveau niet verplicht is gaan we hem zelfs negeren (zie ook functie getObjectInfo).
// 2) Met afdelinggegevens van de user.
if (alg_onrgoed_obj_niveau == 'A' && melder_key > 0)
{
alg_key = user_afd_key;
alg_niveau = "A";
}
else if (room_key > -1 && alg_onrgoed_obj_niveau == "R")
{
alg_key = room_key;
alg_niveau = "R";
}
else if (flr_key > -1 && alg_onrgoed_obj_niveau == "V")
{
alg_key = flr_key;
alg_niveau = "V";
}
else if (bld_key > -1 && alg_onrgoed_obj_niveau == "G")
{
alg_key = bld_key;
alg_niveau = "G";
}
else // Locatie is altijd verplicht.
{
alg_key = loc_key;
alg_niveau = "L";
}
var url = "../mld/mld_object.asp?mld_key=" + mld_key;
url += "&stdm_key="+ stdm;
url += "&srtdisc=" + disckey;
url += "&person=" + (perslid_key_voor > 0? perslid_key_voor : melder_key);
url += "&alg_key=" + alg_key;
url += "&alg_niveau=" + alg_niveau;
if ($("#r_objs")[0].options.length > 0 && $("#r_objs")[0].options[0].value > 0)
var obj_html = $("#r_objs").html(); // huidige objecten
else
var obj_html = "";
FcltMgr.openModalDetail(url, L("lcl_mld_objects"), {obj_html:obj_html, callback: mld_opdracht_object_callback});
}

View File

@@ -44,6 +44,9 @@ var finish = (getFParamInt("finish", 0) == 1);
var shiftdate = (getFParamInt("shiftdate", 0) == 1);
var msg = getFParam("message", "");
// Objects...
var obj_arr = getFParamIntArray("r_objs", []);
if (!isNew)
{ // Bestaande opdracht
var mld_opdr = mld.mld_opdr_info(opdr_key);
@@ -808,6 +811,35 @@ for (var u = 0; u < uitvkeyArray.length; u++)
}
}
if (getFParamInt("has_r_objs", 0) == 1) // Voorkom dat we wissen vanuit mobile-save die helemaal geen listbox heeft.
{
var objtrack = mld.gettrackobjects(mld_key, obj_arr);
if (!isNew)
// Objecten tracken die worden verwijderd of toegevoegd.
mldUpd.trackarray.push(objtrack);
// Objecten
sql = " DELETE mld_melding_object"
+ " WHERE mld_melding_key = " + mld_key
+ (obj_arr.length != 0
? " AND ins_deel_key NOT IN (" + obj_arr.join(",") + ")"
: "")
Oracle.Execute(sql);
if (obj_arr.length != 0)
{
sql = "INSERT INTO mld_melding_object"
+ " (mld_melding_key, ins_deel_key)"
+ " SELECT " + mld_key
+ ", ins_deel_key"
+ " FROM ins_v_aanwezigdeel"
+ " WHERE ins_deel_key IN (" + obj_arr.join(",") + ")"
+ " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND ins_deel_key NOT IN"
+ " (SELECT ins_deel_key FROM mld_v_aanwezigmelding_object WHERE mld_melding_key = " + mld_key + ")";
Oracle.Execute(sql);
}
}
// readonly had voornamelijk betrekking op de vaste velden.
// met mldman o.i.d. kan zijn dat alles readonly is behalve bepaalde flexkenmerken
// Wijzigbare flexkenmerken altijd opslaan