% \iffalse meta-comment
% Droits d'auteur : 
%   - Maïeul Rouquette 2011-2014
%   - Joël Gombin 2014
% Licence Creative Commons - Paternité -Partage des Conditions Initiales à l'identique 
% http://creativecommons.org/licenses/by-sa/2.0/fr/
% \fi
% \iffalse
%<*driver>
\ProvidesFile{facture.dtx}
\documentclass{ltxdoc}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage[frenchb]{babel}
\usepackage{hyperref}
\usepackage{csquotes}
\usepackage{bidi}
% Pour l'impression du changement
\makeatletter
  \def\glossary@prologue{%
	\section{Historique des changements}%
	}
\makeatother
\EnableCrossrefs
\RecordChanges
% Pour les renvois internes
\newcommand{\renvoi}[1]{voir section~\ref{#1} p.~\pageref{#1}}
\begin{document}
   \raggedbottom
  \DocInput{facture.dtx}
\end{document}
%</driver>
%\fi
% \CheckSum{527}
% \changes{v1.0}{2011/09/10}{Première version}
% \changes{v1.1}{2014/09/16}{Laisser le choix de la marge à l'utilisateur}
% \changes{v1.1}{2014/09/16}{Possibilité de modifier la taille du tableau.}
% \changes{v1.2}{2015/01/16}{Possibilité de produire des factures sans la colonne remise.}
% \def\filedate{16/01/2015}
% \def\fileversion{1.2}
% \date{\filedate}
% \title{La class \textsf{facture}\thanks{Ce document correspond à la version~\fileversion de \textsf{facture} datée du \filedate.}}
%\author{Maïeul Rouquette et Joël Gombin}
%\maketitle
%\begin{abstract}
%Cette classe permet de rédiger factures et devis, avec ou sans TVA, en calculant automatiquement les sommes.
%
% Elle fonctionne avec \XeLaTeX{} et non pas \LaTeX{}. 
%
% Elle est sous licence Creative Commons - Paternité - Partage des Conditions Initiales à l'identique\footnote{\url{http://creativecommons.org/licenses/by-sa/2.0/fr/}.}.
%
% Pour tout demande de corrections ou d'améliorations, merci d'ouvrir un ticket sur Github : \url{https://github.com/maieul/facture/issues}.
%\end{abstract}
%\tableofcontents
%\section{Chargement et configuration}\label{meta}
%\subsection{Avec ou sans TVA ?}\label{TVA}
% La classe se charge comme toutes les classes. Une option \verb|sansTVA| permet de produire des factures sans gestion de la TVA. Typiquement pour des auto-entrepreneurs.
% Ainsi :
%\begin{verbatim}
%\documentclass[sansTVA]{facture}
%\end{verbatim}
%
% Permet de générer une facture sans gestion de la TVA. À contrario, 
%\begin{verbatim}
%\documentclass{facture}
%\end{verbatim}
%
% Permet de générer une facture avec TVA. Celle-ci est définie par défaut à 19,6~\%, mais il est possible de modifier le taux, grâce à la commande \DescribeMacro{\TVAdefaut}\cmd{\TVAdefaut}\marg{taux}. Par exemple pour avoir un taux de 5,5~\% :
%\begin{verbatim}
%\TVAdefaut{5,5}
%\end{verbatim}
% \subsection{Avec ou sans remise ?}\label{remise}
% Une option \verb|sansremise| permet de produire des factures sans gestion des remises.
%\subsection{Information sur document}
%Cette classe permet de fabriquer des factures et des devis. Par défaut, elle fabrique des factures. La commande \DescribeMacro{\type}\cmd{\type}\marg{type} permet d'indiquer si on souhaite fabriquer une facture ou autre chose :
%\begin{verbatim}
%\type{Devis}
%\end{verbatim}
%
% À noter que \meta{type} peut prendre n'importe quelle valeur.
% 
% Le document peut avoir un numéro, défini par la commande \DescribeMacro{\numero}\cmd{\numero}\marg{numero}. 
%
% Le document est automatiquement daté du jour de la compilation. Toutefois on peut utiliser la commande \DescribeMacro{\date}\cmd{\date}\marg{JJ/MM/AAAA} pour spécifier une date. Il est possible d'indiquer une date limite de paiement via la commande \DescribeMacro{\datelimite}\cmd{\datelimite}\marg{nbjours}. La date limite est calculée en ajoutant \meta{nbjours} à la date du document.
%\subsection{Information sur l'émetteur}
% La commande \DescribeMacro{\nomemet}\cmd{\nomemet}\marg{texte} permet d'indiquer le nom de l'émetteur, qui apparaîtra dans l'entête\footnote{On se reportera au fichier \href{exemple.pdf}{exemple} pour des … exemples}. Pour indiquer son adresse, qui apparaîtra dans l'entête mais à droite, on utilise \DescribeMacro{\adresseemet}\cmd{\adresseemet}\marg{texte}. On indique les retours à la ligne par \verb|\\|.
%
% Il existe également une commande \DescribeMacro{\pied}\cmd{\pied}\marg{texte} qui provoque l'affichage de \meta{texte} à droite du pied de page, sur toutes les pages. 
%
%\subsection{Information sur le destinataire}%\label{dest}
% Le destinataire peut avoir deux adresses : une adresse de livraison et une de facturation. Seule la première est obligatoire. Si la seconde est absente, la classe considère qu'il s'agit de la même adresse. À la différence de l'émetteur, le nom du destinataire s'indique en même temps que l'adresse.
%
%L'adresse de livraison se définie via la commande \DescribeMacro{\dest}\cmd{\dest}\marg{adresse}, l'adresse de facturation via \DescribeMacro{\fact}\marg{adresse}. Encore une fois, les différentes lignes de l'adresse doivent être séparées par \verb|\\|.
%
% Il est possible d'affecter un code au client, via la commande \DescribeMacro{\codeclient}\cmd{\codeclient}\marg{code}.
%\subsection{Affichage des méta-données}
%Toutes ces méta-données, à l'exception du taux de TVA et du pied de page sont affichées dans une zolie présentation avec la commande. \DescribeMacro{\entete}\cmd{\entete}.
%\section{Insertion de texte}
% La classe étant dérivée de la classe \emph{article}, il est possible d'insérer du texte sectionnable avec les commandes de \emph{article}. Il n'y a pas d'endroit obligatoire pour l'afficher.
%\section{Insertion de la facture}
% Une facture est constituée de lignes indiquant les prix et quantités des différents produits. Chaque ligne s'appelle au sein de l'environnement \DescribeEnv{facture}\emph{facture}, via la commande  \DescribeMacro{\ligne}\cmd{\ligne}\marg{produit}\oarg{quantité}\marg{prix unitaire HT}\oarg{remise}\oarg{taux de TVA}.
%
%\meta{produit} est le nom du produit.
%\meta{quantité} est la quantité souhaitée. Le nombre peut être entier ou décimal. En l'absence de cet argument, on suppose que le produit n'est présent qu'une fois.
%\meta{prix unitaire HT} n'est pas à décrire.
%\meta{remise} s'applique sur le prix total HT.
%\meta{taux de TVA}: si un produit n'a pas le même taux que celui par défaut (\renvoi{TVA}), cet argument permet d'indiquer le taux. Il est exprimé en pourcentage, mais sans le signe \%.
%
%
%Tout les nombres décimaux s'expriment en utilisant la virgule, même si l'usage du point fonctionne également.
%
% La commande se charge automatiquement  de calculer et d'afficher le prix total HT, la TVA et le prix  total TTC.
% Le total des produits est affiché avec la fermeture de l'environnement \emph{facture}. Exemple (voir le fichier \href{exemple.pdf}{exemple.pdf} pour le résultat):
%\begin{verbatim}
%\begin{facture}
%\ligne{Produit 1}[2]{25}
%\ligne{Produit 2}{10}[2]
%\end{facture}
%\end{verbatim}
%
% Dans le cas où l'option \verb|sansTVA| (\renvoi{TVA}) a été passée lors de l'appel à la classe, les colonnes ne sont pas les mêmes. Exemple (voir le fichier \href{exemplesansTVA.pdf}{exemplesansTVA.pdf} pour le résultat): 
%\begin{verbatim}
%\begin{facture}
%\ligne{Produit 1}[2]{25}
%\ligne{Produit 2}{10}[][2]
%\end{facture}
%\end{verbatim}
%
% Si l'option \verb|sansremise| a été passée lors de l'appel à la classe, le quatrième argument de la colonne correspond au taux de TVA.
%\subsection{Texte en dessous des totaux}
% Dans le cas d'une facture sans TVA, l'environnement \emph{facture} indique le texte \enquote{TVA non applicable, art. 293 B}. Il est possible de modifier ce texte, ou d'en ajouter un pour les documents avec TVA, en redéclarant la commande \DescribeMacro{\postTotaux}\cmd{\postTotaux}\marg{texte}. 
%\begin{verbatim}
%\renewcommand{\postTotaux}{\hfill un joli texte}
%\end{verbatim}
%\section{Personnalisation}
% Plusieurs possibilités de personnalisation existent, en redéfinissant des commandes et/ou des couleurs. J'invite à lire le code pour savoir lesquels.
%\begin{itemize}
%\item Pour les couleurs, les traits et les mise en valeurs des textes, \renvoi{apparence}.
%\item Pour les réglages concernant les mathématiques (arrondis par exemple), \renvoi{math}.
%\item Pour les textes, \renvoi{texte}.
%\item Pour le pieds de page, \renvoi{pied}.
%\item Pour l'affichage de la TVA, \renvoi{afficheTVA}.
%\item Pour la largeur des colonnes du tableau, \renvoi{largeurCols}.
%\end{itemize}
%
%Pour personnaliser la taille du papier et celle des marges, on peut utiliser le package \emph{geometry}.
%\StopEventually{}
%\appendix%
%\section{Documentation du code}
%\subsection{Chargement des packages}
%<*facture>
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{facture}[16/01/2015 v1.2]
\LoadClass[a4paper]{article}%On se base sur la classe article
\RequirePackage{fontspec}    
\RequirePackage{xunicode}
\RequirePackage{polyglossia}
\setmainlanguage{french}
\RequirePackage{numprint}%Pour gérer l'affichage des nombres
\RequirePackage{fltpoint}% Pour faire les calculs dans le tableau
\RequirePackage{tikz} % tikz est utilisé pour tracer des boites, par exemple
\RequirePackage{graphicx} % Pour insérer des images. Utiliser le format jpg pour plus de simplicité.
\RequirePackage{fancyhdr} % Pour entête et pied de page
\RequirePackage{array}
\RequirePackage{longtable}
\RequirePackage{colortbl}
\RequirePackage{advdate}%Pour manipuler les dates
\RequirePackage{xargs}%Pour des arguments conditionnels
%    \end{macrocode}
%\subsection{Option sansreduction}
%    \begin{macrocode}
\newif\ifsansreduction
\DeclareOption{sansreduction}{\sansreductiontrue}
%    \end{macrocode}
%\subsection{Option sansTVA}
%    \begin{macrocode}
\newif\ifsansTVA
\DeclareOption{sansTVA}{\sansTVAtrue}
%    \end{macrocode}
%\subsection{Option sansremise}
%    \begin{macrocode}
\newif\ifsansremise
\DeclareOption{sansremise}{\sansremisetrue}
%    \end{macrocode}
%\subsection{Exécution des options}
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%\subsection{Apparence}\label{apparence}
% On définit ici les couleurs, l'écartement des colonnes, et l'apparences des libellés. 
%    \begin{macrocode}
\definecolor{entetes}{HTML}{888888}
\definecolor{encadre}{RGB}{111,111,111}
\newcommand{\libelle}[1]{\textcolor{entetes}{\textbf#1}}
\setlength{\tabcolsep}{1pt}
\newlength{\epaisseurcadre}
\setlength{\epaisseurcadre}{1.5mm}
%    \end{macrocode}
%\subsection{Textes}\label{texte}
%\subsubsection{Invariants}
%    \begin{macrocode}
\newcommand{\codeclient}{Code client :}
\newcommand{\datetxt}{Date:}
\newcommand{\datelimitetxt}{À payer avant:}
\newcommand{\facturation}{Facturation}
\newcommand{\facturetxt}{Facture}
\newcommand{\livraison}{Livraison}
\newcommand{\livraisonfacturation}{Livraison et Facturation}
\newcommand{\ntxt}{~n°}
\newcommand{\produit}{Produit}
\newcommand{\quantite}{Quantité}
\newcommand{\remise}{Remise}
\newcommand{\unite}{€}
%    \end{macrocode}
%\subsubsection{Dépend du réglage sur la TVA (\renvoi{TVA})}
%    \begin{macrocode}
\ifsansTVA%
    \newcommand{\tottxt}{Total}
    \newcommand{\prixtxt}{Prix}
    \newcommand{\postTotaux}{\hfill TVA non applicable, art. 293 B}
\else%
    \newcommand{\prixHT}{Prix HT}
    \newcommand{\TVAtxt}{TVA}
    \newcommand{\prixTTC}{Prix TTC}
    \newcommand{\totHTtxt}{Total HT}
    \newcommand{\totTVAtxt}{Total TVA}
    \newcommand{\totTTCtxt}{Total TTC}
    \newcommand{\postTotaux}{}
\fi
%    \end{macrocode}
%\subsection{Largeur des colonnes}\label{largeurCols}
% On peut redéfinir les commandes ci-dessous pour modifier la largeur des commandes. Attention à ne pas dépasser un total de 1\cmd{\textwidth} !
%    \begin{macrocode}
\newcommand{\largeurDescriptif}{0.2\textwidth}
\newcommand{\largeurChiffres}{0.2\textwidth}
\newcommand{\largeurChiffresAvecTVA}{0.1\textwidth}
%    \end{macrocode}
%
%\subsection{Réglages mathématiques}\label{math}
%On régle ici les paramètres mathématiques, définissables avec le package \emph{numprint}.
% Tout d'abord on dit qu'on veut avoir les zéros finaux.
%    \begin{macrocode}
\npaddmissingzero
%    \end{macrocode}
% Puis on dit qu'on arrondit à deux chiffres après la virgule.
%    \begin{macrocode}
\nprounddigits{2}
%    \end{macrocode}
%\subsection{Quelques réglages standards}
% Ici on régle la TVA par défaut et le type de document
%    \begin{macrocode}
\def\@TVAdefaut{19,6}
\def\@type{\facturetxt}
%    \end{macrocode}
%\subsection{Méta-données}
%Toutes ces commandes sont appelées par l'utilisateurs au tout début (\renvoi{meta}). La plupart stockent dans une commande commençant par @ le code qui est passé.
%    \begin{macrocode}
\renewcommand{\date}[1]{\SetDate[#1]}
\newcommand{\TVAdefaut}[1]{\def\@TVAdefaut{#1}}
\newcommand{\datelimite}[1]{\def\@datelimite{#1}}
\newcommand{\dest}[1]{\def\@dest{#1}}
\newcommand{\fact}[1]{\def\@fact{#1}}
\newcommand{\adresseemet}[1]{\def\@adresseemet{#1}}
\newcommand{\nomemet}[1]{\def\@nomemet{#1}}
\newcommand{\type}[1]{\def\@type{#1}}
\newcommand{\numero}[1]{\def\@numero{#1}}
\newcommand{\codedest}[1]{\def\@codedest{#1}}
%    \end{macrocode}

%\subsection{Génération de l'entête}
% On se base sur le package \emph{TikZ} pour le générer.
%
% Tout d'abord afficher le nom et l'adresse de l'émetteur
%    \begin{macrocode}
\newcommand{\entete}{

    
    \noindent\begin{tikzpicture}
    
        \noindent\node [font=\bf\Huge,text width=0.5\textwidth,text=entetes,text centered]{%        
            \@nomemet%
        };
            
        \noindent\node (b)[xshift=0.5\textwidth,text width=0.5\textwidth, right]{%
            \@adresseemet%
        };
%    \end{macrocode}    
%
%Ensuite déterminer la place que cela prend, puis tracer l'encadré.
%    \begin{macrocode}
    \coordinate[xshift=-1\textwidth,yshift=1ex] (a) at (b.north);
    \coordinate[xshift=1em,yshift=-1ex] (c) at (b.south);
    \draw[color=encadre,line width=\epaisseurcadre] (a) rectangle  (c);
    \end{tikzpicture}
%    \end{macrocode}
%
%Ensuite afficher le titre, avec un peu d'espace avant et après, en le chassant à droite.
%    \begin{macrocode}

        
    
    \vspace{3ex}    
    
    \begin{flushright}    
        
    
    {\Huge\libelle{\@type}}
    
    \end{flushright}    
    
    \vspace{3ex}    
    
    \begin{tikzpicture}
%    \end{macrocode}
%
%Ensuite afficher les informations sur le destinataire. Des tests permettent d'afficher ou non la livraison séparement de  la facture, en fonction de ce qu'a défini l'utilisateur (\renvoi{dest}).
%    \begin{macrocode}
    

    \ifdef{\@fact}{
    \node[text width=0.33\textwidth,anchor=base]{
        \libelle{\facturation}
        
        \@fact
        };
    }{}
    
    \node[xshift=0.33\textwidth,text width=0.33\textwidth,anchor=base]{\ifdef{\@fact}{
            \libelle{\livraison}}
            {\libelle{\livraisonfacturation}}
            
        \@dest
    };
%    \end{macrocode}
%
% On affiche finalement les dates, le numéro de la facture et le code client.
%    \begin{macrocode}
    \node[text width=0.33\textwidth,xshift=0.66\textwidth,anchor=base]{
        \libelle{{\datetxt}} \today    \\
        \ifdef{\@numero}{%
            \libelle{{\@type\ntxt}} \@numero        
        }{}
        \\
        \ifdef{\@codedest}{%
            \libelle{{\codeclient}} \@codedest        
        }{}
        \ifdef{\@datelimite}{\\\AdvanceDate[\@datelimite]\libelle{{\datelimitetxt}} \today}{}
    };
    
    \end{tikzpicture}
    

}
%    \end{macrocode}
%\subsection{Le tableau de facturation}
% On commence par définir des variables globales qui servent à stocker les totaux généraux
%    \begin{macrocode}
\ifsansTVA
    \xdef\tot{}
\else
    \xdef\totTVA{}
    \xdef\totHT{}
    \xdef\totTTC{}
\fi
%    \end{macrocode}
%
%On définit ensuite un nouveau type de colonne, avec un alignement à droite
%    \begin{macrocode}
\newcolumntype{P}[1]{>{\raggedleft}p{#1}}
%    \end{macrocode}
%On  définit ensuite l'environnement \emph{facture}.
%\begin{environment}{facture}
% Tout d'abord on affiche l'entête, selon qu'on soit avec ou sans TVA
%    \begin{macrocode}
\newenvironment{facture}{%
    \setlength{\extrarowheight}{0.5ex}
    \setlength{\tabcolsep}{0.5em}
    \arrayrulecolor{encadre}    
    \ifsansTVA%    
        \ifsansremise%
	        \begin{longtable}{%
	        |p{\largeurDescriptif}%Descriptif
	        |P{\largeurChiffres}%Qt
	        |P{\largeurChiffres}%Prix 
	        |P{\largeurChiffres}|%Total
	        }%
	        \hline%    
	        \rowcolor{entetes}%
	        \centering\textbf\produit &%
	        \centering\textbf\quantite   &%
	        \centering\textbf\prixtxt &%
	        \centering\textbf\tottxt%
	        \tabularnewline[1ex]%  	    
	    \else%
	        \begin{longtable}{%
	        |p{\largeurDescriptif}%Descriptif
	        |P{\largeurChiffres}%Qt
	        |P{\largeurChiffres}%Prix 
	        |P{\largeurChiffres}%Remise
	        |P{\largeurChiffres}|%Total
	        }%
	        \hline%    
	        \rowcolor{entetes}%
	        \centering\textbf\produit &%
	        \centering\textbf\quantite   &%
	        \centering\textbf\prixtxt &%
	        \centering\textbf\remise &%
	        \centering\textbf\tottxt%
	        \tabularnewline[1ex]%
	     \fi%
    \else%        
        \ifsansremise%
	        \begin{longtable}{%
	        |p{\largeurDescriptif}|%Descriptif
	        P{\largeurChiffresAvecTVA}|%Qt
	        P{\largeurChiffresAvecTVA}|%HT unitaire
	        P{\largeurChiffresAvecTVA}|%Totalht
	        P{\largeurChiffresAvecTVA}|%TVA
	        P{\largeurChiffresAvecTVA}|%Total TTC
	        }%
	        \hline%    
	        \rowcolor{entetes}
	        \centering\textbf\produit &%
	        \centering\textbf\quantite &%
	        \centering\textbf\prixHT &% 
	        \centering\textbf\totHTtxt &%
	        \centering\textbf\TVAtxt &% 
	        \textbf\prixTTC \tabularnewline[1ex]%

        \else%
	        \begin{longtable}{%
	        |p{\largeurDescriptif}|%Descriptif
	        P{\largeurChiffresAvecTVA}|%Qt
	        P{\largeurChiffresAvecTVA}|%HT unitaire
	        P{\largeurChiffresAvecTVA}|%Remise
	        P{\largeurChiffresAvecTVA}|%Totalht
	        P{\largeurChiffresAvecTVA}|%TVA
	        P{\largeurChiffresAvecTVA}|%Total TTC
	        }%
	        \hline%    
	        \rowcolor{entetes}
	        \centering\textbf\produit &%
	        \centering\textbf\quantite &%
	        \centering\textbf\prixHT &% 
	        \centering\textbf\remise &% 
	        \centering\textbf\totHTtxt &%
	        \centering\textbf\TVAtxt &% 
	        \textbf\prixTTC \tabularnewline[1ex]%
        \fi%
    \fi%    
    \endhead%
    \endfoot%
    
    }%
%    \end{macrocode}
%Le contenu du tableau est généré par les commandes \cmd{\ligne}. Lorsqu'on ferme l'environnement \emph{facture}, on ferme le tableau
%    \begin{macrocode}
{%
    \end{longtable}
%    \end{macrocode}
%On affiche ensuite les totaux, qu'on place grâce à \emph{TikZ}. Le cercle de 0,001 de diamètre sert à faire prendre à la figure beamer le plus de place possible, pour que les textes soient alignés à droite.
%    \begin{macrocode}    
    \begin{tikzpicture}
    \draw[color=white] (0,0) circle (0.001);    
        \node[right,xshift=0.66\textwidth,text width=0.33\textwidth]{%
                        \ifsansTVA%
                            \hfill \libelle{\tottxt:} \numprint[\unite]{\tot}\\%                
                        \else%                
                            \libelle{\totHTtxt:}\hfill \numprint[\unite]{\totHT} \\%
                            \libelle{\totTVAtxt:}\hfill \numprint[\unite]{\totTVA} \\%
                            \libelle{\totTTCtxt:}\hfill \numprint[\unite]{\totTTC} \\
                        \fi
                        \postTotaux};
    \end{tikzpicture}
    
    }
%    \end{macrocode}
%\end{environment}
% On a besoin de définir une commande \cmd{\lignesansTVA} pour afficher le contenu d'une ligne lorsqu'on n'a pas de TVA. 
%    \begin{macrocode}
\newcommand{\lignesansTVA}[5]{
  #1 &
  #2 &
  #3 &
  \unless\ifsansremise
    #4 &
  \fi
  #5 \tabularnewline[1ex]}
%    \end{macrocode}
% La commande \cmd{\afficheTVA} sert à afficher la TVA dans le tableau. En ne l'indiquant pas directement dans le code de \cmd{\ligne}, on permet de  personnaliser plus facilement l'affichage de la TVA. \label{afficheTVA}

%    \begin{macrocode}
\newcommand{\afficheTVA}[1]{\raggedleft{\numprint[\%]{#1}}  \hfill $\triangleright$  \numprint[\unite]{\TVA}}
%    \end{macrocode}
%
% Voici maintenant la commande \cmd{\ligne}. Pour gérer les arguments optionnels, on se sert du package \emph{xargs}.
%    \begin{macrocode}
\newcommandx{\ligne}[5][2=1,5=\@TVAdefaut,4=0,usedefault]{%
%    \end{macrocode}
% On procède aux calculs grâce au package \emph{fltpoint}, on affiche les résultat grâce au package \emph{numprint}.
%    \begin{macrocode}
    \ifsansTVA
        \fpMul{\prix}{#3}{#2}%
        \fpSub{\prix}{\prix}{#4}%
        \fpAdd{\tot}{\prix}{\tot}%
        \xdef\tot{\tot}%
        \xdef\prix{\prix}%
        %Affichage
        \lignesansTVA{#1}{#2}{\numprint[\unite]{#3}}{\numprint[\unite]{#4}}{\numprint[\unite]{\prix}}%
    \else
        % Prix hors taxe
        \fpMul{\HT}{#3}{#2}%
        \unless\ifsansremise%
          \fpSub{\HT}{\HT}{#4}%
        \fi%
        \xdef\HT{\HT}%retenons
        \fpAdd{\totHT}{\totHT}{\HT}%
        \xdef\totHT{\totHT}%
        % Calcul de la TVA
        \ifsansremise%
           \fpDiv{\centieme}{#4}{100}%       
        \else%
          \fpDiv{\centieme}{#5}{100}%
        \fi
        \fpMul{\TVA}{\centieme}{\HT}%
        \xdef\TVA{\TVA}%retenons
        \fpAdd{\totTVA}{\totTVA}{\TVA}%
        \xdef\totTVA{\totTVA}%        
        % Prix TTC
        \fpAdd{\TTC}{\HT}{\TVA}%
        \xdef\TTC{\TTC}%
        \fpAdd{\totTTC}{\totTTC}{\TTC}%
        \xdef\totTTC{\totTTC}%    
        % Affichage
        #1 &
        #2 &
        \numprint[\unite]{#3} &
        \unless\ifsansremise
          \numprint[\unite]{#4} & 
        \fi
        \numprint[\unite]{\HT} &
        \afficheTVA{#5} &
        \numprint[\unite]{\TTC} \tabularnewline[1ex]%
    \fi
    \hline
}
%    \end{macrocode}
%\subsection{Apparence du pied}\label{pied}
%On se base sur le package \emph{fancyhdr} pour personnaliser le pied.
%    \begin{macrocode}
\AtBeginDocument{
	\pagestyle{fancy}
	\fancyhf{}
	\renewcommand{\headrule}{}%Pas de règle après l'entête
	\lfoot{\ifnum \value{page}>1 \thepage\fi}%Indiquer le numéro de page, sauf sur la première
	\rfoot{\@pied}
}
\newcommand{\pied}[1]{\def\@pied{#1}}%Le pied définissable par l'utilisateur
%    \end{macrocode}
%</facture>
% \PrintChanges
%\Finale
%\endinput