<xsl:stylesheet version="2.0" xmlns="
">schema.infor.com/.../2" xmlns:expath-zip="
">http://expath.org/ns/zip" xmlns:fn="
">www.w3.org/.../xpath-functions" xmlns:dns="
">schema.infor.com/.../2" xmlns:saxon="
">http://saxon.sf.net/"
xmlns:expath-file="">http://expath.org/ns/file" xmlns:xsi="
">www.w3.org/.../XMLSchema-instance" xmlns:xsl="
">www.w3.org/.../Transform" xmlns:exslt-random="
">http://exslt.org/random" xmlns:exslt-common="
">http://exslt.org/common" xmlns:exslt-math="
">http://exslt.org/math" xmlns:xs="
">www.w3.org/.../XMLSchema" xmlns:math="
">www.w3.org/.../math" xmlns:map="
">www.w3.org/.../map" xmlns:infor="
">http://infor.com/infor-custom" exclude-result-prefixes="xs xsl fn expath-file expath-zip exslt-common exslt-math exslt-random map math saxon xsi">
<xsl:output method="xml" encoding="UTF-8" indent="no" byte-order-mark="no" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:if test="/*:SyncIBCT_IAD_S">
<xsl:element name="ProcessInventoryAdjustment">
<xsl:namespace name="xs" select="'
">www.w3.org/.../XMLSchema'" />
<xsl:if
test="/*:SyncIBCT_IAD_S/
@languageCode">
<xsl:attribute name="languageCode">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/
@languageCode)" />
</xsl:attribute>
</xsl:if>
<xsl:if
test="/*:SyncIBCT_IAD_S/
@releaseID">
<xsl:attribute name="releaseID">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/
@releaseID)" />
</xsl:attribute>
</xsl:if>
<xsl:if
test="/*:SyncIBCT_IAD_S/
@systemEnvironmentCode">
<xsl:attribute name="systemEnvironmentCode">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/
@systemEnvironmentCode)" />
</xsl:attribute>
</xsl:if>
<xsl:if
test="/*:SyncIBCT_IAD_S/
@versionID">
<xsl:attribute name="versionID">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/
@versionID)" />
</xsl:attribute>
</xsl:if>
<xsl:copy-of
select="/*:SyncIBCT_IAD_S/*:ApplicationArea" copy-namespaces="no" />
<xsl:if
test="/*:SyncIBCT_IAD_S/*:DataArea">
<xsl:element name="DataArea">
<xsl:element name="Process">
<xsl:element name="AccountingEntityID">
<xsl:if
test="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:AccountingEntity">
<xsl:attribute name="accountingEntity">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:AccountingEntity)" />
</xsl:attribute>
</xsl:if>
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:AccountingEntity)" />
</xsl:element>
<xsl:element
name="LocationID">
<xsl:if test="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:EntityLocation">
<xsl:attribute name="location">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:EntityLocation)" />
</xsl:attribute>
</xsl:if>
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:EntityLocation)" />
</xsl:element>
<xsl:element
name="ActionCriteria">
<xsl:element name="ActionExpression">
<xsl:attribute name="actionCode">
<xsl:value-of
select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:ActionCode)" />
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element
name="InventoryAdjustment">
<xsl:element name="InventoryAdjustmentHeader">
<xsl:element name="DocumentID">
<xsl:element name="ID">
<xsl:if
test="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:AccountingEntity">
<xsl:attribute name="accountingEntity">
<xsl:value-of
select="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:AccountingEntity/text()" />
</xsl:attribute>
</xsl:if>
<xsl:if
test="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:EntityLocation">
<xsl:attribute name="location">
<xsl:value-of
select="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:EntityLocation/text()" />
</xsl:attribute>
</xsl:if>
</xsl:element>
</xsl:element>
<xsl:element
name="LastModificationPerson">
<xsl:element name="IDs">
<xsl:for-each
select="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:LastPersonName">
<xsl:element name="ID">
<xsl:value-of
select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
<!-- Multiple InventoryAdjustmentLine based on IBCT_IAD_S count -->
<xsl:for-each
select="/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S">
<xsl:element name="InventoryAdjustmentLine">
<xsl:element name="LineNumber">
<xsl:value-of
select="infor:cast-to-normalizedstring(*:LineNumber)" />
</xsl:element>
<!-- <xsl:element name="LineNumber">-->
<!-- <xsl:value-of select="xs:integer(normalize-space(*:LineNumber))"/>-->
<!--</xsl:element>-->
<!--<xsl:element name="LineNumber">-->
<!-- <xsl:value-of select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:LineNumber)"/>-->
<!--</xsl:element>-->
<!--<xsl:element name="LineNumber">-->
<!-- <xsl:value-of select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:LineNumber)"/>-->
<!--</xsl:element>-->
xsl:element name="DocumentReference">
<xsl:element name="LineNumber">
<xsl:value-of select="infor:cast-to-normalizedstring(/*:SyncIBCT_IAD_S/*:DataArea/*:IBCT_IAD_S/*:LineNumber)"/>
</xsl:element>
<xsl:element
name="DocumentReference">
<xsl:element name="DocumentID">
<xsl:element name="ID">
<xsl:value-of
select="infor:cast-to-normalizedstring(*:DocumentReference)" />
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element
name="WarehouseLocation">
<xsl:for-each select="*:WarehousID">
<xsl:element name="ID">
<xsl:value-of
select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:element
name="Item">
<xsl:element name="ItemID">
<xsl:element name="ID">
<xsl:value-of
select="infor:cast-to-normalizedstring(*:ItemID)" />
</xsl:element>
</xsl:element>
<xsl:element
name="SerializedLot">
<xsl:element name="Lot">
<xsl:element name="LotIDs">
<xsl:for-each select="*:LotID">
<xsl:element name="ID">
<xsl:value-of
select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:if
test="*:VarianceQuantity">
<xsl:element name="Quantity">
<xsl:attribute name="unitCode">
<xsl:value-of
select="infor:cast-to-normalizedstring(*:Unit)" />
</xsl:attribute>
<xsl:value-of
select="infor:cast-to-normalizedstring(*:VarianceQuantity)" />
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:if
test="*:VarianceQuantity">
<xsl:element name="Quantity">
<xsl:attribute name="unitCode">
<xsl:value-of
select="infor:cast-to-normalizedstring(*:Unit)" />
</xsl:attribute>
<xsl:value-of
select="infor:cast-to-normalizedstring(*:VarianceQuantity)" />
</xsl:element>
</xsl:if>
<xsl:element
name="Facility">
<xsl:element name="IDs">
<xsl:for-each select="*:WarehousLocation">
<xsl:element name="ID">
<xsl:attribute name="sequenceName">
<xsl:value-of
select="infor:cast-to-normalizedstring(string(ancestor::node()[1]/*:FacilitySequenceName))" />
</xsl:attribute>
<xsl:value-of
select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
<xsl:for-each
select="*:ReasonCode">
<xsl:element name="ReasonCode">
<xsl:value-of select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
<xsl:for-each
select="*:AdjustmentDateTime">
<xsl:element name="TransactionDateTime">
<xsl:value-of select="infor:cast-to-normalizedstring(.)" />
</xsl:element>
</xsl:for-each>
<xsl:element name="UserArea">
<!-- LastPersonName ?? ?? ?? -->
<xsl:if test="*:LastPersonName">
<xsl:element name="Property">
<xsl:element name="NameValue">
<xsl:attribute name="name">ln.cdf_bpco</xsl:attribute>
<xsl:attribute name="type">StringType</xsl:attribute>
<xsl:value-of select="*:LastPersonName"/>
</xsl:element>
</xsl:element>
</xsl:if>
<!-- DocumentReference ?? ?? ?? -->
<xsl:if test="*:DocumentReference">
<xsl:element name="Property">
<xsl:element name="NameValue">
<xsl:attribute name="name">ln.cdf_cono</xsl:attribute>
<xsl:attribute name="type">StringType</xsl:attribute>
<xsl:value-of select="*:DocumentReference"/>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:function name="infor:cast-to-integer">
<xsl:param name="input" />
<xsl:variable name="normalized" select="normalize-space($input)" />
<xsl:choose>
<xsl:when test="$normalized castable as xs:integer">
<xsl:value-of select="xs:integer($normalized)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'0'" />
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<xsl:function name="infor:cast-to-normalizedstring">
<xsl:param name="input" />
<xsl:value-of
select="fn:translate(fn:string($input),'

	', '   ')" />
</xsl:function>
</xsl:stylesheet>