DJIN#41139 Werkplekken ook (laten) vervallen

svn path=/Website/branches/v2017.1/; revision=34533
This commit is contained in:
Jos Groot Lipman
2017-07-05 13:01:37 +00:00
parent d251717590
commit 6f47271ccd

View File

@@ -1523,13 +1523,32 @@ function process_claim(claim, idp_data, params)
Oracle.Execute(sql);
}
if ("workplace" in persdata && persdata["workplace"])
{ // workplace bevat ruimtes gescheiden door '|' of ';'
if ("workplace" in persdata)
{
// Eerst oude werkplekken ophalen
var sql = "SELECT pw.prs_werkplek_key, UPPER(alg_plaatsaanduiding) alg_plaatsaanduiding"
+ " FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_v_plaatsaanduiding"
+ " WHERE pw.prs_perslid_key = " + user_key
+ " AND pw.prs_werkplek_key = wp.prs_werkplek_key"
+ " AND wp.prs_werkplek_type = 0" // alleen vaste plekken
+ " AND alg_onroerendgoed_keys = wp.prs_alg_ruimte_key"
+ " AND alg_onroerendgoed_type = 'R'";
var oRs = Oracle.Execute(sql);
var oldWP = {};
while (!oRs.Eof)
{
oldWP[oRs("alg_plaatsaanduiding").Value] = oRs("prs_werkplek_key").Value;
oRs.MoveNext();
}
oRs.Close();
// workplace bevat ruimtes gescheiden door '|' of ';'
// (we ondersteunen alleen impliciete werkplekken, geen 'named')
// Codering moet volgens alg_v_plaatsaanduiding zijn (locatiecode-gebouwcode-verdiepingcode-ruimtenr)
// Als er een '@' voor staat is het een virtuele werkplek
persdata["workplace"] = persdata["workplace"] || "";
var workplacearr = persdata["workplace"].split(/[;\|]/);
var keepwp = [];
for (var i = 0; i < workplacearr.length; i++)
{
var wpcode = workplacearr[i];
@@ -1539,22 +1558,47 @@ function process_claim(claim, idp_data, params)
virtual = 1;
wpcode = wpcode.substr(1);
}
var sql = "SELECT alg_onroerendgoed_keys, alg_onroerendgoed_type"
+ " FROM alg_v_plaatsaanduiding"
+ " WHERE UPPER(alg_plaatsaanduiding) = " + safe.quoted_sql_upper(wpcode);
var oRs = Oracle.Execute(sql);
if (!oRs.Eof)
if (wpcode in oldWP)
{
var okey = oRs("alg_onroerendgoed_keys").Value;
var otype = oRs("alg_onroerendgoed_type").Value;
sql = "BEGIN"
+ " prs.movetoruimte ({0}, {1}, '{2}', {3}); ".format(user_key, okey, 'G', virtual) // G want maar <20><>n werkplek per gebouw
+ "END;";
Oracle.Execute(sql);
delete oldWP[wpcode]; // Hoeven we straks niet te wissen
}
else // Toevoegen
{
var sql = "SELECT alg_onroerendgoed_keys"
+ " FROM alg_v_plaatsaanduiding"
+ " WHERE alg_onroerendgoed_type = 'R'"
+ " AND UPPER(alg_plaatsaanduiding) = " + safe.quoted_sql_upper(wpcode);
var oRs = Oracle.Execute(sql);
if (!oRs.Eof)
{
delete oldWP[wpcode.toUpperCase()]; // Die zal hergebruikt worden
var okey = oRs("alg_onroerendgoed_keys").Value;
sql = "BEGIN"
+ " prs.movetoruimte ({0}, {1}, '{2}', {3}); ".format(user_key, okey, 'G', virtual) // G want maar <20><>n werkplek per gebouw
+ "END;";
Oracle.Execute(sql);
}
else
__Log("Workplace '{0}' not found".format(workplacearr[i]));
oRs.Close();
}
}
for (wpcode in oldWP) // restant opruimen
{
__Log("Persoon verwijderen van WP {0}, wp-key {1}".format(wpcode, oldWP[wpcode]));
if (S("prs_werkplek_implicit") == 1)
{
var sql = "DELETE FROM prs_werkplek"
+ " WHERE prs_werkplek_key = " + oldWP[wpcode];
}
else
__Log("Workplace '{0}' not found".format(workplacearr[i]));
oRs.Close();
{
var sql = "DELETE FROM prs_perslid_werkplek"
+ " WHERE prs_perslid_key = " + user_key
+ " AND prs_werkplek_key = " + oldWP[wpcode];
}
Oracle.Execute(sql);
}
}
}