% \iffalse meta-comment % Droits d'auteur : % - Maïeul Rouquette 2011-2023 % - Joël Gombin 2014 % - Étienne Deparis 2023-… % 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{metalogo} \usepackage[mono=false,nomath]{libertinus-otf} % Pour l'impression des changements \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}} \newcommand{\Renvoi}[1]{Voir section~\ref{#1} p.~\pageref{#1}.} \begin{document} \raggedbottom \DocInput{facture.dtx} \end{document} % % \fi % \CheckSum{585} % \changes{v1.0}{2011/09/10}{Premiè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.} % \changes{v1.2.2}{2015/01/16}{Corrections de quelques problèmes d'alignement.} % \changes{v1.3}{2023/06/30}{Modernise les scripts de construction du paquet.} % \changes{v1.3}{2023/06/30}{Corrige la documentation à propos du code client.} % \def\filedate{2023/06/30} % \def\fileversion{1.3} % \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, Joël Gombin et Étienne Deparis} % \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 Gitlab : \url{https://framagit.org/gutenberg/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~\%\footnote{Valeur lors de la sortie de la première version de la % classe. Pour éviter que des factures créées avant la variation du taux mais % recompilées après la variation ne voient leur TVA changer, ce taux restera % fixe d'une version à l'autre de la classe.}, 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. 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}\cmd{\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{\codedest}\cmd{\codedest}\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} % % \iffalse %<*facture> % \fi % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{facture}[2023/06/30 v1.3] \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 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} ! % % Le package se charge d'ajuster automatiquement pour supprimer la marge % intérieure. % % La largeur des chiffres est calculée automatiquement en fonction de la % largeur du descriptif et de la largeur de la TVA. Il est donc fortement % recommandé de ne modifiée que \cs{largeurDescriptif} et \cs{largeurTVA}. % % \begin{macrocode} \newcommand{\largeurDescriptif}{0.2\textwidth} \newcommand{\largeurTVA}{0.2\textwidth} \ifsansremise \newcommand{\largeurChiffresAvecTVA}{% \dimexpr (\textwidth-\largeurDescriptif-\largeurTVA)/4\relax} \newcommand{\largeurChiffres}{% \dimexpr (\textwidth-\largeurDescriptif)/3 \relax} \else \newcommand{\largeurChiffresAvecTVA}{% \dimexpr (\textwidth-\largeurDescriptif-\largeurTVA)/5\relax} \newcommand{\largeurChiffres}{% \dimexpr (\textwidth-\largeurDescriptif)/4 \relax} \fi % \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} % % \begin{macro}{\entete} % \changes{v1.2.2}{2017/04/12}{Corrections d'un bug si le numéro de facture n'est pas défini.} % \changes{v1.3}{2023/06/30}{Corrige un bug si code client est absent.} % % 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} % \iffalse} Stop Emacs syntax color being confused\fi % % Ensuite déterminer la place que cela prend, puis tracer l'encadré. % % \begin{macrocode} \coordinate[xshift=-\textwidth-\epaisseurcadre,yshift=1ex] (a) at (b.north); \coordinate[xshift=-\epaisseurcadre,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} % \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} \begin{tikzpicture} \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 \entete % \end{macrocode} % \end{macro} % % \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} \edef\@largeurDescriptif{\dimexpr\largeurDescriptif -2\tabcolsep\relax} \edef\@largeurChiffres{\dimexpr\largeurChiffres -2\tabcolsep\relax} \edef\@largeurTVA{\dimexpr\largeurTVA -2\tabcolsep\relax} \edef\@largeurChiffresAvecTVA{\dimexpr\largeurChiffresAvecTVA -2\tabcolsep\relax} \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{\@largeurTVA}|% 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{\@largeurTVA}|% 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 opening part of environment % \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} {% begin closing part of environment \end{longtable} % \end{macrocode} % % On affiche ensuite les totaux. % % \begin{macrocode} \ifsansTVA% \noindent\hspace{0.66\textwidth}\hfill \libelle{\tottxt:} \numprint[\unite]{\tot}\\% \else% \noindent\hspace{0.66\textwidth} \libelle{\totHTtxt:}\hfill \numprint[\unite]{\totHT}\\% \hbox{}\hspace{0.66\textwidth} \libelle{\totTVAtxt:}\hfill \numprint[\unite]{\totTVA}\\% \hbox{}\noindent\hspace{0.66\textwidth} \libelle{\totTTCtxt:}\hfill \numprint[\unite]{\totTTC}\\ \fi \hspace{0.66\textwidth}\postTotaux }% end closing part of environment % \end{macrocode} % \end{environment} % % \begin{macro}{\lignesansTVA} % 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} % \end{macro} % % \begin{macro}{\afficheTVA} % 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} % \end{macro} % % \begin{macro}{\ligne} % 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} % \end{macro} % % \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 % Indiquer le numéro de page, sauf sur la première \lfoot{\ifnum \value{page}>1 \thepage\fi} \rfoot{\@pied} } \newcommand{\pied}[1]{\def\@pied{#1}} % Le pied définissable par l'utilisateur % \end{macrocode} % \iffalse % % \fi % \PrintChanges % \Finale % \endinput