Files
Facilitor/APPL/INS/ins_edit_deel.asp
2025-05-21 12:28:38 +00:00

1046 lines
46 KiB
Plaintext
Raw Blame History

<%@ language="javascript"%>
<% /*
$Revision$
$Id$
File: INS/ins_edit_deel.asp
Description: Main interface to add/edit objects Parameters: ins_key: bewerken bestaand object, we 'weten' al heel veel
parent_key: we hebben een parent, we tonen deels info van de parent
urole:
Context: submit naar ins_edit_deel_save.asp
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="./ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/contactpersoonselector.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/srtgroepselector.inc" -->
<!-- #include file="../Shared/srtdeelselector.inc" -->
<!-- #include file="../Shared/objectselector.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="./ins.inc" -->
<%
FCLTHeader.Requires({plugins:["jQuery"],
js: ["../shared/kenmerk_js.asp", "../ins/ins_edit_deel.js", "../ins/bind.js"]})
var ins_score_enabled = S("ins_score_enabled") == 1;
var ins_key = getQParamInt("ins_key");
var copy = (getQParamInt("ins_copy", 0) == 1);
var urole = getQParamSafe("urole");
var ins_copy_key = -1;
var module = "INS";
if (ins_key > 0)
{
if (ins.isSleCil(ins_key))
{
var autfunction = "WEB_SLEBOF";
module = "SLE";
}
else
var autfunction = getQParam("pautfunction", (urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN"));
}
if (copy)
{
ins_copy_key = ins_key;
ins_key = -1;
}
if (ins_key > 0)
{
var disc_key_arr = [];
var this_ins = ins.func_enabled_deel(ins_key, {urole: urole});
user.auth_required_or_abort(this_ins.canChange || this_ins.canChangeOwn); // dat is toch wel het minste
authparams = this_ins.authparams(autfunction);
}
else // nieuw object
{
var disc_key_arr = getQParamIntArray("disc", []); // Discipline
if (disc_key_arr.length > 0)
{ // Haal de eventuele "-1" uit de array als het wordt aangeroepen door een overzicht met een multi discipline suggest box.
disc_key_arr.sort(); // Zet de eventuele "-1" in het begin.
if (disc_key_arr[0] == -1)
disc_key_arr.shift(); // Haal de "-1" weg.
}
var srtgroep_key = getQParamInt("group", -1);
var srtdeel_key = getQParamInt("sort", -1);
var perslid_key_beh = getQParamInt("beh_key", -1); // niet user_key
var o_loc_key = getQParamInt("locatiekey", -1);
var o_bld_key = getQParamInt("gebouwkey", -1);
var o_floor_key = getQParamInt("verdiepingkey", -1);
var o_room_key = getQParamInt("ruimtekey", -1);
var o_workpl_key = getQParamInt("werkplekkey", -1);
var o_dep_key = getQParamInt("dept", -1);
var o_perslid_key = getQParamInt("prs_key", -1);
var o_cntpers_key = getQParamInt("cntprs_key", -1);
var actief = true;
var externnr = null;
if ((srtdeel_key > 0 && ins.isSleCil(srtdeel_key, "S")) ||
(srtgroep_key > 0 && ins.isSleCil(srtgroep_key, "G")))
{
autfunction = "WEB_SLEBOF";
module = "SLE";
}
else
var autfunction = getQParam("pautfunction", (urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN"));
var PRSALGwrite = false;
for (var i = 0; i < disc_key_arr.length; i++)
{
var authparams = user.checkAutorisation(autfunction, false, disc_key_arr[i] > 0? disc_key_arr[i] : null);
PRSALGwrite |= authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9;
}
var authparams = user.checkAutorisation(autfunction);
if (disc_key_arr.length > 0)
// Als er discipline key zijn meegegeven waar de user op geen enkele discipline write rechten op heeft, dan mag de user het object niet toevoegen.
user.anything_todo_or_abort(PRSALGwrite);
var this_ins = { canChangeAlg: true };
}
var isNext = getQParamInt("next" , -1);
var free = false;
i_count = getQParamInt("count", 1);
var parent_key = getQParamInt("parent_key", -1);
var bind_key = parentdesc = null;
var aanmaak = new Date();
var vervaldatum = null;
var srtcode = "";
var tekenbaar = false;
var deel_image = "";
var uitvoertijd;
var uitvoertijd_eenheid;
var ins_deel_aantal = 1;
var desc = getQParam("desc", null);
var bind = null;
if (o_dep_key > 0)
{
bind_key = o_dep_key;
bind = "A";
}
if (o_perslid_key > 0)
{
bind_key = o_perslid_key;
bind = "P";
}
if (o_cntpers_key > 0)
{
bind_key = o_cntpers_key;
bind = "C";
}
if (o_workpl_key > 0)
{
bind_key = o_workpl_key;
bind = "W";
}
if (o_bld_key > 0)
{
bind_key = o_bld_key;
bind = "T";
}
if (o_room_key > 0)
{
bind_key = o_room_key;
bind = "R";
}
var xcoord = getQParam("xcoord", null);
if (xcoord == "") xcoord = null;
var ycoord = getQParam("ycoord", null);
if (ycoord == "") ycoord = null;
// Future: getQParam("zcoord", null); if (zcoord == "") zcoord = null;
var mjb_score1, mjb_score2, ins_srtdeel_mjb_grensscore1;
var org_bind;
var org_bind_key = -1;
srtdeel_binding = 0xFF; // Veronderstel nog even dat alles mag
var isLendOut = false;
var autonum = -1;
if (parent_key > 0 || ins_key > 0 || srtdeel_key > 0 || copy)
{ // select object data...
if (ins_key > 0 || copy)
{ // Het is een bestaand object, of er moet een kopie worden gemaakt.
sql = "SELECT d.ins_deel_omschrijving"
+ " , d.ins_deel_parent_key"
+ " , d.ins_alg_ruimte_type"
+ " , d.ins_deel_aantal"
+ " , d.ins_alg_ruimte_key"
+ " , d.ins_alg_locatie_key"
+ " , d.ins_srtdeel_key"
+ " , s.ins_srtgroep_key"
+ " , g.ins_discipline_key"
+ " , s.ins_srtdeel_acadsymbol"
+ " , d.ins_deel_x"
+ " , d.ins_deel_y"
+ " , d.ins_deel_dwgx"
+ " , ins_srtdeel_binding"
+ " , d.ins_alg_ruimte_type_org"
+ " , d.ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , d.ins_deel_aanmaak"
+ " , d.ins_deel_vervaldatum"
+ " , pd.ins_deel_omschrijving parent_omschrijving"
+ " , d.ins_deel_t_uitvoertijd.tijdsduur uitvoertijd"
+ " , d.ins_deel_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ " , d.ins_deel_opmerking"
+ " , idp.ins_disc_params_autonum"
+ " , " + lcl.xsqla('s.ins_srtdeel_eenheid', 's.ins_srtdeel_key')
+ " , d.prs_perslid_key_beh"
+ " , d.ins_deel_actief"
+ " , d.ins_deel_image"
+ " , d.ins_deel_flag"
+ " , d.ins_deel_mjb_score1"
+ " , d.ins_deel_mjb_score2"
+ " , s.ins_srtdeel_mjb_grensscore1"
+ " , d.ins_deel_externnr"
+ " FROM ins_v_deelenonderdeel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " , ins_tab_discipline dis"
+ " , ins_deel pd"
+ " , ins_disc_params idp"
+ " WHERE d.ins_deel_key = " + (copy? ins_copy_key : ins_key)
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND d.ins_deel_parent_key = pd.ins_deel_key(+)"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key"
+ " AND dis.ins_discipline_key = idp.ins_discipline_key";
}
else if (parent_key > 0 && ins_key < 0)
{ // Het toevoegen van een NIEUW onderdeel aan een bestaand parent-object
sql = "SELECT '' ins_deel_omschrijving"
+ " , d.ins_deel_parent_key"
+ " , d.ins_alg_ruimte_type"
+ " , 1 ins_deel_aantal"
+ " , d.ins_alg_ruimte_key"
+ " , d.ins_alg_locatie_key"
+ " , d.ins_srtdeel_key"
+ " , s.ins_srtgroep_key"
+ " , g.ins_discipline_key"
+ " , s.ins_srtdeel_acadsymbol"
+ " , d.ins_deel_x"
+ " , ins_deel_y"
+ " , ins_deel_dwgx "
+ " , ins_srtdeel_binding"
+ " , d.ins_alg_ruimte_type_org"
+ " , d.ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , d.ins_deel_aanmaak"
+ " , d.ins_deel_vervaldatum"
+ " , d.ins_deel_omschrijving parent_omschrijving"
+ " , d.ins_deel_t_uitvoertijd.tijdsduur uitvoertijd"
+ " , d.ins_deel_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ " , d.ins_deel_opmerking"
+ " , idp.ins_disc_params_autonum"
+ " , " + lcl.xsqla('s.ins_srtdeel_eenheid', 's.ins_srtdeel_key')
+ " , d.ins_deel_flag"
+ " , d.ins_deel_mjb_score1"
+ " , d.ins_deel_mjb_score2"
+ " , s.ins_srtdeel_mjb_grensscore1"
+ " , d.ins_deel_externnr"
+ " FROM ins_v_deelenonderdeel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " , ins_tab_discipline dis"
+ " , ins_disc_params idp"
+ " WHERE ins_deel_key = " + parent_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key"
+ " AND dis.ins_discipline_key = idp.ins_discipline_key";
}
else
{ // Het gaat om een Nieuw hoofdobject, defaults bepalen
sql = "SELECT '' ins_deel_omschrijving"
+ " , NULL ins_deel_parent_key"
+ " , 'P' ins_alg_ruimte_type"
+ " , 1 ins_deel_aantal"
+ " , -1 ins_alg_ruimte_key"
+ " , -1 ins_alg_locatie_key"
+ " , s.ins_srtdeel_key"
+ " , s.ins_srtgroep_key"
+ " , g.ins_discipline_key"
+ " , NULL ins_srtdeel_acadsymbol"
+ " , NULL ins_deel_x"
+ " , NULL ins_deel_y"
+ " , NULL ins_deel_dwgx" // future: +", null ins_deel_z"
+ " , 255 ins_srtdeel_binding" // 255 omdat gebruiker nog mag toggelen
+ " , NULL ins_alg_ruimte_type_org"
+ " , NULL ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , SYSDATE ins_deel_aanmaak"
+ " , NULL ins_deel_vervaldatum"
+ " , NULL parent_omschrijving"
+ " , NULL uitvoertijd"
+ " , 1 uitvoertijd_eenheid"
+ " , NULL ins_deel_opmerking"
+ " , idp.ins_disc_params_autonum"
+ " , " + lcl.xsqla('s.ins_srtdeel_eenheid', 's.ins_srtdeel_key')
+ " , NULL ins_deel_flag"
+ " , NULL ins_deel_mjb_score1"
+ " , NULL ins_deel_mjb_score2"
+ " , NULL ins_srtdeel_mjb_grensscore1"
+ " , NULL ins_deel_externnr"
+ " FROM ins_srtdeel s"
+ " , ins_srtgroep g"
+ " , ins_tab_discipline dis"
+ " , ins_disc_params idp"
+ " WHERE s.ins_srtdeel_key = " + srtdeel_key
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key"
+ " AND dis.ins_discipline_key = idp.ins_discipline_key";
}
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
// Als ik een onderdeel toevoeg (parent_key>0 en ins_key<0) is het niet waarschijnlijk
// dat disc/groep/soort/omschrijving gelijk zijn aan die van de parent
if (ins_key > 0 || copy)
{
disc_key_arr[0] = oRs("ins_discipline_key").Value;
var srtdeel_key = oRs("ins_srtdeel_key").Value;
var srtgroep_key = oRs("ins_srtgroep_key").Value;
var srtcode = oRs("ins_srtdeel_code").Value;
var srtdeel_eenheid = oRs("ins_srtdeel_eenheid").Value;
var desc = (copy ? "" : oRs("ins_deel_omschrijving").Value); // Als copy dan clientside nieuwe code laten genereren.
var opmerk = (copy ? "" : oRs("ins_deel_opmerking").Value);
var perslid_key_beh = oRs("prs_perslid_key_beh").Value;
var actief = oRs("ins_deel_actief").Value == 1;
var deel_image = oRs("ins_deel_image").Value;
var markering = oRs("ins_deel_flag").Value;
}
parentdesc = oRs("parent_omschrijving").Value;
uitvoertijd = oRs("uitvoertijd").Value;
uitvoertijd_eenheid = oRs("uitvoertijd_eenheid").Value || 'D';
// Bij kopi<70>ren kan het object uitgeleend zijn. Dan org type/key nemen
bind = (copy && oRs("ins_alg_ruimte_key_org").Value? oRs("ins_alg_ruimte_type_org").Value : oRs("ins_alg_ruimte_type").Value);
bind_key = (copy && oRs("ins_alg_ruimte_key_org").Value? oRs("ins_alg_ruimte_key_org").Value : oRs("ins_alg_ruimte_key").Value);
aanmaak = (copy? new Date() : new Date(oRs("ins_deel_aanmaak").Value));
vervaldatum = (oRs("ins_deel_vervaldatum").Value != null && !copy)? new Date(oRs("ins_deel_vervaldatum").Value) : null;
externnr = oRs("ins_deel_externnr").Value;
if (parent_key < 0)
parent_key = oRs("ins_deel_parent_key").Value || -1;
srtdeel_binding = oRs("ins_srtdeel_binding").Value;
tekenbaar = oRs("ins_srtdeel_acadsymbol").Value != null;
getekend = oRs("ins_deel_dwgx").Value != null;
xcoord = (copy? null : oRs("ins_deel_x").Value); // Als copy dan xcoord leeg laten. Is toch anders als orgineel.
if (xcoord) xcoord = safe.jsfloat(xcoord);
ycoord = (copy? null : oRs("ins_deel_y").Value); // Als copy dan ycoord leeg laten. Is toch anders als orgineel.
if (ycoord) ycoord = safe.jsfloat(ycoord);
// future: zcoord = oRs("ins_deel_z").Value
org_bind = oRs("ins_alg_ruimte_type_org").Value;
org_bind_key = oRs("ins_alg_ruimte_key_org").Value;
isLendOut = (oRs("ins_alg_ruimte_key_org").Value != null && !copy); // Bij kopie<69>ren is het object nog niet uitgeleend.
alg_ruimte_type = oRs("ins_alg_ruimte_type").Value;
ins_deel_aantal = oRs("ins_deel_aantal").Value;
autonum = oRs("ins_disc_params_autonum").Value;
mjb_score1 = oRs("ins_deel_mjb_score1").Value;
mjb_score2 = oRs("ins_deel_mjb_score2").Value;
ins_srtdeel_mjb_grensscore1 = oRs("ins_srtdeel_mjb_grensscore1").Value;
oRs.close();
if (org_bind_key != null)
free = false;
else
free = true;
if ((ins_key > 0 || parent_key > 0 || copy) && isNext < 0)
{
if (copy)
var o_key = ins_copy_key;
else if (ins_key > 0)
var o_key = ins_key;
else
var o_key = parent_key;
if ( bind == 'R' || bind == 'W' || bind == 'T' )
{
if (copy && !free)
{
// Object is uitgeleend. Voor het kopi<70>ren alg_ruimte_key_org en alg_ruimte_type_org gebruiken voor de plaats.
if (bind == "W")
sql = "SELECT d.ins_alg_locatie_key"
+ " , v.alg_gebouw_key"
+ " , r.alg_verdieping_key"
+ " , r.alg_ruimte_key"
+ " , d.ins_alg_ruimte_key_org prs_werkplek_key"
+ " FROM ins_v_deelenonderdeel d"
+ " , prs_werkplek wp"
+ " , alg_ruimte r"
+ " , alg_verdieping v"
+ " WHERE ( (d.ins_alg_ruimte_key_org = wp.prs_werkplek_key)"
+ " AND d.ins_alg_ruimte_type_org = 'W')"
+ " AND ( (wp.prs_alg_ruimte_key = r.alg_ruimte_key)"
+ " AND d.ins_alg_ruimte_type_org = 'W')"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND d.ins_deel_verwijder IS NULL"
+ " AND d.ins_deel_key = " + ins_copy_key;
else
sql = "SELECT l.alg_locatie_key"
+ " , g.alg_gebouw_key"
+ " , v.alg_verdieping_key"
+ " , r.alg_ruimte_key"
+ " , NULL prs_werkplek_key"
+ " FROM ins_v_deelenonderdeel d"
+ " , alg_ruimte r"
+ " , alg_verdieping v"
+ " , alg_gebouw g"
+ " , alg_locatie l"
+ " WHERE d.ins_alg_ruimte_key_org = r.alg_ruimte_key"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND d.ins_deel_key = " + ins_copy_key;
}
else
sql = "SELECT alg_locatie_key"
+ ", COALESCE(alg_gebouw_key, alg_terreinsector_key) alg_gebouw_key"
+ ", alg_verdieping_key"
+ ", alg_ruimte_key"
+ ", prs_werkplek_key"
+ " FROM ins_v_xdeel_gegevens_keys WHERE ins_deel_key=" + o_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
o_loc_key = oRs("alg_locatie_key").Value;
o_bld_key = oRs("alg_gebouw_key").Value;
o_floor_key = oRs("alg_verdieping_key").Value;
o_room_key = oRs("alg_ruimte_key").Value;
o_workpl_key = oRs("prs_werkplek_key").Value;
o_dep_key = -1;
o_perslid_key = -1;
o_cntpers_key = -1;
// gracefull terugvallen nav. DHLN#18851
// In theorie kan dit ook een probleem zijn voor andere bindings
// maar daar kan ik geen logische terugvaloptie bedenken.
if (!(srtdeel_binding & BIND_WERKPL) && bind == 'W')
{
o_workpl_key = -1;
bind = "R";
}
oRs.close();
}
}
else // Persoon/afdeling gebonden
{
if (bind == 'A')
{
o_perslid_key = -1;
o_dep_key = bind_key;
}
if (bind == 'P')
{
o_dep_key = -1;
o_perslid_key = bind_key;
}
if (bind == 'C')
{
o_cntpers_key = bind_key;
o_perslid_key = -1;
o_dep_key = -1;
}
o_loc_key = o_bld_key = o_floor_key = o_room_key = o_workpl_key = -1;
}
}
}
}
// Als we zo ver zijn gekomen hebben we ondertussen misschien wel srtdeel_key maar niet srtgroep_key
if (srtdeel_key > 0 && srtgroep_key < 0)
{
var sql = "SELECT sd.ins_srtgroep_key"
+ " , ins_discipline_key"
+ " FROM ins_srtdeel sd, "
+ " ins_srtgroep sg"
+ " WHERE sd.ins_srtdeel_key = " + srtdeel_key
+ " AND sg.ins_srtgroep_key = sd.ins_srtgroep_key";
var oRs = Oracle.Execute(sql);
srtgroep_key = oRs("ins_srtgroep_key").Value;
disc_key_arr[0] = oRs("ins_discipline_key").Value;
oRs.Close()
}
if (srtgroep_key > 0 && disc_key_arr.length == 0)
{
var sql = "SELECT ins_discipline_key"
+ " FROM ins_srtgroep sg"
+ " WHERE sg.ins_srtgroep_key = " + srtgroep_key;
var oRs = Oracle.Execute(sql);
disc_key_arr[0] = oRs("ins_discipline_key").Value;
oRs.Close()
}
// Alleen bij eenduidigheid kan een dialect toegepast worden
// Praktisch betekent dat bij een nieuw object van nog onbekende discipline
if (disc_key_arr.length == 1)
lcl.set_dialect(disc_key_arr[0], "INS_DISCIPLINE_KEY");
if (module == "SLE" && ins_key < 0)
{ // Eigen werkplek als default plaats voor sleutels en cilinders
o_loc_key = user.alg_locatie_key();
o_bld_key = user.alg_gebouw_key();
o_floor_key = user.alg_verdieping_key();
o_room_key = user.alg_ruimte_key();
}
var uitleen_flex_present = false;
if (srtdeel_key > 0) {
sql = "SELECT k.ins_kenmerk_key"
+ " FROM ins_srtkenmerk t,"
+ " ins_kenmerk k,"
+ " ins_srtdeel s,"
+ " ins_srtgroep g"
+ " WHERE s.ins_srtdeel_key = " + srtdeel_key
+ " AND ( ( k.ins_srtinstallatie_key = s.ins_srtdeel_key"
+ " AND k.ins_kenmerk_niveau = 'S')"
+ " OR ( k.ins_srtinstallatie_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_niveau = 'G')"
+ " OR ( k.ins_srtinstallatie_key = g.ins_discipline_key"
+ " AND k.ins_kenmerk_niveau = 'D'))"
+ " AND k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND t.ins_srtkenmerk_verwijder IS NULL"
+ (urole == "fo"
? " AND BITAND(k.ins_kenmerk_rolcode, 4) = 4"
: "");
oRs = Oracle.Execute(sql);
if (!oRs.eof) {
uitleen_flex_present = true;
}
oRs.close();
}
var explode_count = [ { label: L("lcl_amount") + (srtdeel_eenheid ? "&nbsp;(" + srtdeel_eenheid +")" : "")
, datatype: "float"
, readonly: !this_ins.canChangeAlg
, value: ins_deel_aantal
}
, { label: L("lcl_count")
, datatype: "number"
, readonly: !this_ins.canChangeAlg
, value: 1
}
];
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script>
var sgDept, sgPerson;
var urole = "<%=urole%>";
var ins_key = <%=ins_key%>;
var copy = <%=copy? 1 : 0%> == 1;
</script>
<script type="text/javascript">
urole = "<%=urole%>";
var invalid_binding = <%=invalid_binding? 1 : 0%> == 1;
// Houd rekening met globaal gezette bindingBits
async function checkInput(isNext)
{
if (!await validateForm("u2"))
return false;
var f = document.u2;
var msg = L("lcl_po_missed_dsc");
var status = f && f.desc && f.desc.value != "";
<% if (parent_key < 0 && !isLendOut && !invalid_binding)
{ %>
// Controleer of er wel iets gekozen is. De werking is tegenwoordig zo dat je nooit iets
// fouts gekozen kunt hebben
if (status)
{
status = false;
msg = L("lcl_obj_bind_mandatory") + "\n";
if (bindingBits & BIND_AFDELI)
if (f.sDept.value > 0)
status = true;
else
msg += L("lcl_obj_bind_a") + " of ";
if (bindingBits & BIND_PERSOO)
<% if (this_ins.canChangeAlg || alg_ruimte_type == "P") // Zonder canChangeAlg geen persoonselector
{ %>
if (f.sPerson.value > 0)
status = true;
else
<% } %>
msg += L("lcl_obj_bind_p") + " of ";
<% if (!isLendOut || (isLendOut && alg_ruimte_type == "R"))
{ %>
if ((bindingBits & BIND_TERREI) && f.gebouwkey)
if (f.gebouwkey.value > 0 && f.bttype.value == 'T')
status = true;
else
msg += L("lcl_obj_bind_t") + " of ";
if ((bindingBits & BIND_RUIMTE) && f.ruimtekey)
if(f.ruimtekey.value > 0)
status = true;
else
msg += L("lcl_obj_bind_r") + " of ";
if ((bindingBits & BIND_WERKPL) && f.werkplekkey)
if (f.werkplekkey.value > 0)
status = true;
else
msg += L("lcl_obj_bind_w") + " of ";
<% } %>
msg = msg.substring(0, msg.length - 3);
}
<% } %>
if (status)
{
if (f.next) f.next.value = isNext ? '1' : '0'; // Is alleen bij de "bo" aanwezig.
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(ins_submit_callback), "json");
return true;
}
else
{
FcltMgr.alert(msg);
return false;
}
}
function ins_submit_callback(json)
{
if (json.success)
FcltMgr.closeDetail(window, json);
else
iface.button.enable("btn_ins_submit");
}
function cadShowdiscfn()
{ <%
if (disc_key_arr.length > 0)
{ %>
return [<%=disc_key_arr%>];
<% }
else
{ %>
if ($("input#disc") && $("input#disc").val())
return $("input#disc").val();
return -1;
<% } %>
}
function change_explodechoice()
{
var JSONdata = '<%=safe.jsstring(JSON.stringify(explode_count))%>';
var explode_count = JSON.parse(JSONdata);
var keuze = ( $("#explode").prop("checked") ? 1 : 0 );
explode_prop = explode_count[keuze];
$("#count").parent()[0].previousSibling.innerText = explode_prop.label;
$("#count").attr("readonly", explode_prop.readonly);
$("#count").attr("value", explode_prop.value);
(explode_prop.datatype=="number" ? $("#count").removeClass("float").addClass("number") : $("#count").removeClass("number").addClass("float"));
}
</script>
</head>
<body class="editmode">
<% SUBFRAME_START(); %>
<%
var buttons = [];
// In de frontoffice (uitgeleende objecten) mode kunnen alleen de flexkenmerken aangepast worden.
// Zijn er wel uitleen kenmerken anders hoeft de wijzig knop niet getoond te worden.
if (urole == "bo" || (urole == "fo" && uitleen_flex_present))
buttons.push( {title: L("lcl_submit"), action:"checkInput()", icon: "fa-fclt-save", singlepress: true, id:"btn_ins_submit"})
buttons.push( {title: L("lcl_cancel"), action:"ins_cancel()", icon: "fa-fclt-cancel" } );
var headertitle = L("lcl_ins_frame_algemeen");
if (module == "SLE")
{
var sletype = (srtgroep_key == S("sle_ins_srt_groep_key")? "S" : "C");
if (sletype == "S")
headertitle = L("lcl_sle_sleutel");
else
headertitle = L("lcl_sle_cilinder");
}
var invalid_binding = (((!(srtdeel_binding & (BIND_AFDELI)) && o_dep_key > 0) ||
(!(srtdeel_binding & (BIND_PERSOO)) && o_perslid_key > 0) ||
(!(srtdeel_binding & (BIND_TERREI)) && o_bld_key > 0 && !(srtdeel_binding & (BIND_RUIMTE)) && !(srtdeel_binding & (BIND_WERKPL))) ||
(!(srtdeel_binding & (BIND_RUIMTE)) && o_room_key > 0 && !(srtdeel_binding & (BIND_WERKPL))) ||
(!(srtdeel_binding & (BIND_WERKPL)) && o_workpl_key > 0)) && !isLendOut) ||
(((!(srtdeel_binding & (BIND_AFDELI)) && org_bind_key > 0 && org_bind == "A") ||
(!(srtdeel_binding & (BIND_PERSOO)) && org_bind_key > 0 && org_bind == "P") ||
(!(srtdeel_binding & (BIND_TERREI)) && org_bind_key > 0 && org_bind == "T" > 0 && !(srtdeel_binding & (BIND_RUIMTE)) && !(srtdeel_binding & (BIND_WERKPL))) ||
(!(srtdeel_binding & (BIND_RUIMTE)) && org_bind_key > 0 && org_bind == "R" && !(srtdeel_binding & (BIND_WERKPL))) ||
(!(srtdeel_binding & (BIND_WERKPL)) && org_bind_key > 0 && org_bind == "W")) && isLendOut);
IFRAMER_HEADER(headertitle, buttons);
%>
<form name="u2"
action="ins_edit_deel_save.asp?urole=<%=urole%>&ins_key=<%=ins_key%>&parent_key=<%=parent_key%>"
method="post">
<script type="text/javascript">
var parent_key = <%=parent_key%>;
var bindingBits = <%=srtdeel_binding%>;
</script>
<% BLOCK_START("insIns", L("lcl_general_properties"), {icon: "fa-tag"}); %>
<input type="hidden" name="urole" value="<%=urole%>">
<input type="hidden" name="ins_copy" value="<%=(copy ? 1 : 0)%>">
<input type="hidden" name="ins_copy_key" value="<%=ins_copy_key%>">
<% if (ins_key > 0 && isNext < 0)
{ %>
<input type='hidden' name='obj' value='<%=ins_key%>'><%
}
if (urole == "fo")
{
if (free)
{ %>
<input type="hidden" name="free" value="1">
<% }
}
else
{ %>
<input type="hidden" name="next" value="0">
<% }
FCLTdisciplineselector("disc",
"sgDisc",
{ label: L("lcl_discipline"),
disc_key: disc_key_arr.length == 1? disc_key_arr[0] : -1,
module: module,
perslidKey: user_key,
autfunctionKey: authparams.autfunctionkey,
autRW: ins_key > 0 || copy? "R" : "W",
extraParamField: "autonum",
extracode: "A",
onChange: "onChangeDiscipline", // disgroepChanged
readonly: (disc_key_arr.length == 1 || ins_key > 0 || copy) || !this_ins.canChangeAlg,
required: true
});
FCLTsrtgroepselector("srtgroep",
"sgSrtgroep",
{ label: L("lcl_obj_group"),
srtgroep_key: srtgroep_key,
autfunction: autfunction,
onChange: "onChangeSrtgroep",
urlAdd: [{urlParam: "disc_key", field: "disc"}],
readonly: (ins_key > 0 || copy || module == "SLE") || !this_ins.canChangeAlg,
required: true
});
// Object Sort =======================================================
FCLTsrtdeelselector("srtdeel",
"sgSrtdeel",
{ label: L("lcl_obj_sort"),
srtdeel_key: srtdeel_key,
filtercode: (parent_key > 0? 'C' : null), // Als parent_key is meegegeven dan alleen objecten die ook een onderdeel kunnen zijn.
autfunction: autfunction,
onChange: "onChangeSrtdeel",
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
{urlParam: "disc_key", field: "disc"}],
extraParamField: "binding",
extracode: "B",
module: module,
readonly: (ins_key > 0 || copy || module == "SLE") || !this_ins.canChangeAlg,
required: true
});
if ((ins_key < 0 && !copy) || copy)
{
if (copy)
{ %>
<input type="hidden" id="disc" name="disc" value="<%=disc_key_arr[0]%>">
<input type="hidden" id="srtgroep" name="srtgroep" value="<%=srtgroep_key%>">
<input type="hidden" id="srtdeel" name="srtdeel" value="<%=srtdeel_key%>">
<% } %>
<script>
$(function()
{
onChangeSrtdeel(<%=srtdeel_key%>);
checkReadonlyDesc();
});
</script>
<% }
var new_desc = (srtgroep_key == S("sle_ins_srt_groep_key") || srtgroep_key == S("cil_ins_srt_groep_key")? srtcode : "");
RWFIELDTR("desc",
"fld",
L("lcl_obj_identification"),
(ins_key > 0 || copy) && isNext < 0? desc : new_desc,
{ maxlength: 60,
required: true,
readonly: !this_ins.canChangeAlg || !(autonum & 2)
});
var ins_explode_objects = S("ins_explode_objects");
var explode_choice = (ins_explode_objects & 2) == 2; // gebruiker mag kiezen: per stuk of bulk.
var explode_objects = (ins_explode_objects & 1) == 1; // 0=bulk, 1=per stuk
var explode_label = (explode_objects ? L("lcl_count") : L("lcl_amount") + (srtdeel_eenheid ? "&nbsp;(" + srtdeel_eenheid+")" : ""));
if (explode_objects && !explode_choice && ins_key > 0) { // Er zijn geen 'bulk-objecten' mogelijk
// Nvt; aantal is hier altijd 1
} else {
if (explode_choice && ins_key < 0) { // Wil ik elk object apart registreren voor dit nieuwe object? (= exploderen)
RWCHECKBOXTR("explode", "fldcheck", L("lcl_ins_deel_explode"), (explode_objects == 1 ? actief : null), { html: "onChange='change_explodechoice();'" });
}
var params = { datatype: (explode_objects ? "number" : "float"), readonly: !this_ins.canChangeAlg, required: true };
RWFIELDTR("count", "fldshort", explode_label, (ins_key > 0 ? ins_deel_aantal : 1), params);
}
RWFIELDTR("opmerk", "fld", L("lcl_ins_opmerking"), opmerk, {maxlength: 320, readonly: !this_ins.canChangeAlg, suppressEmpty: true});
if (this_ins.canChange && S("ins_deel_flags") > 1) // Flags checkboxen -->
{
var flag_options = [];
for (flagkey=0; flagkey < S("ins_deel_flags"); flagkey++)
{
flag_options.push("SELECT " + flagkey + ", " + safe.quoted_sql(L("lcl_ins_flag"+flagkey)) + " FROM DUAL");
}
var sql = flag_options.join(" UNION ");
FCLTselector("insflag", sql, { initKey: markering, label: L("lcl_ins_flags"), flag: markering });
}
BLOCK_END();
BLOCK_START("insGeo", L("lcl_ins_meta_data"), {icon: "fa-clipboard"});
ROFIELDTR("fld", L("extern_nr"), externnr, {suppressEmpty: true});
FCLTcalendar("aanmaakdatum",
{ datum: aanmaak,
label: L("lcl_last_action"),
addClass: "allow_old_dates",
required: true,
readonly: !this_ins.canChangeAlg,
volgnr: 1
});
FCLTcalendar("vervaldatum",
{ datum: vervaldatum,
initEmpty: vervaldatum==null,
label: L("lcl_ins_vervaldatum"),
suppressEmpty: true,
readonly: !this_ins.canChangeAlg,
volgnr: 2
});
RWCHECKBOXTR("ins_actief", "fldcheck", L("lcl_ins_active"), actief, {readonly: !this_ins.canChangeAlg});
FCLTpersoonselector("ins_manager", // beheerder
"sgins_manager",
{ perslidKey: perslid_key_beh,
autlevel: authparams && authparams.PRSwritelevel,
label: L("lcl_ins_manager"),
filtercode: "INSB", // TODO: een filter toevoegen?
required: false,
suppressEmpty: true,
readonly: (ins_key > 0) && (!this_ins.writeman || urole == "fo"),
moreinfo: false /* PF: omdat de showmode die heeft, en het label erg lang is*/
});
if (isLendOut)
ROFIELDTR("fld", "", L("lcl_obj_is_lent_out"));
if (bind != 'A' && bind != 'P' && parent_key < 0) // voorlopig kan een onderdeel ook geen eigen coordinaten hebben, tegen de verwarring.
{
RWFIELDTR("xcoord", "fldshort", L("lcl_obj_geoxcoord"), xcoord, {maxlength: 12, datatype: "float", readonly: !this_ins.canChangeAlg, suppressEmpty: true});
RWFIELDTR("ycoord", "fldshort", L("lcl_obj_geoycoord"), ycoord, {maxlength: 12, datatype: "float", readonly: !this_ins.canChangeAlg, suppressEmpty: true});
}
if (tekenbaar)
{
// als het object technisch getekend zou kunnen zijn, geven we hier de status aan.
// Een vriendelijke optie zou zijn om in geval van niet-geplaatst-zijn hier de optie toe te voegen
// omdat direct alsnog te doen; wellicht zelfs ook voor VERplaatsen.
%> <tr><td></td><td><%=getekend?L("lcl_obj_isgetekend"):L("lcl_obj_nietgetekend")%></td></tr>
<% }
BLOCK_END();
if (ins_score_enabled) // todo check of je dit niet wilt als alles leeg is
{
BLOCK_START(("insCnd"), L("cnd_conditiegegevens"), { icon: "fa-weight" });
var lclass = (ins_srtdeel_mjb_grensscore1 && mjb_score1>ins_srtdeel_mjb_grensscore1? " expired2" : "");
ROFIELDTR("fld", L("ins_srtdeel_mjb_grensscore1"), ins_srtdeel_mjb_grensscore1, {suppressEmpty: true});
ROFIELDTR("fld"+lclass, L("lcl_ins_deel_mjb_score1"), mjb_score1, {suppressEmpty: true});
ROFIELDTR("fld", L("lcl_ins_deel_mjb_score2"), mjb_score2, {suppressEmpty: true});
BLOCK_END();
}
BLOCK_START("insIns", L("lcl_owner_info"), {icon: "fa-map-marker"});
// Voor onderdelen ook het hoofdobject weergeven
if (parent_key > 0 && this_ins.writeman && this_ins.canChangeAlg)
ROFIELDTR("fld", L("lcl_ins_parentobject"), parentdesc, {});
else
ROFIELDTR("fld", L("lcl_ins_parentobject"), parentdesc, {suppressEmpty: true});
if ((srtdeel_binding & (BIND_AFDELI)) && (!isLendOut || (isLendOut && o_dep_key > 0)) && !invalid_binding)
{
FCLTafdelingselector("sDept",
"sDept",
{ departmentKey: o_dep_key,
label: L("lcl_prs_organisatie"),
autlevel: authparams.PRSwritelevel,
onChange: "onChangeDept",
suppressEmpty: true,
readonly: (parent_key > 0 || isLendOut) || !this_ins.canChangeAlg
});
}
if (((srtdeel_binding & (BIND_PERSOO)) && !isLendOut) ||
((((srtdeel_binding & (BIND_PERSOO)) && (org_bind == "P")) ||
((srtdeel_binding & (BIND_AFDELI)) && (org_bind == "A")) ||
((srtdeel_binding & (BIND_TERREI)) && (org_bind == "T")) ||
((srtdeel_binding & (BIND_RUIMTE)) && (org_bind == "R")) ||
((srtdeel_binding & (BIND_WERKPL)) && (org_bind == "W"))) && (isLendOut && o_perslid_key > 0)) &&
!invalid_binding)
{
FCLTpersoonselector("sPerson", // requestor
"sgPerson",
{ perslidKey: o_perslid_key,
label: L("lcl_name"),
autlevel: authparams.PRSwritelevel,
onChange: "onChangePerson",
suppressEmpty: true,
readonly: (parent_key > 0 || isLendOut) || !this_ins.canChangeAlg
});
}
// Object is uitgeleend aan een contactpersoon. Voor het uitlenen behoorde het object tot een persoon, afdeling of plek.
if ((((srtdeel_binding & (BIND_PERSOO)) && (org_bind == "R")) ||
((srtdeel_binding & (BIND_AFDELI)) && (org_bind == "A")) ||
((srtdeel_binding & (BIND_TERREI)) && (org_bind == "T")) ||
((srtdeel_binding & (BIND_RUIMTE)) && (org_bind == "R")) ||
((srtdeel_binding & (BIND_WERKPL)) && (org_bind == "W"))) &&
(isLendOut && o_cntpers_key > 0) &&
!invalid_binding)
{
FCLTcontactpersoonselector("sCntPers",
"sgCntPers",
{ contactpersoonKey: o_cntpers_key,
label: L("lcl_contact_pers"),
suppressEmpty: true,
readonly: true
});
}
if ((!isLendOut || (isLendOut && (bind == "R" || bind == "T"))) && !invalid_binding)
{
var maxlevel = -1;
var change = "";
%>
<script>
function change1()
{
setBind('T');
}
function change2(p_key)
{
setBind('R');
}
function change3(p_key)
{
setBind('W');
}
</script>
<%
if (srtdeel_binding & (BIND_TERREI | BIND_RUIMTE | BIND_WERKPL))
{
change = "change1()";
maxlevel = 3;
}
if (srtdeel_binding & (BIND_RUIMTE | BIND_WERKPL))
{
change = "change2()";
maxlevel = 5;
}
if (srtdeel_binding & (BIND_WERKPL))
{
change = "change3()";
maxlevel = 6;
}
if (maxlevel >= 2)
FCLTplaatsselector(authparams.ALGwritelevel, { locatiekey: o_loc_key,
verdiepingkey: o_floor_key,
gebouwkey: o_bld_key,
ruimtekey: o_room_key,
werkplekkey: o_workpl_key,
startlevel: 2, // locatie
eindlevel: maxlevel,
terrein: true,
autoselect: true,
filtercode: "INCVR",
onLocChange: change,
cadSelect: true,
cadShowdiscfn: true,
suppressEmpty: true,
escalateOnChUp: true, // ook onLocChange als je gebouw wijzigt
readonly: (parent_key > 0 || isLendOut) || !this_ins.canChangeAlg
});
}
BLOCK_END();
BLOCK_START("insRunTime", L("lcl_ins_additional_details"), {icon: "fa-cogs"});
sql = "SELECT 'U', " + safe.quoted_sql(L("lcl_mld_hours")) + " FROM DUAL"
+ " UNION SELECT 'D', " + safe.quoted_sql(L("lcl_mld_days")) + " FROM DUAL"
+ " ORDER BY 2";
var selectparams = { fieldName: "dayshours",
sql: sql,
params: { id: "dayshours",
initKey: uitvoertijd_eenheid,
readonly: (!this_ins.canChangeAlg),
disable: !uitvoertijd
}
}
RWFIELDTR("uitvoertijd", "fld", L("lcl_ins_uitvoertijd"), uitvoertijd? Math.round(uitvoertijd * 100000) / 100000 : ""
, {maxlength: 8, datatype: "float", html: "onChange='onChangeUitvoertijd();'", selector: selectparams
, readonly: !this_ins.canChangeAlg, suppressEmpty: true});
BLOCK_END();
if (urole != "fo" || uitleen_flex_present) // FO ziet ze alleen als er uitleen flex zijn?
{
generateFlexKenmerkBlock({urole: urole,
ins_key: copy? ins_copy_key : ins_key,
srtdeelkey_array: srtdeel_key > 0? [srtdeel_key] : [],
reado: false,
bewerkniveau: "D"
});
}
IFACE.FORM_END();
%>
</form>
<% SUBFRAME_END(); %>
</body>
</html><% ASPPAGE_END(); %>