--- /dev/null
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+<!ENTITY deg "°">
+<!ENTITY eacute "é">
+]>
+<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes/versement/1.0" version="2.0">
+
+ <xsl:output method="xhtml" encoding="ISO-8859-1" indent="yes"/>
+
+ <xsl:param name="repository" select="document(.)"/>
+
+ <!-- pour eviter les sorties parasites de tags non matches -->
+ <xsl:template match="*"> </xsl:template>
+
+ <!-- parametre implicite pour tous les format-number utilises dans la feuille-->
+ <xsl:decimal-format decimal-separator="." grouping-separator=" "/>
+ <xsl:decimal-format name="decformat"
+ decimal-separator=","
+ grouping-separator=" "
+ digit="#"
+ pattern-separator=";"
+ NaN="NaN"
+ minus-sign="-">
+ </xsl:decimal-format>
+
+ <!-- La date -->
+ <data xmlns="data.uri">
+ <mois xml:lang="fr">
+ <m>Janvier</m>
+ <m>Février</m>
+ <m>Mars</m>
+ <m>Avril</m>
+ <m>Mai</m>
+ <m>Juin</m>
+ <m>Juillet</m>
+ <m>Août</m>
+ <m>Septembre</m>
+ <m>Octobre</m>
+ <m>Novembre</m>
+ <m>Décembre</m>
+ </mois>
+ </data>
+
+ <xsl:param name="language" select="'fr'"/>
+
+ <!-- 2001-02-28 => 28/02/2001 -->
+ <xsl:template name="slash-date">
+ <xsl:param name="datebrute"/>
+ <date xmlns:data="data.uri" xsl:exclude-result-prefixes="data">
+ <xsl:value-of select="substring($datebrute, 9, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 6, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 1, 4)"/>
+ </date>
+ </xsl:template>
+
+ <!-- 2001-02-28 => 28 fevrier 2001 -->
+ <xsl:template name="iso-date">
+ <xsl:param name="datebrute"/>
+ <date xmlns:data="data.uri" xsl:exclude-result-prefixes="data">
+ <xsl:value-of select="substring($datebrute, 9, 2)"/>
+ <xsl:text> </xsl:text>
+ <xsl:variable name="mois" select="number(substring($datebrute, 6, 2))"/>
+ <!-- dans la ligne suivante, le moteur de transformation remplace @@XSL_LOCATION@@ par le nom et l'emplacement de ce fichier -->
+ <xsl:value-of
+ select="document('@@XSL_LOCATION@@')/*/data:data/data:mois[lang($language)]/data:m[$mois]"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="substring($datebrute, 1, 4)"/>
+ </date>
+ </xsl:template>
+
+ <!-- 02 => fevrier-->
+ <xsl:template name="iso-mois">
+ <xsl:param name="datebrute"/>
+ <date xmlns:data="data.uri" xsl:exclude-result-prefixes="data">
+ <xsl:variable name="mois" select="number($datebrute)"/>
+ <xsl:value-of
+ select="document('@@XSL_LOCATION@@')/*/data:data/data:mois[lang($language)]/data:m[$mois]"/>
+ </date>
+ </xsl:template>
+
+ <xsl:template name="compteBancaire">
+ <xsl:value-of select="/n:EtatVersement/n:DonneesVersement/n:Versement/n:CpteBancaire/@rib"/>
+ </xsl:template>
+ <!--xsl:template name="compteBancaire">
+ <xsl:param name="compte"/>
+ <xsl:value-of select="$compte/CodeEtab/@V"/> <xsl:value-of select="$compte/CodeGuic/@V"
+ /> <xsl:value-of select="$compte/IdCpte/@V"/> <xsl:value-of
+ select="$compte/CleRib/@V"/> <xsl:value-of select="$compte/TitCpte/@V"
+ /> <xsl:value-of select="$compte/DteBanc/@V"/> </xsl:template-->
+
+ <xsl:template match="/n:EtatVersement">
+ <html>
+ <head>
+ <title>Bulletin de versement</title>
+ <style> body { font-family: verdana, sans-serif; font-size: 10px; } h1 { font-size: 18px;
+ font-weight:bold; } table thead th { text-align: center; font-size: 11px; } table tbody tr td {
+ font-size: 10px; border: 0px } div#emetteur { position: absolute; top: 10px; left: 10px; }
+ div#emetteur-coordonnees { padding: 8px; border-style: solid; border-width: 1px; border-color:
+ #000000; } p#siret { left: 8px; } p#titre-prestation { font-size: 14px; font-weight: bold; }
+ div#titre { position:absolute; top: 10px; left: 500px; border-style: none; padding: 8px;
+ text-align: center; } div#versement { position: absolute; top: 180px; left: 10px; } th {
+ font-size: 12px; text-align: left; } td { font-size: 12px; text-align: left; } div#destinataire
+ { position: absolute; top: 0px; left: 500px; border-style: solid; border-width: 1px;
+ border-color: #000000; padding: 5px; } table#beneficiaire { background-color: #FFFFFF;
+ cell-spacing: 1px; } table#beneficiaire td, table#beneficiaire th { background-color: #CCCCCC;
+ } table#recap { width: 100%; background-color: #000000; cell-spacing: 1px; } table#recap th {
+ background-color: #AAAAAA ; font-weight: bold; valign:center ; } table#recap td { background-color:
+ #FFFFFF; } </style>
+ </head>
+ <body>
+ <xsl:apply-templates/>
+ <xsl:call-template name="titre">
+ <xsl:with-param name="annee" select="n:Annee"/>
+ <xsl:with-param name="prestation" select="n:Prestation"/>
+ <xsl:with-param name="sequence" select="n:Sequence"/>
+ <xsl:with-param name="prestation-bulletin" select="n:DonneesVersement/n:Versement[1]/n:Prestation"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="n:Emetteur">
+ <div id="emetteur">
+ <div id="emetteur-coordonnees">
+ <h2>
+ <xsl:value-of select="./Nom/@V"/>
+ </h2>
+ <p><xsl:value-of select="./n:Adresse/n:Adr1/@V"/><br/>
+ <xsl:value-of select="./n:Adresse/n:Adr2/@V"/><br/>
+ <xsl:value-of select="./n:Adresse/n:Adr3/@V"/><br/>
+ <xsl:value-of select="./n:Adresse/n:CP/@V"/> <xsl:value-of select="./n:Adresse/n:Ville/@V"
+ /></p>
+ </div>
+ <p id="siret">SIRET : <xsl:value-of select="./n:Siret/@V"/></p>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="titre">
+ <xsl:param name="annee"/>
+ <xsl:param name="prestation"/>
+ <xsl:param name="sequence"/>
+ <xsl:param name="prestation-bulletin"/>
+ <div id="titre">
+ <h1><xsl:value-of select="$annee/@V"/>
+ <br/>Bulletin de versement</h1>
+ <xsl:if test="string-length($sequence/n:NumOrdre/@V)>0">
+ <p>N° <xsl:value-of select="$sequence/n:NumOrdre/@V"/> / <xsl:value-of
+ select="$sequence/n:NbTotal/@V"/></p>
+ <br/>
+ </xsl:if>
+ <p>Au titre de</p>
+ <p id="titre-prestation">
+ <xsl:choose>
+ <xsl:when test="string-length($prestation-bulletin/@V)>0">
+ <xsl:value-of select="$repository/child::node()//n:NomenclaturePrestation/n:Correspondance[n:Code/@V=$prestation-bulletin/@V]/n:Libelle/@V"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$prestation/n:Libelle/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="n:DonneesVersement">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="n:Versement">
+ <div id="versement">
+ <table border="0" width="100%">
+ <tr>
+ <td width="50%" valign="top">
+ <table>
+ <tr>
+ <th>Dossier</th>
+ <td>
+ <xsl:value-of select="n:IdDossier/@V"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Versement</th>
+ <td>
+ <xsl:value-of select="n:IdVerst/@V"/>
+ <xsl:if test="string-length(n:Sequence/n:NumOrdre/@V)>0"> (<xsl:value-of select="n:Sequence/n:NumOrdre/@V"/>/<xsl:value-of select="n:Sequence/n:NbTotal/@V"/></xsl:if>
+ </td>
+ </tr>
+ <tr>
+ <th>Date Versement</th>
+ <td>
+ <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="n:Date/@V"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ <tr>
+ <th>Service</th>
+ <td>
+ <xsl:value-of select="n:Service/@V"/>
+ </td>
+ </tr>
+ </table>
+ <br/>
+ <table>
+ <tr>
+ <th>Mandat</th>
+ <td>
+ <xsl:value-of select="n:NumMandat/@V"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Code Nature</th>
+ <td>
+ <xsl:value-of select="n:CodeNature/@V"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Code Budget</th>
+ <td>
+ <xsl:value-of select="n:CodeBudget/@V"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Code Fonction</th>
+ <td>
+ <xsl:value-of select="n:CodeFonction/@V"/>
+ </td>
+ </tr>
+ <tr><th colspan="2">Commentaire</th></tr>
+ <tr><td colspan="2"><xsl:value-of select="n:Commentaire/@V"/></td></tr>
+ </table>
+ </td>
+ <td width="50%" valign="top">
+ <xsl:choose>
+ <xsl:when test="exists(n:Destinataire)">
+ <xsl:call-template name="destinataire">
+ <xsl:with-param name="dest" select="n:Destinataire"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="destinataire">
+ <xsl:with-param name="dest" select="n:Beneficiaire[1]"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="decision">
+ <xsl:with-param name="decision" select="n:Decision"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </table><br/>
+ <table width="100%" id="beneficiaire">
+ <thead>
+ <tr>
+ <th>Bénéficiaire</th>
+ <th>Adresse</th>
+ <th>Date naissance</th>
+ <th>Compte bancaire</th>
+ </tr>
+ </thead>
+ <xsl:apply-templates select="n:Beneficiaire"/>
+ </table>
+ <br/>
+ <table id="recap">
+ <tr><th width="100%">MODE REGLEMENT</th><th>MONTANT A VERSER</th></tr>
+ <tr><td>
+ <!-- Virement le <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="n:Date/@V"/>
+ </xsl:call-template> -->
+ </td>
+ <td style="text-align:right;"><xsl:call-template name="number"><xsl:with-param name="num"><xsl:value-of select="n:Mt/@V"/></xsl:with-param></xsl:call-template></td></tr>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="destinataire">
+ <xsl:param name="dest"/>
+ <!--div id="destinataire"-->
+ <h3>Destinataire</h3>
+ <p> <xsl:value-of select="$dest/n:InfoTiers/n:Civilite/@V"/> <xsl:value-of
+ select="$dest/n:InfoTiers/n:Nom/@V"/>
+ <xsl:if test="exists($dest/n:InfoTiers/n:ComplNom)"> <xsl:value-of
+ select="$dest/n:InfoTiers/n:ComplNom/@V"/></xsl:if> <xsl:value-of
+ select="$dest/n:InfoTiers/n:Prenom/@V"/></p>
+ <p><xsl:if test="exists($dest/n:Adresse/n:Adr1)"> <xsl:value-of
+ select="$dest/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
+ <xsl:if test="exists($dest/n:Adresse/n:Adr2)"> <xsl:value-of
+ select="$dest/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
+ <xsl:if test="exists($dest/n:Adresse/n:Adr3)"> <xsl:value-of
+ select="$dest/n:Adresse/n:Adr3/@V"/><br/></xsl:if> <xsl:value-of
+ select="$dest/n:Adresse/n:CP/@V"/> <xsl:value-of select="$dest/n:Adresse/n:Ville/@V"/></p>
+ <br/>
+ <xsl:if test="exists($dest/n:DateNaissance)">
+ <p>Né(e) le <xsl:call-template name="slash-date"><xsl:with-param name="datebrute"><xsl:value-of select="$dest/n:DateNaissance/@V"/></xsl:with-param></xsl:call-template></p>
+ </xsl:if>
+ <!--/div -->
+ </xsl:template>
+
+ <xsl:template name="decision">
+ <xsl:param name="decision"/>
+ <H3>Décision</H3>
+ <table>
+ <tr>
+ <th>Date</th>
+ <td>
+ <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="$decision/n:Date/@V"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ <tr>
+ <th>Date effet</th>
+ <td>
+ <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="$decision/n:DateEffet/@V"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ <xsl:if test="exists($decision/n:DateFin)">
+ <tr>
+ <th>Date fin</th>
+ <td>
+ <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="$decision/n:DateFin/@V"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <th>Nature</th>
+ <td>
+ <xsl:value-of select="$decision/n:Nature/@V"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Identifiant</th>
+ <td>
+ <xsl:value-of select="$decision/n:IdDecision/@V"/>
+ </td>
+ </tr>
+ <xsl:if test="exists($decision/n:Periodicite)">
+ <tr>
+ <th>Périodicité</th>
+ <td>
+ <xsl:value-of select="$decision/n:Periodicite/@V"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <th>Montant</th>
+ <td><xsl:value-of select="$decision/n:Mt/@V"/> €</td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="n:Beneficiaire">
+ <tr>
+ <td><xsl:value-of select="n:InfoTiers/n:Civilite/@V"/> <xsl:value-of
+ select="n:InfoTiers/n:Nom/@V"/> <xsl:if test="exists(n:InfoTiers/n:ComplNom)"><xsl:value-of
+ select="n:InfoTiers/n:ComplNom/@V"/> </xsl:if><xsl:value-of select="n:InfoTiers/n:Prenom/@V"
+ /></td>
+ <td>
+ <xsl:if test="exists(n:Adresse/n:Adr1)">
+ <xsl:value-of select="n:Adresse/n:Adr1/@V"/>
+ <br/>
+ </xsl:if>
+ <xsl:if test="exists(n:Adresse/n:Adr2)">
+ <xsl:value-of select="n:Adresse/n:Adr2/@V"/>
+ <br/>
+ </xsl:if>
+ <xsl:if test="exists(n:Adresse/n:Adr3)">
+ <xsl:value-of select="n:Adresse/n:Adr3/@V"/>
+ <br/>
+ </xsl:if>
+ <xsl:value-of select="n:Adresse/n:CP/@V"/> <xsl:value-of select="n:Adresse/n:Ville/@V"/>
+ </td>
+ <td>
+ <xsl:if test="exists(n:DateNaissance)">
+ <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="n:DateNaissance/@V"/>
+ </xsl:call-template>
+ </xsl:if>
+ </td>
+ <td>
+ <!--xsl:if test="exists(CpteBancaire)"-->
+ <xsl:call-template name="compteBancaire">
+ <!--xsl:with-param name="compte" select="CpteBancaire"/-->
+ </xsl:call-template>
+ <!--/xsl:if-->
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template name="number">
+ <xsl:param name="num"/>
+ <xsl:choose>
+ <xsl:when test="string-length($num) = 0"/>
+ <xsl:when test="number($num) = 0"/>
+ <xsl:when test="string(number($num)) = 'NaN'"/>
+ <xsl:otherwise>
+ <xsl:value-of select="format-number($num,'# ###,00;-# ###,00','decformat')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:transform>