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

svn path=/Website/trunk/; revision=27718
This commit is contained in:
Maykel Geerdink
2016-01-12 14:32:45 +00:00
parent 0828d24b12
commit 059d4a5113
5 changed files with 178 additions and 196 deletions

View File

@@ -136,17 +136,26 @@ mld = {setmeldingstatus:
shared.trackaction("MLDAFR", mld_key, ptxt);
},
gettrackobjects:
saveobjects:
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(",") + ")";
{ // Objecten die worden verwijderd bepalen i.v.m. tracking.
var plaatsaanduiding = (S("prs_wpprefix_objectid") == 1
? " CASE"
+ " WHEN o.prs_werkplek_omschrijving IS NOT NULL"
+ " THEN o.prs_werkplek_omschrijving || ' ' "
+ " ELSE ''"
+ " END"
: "''");
var sql = "SELECT " + plaatsaanduiding + " || ins_deel_omschrijving || ' (' || " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " || ')' 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
+ (obj_arr.length > 0
? " AND d.ins_deel_key NOT IN (" + obj_arr.join(",") + ")"
: "");
var oRs = Oracle.Execute(sql);
var first = true;
var deleted_objects = "";
@@ -164,34 +173,63 @@ mld = {setmeldingstatus:
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 (obj_arr.length > 0)
{
if (first)
// Objecten die worden toegevoegd bepalen i.v.m. tracking.
sql = "SELECT " + plaatsaanduiding + " || ins_deel_omschrijving || ' (' || " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " || ')' deel "
+ " FROM ins_deel d"
+ " , ins_srtdeel s"
+ " WHERE d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_deel_key NOT IN (SELECT mo.ins_deel_key FROM mld_melding_object mo WHERE mo.mld_melding_key = " + mld_key + ")"
+ (obj_arr.length > 0
? " AND d.ins_deel_key IN (" + obj_arr.join(",") + ")"
: "");
oRs = Oracle.Execute(sql);
first = true;
while(!oRs.eof)
{
added_objects = L("lcl_mld_add_obj") + ": ";
first = false;
}
else
added_objects += ",\n";
added_objects += oRs("deel").Value;
if (first)
{
added_objects = L("lcl_mld_add_obj") + ": ";
first = false;
}
else
added_objects += ",\n";
added_objects += oRs("deel").Value;
oRs.MoveNext();
oRs.MoveNext();
}
}
// Objecten verwijderen.
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);
// Objecten opslaan.
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);
}
oRs.Close();
// Track tekst teruggeven.
return (deleted_objects != ""? deleted_objects + "\n" : "") + added_objects;
},
notifyopdrachtgoedkeuren:
notifyopdrachtgoedkeuren:
function (opdr_key)
{ // Alle goedkeurders een notificatie (ORD2GO) sturen voor de volgend goedkeuring.
Oracle.Execute("BEGIN mld.notifyopdrgoedkeurders(" + opdr_key + "); END;");
@@ -3547,6 +3585,89 @@ mld = {setmeldingstatus:
Oracle.Execute(sql);
},
generate_relobject_editblock: function (mld_key, params)
{ // Als we met <20><>n object binnenkomen tonen we de knop niet
if (params.ins_key < 0 && (mld_key <= 0 || params.canChange))
{
var rwparams = { datatype: "button",
html: "title='" + L("lcl_mld_objects_select") + "' onclick='" + params.onclickobj + "'" + (params.disableobjects? " disabled" : "")
}
RWFIELDTR("r_objs_button", "button", L("lcl_mld_objects"), L("lcl_mld_objects") + "(" + params.aantalobj + ")", rwparams);
}
%>
<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"
: "''");
if (mld_key > 0)
{
var 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 dagn.
+ " 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";
}
else // mogelijk voorgeselecteerd object
{
var 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 dagn.
+ " FROM ins_v_aanwezigdeel d"
+ " , ins_srtdeel s"
+ " , ins_v_alg_overzicht o"
+ " WHERE d.ins_deel_key = " + params.ins_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " 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>
<% },
generate_relobject_block: function (mld_key)
{
var plaatsaanduiding = (S("prs_wpprefix_objectid") == 1

View File

@@ -981,90 +981,18 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
}
// Als de objecte knop aanwezig is of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
var objparams = {ins_key: ins_key,
canChange: this_mld.canPlaatsChange,
verplicht: mld_melding.srtinst_verplicht,
aantalobj: 0,
disableobjects: true,
onclickobj: "mld_melding_object()"};
if ((ins_key < 0 && (mld_key <= 0 || this_mld.canPlaatsChange)) || thereAreObjects)
{
BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"));
// Als we met <20><>n object binnenkomen tonen we de knop niet
if (ins_key < 0 && (mld_key <= 0 || this_mld.canPlaatsChange))
{
var params = { datatype: "button",
html: "title='"+L("lcl_mld_objects_select")+"' onclick='mld_melding_object()' disabled"
}
RWFIELDTR("r_objs_button", "button", L("lcl_mld_objects"), L("lcl_mld_objects") + "(0)", 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"
: "''");
if (mld_key > 0)
{
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 dagn.
+ " 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";
}
else // mogelijk voorgeselecteerd object
{
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 dagn.
+ " FROM ins_v_aanwezigdeel d"
+ " , ins_srtdeel s"
+ " , ins_v_alg_overzicht o"
+ " WHERE d.ins_deel_key = " + ins_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " 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();
mld.generate_relobject_editblock(mld_key, objparams);
BLOCK_END();
}
} // if (mld_melding.show_ins)

View File

@@ -497,8 +497,9 @@ if (savemode)
}
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);
{ // Objecten verwijderen of toevoegen.
var objtrack = mld.saveobjects(mld_key, obj_arr);
// Tracken van de objectwijzigingen.
if (!isNew)
mldUpd.trackarray.push(objtrack);
}

View File

@@ -902,7 +902,7 @@ oRs.Close();
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)
if (this_opdr.canChange || thereAreObjects)
{
BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"));
// Als de objecten knop aanwezig is bij meldingen dan hier ook de knop tonen.
@@ -943,63 +943,15 @@ oRs.Close();
}
}
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();
// Als de objecte knop aanwezig is of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
var objparams = {ins_key: -1,
canChange: this_opdr.canChange,
verplicht: mld_melding.srtinst_verplicht,
disableobjects: disableobjects,
aantalobj: aantalobj,
onclickobj: "mld_opdracht_object()"};
mld.generate_relobject_editblock(mld_key, objparams);
BLOCK_END();
}
} // if (mld_melding.show_ins)
%>

View File

@@ -812,32 +812,12 @@ 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);
}
{ // Objecten verwijderen of toevoegen.
var objtrack = mld.saveobjects(mld_key, obj_arr);
// Tracken van de objectwijzigingen.
var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm);
var formattedID = stdm_info.ins_srtdiscipline_prefix + mld_key + " (" + stdm_info.discipline_omschrijving + "/" + stdm_info.stdmelding_omschrijving + ")";
mld.trackmeldingupdate(mld_key, L("lcl_mld_is_mldupdtrack").format(formattedID) + "\n" + objtrack);
}
// readonly had voornamelijk betrekking op de vaste velden.