VLKC#36864 Strukton-koppeling

svn path=/Website/branches/v2016.2/; revision=32021
This commit is contained in:
Maarten van der Heide
2016-12-19 13:35:00 +00:00
parent 0ea7312958
commit 944f27ccea

214
CUST/VLKC/xsl/strukton.xsl Normal file
View File

@@ -0,0 +1,214 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" exclude-result-prefixes="soap xsd xsi">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<!-- Maken 'bon' (XML) -->
<xsl:template match="opdracht">
<xsl:variable name="prioriteit">
<xsl:choose>
<xsl:when test="melding/spoed=1">Calamiteit</xsl:when>
<xsl:when test="melding/spoed=2">Hoog</xsl:when>
<xsl:when test="melding/spoed=3">Normaal</xsl:when>
<xsl:when test="melding/spoed=4">Laag</xsl:when>
<xsl:when test="melding/spoed=5">Hold</xsl:when>
<xsl:otherwise>Onbekend</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="ServiceRequestCreate">
<xsl:element name="ServiceRequest">
<!--xsl:element name="CustomerID"><xsl:value-of select="uitvoerende/bedrijf/leverancier_nr"/></xsl:element-->
<xsl:element name="CustomerID"><xsl:value-of select="uitvoerende/bedrijf/overeenkomst_nr"/></xsl:element>
<xsl:element name="ReferenceID">
<xsl:value-of select="concat(melding/discipline/srtdiscipline/prefix, melding/key)"/>/<xsl:value-of select="bedrijfopdr_volgnr"/>
</xsl:element>
<xsl:element name="Reference"><xsl:value-of select="melding/stdmelding/omschrijving"/>-<xsl:value-of select="opdrachttype/omschrijving"/></xsl:element>
<xsl:element name="TypeCode">
<xsl:choose>
<!--5=Werkopdracht-->
<!--xsl:when test="opdrachttype/key='5'">5</xsl:when-->
<!--281=Contractopdracht-->
<xsl:when test="opdrachttype/key='281'">2</xsl:when>
<!--282=Offerteaanvraag-->
<xsl:when test="opdrachttype/key='282'">3</xsl:when>
<!--Bij correcte inrichting 5=Werkopdracht/283=Offerteopdracht hier enige mogelijkheid!-->
<!--xsl:otherwise>
<xsl:choose>
<xsl:when test="melding/discipline/srtdiscipline/prefix='S'">2</xsl:when>
<xsl:otherwise>5</xsl:otherwise>
</xsl:choose>
</xsl:otherwise-->
<xsl:otherwise>5</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:element name="RequestedProcessingPeriod">
<xsl:element name="EndDateTime">
<xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/maand"/>T<xsl:value-of select="einddatum/tijd"/>:00</xsl:element>
<xsl:element name="EscalationToOperator">false</xsl:element>
</xsl:element>
<xsl:element name="IssueCategoryID">
<xsl:value-of select="melding/discipline/key"/>
</xsl:element>
<xsl:element name="IssueCategory">
<xsl:value-of select="melding/discipline/omschrijving"/>
</xsl:element>
<xsl:element name="IssueSubCategoryID">
<xsl:value-of select="melding/stdmelding/key"/>
</xsl:element>
<xsl:element name="IssueSubCategory">
<xsl:value-of select="melding/stdmelding/omschrijving"/>
</xsl:element>
<xsl:element name="Description">
<xsl:value-of select="omschrijving"/>
</xsl:element>
<xsl:element name="Monitoring">
<xsl:element name="StartDateTime">
<xsl:for-each select="tracking/track">
<xsl:sort select="datum/timestamp" order="ascending"/>
<xsl:if test="position()=1">
<xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/>T<xsl:value-of select="datum/tijd"/>:00
</xsl:if>
</xsl:for-each>
</xsl:element>
<xsl:element name="EndDateTime">
<xsl:value-of select="einddatum/jaar"/>-<xsl:value-of select="einddatum/maand"/>-<xsl:value-of select="einddatum/dag"/>T<xsl:value-of select="einddatum/tijd"/>:00</xsl:element>
<xsl:element name="Urgency">
<xsl:value-of select="$prioriteit"/><xsl:if test="$prioriteit != 'Calamiteit'">: <xsl:value-of select="dagen"/> dagen</xsl:if>
</xsl:element>
</xsl:element>
<xsl:element name="Requester">
<xsl:element name="Name">
<xsl:element name="FirstLineName">
<xsl:value-of select="melding/voor/naam_full"/>
</xsl:element>
</xsl:element>
<xsl:element name="Communication">
<xsl:element name="Telephone">
<xsl:value-of select="melding/voor/telefoonnr"/>
</xsl:element>
<xsl:element name="Email">
<xsl:value-of select="melding/voor/email"/>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="CustomerCoordinator">
<xsl:element name="Name">
<xsl:element name="FirstLineName">
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/naam_full"/>
</xsl:element>
</xsl:element>
<xsl:element name="Communication">
<xsl:element name="Telephone">
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/mobiel"/>
<xsl:if test="not(melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/mobiel)">
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/telefoonnr"/>
</xsl:if>
</xsl:element>
<xsl:element name="Email">
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/verantwoordelijke/email"/>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:variable name="struktoncode">
<xsl:choose>
<xsl:when test="melding/plaats/regio/district/locatie/terreinsector/kenmerk[@key=1001]!=''">
<xsl:value-of select="melding/plaats/regio/district/locatie/terreinsector/kenmerk[@key=1001]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/kenmerk[@key=1000]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="ServiceLocation">
<xsl:element name="LocationID">
<xsl:value-of select="$struktoncode"/>
</xsl:element>
<xsl:element name="Location">
<xsl:value-of select="melding/plaats/plaatsaanduiding"/>
</xsl:element>
<xsl:element name="Address">
<xsl:element name="StreetName">
<xsl:choose>
<xsl:when test="melding/plaats/regio/district/locatie/terreinsector/key!=''"><!--Leeglaten igv. terrein???-->
<xsl:value-of select="melding/plaats/regio/district/locatie/terreinsector/kenmerk[@key=1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/afleveradres/bezoek_adres"/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:element name="StreetPostalCode">
<xsl:if test="$struktoncode!=''">
<xsl:choose>
<xsl:when test="melding/plaats/regio/district/locatie/terreinsector/key!=''"><!--Leeglaten igv. terrein???-->
<xsl:value-of select="melding/plaats/regio/district/locatie/terreinsector/kenmerk[@key=1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/afleveradres/bezoek_postcode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:element>
<xsl:element name="CityName">
<xsl:choose>
<xsl:when test="melding/plaats/regio/district/locatie/terreinsector/key!=''"><!--Leeglaten igv. terrein???-->
<xsl:value-of select="melding/plaats/regio/district/locatie/terreinsector/kenmerk[@key=1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="melding/plaats/regio/district/locatie/gebouw/afleveradres/bezoek_plaats"/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
<!-- Maken 'bon' (XML) -->
<xsl:template match="facilitor">
<xsl:apply-templates select="opdracht"/>
</xsl:template>
<!-- Inpakken 'bon' in SOAP envelope -->
<xsl:template match="SOAPEnvelope">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<xsl:copy-of select="./node()"/>
</soap:Body>
</soap:Envelope>
</xsl:template>
<!-- Uitpakken SOAP envelope -->
<xsl:template match="soap:Envelope">
<soapResult>
<xsl:copy-of select="soap:Body/node()"/>
</soapResult>
</xsl:template>
<!-- Decoderen XML response -->
<xsl:template match="ServiceRequestStatus">
<Result>
<xsl:value-of select="ErrorLog/TypeID"/>
</Result>
</xsl:template>
<!-- Root -->
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$mode='getExtension'">
<xsl:element name="format">
<!-- Hotelselect gebruikt geen cXML, maar SendFile.cls verwacht wel deze parameter om een XML response in te lezen -->
<xsl:element name="extension">xml</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise><!-- door SendFile.cls gebruikt voor maken 'bon' (XML die via SOAP verstuurd wordt) -->
<xsl:apply-templates select="facilitor"/><!-- door SendSOAP.cls gebruikt voor inpakken van 'bon' in SOAP envelope -->
<xsl:apply-templates select="SOAPEnvelope"/><!-- door SendSOAP.cls gebruikt voor uitpakken van response uit SOAP envelope -->
<xsl:apply-templates select="soap:Envelope"/><!-- door SendFile.cls gebruikt voor lezen van status uit gefaalde response (NB: <soapResult> is al door de decode gestript) -->
<xsl:apply-templates select="ServiceRequestStatus"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>