<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
	<xsl:strip-space elements="*" />
	<xsl:output method="xml" indent="yes" encoding="UTF-8"
		standalone="yes" />

	<xsl:template match="/">

		<xsl:variable name="date"
			select="/data/document/item[@name='$modified']/value" />
		
		<Invoices version="2020.2" 
				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

			<Message>
				<SenderID>Imixs-Office-Workflow</SenderID>
				<ReceiverID>Cargosoft</ReceiverID>
				<MessageID><xsl:value-of select="/data/document/item[@name='$uniqueid']/value" /></MessageID>
				<MessageDate>
					<DateTime><xsl:value-of select="$date" /></DateTime>
				</MessageDate>
			</Message>
			
			<xsl:apply-templates
					select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'Cargosoft-Export']" />
		</Invoices>

	</xsl:template>
					
	<!-- This template builds invoice info -->
	<xsl:template
		match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'Cargosoft-Export']">

		<xsl:variable name="date" select="item[@name='$modified']/value"/>
		<xsl:variable name="currency" select="item[@name='invoice.currency']/value"/>
	
	
		<Invoice>
			<InvoiceHeader>
				<Client>
					<Codes>
					    <!-- Als Typ muss „cs“ übermittelt werden und im Code wird
                                dann der Cargosoft Mandant erwartet. -->
						<Code Type="cs">001</Code>
					</Codes>
				</Client>
				<!-- Hier muss eine eindeutige Belegnummer für jeden einzelnen
					Beleg übermittelt werden. Es muss sich um eine Nummer
					handeln, die pro Beleg hochgezählt wird und darf sich nicht
					überschneiden mit dem CargoSoft Belegnummernkreis.
					Daher den Nummernkreis vorher mit CargoSoft absprechen. -->
				<InvoiceNumber><xsl:value-of select="item[@name='numsequencenumber']/value" /></InvoiceNumber>
				
				<!-- Belegart - bei Gutschriften 'CREDIT' andernfalls 'INVOICE -->
				<InvoiceType>
					<Codes>
						<xsl:choose>
							<xsl:when test="item[@name='payment.type']/value = 'credit'">
								<Code Type="cs">CREDIT</Code>
							</xsl:when>
							<xsl:otherwise>
								<Code Type="cs">INVOICE</Code>
							</xsl:otherwise>
						</xsl:choose>
					</Codes>
				</InvoiceType>
				<InvoiceCurrency>
					<Codes>
						<Code Type="cs"><xsl:value-of select="$currency" /></Code>
					</Codes>
				</InvoiceCurrency>
				<InvoiceAmount>
					<NetAmount>
						<Amount>
							<Currency>
								<Codes>
									<Code Type="cs"><xsl:value-of select="$currency" /></Code>
								</Codes>
							</Currency>
							<Value><xsl:value-of select="item[@name='order.total.netto']/value" /></Value>
							<ExchangeRate><xsl:value-of select="item[@name='invoice.exchangerate']/value" /></ExchangeRate>
						</Amount>
					</NetAmount>
					<VATInformation>
						<VATAmount>
							<Amount>
								<Currency>
									<Codes>
										<Code Type="cs"><xsl:value-of select="$currency" /></Code>
									</Codes>
								</Currency>
								<Value><xsl:value-of select="item[@name='order.total.tax']/value" /></Value>
								<ExchangeRate><xsl:value-of select="item[@name='invoice.exchangerate']/value" /></ExchangeRate>
							</Amount>
						</VATAmount>					
					</VATInformation>
				</InvoiceAmount>
				<CollectionInvoice>false</CollectionInvoice>
				<xsl:if test="string-length(item[@name='invoice.period']/value) > 0">
                	<BookingPeriod><xsl:value-of select="item[@name='invoice.period']/value" /></BookingPeriod>
				</xsl:if>
				<Booked>false</Booked>
				<InvoiceDate><xsl:value-of select="item[@name='invoice.date']/value" /></InvoiceDate>
				
				
				<InvoiceAddress type="CN">
					<Codes>
						<Code Type="cs"><xsl:value-of select="item[@name='cdtr.number']/value" /></Code>
					</Codes>
				</InvoiceAddress>
				
				<References>
					<Reference type="cs"><xsl:value-of select="item[@name='invoice.number']/value" /></Reference>
				</References>
				
				<!-- Attachements -->
				<xsl:if test="item[@name='$file.count']/value > 0">
	  			<Attachments>
					<xsl:for-each
						select="item[@name='$file']/value/item">
						  <Attachment>
							<xsl:attribute name="id"><xsl:value-of select="./value/item[@name='md5checksum']/value" /></xsl:attribute>
							<xsl:attribute name="version">1</xsl:attribute>
  						   <Filename><xsl:value-of select="./@name" /></Filename>
						   <Description>Imixs-Office-Workflow</Description>
						   <Content><xsl:value-of select="./value[2]" /></Content>
						 </Attachment>
					</xsl:for-each>
				</Attachments>
				</xsl:if>
				
			</InvoiceHeader>
			<InvoiceRows>
			
				<xsl:for-each
					select="item[@name='_childitems']/value">
				<InvoiceRow>
					<Row><xsl:value-of select="./item[@name='numpos']/value" /></Row>
					<FileNumber><xsl:value-of select="./item[@name='name']/value" /></FileNumber>
					<InvoiceAmount>
						<NetAmount>
							<Amount>
								<Currency>
									<Codes>
										<Code Type="cs"><xsl:value-of select="$currency" /></Code>
									</Codes>
								</Currency>
								<Value><xsl:value-of select="./item[@name='amount']/value" /></Value>
							</Amount>
						</NetAmount>
						<VATInformation>
							<VAT>
								<Codes>
									<Code Type="cs"><xsl:value-of select="./item[@name='tax']/value" /></Code>
								</Codes>
							</VAT>
						</VATInformation>
					</InvoiceAmount>
					<ActivityType>
						<Codes>
							<Code Type="cs"><xsl:value-of select="./item[@name='category']/value" /></Code>
						</Codes>
					</ActivityType>
				</InvoiceRow>
				</xsl:for-each>
			</InvoiceRows>
		</Invoice>			
		
	</xsl:template>
	
		
</xsl:stylesheet>