<?xml version="1.1" encoding="iso-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;">
<!ENTITY deg "&#176;">
<!ENTITY eacute "&#233;">
]>
<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"/>

 <!-- 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"/>&nbsp;<xsl:value-of select="$compte/CodeGuic/@V"
   />&nbsp;<xsl:value-of select="$compte/IdCpte/@V"/>&nbsp;<xsl:value-of
   select="$compte/CleRib/@V"/>&nbsp;<xsl:value-of select="$compte/TitCpte/@V"
   />&nbsp;<xsl:value-of select="$compte/DteBanc/@V"/>&nbsp;</xsl:template-->

 <xsl:template match="/n:EtatVersement">
  <html>
   <head>
    <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"/>&nbsp;<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&deg; <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&eacute;n&eacute;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&nbsp;A&nbsp;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>&nbsp;&nbsp;<xsl:value-of select="$dest/n:InfoTiers/n:Civilite/@V"/>&nbsp;<xsl:value-of
    select="$dest/n:InfoTiers/n:Nom/@V"/>
   <xsl:if test="exists($dest/n:InfoTiers/n:ComplNom)">&nbsp;<xsl:value-of
     select="$dest/n:InfoTiers/n:ComplNom/@V"/></xsl:if>&nbsp;<xsl:value-of
    select="$dest/n:InfoTiers/n:Prenom/@V"/></p>
  <p><xsl:if test="exists($dest/n:Adresse/n:Adr1)">&nbsp;&nbsp;<xsl:value-of
     select="$dest/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
   <xsl:if test="exists($dest/n:Adresse/n:Adr2)">&nbsp;&nbsp;<xsl:value-of
     select="$dest/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
   <xsl:if test="exists($dest/n:Adresse/n:Adr3)">&nbsp;&nbsp;<xsl:value-of
     select="$dest/n:Adresse/n:Adr3/@V"/><br/></xsl:if> &nbsp;&nbsp;<xsl:value-of
    select="$dest/n:Adresse/n:CP/@V"/>&nbsp;<xsl:value-of select="$dest/n:Adresse/n:Ville/@V"/></p>
  <br/>
  <xsl:if test="exists($dest/n:DateNaissance)">
   <p>N&eacute;(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&eacute;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"/> &#8364;</td>
   </tr>
  </table>
 </xsl:template>

 <xsl:template match="n:Beneficiaire">
  <tr>
   <td><xsl:value-of select="n:InfoTiers/n:Civilite/@V"/>&nbsp;<xsl:value-of
     select="n:InfoTiers/n:Nom/@V"/>&nbsp;<xsl:if test="exists(n:InfoTiers/n:ComplNom)"><xsl:value-of
      select="n:InfoTiers/n:ComplNom/@V"/>&nbsp;</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"/>&nbsp;<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>
