892 lines
37 KiB
Plaintext
892 lines
37 KiB
Plaintext
<%@ 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/disciplineselector.inc" -->
|
||
<!-- #include file="../Shared/srtgroepselector.inc" -->
|
||
<!-- #include file="../Shared/srtdeelselector.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_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 this_ins = ins.func_enabled_deel(ins_key);
|
||
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 = getQParamInt("disc", -1);
|
||
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 actief = true;
|
||
|
||
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 authparams = user.checkAutorisation(autfunction);
|
||
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 desc = bind_key = parentdesc = null;
|
||
var aanmaak = new Date();
|
||
var vervaldatum = null;
|
||
var srtcode = "";
|
||
var tekenbaar = false;
|
||
var uitvoertijd;
|
||
var uitvoertijd_eenheid;
|
||
var ins_deel_aantal = 1;
|
||
|
||
%>
|
||
<html>
|
||
<head>
|
||
<% FCLTHeader.Generate(); %>
|
||
<script>
|
||
var sgDept, sgPerson;
|
||
var urole = "<%=urole%>";
|
||
var ins_key = <%=ins_key%>;
|
||
var copy = <%=copy? 1 : 0%> == 1;
|
||
</script>
|
||
</head>
|
||
<%
|
||
|
||
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_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;
|
||
|
||
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"
|
||
+ " FROM ins_deel 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')
|
||
+ " FROM ins_deel 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"
|
||
+ " , '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')
|
||
+ " 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)
|
||
{
|
||
var disc_key = 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;
|
||
}
|
||
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;
|
||
|
||
if (!parent_key)
|
||
parent_key = oRs('ins_deel_parent_key').Value;
|
||
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;
|
||
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_deel 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_deel 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;
|
||
|
||
// 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";
|
||
}
|
||
}
|
||
}
|
||
else // Persoon/afdeling gebonden
|
||
{
|
||
if (bind == 'A')
|
||
{
|
||
o_perslid_key = -1;
|
||
o_dep_key = bind_key;
|
||
}
|
||
if (bind == 'P')
|
||
{
|
||
o_perslid_key = bind_key;
|
||
sql = "SELECT p.prs_afdeling_key, " // even afdeling er bijzoeken
|
||
+ S("prs_dep_string") + " dep"
|
||
+ " FROM prs_perslid p, prs_v_afdeling d"
|
||
+ " WHERE p.prs_afdeling_key=d.prs_afdeling_key"
|
||
+ " AND prs_perslid_key = " + o_perslid_key;
|
||
oRs = Oracle.Execute(sql);
|
||
o_dep_key = oRs("prs_afdeling_key").Value;
|
||
}
|
||
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 = oRs("ins_discipline_key").Value;
|
||
oRs.Close()
|
||
}
|
||
if (srtgroep_key > 0 && disc_key < 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 = oRs("ins_discipline_key").Value;
|
||
oRs.Close()
|
||
}
|
||
|
||
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();
|
||
}
|
||
|
||
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 k.ins_kenmerk_volgnummer > 900" : "");
|
||
oRs = Oracle.Execute(sql);
|
||
var uitleen_flex_present = false;
|
||
if (!oRs.eof) uitleen_flex_present = true;
|
||
%>
|
||
<body id="editbody">
|
||
<%
|
||
var buttons = [];
|
||
if (urole == "bo")
|
||
buttons.push( {title: L("lcl_submit"), action:"checkInput()", icon: "opslaan.png" })
|
||
|
||
buttons.push( {title: L("lcl_cancel"), action:"ins_cancel()", icon: "undo.png" } );
|
||
|
||
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");
|
||
}
|
||
|
||
// Als o_perslid_key een waarde heeft dan krijgt o_dep_key ook een waarde. De afdeling van een persoon wordt altijd erbij gezocht.
|
||
// Daarom alleen invalid binding via o_dep_key als o_perslid_key geen waarde heeft.
|
||
var invalid_binding = ((!(srtdeel_binding & (BIND_AFDELI)) && o_dep_key > 0 && o_perslid_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))
|
||
|
||
IFRAMER_HEADER(headertitle, buttons);
|
||
%>
|
||
<div id="edit">
|
||
<script type="text/javascript">
|
||
urole = "<%=urole%>";
|
||
var invalid_binding = <%=invalid_binding? 1 : 0%> == 1;
|
||
|
||
// Houd rekening met globaal gezette bindingBits
|
||
function checkInput(isNext)
|
||
{
|
||
if (!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 (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)
|
||
if (f.gebouwkey.value > 0 && f.bttype.value == 'T')
|
||
status = true;
|
||
else
|
||
msg += '<%=L("lcl_obj_bind_t")%> of ';
|
||
|
||
if (bindingBits & BIND_RUIMTE)
|
||
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)
|
||
{
|
||
f.next.value = isNext ? '1' : '0';
|
||
f.submit();
|
||
return true;
|
||
}
|
||
FcltMgr.alert(msg);
|
||
return false;
|
||
}
|
||
</script>
|
||
|
||
<form name="u2"
|
||
action="ins_edit_deel_save.asp?urole=<%=urole%>&ins_key=<%=ins_key%>&parent_key=<%=parent_key%>"
|
||
method="post"
|
||
target="hidFrameSubmit"
|
||
onsubmit="checkInput();">
|
||
<input type=hidden name=urole value="<%=urole%>">
|
||
<% 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">
|
||
<% } %>
|
||
|
||
<script type="text/javascript">
|
||
var parent_key = <%=parent_key%>;
|
||
var bindingBits = <%=srtdeel_binding%>;
|
||
</script>
|
||
|
||
<% BLOCK_START("insIns", L("lcl_general_properties")); %>
|
||
<tr>
|
||
<td>
|
||
<table>
|
||
<% FCLTdisciplineselector("disc",
|
||
"sgDisc",
|
||
{ label: L("lcl_discipline"),
|
||
disc_key: disc_key,
|
||
module: module,
|
||
perslidKey: user_key,
|
||
autfunctionKey: authparams.autfunctionkey,
|
||
autRW: "W",
|
||
extraParamField: "autonum",
|
||
extracode: "A",
|
||
onChange: "onChangeDiscipline", // disgroepChanged
|
||
readonly: (disc_key > 0 || ins_key > 0 || copy) || (!this_ins.canChangeAlg && !this_ins.canChangeOwn),
|
||
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 && !this_ins.canChangeOwn),
|
||
required: true
|
||
});
|
||
|
||
// Object Sort =======================================================
|
||
FCLTsrtdeelselector("srtdeel",
|
||
"sgSrtdeel",
|
||
{ label: L("lcl_obj_sort"),
|
||
srtdeel_key: srtdeel_key,
|
||
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 && !this_ins.canChangeOwn),
|
||
required: true
|
||
});
|
||
|
||
if ((ins_key < 0 && !copy) || copy)
|
||
{
|
||
if (copy)
|
||
{ %>
|
||
<input type="hidden" id="disc" name="disc" value="<%=disc_key%>">
|
||
<input type="hidden" id="srtgroep" name="srtgroep" value="<%=srtgroep_key%>">
|
||
<input type="hidden" id="srtdeel" name="srtdeel" value="<%=srtdeel_key%>">
|
||
<% } %>
|
||
<script>
|
||
$(document).ready(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 && !this_ins.canChangeOwn) || !(autonum & 2)
|
||
});
|
||
if (S("ins_explode_objects") == 0)
|
||
RWFIELDTR("count", "fldshort", L("lcl_amount") + (srtdeel_eenheid ? " (" + srtdeel_eenheid+")" : ""), ins_deel_aantal, {datatype: "float", readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn), required: true});
|
||
else if(ins_key < 0 || isNext > 0 )
|
||
{
|
||
RWFIELDTR("count", "fldshort", L("lcl_count"), 1, {datatype: "number", readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn)});
|
||
}
|
||
RWFIELDTR("opmerk", "fld", L("lcl_ins_opmerking"), opmerk, {maxlength: 320, readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn)}); %>
|
||
</table>
|
||
</td>
|
||
<td align="center">
|
||
<% var srtdeel_image;
|
||
if (srtdeel_key > 0)
|
||
{
|
||
sql = "SELECT ins_srtdeel_image"
|
||
+ " FROM ins_srtdeel"
|
||
+ " WHERE ins_srtdeel_key = " + srtdeel_key;
|
||
oRs = Oracle.Execute(sql);
|
||
srtdeel_image = oRs("ins_srtdeel_image").Value;
|
||
}
|
||
if (srtdeel_image)
|
||
{
|
||
var imageFile = S("ins_image_path") + srtdeel_image;
|
||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||
if (fso.FileExists(Server.MapPath(imageFile)))
|
||
{ %>
|
||
<div id="divinsphoto">
|
||
<img id="insphoto" src="<%=safe.htmlattr(imageFile)%>">
|
||
<% }
|
||
}
|
||
else
|
||
{ %>
|
||
<div id="divinsphoto" style='display:none'>
|
||
<img id="insphoto" src="">
|
||
<% } %>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<% BLOCK_END();
|
||
|
||
if (urole != "fo" && parent_key < 0)
|
||
{
|
||
BLOCK_START("insGeo", L("lcl_ins_meta_data"));
|
||
FCLTcalendar("aanmaakdatum",
|
||
{ datum: aanmaak,
|
||
label: L("lcl_last_action"),
|
||
required: true,
|
||
readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn),
|
||
volgnr: 1
|
||
});
|
||
FCLTcalendar("vervaldatum",
|
||
{ datum: vervaldatum,
|
||
initEmpty: vervaldatum==null,
|
||
label: L("lcl_ins_vervaldatum"),
|
||
readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn),
|
||
volgnr: 2
|
||
});
|
||
RWCHECKBOXTR("ins_actief", "fldcheck", L("lcl_ins_active"), actief, {readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn)});
|
||
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,
|
||
readonly: !this_ins.writeman,
|
||
moreinfo: false /* PF: omdat de showmode die heeft, en het label erg lang is*/
|
||
});
|
||
if (!(bind == 'A' || bind == 'P'))
|
||
{
|
||
RWFIELDTR("xcoord", "fldshort", L("lcl_obj_geoxcoord"), xcoord, {maxlength: 12, datatype: "float"});
|
||
RWFIELDTR("ycoord", "fldshort", L("lcl_obj_geoycoord"), ycoord, {maxlength: 12, datatype: "float"});
|
||
}
|
||
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 (urole != "fo")
|
||
{
|
||
BLOCK_START("insIns", L("lcl_owner_info"));
|
||
// Voor onderdelen ook het hoofdobject weergeven
|
||
ROFIELDTR("fldd", 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",
|
||
readonly: (parent_key > 0 || isLendOut) || (!this_ins.canChangeAlg && !this_ins.canChangeOwn)
|
||
});
|
||
}
|
||
|
||
if ((srtdeel_binding & (BIND_PERSOO)) && (!isLendOut || (isLendOut && o_perslid_key > 0)) && !invalid_binding)
|
||
{
|
||
FCLTpersoonselector("sPerson", // requestor
|
||
"sgPerson",
|
||
{ perslidKey: o_perslid_key,
|
||
label: L("lcl_name"),
|
||
autlevel: authparams.PRSwritelevel,
|
||
onChange: "onChangePerson",
|
||
readonly: (parent_key > 0 || isLendOut) || (!this_ins.canChangeAlg && !this_ins.canChangeOwn)
|
||
});
|
||
}
|
||
|
||
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,
|
||
filtercode: "INCVR",
|
||
onLocChange: change,
|
||
escalateOnChUp: true, // ook onLocChange als je gebouw wijzigt
|
||
readonly: (parent_key > 0 || isLendOut) || (!this_ins.canChangeAlg && !this_ins.canChangeOwn)
|
||
});
|
||
}
|
||
BLOCK_END();
|
||
}
|
||
|
||
BLOCK_START("insRunTime", L("lcl_ins_additional_details"));
|
||
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 && !this_ins.canChangeOwn) && uitvoertijd < 0,
|
||
disable: !uitvoertijd
|
||
}
|
||
}
|
||
RWFIELDTR("uitvoertijd", "fldins_uitvtijd", L("lcl_ins_uitvoertijd"), uitvoertijd? Math.round(uitvoertijd * 100) / 100 : ""
|
||
, {maxlength: 4, datatype: "float", html: "onChange='onChangeUitvoertijd();'", selector: selectparams
|
||
, readonly: (!this_ins.canChangeAlg && !this_ins.canChangeOwn)});
|
||
BLOCK_END();
|
||
|
||
if (urole != "fo" || uitleen_flex_present) // FO ziet ze alleen als er uitleen flex zijn?
|
||
{
|
||
%><div id='insFlexList'><% // Wrapper div voor dynamisch herladen
|
||
|
||
generateFlexKenmerkBlock({urole: urole,
|
||
ins_key: copy? ins_copy_key : ins_key,
|
||
srtdeelkey_array: srtdeel_key > 0? [srtdeel_key] : [],
|
||
reado: false,
|
||
flexcolumns: S("ins_flexcolumns"),
|
||
bewerkniveau: "D"
|
||
});
|
||
%></div><%
|
||
}
|
||
IFACE.FORM_END();
|
||
%>
|
||
</form>
|
||
<iframe src="../Shared/empty.html" name="hidFrameSubmit" style="display:none"></iframe>
|
||
</div>
|
||
</body>
|
||
</html> |