KFNS#40008 SmartSigns-koppeling (zoals voor PNBR)

svn path=/Website/branches/v2016.3/; revision=33369
This commit is contained in:
Maarten van der Heide
2017-03-31 14:04:06 +00:00
parent 7cb4e92b75
commit 3b69ffa910
2 changed files with 164 additions and 0 deletions

103
CUST/KFNS/xsl/apires.xsl Normal file
View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" version="1.0">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:variable name="Rev">
<!-- Revision van deze cust.xsl -->
<xsl:value-of select="substring(translate('$Revision$', '$ ', ''), 10)"/>
</xsl:variable>
<xsl:template match="rapport">
<!-- ******************************************************************* -->
<!-- ***** Smart Signs: GetReserveringen ******************************* -->
<!-- ******************************************************************* -->
<xsl:variable name="view">
<xsl:value-of select="@view"/>
</xsl:variable>
<xsl:if test="@view='res_v_api_reserveringen' or @view='kfns_v_api_reserveringen'">
<xsl:variable name="sorted">
<xsl:for-each select="GetReserveringenResponse/reservering">
<xsl:sort select="VAN"/>
<xsl:sort select="LOCATIECODE"/>
<xsl:sort select="GEBOUWCODE"/>
<xsl:sort select="VERDIEPINGCODE"/>
<xsl:sort select="RUIMTECODE"/>
<xsl:sort select="KEY"/>
<xsl:if test="RUIMTENAAM!=''">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="dagstaat">
<xsl:for-each select="GetReserveringenResponse/reservering">
<xsl:sort select="KEY"/>
<xsl:if test="K_NAAM = 'Zichtbaar op dagstaat'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:choose>
<xsl:when test="$mode='Reserveringen'">
<GetReserveringenResponse>
<xsl:for-each select="msxml:node-set($sorted)/reservering">
<xsl:variable name="key"><xsl:value-of select="KEY"/></xsl:variable>
<xsl:element name="reservering">
<xsl:attribute name="key"><xsl:value-of select="KEY"/></xsl:attribute>
<locatiecode><xsl:value-of select="LOCATIECODE"/></locatiecode>
<gebouwcode><xsl:value-of select="GEBOUWCODE"/></gebouwcode>
<verdiepingcode><xsl:value-of select="VERDIEPINGCODE"/></verdiepingcode>
<ruimtecode><xsl:value-of select="RUIMTECODE"/></ruimtecode>
<ruimtenaam><xsl:value-of select="RUIMTENAAM"/></ruimtenaam>
<algruimtekey><xsl:value-of select="ALGRUIMTEKEY"/></algruimtekey>
<resruimtekey><xsl:value-of select="RESRUIMTEKEY"/></resruimtekey>
<algruimtenr><xsl:value-of select="ALGRUIMTENR"/></algruimtenr>
<resid><xsl:value-of select="RESID"/></resid>
<van><xsl:value-of select="VAN"/></van>
<tot><xsl:value-of select="TOT"/></tot>
<fo_status><xsl:value-of select="FO_STATUS"/></fo_status>
<omschrijving><xsl:value-of select="OMSCHRIJVING"/></omschrijving>
<contact><xsl:value-of select="CONTACT"/></contact>
<host><xsl:value-of select="HOST"/></host>
<xsl:if test="$view='res_v_api_reserveringen'">
<dagstaat>
<xsl:for-each select="msxml:node-set($dagstaat)/reservering[KEY=$key]">
<xsl:value-of select="K_WAARDE"/></xsl:for-each>
</dagstaat>
</xsl:if>
<xsl:if test="$view='kfns_v_api_reserveringen'">
<dagstaat>
<xsl:value-of select="DAGSTAAT"/>
</dagstaat>
</xsl:if>
</xsl:element>
</xsl:for-each>
</GetReserveringenResponse>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<!-- SOAP envelope met de afgesproken 'payload' in response op request! -->
<xsl:template match="facilitor">
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<xsl:apply-templates select="rapport"/>
</soap:Body>
</soap:Envelope>
</xsl:template>
<!-- De afgesproken 'payload' in response op request (zonder envelope)! -->
<!--xsl:template match="facilitor">
<xsl:apply-templates select="rapport"/>
</xsl:template-->
<!-- Root -->
<xsl:template match="/">
<xsl:apply-templates select="facilitor"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" version="1.0" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:variable name="Rev">
<!-- Revision van deze cust.xsl -->
<xsl:value-of select="substring(translate('$Revision$', '$ ', ''), 10)"/>
</xsl:variable>
<xsl:template match="reservering">
<!-- ******************************************************************* -->
<!-- *****Response naar Smart Signs nav. insert/update/delete -->
<!-- ******************************************************************* -->
<facilitorresponse xmlns:fclt="http://facilitor.nl/reserveringen">
<xsl:element name="fclt:reservering">
<xsl:attribute name="key">
<xsl:value-of select="resid"/>
</xsl:attribute>
<xsl:attribute name="type">response</xsl:attribute>
<returncode>
<xsl:value-of select="returncode"/>
</returncode>
<returntekst>
<xsl:value-of select="returntekst"/>
</returntekst>
<datum>
<xsl:value-of select="datum"/>
</datum>
<resid>
<xsl:value-of select="resid"/>
</resid>
</xsl:element>
</facilitorresponse>
</xsl:template>
<xsl:template match="facilitor">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<xsl:apply-templates select="reservering"/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</xsl:template>
<!-- Root -->
<xsl:template match="*">
<xsl:choose>
<!-- Zonder prefix, dan response -> toevoegen envelop, namespace + prefix! -->
<xsl:when test="substring-before(name(),concat(':', local-name()))=''">
<xsl:if test="local-name()='facilitor'">
<xsl:apply-templates select="facilitor"/>
</xsl:if>
</xsl:when>
<!-- Met prefix, dan insert/update/delete ontvangen -> verwijderen prefix! -->
<xsl:otherwise>
<!-- remove element prefix -->
<xsl:copy-of select="soap:Body/facilitor/reservering"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>