325 lines
14 KiB
Plaintext
325 lines
14 KiB
Plaintext
<%@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>
|