473 lines
18 KiB
XML
473 lines
18 KiB
XML
<?xml version="1.0"?>
|
|
<component>
|
|
<?component error="true" debug="true"?>
|
|
<registration
|
|
description="custfunctions"
|
|
progid="custfunction.wsc"
|
|
version="1.00"
|
|
classid="{4F51571C-1DFC-4769-B8DD-37B356378F12}"
|
|
>
|
|
</registration>
|
|
|
|
<public>
|
|
|
|
<!-- properties -->
|
|
<property name="Oracle">
|
|
<put/>
|
|
</property>
|
|
<property name="__Log">
|
|
<put/>
|
|
</property>
|
|
<property name="__DoLog">
|
|
<put/>
|
|
</property>
|
|
<property name="safe">
|
|
<put/>
|
|
</property>
|
|
|
|
<!-- methods -->
|
|
<method name="bez_postsave">
|
|
<PARAMETER name="bezkeyArr"/>
|
|
</method>
|
|
<method name="res_postsave">
|
|
<PARAMETER name="rsv_ruimte_key"/>
|
|
</method>
|
|
<method name="mld_postsave">
|
|
<PARAMETER name="melding_key"/>
|
|
</method>
|
|
<method name="API_PHONEBOOK">
|
|
<PARAMETER name="prs_key"/>
|
|
<PARAMETER name="data"/>
|
|
</method>
|
|
<method name="bes_punch_receive">
|
|
<PARAMETER name="RequestForm"/>
|
|
<PARAMETER name="bes_srtdeel_key"/>
|
|
<PARAMETER name="item"/>
|
|
</method>
|
|
</public>
|
|
|
|
<script language="javascript">
|
|
<![CDATA[
|
|
|
|
/* properties */
|
|
function put_Oracle(newValue) {Oracle = newValue};
|
|
function put___Log(newValue) {__Log = newValue};
|
|
function put___DoLog(newValue) {__DoLog = newValue};
|
|
function put_safe(newValue) {safe = newValue};
|
|
|
|
/* methods */
|
|
/*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: UWVAcustfunction.wsc
|
|
|
|
*/
|
|
|
|
/* Dit zijn de enige drie functies die je mag gebruiken */
|
|
var Oracle;
|
|
var __Log;
|
|
var __DoLog;
|
|
var safe;
|
|
|
|
// ARO
|
|
var ARO_RootUrl = "https://www.agressieregistratieoverheid.nl/services/";
|
|
var ARO_User = "ARO-facilitor@uwv.nl";
|
|
var ARO_Pass = "G<9k3k)1";
|
|
var ARO_bez_bsn_key = 1; // bez flex to perform ARO-BSN-Check against
|
|
//var ARO_bez_warn_key = 2; // bez flex to register ARO-BSN-Check-result (if true)
|
|
var ARO_bsnsrt_key = 3; // res srtflex to perform ARO-BSN-Check against
|
|
var ARO_warnsrt_key = 41; // res srtflex to register ARO-BSN-Check-result (if true)
|
|
//var ARO_mld_bsnsrt_key = 105; // mld srtflex to perform ARO-BSN-Check against
|
|
var ARO_mld_bsn_key = 109; // mld flex to perform ARO-BSN-Check against (SpoBiLo)
|
|
//var ARO_mld_warnsrt_key = 11; // mld srtflex to register ARO-BSN-Check-result (if true)
|
|
var ARO_mld_warn_key = 115; // mld flex to register ARO-BSN-Check-result (if true)
|
|
|
|
UWVA_ARO =
|
|
{
|
|
http_get: function _http_get(url)
|
|
{
|
|
var http_request = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0");
|
|
// Het mag niet te lang duren!
|
|
var lResolve = 1 * 1000;
|
|
var lConnect = 1 * 1000;
|
|
var lSend = 1 * 1000;
|
|
var lReceive = 2 * 1000; // 1 seconde wordt in de praktijk te vaak overschreden
|
|
http_request.setTimeouts(lResolve, lConnect, lSend, lReceive);
|
|
http_request.open("GET", url, false); // Synchroon nog even
|
|
//http_request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
|
|
__Log("Getting ARO: " + url);
|
|
http_request.send();
|
|
if (http_request.status != 200)
|
|
{
|
|
__DoLog("ARO: " + http_request.status + "<br>" + http_request.statusText, "#FF0000");
|
|
return null;
|
|
}
|
|
|
|
__Log("Returning: " + http_request.responseText);
|
|
return http_request.responseText;
|
|
},
|
|
|
|
Check: function _Check(bsn, RootUrl, User, Pass)
|
|
{
|
|
try
|
|
{
|
|
var tokentxt = UWVA_ARO.http_get(RootUrl + "AuthenticationService.svc/RequestToken?username=" + User + "&password=" + Pass);
|
|
if (!tokentxt)
|
|
return false;
|
|
var token = eval('(' + tokentxt + ')').d;
|
|
|
|
var tmstart = (new Date).getTime();
|
|
var lookuptxt = UWVA_ARO.http_get(RootUrl + "IncidentService.svc/TokenizedRegistratieLookupByBsn?bsn="+bsn+"&guid="+token);
|
|
var tmend = (new Date).getTime();
|
|
if (tmend - tmstart > 1000)
|
|
__DoLog("Slow ARO check took " + (tmend - tmstart) + "ms", "#FFFF00");
|
|
if (!lookuptxt)
|
|
return false;
|
|
var lookup = eval('(' + lookuptxt + ')').d;
|
|
UWVA_ARO.http_get(RootUrl + "AuthenticationService.svc/ExpireToken?guid="+token);
|
|
return lookup;
|
|
}
|
|
catch (e)
|
|
{
|
|
__DoLog("ARO Controle mislukt: " + e.description, "#FF0000");
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
bez_postsave = function (bezkeyArr, pResult)
|
|
{
|
|
for (var i = 0; i < bezkeyArr.length; i++)
|
|
{
|
|
var sql = "SELECT bkw.bez_kenmerkwaarde_waarde"
|
|
+ " , bkw.bez_kenmerkwaarde_aanmaak"
|
|
+ " FROM bez_kenmerkwaarde bkw"
|
|
+ " WHERE bkw.bez_kenmerk_key = " + ARO_bez_bsn_key // BSN-nummer
|
|
+ " AND bkw.bez_bezoekers_key = " + bezkeyArr[i];
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
var bsn = oRs("bez_kenmerkwaarde_waarde").Value;
|
|
var aanmaak = new Date(oRs("bez_kenmerkwaarde_aanmaak").Value);
|
|
var expire = new Date();
|
|
expire.setMinutes(expire.getMinutes() - 5);
|
|
if (aanmaak < expire)
|
|
{
|
|
__Log("BSN " + bsn + " niet opnieuw controleren, is al gebeurd om: " + aanmaak);
|
|
continue; // Volgende bezoeker
|
|
}
|
|
var chk = UWVA_ARO.Check(bsn, ARO_RootUrl, ARO_User, ARO_Pass);
|
|
if (chk == null)
|
|
break; // De (eerste) bezoeker geeft een timeout. Dan de rest niet meer doen.
|
|
var sql = "UPDATE bez_bezoekers SET bez_afspraak_opmerking = NULL WHERE bez_bezoekers_key = " + bezkeyArr[i];
|
|
Oracle.Execute(sql);
|
|
if (chk)
|
|
{
|
|
// UWVA#30245: Opmerking vullen ipv. kenmerk 'ARO_bez_warn_key' zoals voorheen!
|
|
var sql = "UPDATE bez_bezoekers SET bez_afspraak_opmerking = 'LET OP: BSN staat in ARO [' || TO_CHAR(SYSDATE, 'DD-MM-YYYY') || ']' WHERE bez_bezoekers_key = " + bezkeyArr[i];
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
else
|
|
{ // Waarde van kenmerk "bsn" (niet verplicht) is niet ingevuld.
|
|
// Omdat deze net leeg gemaakt kan zijn kan Opmerking nog gevuld zijn. Deze voor de zekerheid wissen.
|
|
// UWVA#30245: Opmerking wissen ipv. kenmerk 'ARO_bez_warn_key' zoals voorheen!
|
|
var sql = "UPDATE bez_bezoekers SET bez_afspraak_opmerking = NULL WHERE bez_bezoekers_key = " + bezkeyArr[i];
|
|
Oracle.Execute(sql);
|
|
}
|
|
oRs.Close();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
res_postsave = function (rsv_ruimte_key, pResult)
|
|
{
|
|
if (ARO_warnsrt_key < 0)
|
|
return true;
|
|
var sql = "SELECT rk.res_kenmerk_key"
|
|
+ " FROM res_kenmerk rk, res_rsv_ruimte rrr"
|
|
+ " WHERE rk.res_srtkenmerk_key = " + ARO_warnsrt_key // Waarschuwing flex kenmerk
|
|
+ " AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " AND rrr.res_activiteit_key = rk.res_activiteit_key";
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.Eof) // deze activiteit heeft geen ARO-waarschuwing-kenmerk
|
|
{
|
|
oRs.Close();
|
|
return true;
|
|
}
|
|
var warn_key = oRs("res_kenmerk_key").Value;
|
|
var sql = "SELECT LPAD(rkw.res_kenmerkreservering_waarde,9,'0') res_kenmerkreservering_waarde"
|
|
+ " FROM res_kenmerk rk, res_kenmerkwaarde rkw"
|
|
+ " WHERE rk.res_srtkenmerk_key = " + ARO_bsnsrt_key // BSN-nummer
|
|
+ " AND rk.res_kenmerk_key = rkw.res_kenmerk_key"
|
|
+ " AND rkw.res_rsv_ruimte_key = " + rsv_ruimte_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
var bsn = oRs("res_kenmerkreservering_waarde").Value;
|
|
var chk = UWVA_ARO.Check(bsn, ARO_RootUrl, ARO_User, ARO_Pass);
|
|
var sql = "DELETE FROM res_kenmerkwaarde rkw"
|
|
+ " WHERE rkw.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " AND rkw.res_kenmerk_key = " + warn_key;
|
|
Oracle.Execute(sql);
|
|
if (chk)
|
|
{
|
|
var sql = "INSERT INTO res_kenmerkwaarde(res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkreservering_waarde) "
|
|
+ " VALUES (" + rsv_ruimte_key + ", " + warn_key + ", TO_CHAR(SYSDATE, 'DD-MM-YYYY'))";
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
oRs.Close();
|
|
|
|
// Flex naar bezoekers synchroniseren
|
|
var sql = "BEGIN "
|
|
+ " res.follow_afspraak (" + rsv_ruimte_key + ", " + 7 /*res_copy_to_bez*/ + "); " // flex overnemen verplaatsen
|
|
+ "END;";
|
|
Oracle.Execute(sql);
|
|
return true;
|
|
}
|
|
|
|
mld_postsave = function (melding_key, pResult)
|
|
{
|
|
if (ARO_mld_warn_key < 0)
|
|
return true;
|
|
var sql = "SELECT mk.mld_kenmerk_key"
|
|
+ " FROM mld_kenmerk mk, mld_melding m"
|
|
+ " WHERE mk.mld_kenmerk_key = " + ARO_mld_warn_key // Waarschuwing flex kenmerk
|
|
+ " AND m.mld_melding_key = " + melding_key
|
|
+ " AND m.mld_stdmelding_key = mk.mld_stdmelding_key"
|
|
+ " AND mk.mld_kenmerk_niveau = 'S'";
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.Eof) // deze stdmelding heeft geen ARO-waarschuwing-kenmerk
|
|
{
|
|
oRs.Close();
|
|
return true;
|
|
}
|
|
var sql = "SELECT km.mld_kenmerkmelding_waarde"
|
|
+ " FROM mld_kenmerk mk, mld_kenmerkmelding km"
|
|
+ " WHERE mk.mld_kenmerk_key = " + ARO_mld_bsn_key // BSN-nummer
|
|
+ " AND mk.mld_kenmerk_key = km.mld_kenmerk_key"
|
|
+ " AND km.mld_melding_key = " + melding_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
var bsn = oRs("mld_kenmerkmelding_waarde").Value;
|
|
var chk = UWVA_ARO.Check(bsn, ARO_RootUrl, ARO_User, ARO_Pass);
|
|
var sql = "DELETE FROM mld_kenmerkmelding km"
|
|
+ " WHERE km.mld_melding_key = " + melding_key
|
|
+ " AND km.mld_kenmerk_key = " + ARO_mld_warn_key;
|
|
Oracle.Execute(sql);
|
|
if (chk)
|
|
{
|
|
var sql = "INSERT INTO mld_kenmerkmelding(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) "
|
|
+ " VALUES (" + melding_key + ", " + ARO_mld_warn_key + ", TO_CHAR(SYSDATE, 'DD-MM-YYYY'))";
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
oRs.Close();
|
|
return true;
|
|
}
|
|
|
|
API_PHONEBOOK =
|
|
function (prs_key, data)
|
|
{
|
|
var result = {};
|
|
//
|
|
// Toestel
|
|
//
|
|
var sql = "SELECT prs_kenmerklink_waarde"
|
|
+ " FROM prs_kenmerklink"
|
|
+ " WHERE prs_link_key = " + prs_key
|
|
+ " AND prs_kenmerklink_niveau = 'P'"
|
|
+ " AND prs_kenmerklink_verwijder IS NULL"
|
|
+ " AND prs_kenmerk_key = 1160"; // toestel
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
result.uwva_toestel = safe.html(oRs("prs_kenmerklink_waarde").Value);
|
|
}
|
|
oRs.Close();
|
|
//
|
|
// Mobiel verkort
|
|
//
|
|
var sql = "SELECT prs_kenmerklink_waarde"
|
|
+ " FROM prs_kenmerklink"
|
|
+ " WHERE prs_link_key = " + prs_key
|
|
+ " AND prs_kenmerklink_niveau = 'P'"
|
|
+ " AND prs_kenmerklink_verwijder IS NULL"
|
|
+ " AND prs_kenmerk_key = 1175"; // mobiel verkort
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
result.uwva_mobielverkort = safe.html(oRs("prs_kenmerklink_waarde").Value);
|
|
}
|
|
oRs.Close();
|
|
//
|
|
// Alt afdeling
|
|
//
|
|
result.uwva_afdeling = data.afdeling;
|
|
var sql = "SELECT d.prs_afdeling_naam4 afd"
|
|
+ " FROM prs_kenmerklink, uwva_v_alt_afdeling d"
|
|
+ " WHERE prs_link_key = " + prs_key
|
|
+ " AND prs_kenmerklink_niveau = 'P'"
|
|
+ " AND prs_kenmerklink_verwijder IS NULL"
|
|
+ " AND prs_kenmerk_key = 1173" // Alternatieve afdeling
|
|
+ " AND fac.safe_to_number(prs_kenmerklink_waarde) = prs_afdeling_key"
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
result.uwva_afdeling = safe.html(oRs("afd").Value);
|
|
}
|
|
oRs.Close();
|
|
//
|
|
// Alt functie
|
|
//
|
|
result.uwva_functie = data.prs_srtperslid;
|
|
var sql = "SELECT prs_srtperslid_omschrijving fnc"
|
|
+ " FROM prs_kenmerklink, prs_srtperslid"
|
|
+ " WHERE prs_link_key = " + prs_key
|
|
+ " AND prs_kenmerklink_niveau = 'P'"
|
|
+ " AND prs_kenmerklink_verwijder IS NULL"
|
|
+ " AND prs_kenmerk_key = 1192" // Alternatieve functie
|
|
+ " AND fac.safe_to_number(prs_kenmerklink_waarde) = prs_srtperslid_key"
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
result.uwva_functie = safe.html(oRs("fnc").Value);
|
|
}
|
|
oRs.Close();
|
|
//
|
|
// Werklocatie
|
|
//
|
|
if (data.werklocatie.alg_locatie_key)
|
|
{
|
|
var wl = (!data.werklocatie.alg_gebouw_key? data.werklocatie.alg_locatie_code : "")
|
|
+ (data.werklocatie.alg_gebouw_key? data.werklocatie.alg_gebouw_code : "")
|
|
+ (data.werklocatie.alg_verdieping_key? ", etage " + data.werklocatie.alg_verdieping_code : "")
|
|
+ (data.werklocatie.alg_ruimte_key? ", kamer " + data.werklocatie.alg_ruimte_nr: "")
|
|
+ (data.werklocatie.prs_werkplek_key? "/" + data.werklocatie.prs_werkplek_volgnr: "");
|
|
result.uwva_werklocatie = safe.html(wl);
|
|
|
|
// Werklocatieadres
|
|
var sql = " SELECT alg_locatie_omschrijving"
|
|
+ ", alg_locatie_adres"
|
|
+ ", alg_locatie_postcode"
|
|
+ ", alg_locatie_plaats"
|
|
+ ", alg_locatie_land"
|
|
+ ", l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie_string"
|
|
+ " FROM alg_locatie l"
|
|
+ " WHERE l.alg_locatie_key = " + data.werklocatie.alg_locatie_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
result.uwva_werklocatieadres = safe.html(oRs("alg_locatie_omschrijving").value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_adres").value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_postcode").value) + " " + safe.html(oRs("alg_locatie_plaats").value) + "<br>";
|
|
oRs.Close();
|
|
}
|
|
//
|
|
// Hoofdlocatie
|
|
//
|
|
if (data.werkplekken.length)
|
|
{
|
|
var txt = "";
|
|
var wp;
|
|
var wplabel = "Hoofdlocatie:";
|
|
var loc_key = -1;
|
|
for (wp in data.werkplekken)
|
|
{
|
|
if (!data.werkplekken[wp].prs_werkplek_aanduiding.isVirtueel && wp < 1) // pak er maar eentje, TODO hoofdwerkplek
|
|
{
|
|
txt += data.werkplekken[wp].prs_werkplek_aanduiding.substring(0,5)
|
|
+ ", etage "+ data.werkplekken[wp].prs_werkplek_aanduiding.substring(6,8)
|
|
+ ", kamer "+ data.werkplekken[wp].prs_werkplek_aanduiding.substring(9);
|
|
loc_key = data.werkplekken[wp].alg_locatie_key;
|
|
|
|
}
|
|
}
|
|
result.uwva_locatie = safe.html(txt);
|
|
// Postadres
|
|
var sql = " SELECT alg_locatie_omschrijving"
|
|
+ ", alg_locatie_post_adres"
|
|
+ ", alg_locatie_post_postcode"
|
|
+ ", alg_locatie_post_plaats"
|
|
+ ", alg_locatie_post_land"
|
|
+ ", l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie_string"
|
|
+ " FROM alg_locatie l"
|
|
+ " WHERE l.alg_locatie_key = " + loc_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
result.uwva_postadres = safe.html(oRs("alg_locatie_omschrijving").Value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_post_adres").Value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_post_postcode").Value) + " " + safe.html(oRs("alg_locatie_post_plaats").Value) + "<br>";
|
|
oRs.Close();
|
|
// Bezoekadres
|
|
var sql = " SELECT alg_locatie_omschrijving"
|
|
+ ", alg_locatie_adres"
|
|
+ ", alg_locatie_postcode"
|
|
+ ", alg_locatie_plaats"
|
|
+ ", alg_locatie_land"
|
|
+ ", l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie_string"
|
|
+ " FROM alg_locatie l"
|
|
+ " WHERE l.alg_locatie_key = " + loc_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
result.uwva_bezoekadres = safe.html(oRs("alg_locatie_omschrijving").Value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_adres").Value) + "<br>"
|
|
+ safe.html(oRs("alg_locatie_postcode").Value) + " " + safe.html(oRs("alg_locatie_plaats").Value) + "<br>";
|
|
oRs.Close();
|
|
}
|
|
//
|
|
// Klikbaar e-mailadres
|
|
//
|
|
if (data.prs_perslid_email)
|
|
{
|
|
result.uwva_mailto = "<a href='mailto:" + data.prs_perslid_email + "'>" + data.prs_perslid_email + "</a>";
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
bes_punch_receive = function (RequestForm, bes_srtdeel_key, item, pResult)
|
|
{
|
|
var result = {orderurl: ""};
|
|
var sql = "SELECT sd.prs_bedrijf_key FROM bes_srtdeel sd WHERE sd.bes_srtdeel_key = " + bes_srtdeel_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var bedr_key = oRs("prs_bedrijf_key").value;
|
|
oRs.Close();
|
|
|
|
function punchNVL(nm, n, def)
|
|
{
|
|
var nm = nm.replace('#', n);
|
|
if (RequestForm(nm).Count() == 0)
|
|
return def;
|
|
if (RequestForm(nm) == "")
|
|
return def;
|
|
return RequestForm(nm)(1);
|
|
};
|
|
|
|
// Alleen voor leverancier Worldmeetings uitvoeren (prs_bedrijf_key = 69793)
|
|
if (bedr_key == 69793)
|
|
{
|
|
var detail_url = punchNVL("NEW_ITEM-ATTACHMENT[#]", item, "Onbekend");
|
|
if (detail_url != "Onbekend")
|
|
{
|
|
sql = "UPDATE bes_srtdeel"
|
|
+ " SET bes_srtdeel_details_loc = " + safe.quoted_sql(detail_url)
|
|
+ " WHERE bes_srtdeel_key = " + bes_srtdeel_key;
|
|
Oracle.Execute(sql);
|
|
}
|
|
var leverdatum = punchNVL("NEW_ITEM-CUST_FIELD1[#]", item, "Onbekend");
|
|
if (leverdatum != "Onbekend")
|
|
{
|
|
sql = "SELECT TO_DATE(" + safe.quoted_sql(leverdatum) + ", 'yyyymmdd') leverdatum FROM DUAL";
|
|
var oRs = Oracle.Execute(sql);
|
|
leverdatum = oRs("leverdatum").value;
|
|
oRs.Close();
|
|
result.orderurl = "&leverdatum=" + (new Date(leverdatum)).getTime();
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
]]>
|
|
</script>
|
|
</component>
|