VLKC#36864 Strukton-koppeling

svn path=/Website/branches/v2016.2/; revision=32020
This commit is contained in:
Maarten van der Heide
2016-12-19 13:34:36 +00:00
parent b86c8caecf
commit 0ea7312958
3 changed files with 200 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
// GetStruktonStatus.js
// Haalt statuswijzigingen op van Strukton opdrachten binnen een opgegeven tijdsinterval.
// Dit interval wordt opgeslagen in de database. Kan daarna via GEN_IMPORT ingelezen worden
//
// $Revision$
// $Id$
//
// Opzet in kader van AAXX door AEG
// Twee parameters: UDL voor database connectie en optioneel proxy-ip
var str = WScript.Arguments(0); // udlpath
var prs_bedrijf_key = WScript.Arguments(1); // prs_bedrijf_key
function GetStruktonStatus()
{
var XMLReq= "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+" <soapenv:Header/>"
+" <soapenv:Body>"
+" <GetServiceRequestStatusPlus>"
+" <Status>"
+" <CustomerID>" + prs_overeenkomst_nr + "</CustomerID>"
+" <ReferenceID></ReferenceID>"
+" <ServiceRequestID></ServiceRequestID>"
+" <BeginDateTime>"+ laatste_sync +"</BeginDateTime>"
+" <EndDateTime>"+ nieuwe_sync +"</EndDateTime>"
+" </Status>"
+" </GetServiceRequestStatusPlus>"
+" </soapenv:Body>"
+"</soapenv:Envelope>";
WScript.Echo("Bericht = " + XMLReq);
WScript.Echo("Login = " + username);
//WScript.Echo("Wachtwoord = " + password);
var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0")
/* objXMLHTTP.open("POST",
"https://b2bdev.ws.strukton.com:443/XISOAPAdapter/MessageServlet?channel=Facilitor:BS_ServiceRequest:S_WS_STATUS",
false,
"Facilitor",
"Facilit0r!"); */
objXMLHTTP.open("POST",
mldorder_adres,
false,
uname,
pword);
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
if (order_certificate)
{
WScript.Echo("Certificaatnaam = " + order_certificate);
var SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3;
objXMLHTTP.setOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT) = order_certificate;
}
objXMLHTTP.send(XMLReq);
dataReceived = false;
if (objXMLHTTP.status==200)
{ // Geldigheid XML wordt gecontroleerd door GEN_IMPORT
WScript.Echo("Gelukt, status = " + objXMLHTTP.status);
responseText = "" + objXMLHTTP.responseText;
//WScript.Echo("resultaat = " + resultaat.indexOf("<ErrorLog><Note>Geen items gevonden</Note></ErrorLog>"));
//if resultaat.substr("<ErrorLog><Note>Geen items gevonden</Note></ErrorLog>")
if (responseText.indexOf("<ErrorLog><Note>Resultaatset bevat geen records</Note></ErrorLog>") == -1) {
dataReceived = true;
oStream = new ActiveXObject("ADODB.Stream");
oStream.Open();
oStream.Type = 1; // adTypeBinary
oStream.Write(objXMLHTTP.responseBody); // responseText geeft encoding problemen!
oStream.SaveToFile (fileName, 2); // adSaveCreateOverWrite
oStream.Close();
}
sql = "UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = '" + nieuwe_ts + "' WHERE prs_kenmerklink_key = " + prs_kenmerklink_key;
WScript.Echo (sql);
Oracle.Execute(sql);
}
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);
// Normaal halen we intervallen van 15 minuten op.
// Als de koppeling er een tijdje uit gelegen heeft kan dit problemen opleveren.
// Daarom wordt het interval maximaal 4 uur.
var sql = "ALTER SESSION SET nls_territory='AMERICA'";
Oracle.Execute(sql)
fac.safe_to_date (kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss')
sql = "SELECT b.prs_bedrijf_naam, "
+ " ba.prs_bedrijfadres_url, "
+ " ba.prs_bedrijfadres_certificate, "
+ " ba.prs_bedrijfadres_username, "
+ " ba.prs_bedrijfadres_password, "
+ " b.prs_overeenkomst_nr, "
+ " decode (kl.prs_kenmerklink_waarde, null, null, to_char(to_date(kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd')||'T'||to_char(to_date(kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss'), 'hh24:mi:ss')) laatste_sync, "
+ " to_char(LEAST(fac.safe_to_date(kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss') + (4/24), sysdate - (1/96)), 'yyyy-mm-dd') || 'T' || to_char(LEAST(fac.safe_to_date(kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss') + (4/24), sysdate - (1/96)), 'hh24:mi:ss') nieuwe_sync, "
+ " to_char(LEAST(fac.safe_to_date(kl.prs_kenmerklink_waarde, 'yyyy-mm-dd hh24:mi:ss') + (4/24), sysdate - (1/96)), 'yyyy-mm-dd hh24:mi:ss') nieuwe_ts, "
+ " kl.prs_kenmerklink_key"
+ " FROM prs_bedrijf b, prs_bedrijfadres ba, prs_kenmerklink kl"
+ " WHERE b.prs_bedrijf_key = " + prs_bedrijf_key
+ " AND b.prs_bedrijf_key = ba.prs_bedrijf_key"
+ " AND ba.prs_bedrijfadres_type = 'B'"
+ " AND b.prs_bedrijf_key = kl.prs_link_key"
+ " AND kl.prs_kenmerk_key = 1000"; // Tijdstip laatste synchronisatie
WScript.Echo (sql);
WScript.Echo(new Date());
try
{
var oRs = Oracle.Execute(sql);
var fileName = "strukton.xml";
mldorder_adres = "" + oRs("prs_bedrijfadres_url").Value;
mldorder_adres = mldorder_adres.replace("CREATE", "STATUS");
order_certificate = "" + oRs("prs_bedrijfadres_certificate").Value;
uname = "" + oRs("prs_bedrijfadres_username").Value;
pword = "" + oRs("prs_bedrijfadres_password").Value;
laatste_sync = oRs("laatste_sync").Value;
nieuwe_sync = oRs("nieuwe_sync").Value;
nieuwe_ts = oRs("nieuwe_ts").Value;
prs_overeenkomst_nr = oRs("prs_overeenkomst_nr").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 (GetStruktonStatus()) WScript.Quit(0);
else WScript.Quit(1);
}
catch (e)
{
WScript.Echo("Serieuze fout in GetStruktonStatus.js: " + e.description);
WScript.Quit(1);
}

View File

@@ -0,0 +1,11 @@
Echo Ophalen status/voortgang Strukton Worksphere
cscript GetStruktonStatus.js ../oracle.udl 3404 >>gen_import.log
if errorlevel 1 goto fout
cscript ..\..\..\utils\gen_import\gen_import.wsf VLKC OPDRSTAT_STRUKTON >>gen_import.log 2>>&1
goto einde
:fout
Echo gen_import.exe niet meer uitgevoerd>>gen_import.log
:einde

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="Windows-1252"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:decimal-format name="european" decimal-separator="," grouping-separator="."/>
<xsl:template name="escape_quote">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '&quot;')">
<xsl:value-of select="substring-before($string, '&quot;')"/>&quot;&quot;<xsl:call-template name="escape_quote">
<xsl:with-param name="string" select="substring-after($string, '&quot;')"/></xsl:call-template></xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="linebreaks">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '&#xA;')">
<xsl:value-of select="substring-before($string, '&#xA;')"/>@@<xsl:call-template name="linebreaks">
<xsl:with-param name="string" select="substring-after($string, '&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">referenceID;ServiceRequestID;TypeID;DateTime;Description;Remarks;Total
<xsl:for-each select="//Status">
<xsl:variable name="costinfo"><xsl:if test="TypeID='40'">@@Bruto: <20> <xsl:value-of select="format-number(CostCalculation/Total - CostCalculation/MaintenanceClause, '0,00', 'european')"/>@@Clausule: <20> <xsl:value-of select="format-number(CostCalculation/MaintenanceClause, '0,00', 'european')"/>@@Totaal: <20> <xsl:value-of select="format-number(CostCalculation/Total, '0,00', 'european')"/></xsl:if></xsl:variable>
<xsl:variable name="costs"><xsl:if test="TypeID='40'"><xsl:value-of select="CostCalculation/Total"/></xsl:if></xsl:variable>
<xsl:variable name="remarks_unquote"><xsl:call-template name="escape_quote"><xsl:with-param name="string" select="substring(Remarks,1,800)"/></xsl:call-template></xsl:variable>
<xsl:variable name="remarks_uncr">&quot;<xsl:call-template name="linebreaks"><xsl:with-param name="string" select="$remarks_unquote"/></xsl:call-template><xsl:value-of select="$costinfo"/>&quot;</xsl:variable>
<xsl:variable name="new_line" select="'&#xA;'"/>
<xsl:variable name="referenceID"><xsl:value-of select="ReferenceID"/></xsl:variable>
<xsl:variable name="serviceRequestID"><xsl:value-of select="ServiceRequestID"/></xsl:variable>
<xsl:variable name="typeID"><xsl:value-of select="TypeID"/></xsl:variable>
<xsl:variable name="dateTime"><xsl:value-of select="DateTime"/></xsl:variable>
<xsl:variable name="description"><xsl:value-of select="Description"/></xsl:variable>
<xsl:value-of select="$referenceID"/>;<xsl:value-of select="$serviceRequestID"/>;<xsl:value-of select="$typeID"/>;<xsl:value-of select="$dateTime"/>;<xsl:value-of select="$description"/>;<xsl:value-of select="$remarks_uncr"/>;<xsl:value-of select="$costs"/><xsl:value-of select="$new_line"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>