<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:decimal-format name="european" decimal-separator="," grouping-separator="."/>
<xsl:output method="xml"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:variable name="ascii"> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:variable>
<xsl:variable name="latin1"> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ&CCedil;ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö&divid;øùúûüýþÿ</xsl:variable>
<!-- Characters that usually don't need to be escaped -->
<xsl:variable name="safe">!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:variable>
<xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
<xsl:template match="invoice">
<xsl:variable name="orderSubTotal">
<xsl:call-template name="sumPositions">
<xsl:with-param name="positions" select="positions"/>
<xsl:with-param name="index" select="'1'"/>
<xsl:with-param name="runningTotal" select="'0'"/>
</xsl:call-template>
</xsl:variable>
<html>
<head>
<title>Invoice Nr.: 2004-1100</title>
<link rel="stylesheet" href="invoice.css" type="text/css" />
<style type="text/css">
@media print {
@page {
size: <xsl:value-of select="orderer/media"/>;
margin: 1cm;
@bottom-center {
text-align: center;
font: 6pt Arial, Helvetica, sans-serif;
color: #7F7F7F;
content: "<xsl:value-of select="vendor/companyname"/> - <xsl:value-of select="vendor/register"/> - Geschaeftsführer: <xsl:value-of select="vendor/director"/>\A<xsl:value-of select="vendor/bankname"/> - BLZ: <xsl:value-of select="vendor/bankcode"/> - Kto.-Nr: <xsl:value-of select="vendor/bankaccno"/> - Swift Code: <xsl:value-of select="vendor/swiftbic"/> - USt.IdNr: <xsl:value-of select="vendor/vatid"/> - St-Nr: <xsl:value-of select="vendor/taxno"/>";
margin-bottom: 1cm;
}
}
}
</style>
</head>
<body>
<div class="companyinformation">
<img>
<xsl:attribute name="class">
<xsl:value-of select="'logo'" />
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="'Company Logo'" />
</xsl:attribute>
<xsl:attribute name="src">
<xsl:call-template name="url-encode">
<xsl:with-param name="str" select="concat(vendor/companyname,'.png')"/>
</xsl:call-template>
</xsl:attribute>
</img>
<br/>
<xsl:value-of select="vendor/companyname"/><br />
<xsl:value-of select="vendor/address"/><br />
<xsl:value-of select="concat(vendor/zip,' ',vendor/city)"/><br />
<xsl:value-of select="vendor/country"/><br />
<br />
Tel. <xsl:value-of select="vendor/tel"/><br />
Fax <xsl:value-of select="vendor/fax"/><br />
E-Mail <xsl:value-of select="vendor/email"/><br />
</div>
<div class="addressline">
<xsl:value-of select="vendor/companyname"/> - <xsl:value-of select="vendor/address"/> - <xsl:value-of select="concat(vendor/zip,' ',vendor/city)"/> - <xsl:value-of select="vendor/country"/>
</div>
<div class="recipient">
<xsl:value-of select="orderer/companyname"/><br />
Attn: <xsl:value-of select="orderer/personname"/><br />
<xsl:for-each select="orderer/address">
<xsl:value-of select="." /><br />
</xsl:for-each>
<xsl:value-of select="concat(orderer/zip,' ',orderer/city)"/><br />
<xsl:value-of select="orderer/country"/><br />
</div>
<div class="descbox">
<div class="descboxheader">
Invoice
</div>
<table>
<tr>
<td>Process no.:</td>
<td><xsl:value-of select="voucher/@processno"/></td>
</tr>
<tr>
<td>Voucher no.:</td>
<td><xsl:value-of select="voucher/@no"/></td>
</tr>
<tr>
<td>Date:</td>
<td><xsl:value-of select="voucher/@date"/></td>
</tr>
<tr>
<td>Client reference no:</td>
<td><xsl:value-of select="voucher/@clientrefid"/></td>
</tr>
</table>
</div>
<hr class="invisible" />
<div class="infotable">
<table class="infotable">
<tr>
<td>Valid until</td>
<td></td>
<td>Reference</td>
<td><xsl:value-of select="voucher/@clientrefid"/></td>
<td>Our VAT-ID no.</td>
<td><xsl:value-of select="vendor/vatid"/></td>
</tr>
<tr>
<td>Shipment</td>
<td><xsl:value-of select="orderer/shipment"/></td>
<td>Your sign</td>
<td><xsl:value-of select="orderer/personname"/></td>
<td>Our sign</td>
<td><xsl:value-of select="vendor/sign"/></td>
</tr>
<tr>
<td>Terms of shipment</td>
<td>Standard</td>
<td>Your voucher</td>
<td><xsl:value-of select="voucher/@no"/></td>
<td>Your VAT-ID no.</td>
<td><xsl:value-of select="orderer/vatid"/></td>
</tr>
</table>
</div>
<table class="postable">
<thead>
<tr class="postheader">
<td style="padding-right: 1.5mm">Pos.</td>
<td style="padding-right: 1.5mm">Art.-No.</td>
<td style="width:100%">Description</td>
<td class="right">Qty. Unit</td>
<td class="right">Unit Price</td>
<td class="right">Total Price</td>
<td style="text-align:right">TC</td>
</tr>
</thead>
<tr class="puffer"><td colspan="7"></td></tr>
<xsl:for-each select="positions/position">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td><xsl:value-of select="khkid" /></td>
<td>
<xsl:value-of select="articletitle" />
<xsl:for-each select="articledesc">
<br /><xsl:value-of select="." />
</xsl:for-each>
</td>
<td class="right"><xsl:value-of select="concat(qty,' ',unit)" /></td>
<td class="right"><xsl:value-of select="format-number(unit_price, '#.###,00', 'european')" /></td>
<td class="right"><xsl:value-of select="format-number((qty * unit_price), '#.###,00', 'european')" /></td>
<td style="text-align:right">14</td>
</tr>
<tr class="puffer"><td colspan="7"></td></tr>
</xsl:for-each>
<tr class="postfooter">
<td></td>
<td></td>
<td></td>
<td class="right">Subtotal</td>
<td class="right">EUR</td>
<td class="subtotal">
<xsl:value-of select="format-number($orderSubTotal, '#.###,00', 'european')"/>
</td>
<td style="text-align:right">TC</td>
</tr>
<tr class="puffer"><td colspan="7"></td></tr>
<tr>
<td></td>
<td></td>
<td>VAT with TC 14</td>
<td class="right">16,00% of</td>
<td class="right">
<xsl:value-of select="format-number($orderSubTotal, '#.###,00', 'european')"/>
</td>
<td class="right"><xsl:value-of select="format-number(($orderSubTotal * 0.16), '#.###,00', 'european')"/></td>
<td></td>
</tr>
<tr class="puffer"><td colspan="7"></td></tr>
<tr class="postfooter">
<td></td>
<td></td>
<td></td>
<td class="right">Total</td>
<td class="right">EUR</td>
<td class="subtotal">
<xsl:value-of select="format-number(($orderSubTotal * 1.16), '#.###,00', 'european')"/>
</td>
<td></td>
</tr>
</table>
<p>The invoice amount must be paid with indication of the "Voucher no." by remittance to our bank account indicated below free of<br />
bank charges for us. You may also send us a collection-only check in the currency mentioned above.</p>
<p>Account Holder: <xsl:value-of select="vendor/companyname"/><br />
Account Number: <xsl:value-of select="vendor/bankaccno"/><br />
IBAN: <xsl:value-of select="vendor/iban"/><br />
Bank Name: <xsl:value-of select="vendor/bankname"/><br />
Bank Address: <xsl:value-of select="vendor/bankaddress"/><br />
Bank SWIFT/BIC Code: <xsl:value-of select="vendor/swiftbic"/><br />
Bank Code: <xsl:value-of select="vendor/bankcode"/></p>
<p class="terms">Terms of payment:</p>
<p>10 Days without deduction
<xsl:value-of select="format-number(($orderSubTotal * 1.16), '#.###,00', 'european')"/> EUR
</p>
</body>
</html>
</xsl:template>
<xsl:template name="sumPositions">
<xsl:param name="positions"/>
<xsl:param name="index" select="'1'"/>
<xsl:param name="runningTotal" select="'0'"/>
<xsl:variable name="currentPosition">
<xsl:value-of select="$positions/position[$index]/qty * $positions/position[$index]/unit_price"/>
</xsl:variable>
<xsl:variable name="remainingpositions">
<xsl:choose>
<xsl:when test="$index=count($positions/position)">
<xsl:text>0</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="sumPositions">
<xsl:with-param name="positions" select="$positions"/>
<xsl:with-param name="index" select="$index+1"/>
<xsl:with-param name="runningTotal" select="$runningTotal+$currentPosition"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$currentPosition+$remainingpositions"/>
</xsl:template>
<xsl:template name="url-encode">
<xsl:param name="str"/>
<xsl:if test="$str">
<xsl:variable name="first-char" select="substring($str,1,1)"/>
<xsl:choose>
<xsl:when test="contains($safe,$first-char)">
<xsl:value-of select="$first-char"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="codepoint">
<xsl:choose>
<xsl:when test="contains($ascii,$first-char)">
<xsl:value-of select="string-length(substring-before($ascii,$first-char)) + 32"/>
</xsl:when>
<xsl:when test="contains($latin1,$first-char)">
<xsl:value-of select="string-length(substring-before($latin1,$first-char)) + 160"/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="no">Warning: string contains a character that is out of range! Substituting "?".</xsl:message>
<xsl:text>63</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="hex-digit1" select="substring($hex,floor($codepoint div 16) + 1,1)"/>
<xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
<xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="string-length($str) > 1">
<xsl:call-template name="url-encode">
<xsl:with-param name="str" select="substring($str,2)"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>