diff options
author | Karl Berry <karl@freefriends.org> | 2015-01-16 23:23:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-01-16 23:23:30 +0000 |
commit | 2021343f8a392e74cbb84959bcef454899187213 (patch) | |
tree | 1249b2532bd9dbac1700ae254080bce1d7026c83 /Master/texmf-dist/source/xelatex/facture | |
parent | 38abb16203e10729d9936fef27a395edfb1860e8 (diff) |
facture (16jan15)
git-svn-id: svn://tug.org/texlive/trunk@36075 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex/facture')
-rw-r--r-- | Master/texmf-dist/source/xelatex/facture/facture.dtx | 184 |
1 files changed, 149 insertions, 35 deletions
diff --git a/Master/texmf-dist/source/xelatex/facture/facture.dtx b/Master/texmf-dist/source/xelatex/facture/facture.dtx index a4f6c637ef9..094413bb823 100644 --- a/Master/texmf-dist/source/xelatex/facture/facture.dtx +++ b/Master/texmf-dist/source/xelatex/facture/facture.dtx @@ -1,5 +1,7 @@ % \iffalse meta-comment -% Droits d'auteur : Maïeul Rouquette 2011-2014 +% 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 @@ -13,21 +15,32 @@ \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{453} -% \changes{v1.0}{2011/09/10}{Première version} -% \changes{v.1.1}{2011/09/13}{Laisser le choix de la marge à l'utilisateur} -% \GetFileInfo{facture.dtx} -%\changes{v1.1.2}{2014/09/16}{Possibilité de modifier la taille du tableau.} -% \title{La class \textsf{facture}\thanks{Ce document correspond à la version~1.2 de \textsf{facture}, datée du~16/09/2014.}} -%\author{Maïeul Rouquette} +% \CheckSum{527} +% \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.} +% \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. @@ -52,10 +65,12 @@ %\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~\% : +% 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} @@ -88,8 +103,8 @@ %\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 (\emph{cf}.~section~\ref{TVA}), cet argument permet d'indiquer le taux. Il est exprimé en pourcentage, mais sans le signe \%. +%\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. @@ -103,13 +118,15 @@ %\end{facture} %\end{verbatim} % -% Dans le cas où l'option \verb|sansTVA| (\emph{cf}. section~\ref{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): +% 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} @@ -118,22 +135,23 @@ %\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, voir section~\ref{apparence}. -%\item Pour les réglages concernant les mathématiques (arrondis par exemple), voir section~\ref{math}. -%\item Pour les textes, voir section~\ref{texte}. -%\item Pour le pieds de page, voir section~\ref{pied}. -%\item Pour l'affichage de la TVA, voir section~\ref{afficheTVA} p.~\pageref{afficheTVA} -%\item Pour la largeur des colonnes du tableau, voir section~\ref{largeurCols}. +%\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}[2011/09/10 v1.0] +\ProvidesClass{facture}[16/01/2015 v1.2] \LoadClass[a4paper]{article}%On se base sur la classe article \RequirePackage{fontspec} \RequirePackage{xunicode} @@ -150,11 +168,23 @@ \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 -\sansTVAfalse \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} @@ -183,7 +213,7 @@ \newcommand{\remise}{Remise} \newcommand{\unite}{€} % \end{macrocode} -%\subsubsection{Dépend du réglage sur la TVA (\emph{cf}.~section~\ref{TVA})} +%\subsubsection{Dépend du réglage sur la TVA (\renvoi{TVA})} % \begin{macrocode} \ifsansTVA% \newcommand{\tottxt}{Total} @@ -224,7 +254,7 @@ \def\@type{\facturetxt} % \end{macrocode} %\subsection{Méta-données} -%Toutes ces commandes sont appelées par l'utilisateurs au tout début (\emph{cf}.~section~\ref{meta}). La plupart stockent dans une commande commençant par @ le code qui est passé. +%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}} @@ -284,7 +314,7 @@ \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 (\emph{cf}.~section~\ref{dest}). +%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} @@ -348,13 +378,76 @@ \setlength{\tabcolsep}{0.5em} \arrayrulecolor{encadre} \ifsansTVA% - \begin{longtable}{|p{\largeurDescriptif}|P{\largeurChiffres}|P{\largeurChiffres}|P{\largeurChiffres}|P{\largeurChiffres}|}% - \hline% - \rowcolor{entetes}\centering\textbf\produit & \centering\textbf\quantite & \centering\textbf\prixtxt & \centering\textbf\remise & \centering\textbf\tottxt \tabularnewline[1ex]% + \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% - \begin{longtable}{|p{\largeurDescriptif}|P{\largeurChiffresAvecTVA}|P{\largeurChiffresAvecTVA}|P{\largeurChiffresAvecTVA}|P{\largeurChiffresAvecTVA}|P{\largeurChiffres}|P{\largeurChiffresAvecTVA}|}% - \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]% + \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% @@ -384,11 +477,18 @@ } % \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. En effet, dès qu'on change de cellule, les tests conditionnels sont perdus. +% 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 & #4 & #5 \tabularnewline[1ex]} +\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} +% 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}} @@ -411,12 +511,18 @@ \else % Prix hors taxe \fpMul{\HT}{#3}{#2}% - \fpSub{\HT}{\HT}{#4}% + \unless\ifsansremise% + \fpSub{\HT}{\HT}{#4}% + \fi% \xdef\HT{\HT}%retenons \fpAdd{\totHT}{\totHT}{\HT}% \xdef\totHT{\totHT}% % Calcul de la TVA - \fpDiv{\centieme}{#5}{100}% + \ifsansremise% + \fpDiv{\centieme}{#4}{100}% + \else% + \fpDiv{\centieme}{#5}{100}% + \fi \fpMul{\TVA}{\centieme}{\HT}% \xdef\TVA{\TVA}%retenons \fpAdd{\totTVA}{\totTVA}{\TVA}% @@ -427,7 +533,15 @@ \fpAdd{\totTTC}{\totTTC}{\TTC}% \xdef\totTTC{\totTTC}% % Affichage - #1 & #2 & \numprint[\unite]{#3} & \numprint[\unite]{#4} & \numprint[\unite]{\HT} & \afficheTVA{#5} & \numprint[\unite]{\TTC} \tabularnewline[1ex]% + #1 & + #2 & + \numprint[\unite]{#3} & + \unless\ifsansremise + \numprint[\unite]{#4} & + \fi + \numprint[\unite]{\HT} & + \afficheTVA{#5} & + \numprint[\unite]{\TTC} \tabularnewline[1ex]% \fi \hline } |