Files
Facilitor/APPL/SLE/sle_edit_srtdeel_save.asp
Erik Groener 43fb4e73b3 FSN#34604 AiAi flexfolder sleutelbeheer
svn path=/Website/trunk/; revision=27210
2015-12-02 09:04:55 +00:00

325 lines
14 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: sle_edit_srtdeel_save.asp
Description: SUBMIT-form
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: []
});
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparamsSLEBOF = user.checkAutorisation("WEB_SLEBOF");
user.auth_required_or_abort(authparamsSLEBOF.ALGwritelevel < 9 && authparamsSLEBOF.PRSwritelevel < 9);
var ins_srtdeel_key = getQParamInt("ins_srtdeel_key", -1);
var sletype = getFParam("sletype");
// Is er een ruimte string meegegeven? Dan sleutels en cilinders koppelen/gekoppeld.
var couple = Request.Form("roomArray").count > 0;
var BIND_RUIMTE = 0x01;
var BIND_WERKPL = 0x02;
var BIND_TERREI = 0x04;
var BIND_AFDELI = 0x08;
var BIND_PERSOO = 0x10;
var BIND_INSDEE = 0x20; // Onderdeel
srtdeel_binding = 0xFF; // Veronderstel nog even dat alles mag
var binding = 0;
var sleutel_binding = srtdeel_binding & (BIND_RUIMTE + BIND_TERREI + BIND_PERSOO);
var cilinder_binding = srtdeel_binding & (BIND_RUIMTE + BIND_TERREI);
function saveSrtKenmerkdeel(srtdeel_key, params)
{
params = params || [];
var currentKenmerkenSQL = "SELECT v.ins_kenmerk_key, v.ins_kenmerkdeel_waarde"
+ " FROM ins_kenmerkdeel v, ins_kenmerk ik"
+ " WHERE v.ins_kenmerkdeel_verwijder IS NULL"
+ " AND v.ins_kenmerk_key = ik.ins_kenmerk_key"
+ " AND ik.ins_kenmerk_bewerkniveau = 'S'"
+ " AND v.ins_deel_key = " + srtdeel_key; // herge/misbruik ins_deel_key
var allKenmerkenSQL = "SELECT " + lcl.xsql('isk.ins_srtkenmerk_omschrijving', 'isk.ins_srtkenmerk_key') + " kenmerk_omschrijving"
+ ", isk.ins_srtkenmerk_key srtkenmerk_key"
+ ", fac_kenmerkdomein_key"
+ " FROM ins_kenmerk ik, "
+ " ins_srtkenmerk isk"
+ " WHERE ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key"
+ " AND ik.ins_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
var flextrack = saveFlexKenmerken(srtdeel_key,
{ kenmerkTable: "ins_kenmerkdeel",
kenmerkParentKey : "ins_deel_key", // zal in de praktijk srtdeel_key zijn
kenmerkWaarde: "ins_kenmerkdeel_waarde",
kenmerkKey: "ins_kenmerk_key",
currentKenmerkenSQL: currentKenmerkenSQL,
allKenmerkenSQL: allKenmerkenSQL,
requestQF: Request.Form,
flexPath: "INS/S",
tracking: true,
module: "INS",
isNew: params.isNew,
nameprefix: params.couple? "kk" : null,
extraserie: params.couple? true : null
});
return flextrack;
}
function doUpdateSrtDeel(ins_srtdeel_key, fields, params)
{
sql = buildUpdate("ins_srtdeel", fields) + " ins_srtdeel_key = " + ins_srtdeel_key;
var error = "";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
error = err.friendlyMsg;
else // de flex
{
saveSrtKenmerkdeel(ins_srtdeel_key, params);
}
return error;
}
function doInsertDeel(fields)
{
fields.push({ dbs: "ins_deel_key", typ: "key", seq: "ins_s_ins_inst_keys" });
var regIns = buildInsert("ins_deel", fields);
var ins_deel_key = regIns.sequences["ins_deel_key"];
sql = regIns.sql;
var err = Oracle.Execute(sql, true);
var error = "";
if (err.friendlyMsg)
error = err.friendlyMsg;
return {ins_deel_key: ins_deel_key, warning: error};
}
function doInsertSrtDeel(fields, params)
{
fields.push({ dbs: "ins_srtdeel_key", typ: "key", seq: "ins_s_ins_srtinst_keys" });
var regIns = buildInsert("ins_srtdeel", fields);
var ins_srtdeel_key = regIns.sequences["ins_srtdeel_key"];
sql = regIns.sql;
var err = Oracle.Execute(sql, true);
var error = "";
if (err.friendlyMsg)
error = err.friendlyMsg;
else // de flex
{
saveSrtKenmerkdeel(ins_srtdeel_key, params);
}
return {ins_srtdeel_key: ins_srtdeel_key, warning: error};
}
var fields = [ { dbs: "ins_srtgroep_key", typ: "key", val: sletype=="S"?S("sle_ins_srt_groep_key"):S("cil_ins_srt_groep_key") },
{ dbs: "ins_srtdeel_code", typ: "varchar", frm: "srtcode" },
{ dbs: "ins_srtdeel_omschrijving", typ: "varchar", frm: "srtomschr" },
{ dbs: "ins_srtdeel_uitleenbaar", typ: "key", val: 1 },
{ dbs: "ins_srtdeel_module", typ: "varchar", val: "INS" }];
var warning = "";
var message = "";
var params = { isNew: true, // bewaar bijlagen
couple: couple
};
if (!couple)
{
if (sletype == "S")
{ // Sleutel
binding = sleutel_binding;
}
else
{ // Cilinder
binding = cilinder_binding;
}
fields.push({ dbs: "ins_srtdeel_binding", typ: "key", val: binding });
if (ins_srtdeel_key > 0)
{
warning = doUpdateSrtDeel(ins_srtdeel_key, fields, params);
}
else
{ // nieuw objectsoort
var insertInfo = doInsertSrtDeel(fields);
warning = insertInfo.warning;
ins_srtdeel_key = insertInfo.ins_srtdeel_key;
}
}
else
{ // Sleutels en cilinders koppelen/gekoppeld.
if (ins_srtdeel_key > 0)
{
// Kan deze situatie voorkomen
// warning = doUpdateSrtDeel(ins_srtdeel_key, fields, params);
// Cilinders toevoegen
}
else
{ // Nieuwe sleutels en cilinders aanmaken en aan elkaar koppelen.
var sleaantal = getFParamInt("sleaantal");
var roomArray = getFParamIntArray("roomArray");
// Uitgangspunt is dat iedere ruimte (maximaal) <20><>n cilinder bevat (UWVA#22765).
// Als de ruimte al een cilinderslot heeft dan beschouwen we dat als gebruikersfout.
sql = "SELECT COUNT(ins_deel_key) aantal, MIN(alg_ruimte_aanduiding) alg_ruimte_aanduiding"
+ " FROM ins_deel, alg_v_ruimte_gegevens arg"
+ " WHERE ins_alg_ruimte_key IN (" + roomArray.join(",") + ")"
+ " AND ins_alg_ruimte_key = arg.alg_ruimte_key"
+ " AND ins_alg_ruimte_type = 'R'"
+ " AND ins_deel_verwijder IS NULL"
+ " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND ins_srtdeel_key IN " // Alleen cilinders natuurlijk
+ " (SELECT ins_srtdeel_key"
+ " FROM ins_srtdeel"
+ " WHERE ins_srtgroep_key = " + S("cil_ins_srt_groep_key") + ")";
oRs = Oracle.Execute(sql);
if (oRs("aantal").Value > 0)
{
abort_with_warning(L("lcl_cil_multiple").format(oRs("alg_ruimte_aanduiding").Value));
}
oRs.Close();
// Sleutelsoort toevoegen
var fields = [ { dbs: "ins_srtgroep_key", typ: "key", val: S("sle_ins_srt_groep_key") },
{ dbs: "ins_srtdeel_code", typ: "varchar", frm: "srtcode" },
{ dbs: "ins_srtdeel_omschrijving", typ: "varchar", frm: "srtomschr" },
{ dbs: "ins_srtdeel_binding", typ: "key", val: sleutel_binding },
{ dbs: "ins_srtdeel_uitleenbaar", typ: "key", val: 1 },
{ dbs: "ins_srtdeel_module", typ: "varchar", val: "INS" }];
var insertInfo = doInsertSrtDeel(fields);
warning = insertInfo.warning;
if (warning)
abort_with_warning(warning);
var sle_srtdeel_key = insertInfo.ins_srtdeel_key;
ins_srtdeel_key = sle_srtdeel_key;
// Cilindersoort toevoegen
// TODO: Wat moet er voor de code en omschrijving van de cilindersoort?
// Nu tijdelijk maar "CIL" en "Cilinder "
var fields = [ { dbs: "ins_srtgroep_key", typ: "key", val: S("cil_ins_srt_groep_key") },
{ dbs: "ins_srtdeel_code", typ: "varchar", frm: "srtcode" },
{ dbs: "ins_srtdeel_omschrijving", typ: "varchar", frm: "srtomschr" },
{ dbs: "ins_srtdeel_binding", typ: "key", val: cilinder_binding },
{ dbs: "ins_srtdeel_uitleenbaar", typ: "key", val: 1 },
{ dbs: "ins_srtdeel_module", typ: "varchar", val: "INS" }];
insertInfo = doInsertSrtDeel(fields, {couple: true});
if (insertInfo.warning)
abort_with_warning(insertInfo.warning);
var cil_srtdeel_key = insertInfo.ins_srtdeel_key;
// Sleutelsoort koppelen aan cilindersoort.
sql = "INSERT INTO ins_srtdeel_srtdeel"
+ " ( ins_srtdeel_key_2"
+ " , ins_srtdeel_key_1"
+ " , ins_module)"
+ " VALUES "
+ " (" + sle_srtdeel_key
+ ", " + cil_srtdeel_key
+ ", 'SLE')";
Oracle.Execute(sql);
// Eigen werkplek
var locatie_key = user.alg_locatie_key();
//var gebouw_key = user.alg_gebouw_key();
//var verdieping_key = user.alg_verdieping_key();
var ruimte_key = user.alg_ruimte_key();
// Sleutels toevoegen
for (var i = 0; i < sleaantal; i++)
{
var fields = [ { dbs: "ins_srtdeel_key", typ: "key", val: sle_srtdeel_key },
{ dbs: "ins_alg_locatie_key", typ: "key", val: locatie_key },
{ dbs: "ins_alg_ruimte_key", typ: "key", val: ruimte_key },
{ dbs: "ins_alg_ruimte_type", typ: "varchar", val: "R" }];
// Als voor de discipline is aangegeven dat niet automatische genummerd dient te worden zal dat voor multi objecten toch altijd moeten blijven.
// Omschrijving met uniek volgnummer erin bepalen.
sql = "SELECT ins.get_description('LPN_INS_DEEL'"
+ " , 1" // (unused for ins_deel)
+ " , ins_srtdeel_code_upper) description" // Set code als prefix
+ " FROM ins_srtdeel"
+ " WHERE ins_srtdeel_key = " + sle_srtdeel_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var desc = oRs("description").value;
fields.push({ dbs: "ins_deel_omschrijving", typ: "varchar", val: desc});
}
var insertInfo = doInsertDeel(fields);
if (insertInfo.warning)
abort_with_warning(insertInfo.warning);
var sle_deel_key = insertInfo.ins_deel_key;
}
// Cilinders toevoegen en koppelen aan een ruimte
sql = "SELECT aob.alg_ruimte_key"
+ " , aob.alg_verdieping_key"
+ " , aob.alg_gebouw_key"
+ " , aob.alg_locatie_key"
+ " FROM alg_v_onrgoed_boom aob"
+ " WHERE aob.alg_ruimte_key IN (" + roomArray.join(",") + ")";
oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
var fields = [ { dbs: "ins_srtdeel_key", typ: "key", val: cil_srtdeel_key },
{ dbs: "ins_alg_locatie_key", typ: "key", val: oRs("alg_locatie_key").value },
{ dbs: "ins_alg_ruimte_key", typ: "key", val: oRs("alg_ruimte_key").value },
{ dbs: "ins_alg_ruimte_type", typ: "varchar", val: "R" },
{ dbs: "ins_alg_ruimte_key_org", typ: "key", val: ruimte_key },
{ dbs: "ins_alg_ruimte_type_org", typ: "varchar", val: "R" }];
// Omschrijving met uniek volgnummer erin bepalen.
sql = "SELECT ins.get_description('LPN_INS_DEEL'"
+ " , 1" // (unused for ins_deel)
+ " , ins_srtdeel_code_upper) description"
+ " FROM ins_srtdeel"
+ " WHERE ins_srtdeel_key = " + cil_srtdeel_key;
oRs1 = Oracle.Execute(sql);
var desc = oRs1("description").value;
fields.push({ dbs: "ins_deel_omschrijving", typ: "varchar", val: desc});
oRs1.Close();
var insertInfo = doInsertDeel(fields);
if (insertInfo.warning)
abort_with_warning(insertInfo.warning);
var cil_deel_key = insertInfo.ins_deel_key;
oRs.MoveNext();
}
}
}
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script>
$(document).ready(function()
{FcltMgr.closeDetail(window, { ins_srtdeel_key: <%=ins_srtdeel_key%>,
warning: "<%=safe.jsstring(warning || message)%>",
keepForm: <%=warning != ""? "true" : "false"%>,
couple: <%=couple? "true" : "false"%>,
refresh: true
});
});
</script>
</head>
<body>
</body>
</html>