YFTH#57022 -- Implementatie Thales voor Yask Facilitymanagement.

svn path=/Website/branches/v2019.1/; revision=42243
This commit is contained in:
Arthur Egberink
2019-04-25 11:15:30 +00:00
parent 21f03e8ffd
commit aebf37773b
2 changed files with 145 additions and 0 deletions

View File

@@ -0,0 +1,141 @@
// UnicaStatusResponse.js
// Haalt statuswijzigingen op van Unica.
//
// $Revision$
// $Id$
//
//
var str = WScript.Arguments(0); // udlpath
var prs_bedrijf_key = WScript.Arguments(1); // prs_bedrijf_key
var fac_update_opdr_url = WScript.Arguments(2);
var username = "";
var wachtwoord = "";
function GetUnicaStatus()
{
var XMLReq ="<?xml version='1.0'?>"
+"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:unic='http://unica.nl/'>"
+" <soapenv:Header>"
+" <unic:Authentication>"
+" <unic:username>" + username + "</unic:username>"
+" <unic:password>" + wachtwoord + "</unic:password>"
+" </unic:Authentication>"
+" </soapenv:Header>"
+" <soapenv:Body>"
+" <unic:getRegistrationStatusXML>"
+" <unic:from>"+ laatste_sync +"</unic:from>"
+" <unic:to>"+ nieuwe_sync +"</unic:to>"
+" <unic:all>true</unic:all>"
+" </unic:getRegistrationStatusXML>"
+" </soapenv:Body>"
+"</soapenv:Envelope>"
WScript.Echo("Bericht = " + XMLReq);
var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0")
objXMLHTTP.open("POST", mldorder_adres, false);
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
objXMLHTTP.send(XMLReq);
WScript.Echo("Ophalen status: " + objXMLHTTP.status);
dataReceived = false;
if (objXMLHTTP.status==200)
{
WScript.Echo("Gelukt, status = " + objXMLHTTP.status);
responseText = "" + objXMLHTTP.responseText;
WScript.Echo("responseText = " + responseText);
url = fac_update_opdr_url;
WScript.Echo("url = " + url);
XMLReq = responseText;
// Resultaat aanbieden aan de opdr_soap_api
objXMLHTTP.open("POST", url, false);
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
objXMLHTTP.send(XMLReq);
WScript.Echo("Status: " + objXMLHTTP.status);
WScript.Echo("StatusText: " + objXMLHTTP.statusText);
WScript.Echo("Result: " + objXMLHTTP.responseText);
if (objXMLHTTP.status == 200)
{
sql = "UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = '" + nieuwe_sync + "' WHERE prs_kenmerklink_key = " + prs_kenmerklink_key;
WScript.Echo (sql);
Oracle.Execute(sql);
dataReceived = true;
}
else
{
WScript.Echo("Mislukt, status = " + objXMLHTTP.status);
WScript.Echo(objXMLHTTP.statusText);
}
}
else
{
WScript.Echo("Mislukt, status = " + objXMLHTTP.status);
WScript.Echo(objXMLHTTP.statusText);
}
return dataReceived;
}
var udlstr = 'File Name='+str;
var Oracle = new ActiveXObject("ADODB.Connection");
Oracle.Open(udlstr);
var sql = "ALTER SESSION SET nls_territory='AMERICA'";
Oracle.Execute(sql)
sql = "SELECT prs_bedrijf_naam, "
+ " prs_bedrijfadres_URL, "
+ " DECODE ( prs_kenmerklink_waarde, null, null, prs_kenmerklink_waarde) laatste_sync,"
+ " TO_CHAR ( "
+ " LEAST ( "
+ " TO_DATE ( "
+ " DECODE (prs_kenmerklink_waarde, "
+ " NULL, NULL, "
+ " prs_kenmerklink_waarde), "
+ " 'yyyy-mm-dd hh24:mi:ss') "
+ " + 4 / 24, " // Indien het interval te groot wordt kiezen we voor een interval van 4 uur.
+ " SYSDATE - (1 / 96)), " // We kiezen een kwartier marge om tijdsverschillen tussen servers op te vangen.
+ " 'yyyy-mm-dd hh24:mi:ss') nieuwe_sync, "
+ " prs_kenmerklink_key,"
+ " ba.prs_bedrijfadres_username, "
+ " ba.prs_bedrijfadres_password "
+ " FROM prs_bedrijf b, prs_kenmerklink kl, prs_bedrijfadres ba"
+ " WHERE b.prs_bedrijf_key = " + prs_bedrijf_key
+ " AND b.prs_bedrijf_key = ba.prs_bedrijf_key"
+ " AND ba.prs_bedrijfadres_type = 'B'" // type B wordt gebruikt voor statusterugkoppelingen
+ " AND b.prs_bedrijf_key = kl.prs_link_key"
+ " AND kl.prs_kenmerk_key = 1"; // timestamp laatste synchronisatie yyyy-mm-dd hh24:mi:ss
WScript.Echo (sql);
WScript.Echo(new Date());
try
{
var oRs = Oracle.Execute(sql);
mldorder_adres = "" + oRs("prs_bedrijfadres_URL").Value;
laatste_sync = oRs("laatste_sync").Value;
nieuwe_sync = oRs("nieuwe_sync").Value;
username = oRs("prs_bedrijfadres_username").Value;
wachtwoord = oRs("prs_bedrijfadres_password").Value;
prs_kenmerklink_key = oRs("prs_kenmerklink_key").Value;
WScript.Echo("Inlezen statusberichten van bedrijf: " + oRs("prs_bedrijf_naam").Value + " via url: " + mldorder_adres)
oRs.close();
if (GetUnicaStatus()) WScript.Quit(0);
else WScript.Quit(1);
}
catch (e)
{
WScript.Echo("Serieuze fout in UnicaStatusResponse.js: " + e.description)
WScript.Quit(1);
}

View File

@@ -0,0 +1,4 @@
Echo Starten get_unica_status.js
cscript .\UnicaStatusResponse.js ../oracle.udl 7264 "https://yfth.facilitor.nl/default.asp?API=UNICA2OPDR&APIKEY=WuklZ5VG6Ebat2qsymXwgPC8uvNZWKf6">> gen_import.log