<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:oracle-xsl-mapper="http://www.oracle.com/xsl/mapper/schemas"
	xmlns:oraxsl="http://www.oracle.com/XSL/Transform/java"
	xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                exclude-result-prefixes=" oracle-xsl-mapper xsi xsd xsl oraxsl"
	xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
	xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
	xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
                >
	<oracle-xsl-mapper:schema>
		<!--SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY.-->
		<oracle-xsl-mapper:mapSources>
			<oracle-xsl-mapper:source type="XSD">
				<oracle-xsl-mapper:schema location="xsd/INVOICE-INVOICES-.xsd"/>
				<oracle-xsl-mapper:rootElement name="INVOICES" namespace=""/>
			</oracle-xsl-mapper:source>
		</oracle-xsl-mapper:mapSources>
		<oracle-xsl-mapper:mapTargets>
			<oracle-xsl-mapper:target type="XSD">
				<oracle-xsl-mapper:schema location="xsd/ZUGFeRD211_DE/Schema/EN16931/FACTUR-X_EN16931.xsd"/>
				<oracle-xsl-mapper:rootElement name="CrossIndustryInvoice" namespace="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"/>
			</oracle-xsl-mapper:target>
		</oracle-xsl-mapper:mapTargets>
		<oracle-xsl-mapper:substitutions>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/ITEMS/ITEM/Grp25_PIA_7140_Item_buyer_number"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/ITEMS/ITEM/Grp25_LIN_7140_Item_ean_number"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp7_CUX_6345_Invoice_currency_coded"
                                        substType="xsd:NMTOKENS"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_RFF_1154_Order_number_buyer"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/ITEMS/ITEM/Grp25_ALI_3239_Country_of_origin_coded"
                                        substType="xsd:Name"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp8_PAT_2152_Payment_due_days"
                                        substType="xsd:unsignedInt"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_6345_Currency_coded"
                                        substType="xsd:normalizedString"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/SUMMARY/SUMMARY_TAX/Grp50_TAX_5289_Tax_type_coded"
                                        substType="xsd:normalizedString"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Total_line_items_original_amount"
                                        substType="xsd:decimal"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS/Grp2_NAD_3042_Street_and_number_2"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS/Grp3_RFF_1154_Fiscal_number"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/ITEMS/ITEM/ITEM_ALLOWANCE_OR_CHARGE/Grp40_PCD_5482_Allowance_or_charge_percentage"
                                        substType="xsd:string"/>
			<oracle-xsl-mapper:sourceSubst substPath="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ALLOWANCE_OR_CHARGE/Grp19_MOA_5004_Allowance_or_charge_basis_amount"
                                        substType="xsd:string"/>
		</oracle-xsl-mapper:substitutions>
		<!--GENERATED BY ORACLE XSL MAPPER 12.2.1.4.0(XSLT Build 190828.0353.3300) AT [FRI JUL 10 14:08:34 CEST 2020].-->
	</oracle-xsl-mapper:schema>
	<!--User Editing allowed BELOW this line - DO NOT DELETE THIS LINE-->
	<xsl:variable name="NAD_PARTY_QUALIFIER"/>
	<xsl:param name="oracle_empty_param" select="' '"/>
	<xsl:template match="/">
		<rsm:CrossIndustryInvoice>
			<rsm:ExchangedDocumentContext>
				<ram:GuidelineSpecifiedDocumentContextParameter>
					<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
				</ram:GuidelineSpecifiedDocumentContextParameter>
			</rsm:ExchangedDocumentContext>
			<rsm:ExchangedDocument>
				<ram:ID>
					<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/BGM_1004_Document_message_number"/>
				</ram:ID>
				<ram:TypeCode>
					<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/BGM_1001_Document_message_name_coded"/>
				</ram:TypeCode>
				<ram:IssueDateTime>
					<udt:DateTimeString format="102">
						<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/DTM_2380_Document_date_time"/>
					</udt:DateTimeString>
				</ram:IssueDateTime>
				<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_TEXT">
					<ram:IncludedNote>
						<ram:Content>
							<xsl:value-of select="concat (FTX_4440_Free_text_1, FTX_4440_Free_text_2, FTX_4440_Free_text_3, FTX_4440_Free_text_4, FTX_4440_Free_text_5)"/>
						</ram:Content>
						<ram:SubjectCode>
							<xsl:value-of select="FTX_4451_Text_subject_qualifier"/>
						</ram:SubjectCode>
					</ram:IncludedNote>
				</xsl:for-each>
			</rsm:ExchangedDocument>
			<rsm:SupplyChainTradeTransaction>
				<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/ITEMS/ITEM">
					<ram:IncludedSupplyChainTradeLineItem>
						<ram:AssociatedDocumentLineDocument>
							<ram:LineID>
								<xsl:value-of select="Grp25_LIN_1082_Line_item_number"/>
							</ram:LineID>
						</ram:AssociatedDocumentLineDocument>
						<ram:SpecifiedTradeProduct>
							<ram:GlobalID schemeID="0088">
								<xsl:value-of select="Grp25_LIN_7140_Item_ean_number"/>
							</ram:GlobalID>
							<ram:SellerAssignedID>
								<xsl:value-of select="Grp25_PIA_7140_Item_supplier_number"/>
							</ram:SellerAssignedID>
							<ram:BuyerAssignedID>
								<xsl:value-of select="Grp25_PIA_7140_Item_buyer_number"/>
							</ram:BuyerAssignedID>
							<ram:Name>
								<xsl:if test="Grp25_IMD_7008_Item_description_1">
								<xsl:value-of select="Grp25_IMD_7008_Item_description_1"/>
								</xsl:if>
								<xsl:if test="Grp25_IMD_7008_Item_description_1 = ''">
									<xsl:value-of select="Grp25_PIA_7140_Item_supplier_number"/>
								</xsl:if>
							</ram:Name>
						</ram:SpecifiedTradeProduct>
						<ram:SpecifiedLineTradeAgreement>
							<ram:NetPriceProductTradePrice>
								<ram:ChargeAmount>
									<xsl:value-of select="Grp28_PRI_5118_Net_price"/>
								</ram:ChargeAmount>
							</ram:NetPriceProductTradePrice>
						</ram:SpecifiedLineTradeAgreement>
						<ram:SpecifiedLineTradeDelivery>
							<ram:BilledQuantity unitCode="{Grp25_QTY_6411_Quantity_measure_unit_qualifier}">
								<xsl:value-of select="Grp25_QTY_6060_Quantity_delivered"/>
							</ram:BilledQuantity>
						</ram:SpecifiedLineTradeDelivery>
						<ram:SpecifiedLineTradeSettlement>
							<ram:ApplicableTradeTax>
								<ram:TypeCode>VAT</ram:TypeCode>
								<ram:CategoryCode>
									<xsl:value-of select="Grp33_TAX_5305_Tax_category_coded"/>
								</ram:CategoryCode>
								<ram:RateApplicablePercent>
									<xsl:value-of select="Grp33_TAX_5278_Tax_rate"/>
								</ram:RateApplicablePercent>
							</ram:ApplicableTradeTax>
							<xsl:if test="Grp25_DTM_2380_Start_date_time != ''">
							<ram:BillingSpecifiedPeriod>
								<ram:StartDateTime>
									<udt:DateTimeString format="102">
										<xsl:value-of select="Grp25_DTM_2380_Start_date_time"/>
									</udt:DateTimeString>
								</ram:StartDateTime>
								<ram:EndDateTime>
									<udt:DateTimeString format="102">
										<xsl:value-of select="Grp25_DTM_2380_End_date_time"/>
									</udt:DateTimeString>
								</ram:EndDateTime>
							</ram:BillingSpecifiedPeriod>
							</xsl:if>
							<ram:SpecifiedTradeSettlementLineMonetarySummation>
								<ram:LineTotalAmount>
									<xsl:value-of select="Grp26_MOA_5004_Monetary_amount"/>
								</ram:LineTotalAmount>
							</ram:SpecifiedTradeSettlementLineMonetarySummation>
						</ram:SpecifiedLineTradeSettlement>
					</ram:IncludedSupplyChainTradeLineItem>
				</xsl:for-each>
				<ram:ApplicableHeaderTradeAgreement>
					<ram:BuyerReference>
						<xsl:value-of select="/INVOICES/ENVELOPE/UNB_0010_Buyer_reference"/>
					</ram:BuyerReference>
					<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS">
						<xsl:if test="Grp2_NAD_3035_Party_qualifier = &quot;SU&quot;">
							<ram:SellerTradeParty>
								<ram:ID>
									<xsl:value-of select="Grp3_RFF_1154_Additional_partner_information"/>
								</ram:ID>
								<ram:GlobalID schemeID="0088">
									<xsl:value-of select="Grp2_NAD_3039_Party_id_identification"/>
								</ram:GlobalID>
								<ram:Name>
									<xsl:value-of select="concat(concat(Grp2_NAD_3036_Party_name_1, &quot; &quot;), Grp2_NAD_3036_Party_name_2 )"/>
								</ram:Name>
								<ram:PostalTradeAddress>
									<ram:PostcodeCode>
										<xsl:value-of select="Grp2_NAD_3251_Postcode_identification"/>
									</ram:PostcodeCode>
									<ram:LineOne>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_1"/>
									</ram:LineOne>
									<ram:LineTwo>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_2"/>
									</ram:LineTwo>
									<ram:CityName>
										<xsl:value-of select="Grp2_NAD_3164_City_name"/>
									</ram:CityName>
									<ram:CountryID>
										<xsl:value-of select="Grp2_NAD_3207_Country_coded"/>
									</ram:CountryID>
								</ram:PostalTradeAddress>
								<xsl:if test="Grp3_RFF_1154_Fiscal_number != &quot;&quot;">
									<ram:SpecifiedTaxRegistration>
										<ram:ID schemeID="FC">
											<xsl:value-of select="Grp3_RFF_1154_Fiscal_number"/>
										</ram:ID>
									</ram:SpecifiedTaxRegistration>
								</xsl:if>
								<ram:SpecifiedTaxRegistration>
									<ram:ID schemeID="VA">
										<xsl:value-of select="Grp3_RFF_1154_VAT_number"/>
									</ram:ID>
								</ram:SpecifiedTaxRegistration>
							</ram:SellerTradeParty>
						</xsl:if>
					</xsl:for-each>
					<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS">
						<xsl:if test="Grp2_NAD_3035_Party_qualifier = &quot;BY&quot;">
							<ram:BuyerTradeParty>
								<ram:ID>
									<xsl:value-of select="Grp3_RFF_1154_Additional_partner_information"/>
								</ram:ID>
								<ram:GlobalID schemeID="0088">
									<xsl:value-of select="Grp2_NAD_3039_Party_id_identification"/>
								</ram:GlobalID>
								<ram:Name>
									<xsl:value-of select="concat(concat(Grp2_NAD_3036_Party_name_1, &quot; &quot;), Grp2_NAD_3036_Party_name_2 )"/>
								</ram:Name>
								<ram:PostalTradeAddress>
									<ram:PostcodeCode>
										<xsl:value-of select="Grp2_NAD_3251_Postcode_identification"/>
									</ram:PostcodeCode>
									<ram:LineOne>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_1"/>
									</ram:LineOne>
									<ram:LineTwo>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_2"/>
									</ram:LineTwo>
									<ram:CityName>
										<xsl:value-of select="Grp2_NAD_3164_City_name"/>
									</ram:CityName>
									<ram:CountryID>
										<xsl:value-of select="Grp2_NAD_3207_Country_coded"/>
									</ram:CountryID>
								</ram:PostalTradeAddress>
							</ram:BuyerTradeParty>
						</xsl:if>
					</xsl:for-each>
					<xsl:if test="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_RFF_1154_Order_number_buyer != &quot;&quot;">
						<ram:BuyerOrderReferencedDocument>
							<ram:IssuerAssignedID>
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_RFF_1154_Order_number_buyer"/>
							</ram:IssuerAssignedID>
						</ram:BuyerOrderReferencedDocument>
					</xsl:if>
				</ram:ApplicableHeaderTradeAgreement>
				<ram:ApplicableHeaderTradeDelivery>
					<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS">
						<xsl:if test="Grp2_NAD_3035_Party_qualifier = &quot;DPX&quot;">
							<ram:ShipToTradeParty>
								<ram:ID>
									<xsl:value-of select="Grp3_RFF_1154_Additional_partner_information"/>
								</ram:ID>
								<ram:GlobalID schemeID="0088">
									<xsl:value-of select="Grp2_NAD_3039_Party_id_identification"/>
								</ram:GlobalID>
								<ram:Name>
									<xsl:value-of select="Grp2_NAD_3036_Party_name_1"/>
								</ram:Name>
								<ram:PostalTradeAddress>
									<ram:PostcodeCode>
										<xsl:value-of select="Grp2_NAD_3251_Postcode_identification"/>
									</ram:PostcodeCode>
									<ram:LineOne>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_1"/>
									</ram:LineOne>
									<ram:LineTwo>
										<xsl:value-of select="Grp2_NAD_3042_Street_and_number_2"/>
									</ram:LineTwo>
									<ram:CityName>
										<xsl:value-of select="Grp2_NAD_3164_City_name"/>
									</ram:CityName>
									<ram:CountryID>
										<xsl:value-of select="Grp2_NAD_3207_Country_coded"/>
									</ram:CountryID>
								</ram:PostalTradeAddress>
							</ram:ShipToTradeParty>
						</xsl:if>
					</xsl:for-each>
					<ram:ActualDeliverySupplyChainEvent>
						<ram:OccurrenceDateTime>
							<udt:DateTimeString format="102">
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/DTM_2380_Delivery_date_time"/>
							</udt:DateTimeString>
						</ram:OccurrenceDateTime>
					</ram:ActualDeliverySupplyChainEvent>
				</ram:ApplicableHeaderTradeDelivery>
				<ram:ApplicableHeaderTradeSettlement>
					<ram:InvoiceCurrencyCode>
						<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp7_CUX_6345_Invoice_currency_coded"/>
					</ram:InvoiceCurrencyCode>
					<ram:SpecifiedTradeSettlementPaymentMeans>
						<ram:TypeCode>42</ram:TypeCode>
						<ram:PayeePartyCreditorFinancialAccount>
							<ram:IBANID>
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS/Grp2_FII_3194_Account_holder_IBAN"/>
							</ram:IBANID>
							<ram:AccountName>
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS/Grp2_FII_3194_Account_holder_name"/>
							</ram:AccountName>
						</ram:PayeePartyCreditorFinancialAccount>
						<ram:PayeeSpecifiedCreditorFinancialInstitution>
							<ram:BICID>
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ADDRESS/Grp2_FII_3434_Institution_BIC"/>
							</ram:BICID>
						</ram:PayeeSpecifiedCreditorFinancialInstitution>
					</ram:SpecifiedTradeSettlementPaymentMeans>	
					<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/SUMMARY_TAX">
						<ram:ApplicableTradeTax>
							<ram:CalculatedAmount>
								<xsl:value-of select="Grp50_MOA_5004_Tax_amount"/>
							</ram:CalculatedAmount>
							<ram:TypeCode>VAT</ram:TypeCode>
							<xsl:if test="Grp50_TAX_5278_Tax_rate = &quot;0&quot;">
								<ram:ExemptionReason>no tax</ram:ExemptionReason>
							</xsl:if>
							<ram:BasisAmount>
								<xsl:value-of select="Grp50_MOA_5004_Total_line_items_amount"/>
							</ram:BasisAmount>
							<ram:CategoryCode>
								<xsl:value-of select="Grp50_TAX_5305_Tax_category_coded"/>
							</ram:CategoryCode>
							<ram:RateApplicablePercent>
								<xsl:value-of select="Grp50_TAX_5278_Tax_rate"/>
							</ram:RateApplicablePercent>
						</ram:ApplicableTradeTax>
					</xsl:for-each>
					<xsl:if test="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_DTM_2380_Start_date_time != ''">
						<ram:BillingSpecifiedPeriod>
									<ram:StartDateTime>
										<udt:DateTimeString format="102">
											<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_DTM_2380_Start_date_time"/>
										</udt:DateTimeString>
									</ram:StartDateTime>
									<ram:EndDateTime>
										<udt:DateTimeString format="102">
											<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp1_DTM_2380_End_date_time"/>
										</udt:DateTimeString>
									</ram:EndDateTime>
						</ram:BillingSpecifiedPeriod>
					</xsl:if>
					<xsl:for-each select="/INVOICES/ENVELOPE/INVOICE/HEADER/HEADER_ALLOWANCE_OR_CHARGE">
						<ram:SpecifiedTradeAllowanceCharge>
							<ram:ChargeIndicator>
								<xsl:if test="Grp15_ALC_5463_Allowance_or_charge_qualifier = &quot;A&quot;">
									<udt:Indicator>false</udt:Indicator>
								</xsl:if>
								<xsl:if test="Grp15_ALC_5463_Allowance_or_charge_qualifier = &quot;C&quot;">
									<udt:Indicator>true</udt:Indicator>
								</xsl:if>
							</ram:ChargeIndicator>
							<ram:CalculationPercent>
								<xsl:value-of select="Grp18_PCD_5482_Allowance_or_charge_percentage"/>
							</ram:CalculationPercent>
							<ram:BasisAmount>
								<xsl:value-of select="Grp19_MOA_5004_Allowance_or_charge_basis_amount"/>
							</ram:BasisAmount>
							<ram:ActualAmount/>
						</ram:SpecifiedTradeAllowanceCharge>
					</xsl:for-each>
					<ram:SpecifiedTradePaymentTerms>
						<ram:DueDateDateTime>
							<udt:DateTimeString format="102">
								<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/HEADER/Grp8_DTM_2380_Terms_net_due_date"/>
							</udt:DateTimeString>
						</ram:DueDateDateTime>
					</ram:SpecifiedTradePaymentTerms>
					<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
						<ram:LineTotalAmount>
							<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Total_line_items_amount"/>
						</ram:LineTotalAmount>
						<ram:TaxBasisTotalAmount>
							<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Taxable_amount"/>
						</ram:TaxBasisTotalAmount>
						<ram:TaxTotalAmount currencyID="{/INVOICES/ENVELOPE/INVOICE/HEADER/Grp7_CUX_6345_Invoice_currency_coded}">
							<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Tax_amount"/>
						</ram:TaxTotalAmount>
						<ram:GrandTotalAmount>
							<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Invoice_amount"/>
						</ram:GrandTotalAmount>
						<ram:DuePayableAmount>
							<xsl:value-of select="/INVOICES/ENVELOPE/INVOICE/SUMMARY/Grp48_MOA_5004_Invoice_amount"/>
						</ram:DuePayableAmount>
					</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
				</ram:ApplicableHeaderTradeSettlement>
			</rsm:SupplyChainTradeTransaction>
		</rsm:CrossIndustryInvoice>
	</xsl:template>
</xsl:stylesheet>
