diff options
author | Karl Berry <karl@freefriends.org> | 2015-04-13 22:09:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-04-13 22:09:49 +0000 |
commit | 2ca250f21f9140047c0163f0751306afa1502b04 (patch) | |
tree | 11762e1f806f4319e258469d9c8513948e706159 /Master/texmf-dist/tex | |
parent | ab9be52a67d39f40115219e0f9bc910e2f3fe161 (diff) |
factura (13apr15)
git-svn-id: svn://tug.org/texlive/trunk@36841 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/factura/factura.cls | 131 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/factura/factura.def | 8 |
2 files changed, 74 insertions, 65 deletions
diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls index 7822e805d84..cc71d655842 100644 --- a/Master/texmf-dist/tex/latex/factura/factura.cls +++ b/Master/texmf-dist/tex/latex/factura/factura.cls @@ -35,7 +35,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{factura} -[2015/03/30 v2.00^^J +[2015/04/13 v2.05^^J Clase para elaborar facturas legales en la^^J República Bolivariana de Venezuela. ] @@ -43,7 +43,7 @@ República Bolivariana de Venezuela. \newif\if@prefactura \newif\if@cotizacion \newif\if@spanish \@spanishtrue -\newif\if@ivaexplicito \@ivaexplicitotrue +\newif\if@ivaexpresado \@ivaexpresadotrue \newif\if@todosiva \newif\if@confirmas \@confirmastrue \newif\if@unafirma \@unafirmafalse @@ -68,7 +68,7 @@ República Bolivariana de Venezuela. \newif\if@cdu \@cdutrue \newif\if@dcu \newif\if@duc -\newif\if@relleno +\newif\if@exparriba \newif\if@fondofactura \newif\if@fondoreporte \newif\if@fondoreportestar @@ -76,6 +76,7 @@ República Bolivariana de Venezuela. \newif\if@reporte \newif\if@nombre \newif\if@impdesc +\newif\if@descuentostotales \RequirePackage{xifthen}% 'xifthen' para algunos de los condicionales. \RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios. @@ -88,6 +89,8 @@ República Bolivariana de Venezuela. \newboolean{DCU} \newboolean{DUC} \newboolean{PrimeroDesc} +\newboolean{ExpAbajo}\booltrue{ExpAbajo} + %% Condicionales auxiliares para hacer que la línea oblicua salga donde corresponde. \newboolean{LineaDesdeColUno} \newboolean{LineaDesdeColDos} @@ -145,13 +148,13 @@ República Bolivariana de Venezuela. \fi} \DeclareOption{siniva}{\AtBeginDocument{\gdef\@ImpuestoG{0}\gdef\@ImpuestoR{0}\gdef\@ImpuestoA{0}}}% No cobra IVA. \DeclareOption{todosiva}{\@todosivatrue}% Con esta opción salen todos los IVA así valgan cero. -\DeclareOption{ivanoexplicito}{% Cuando no se cobra IVA y tampoco se quiere que aparezca la totalización del IVA. +\DeclareOption{sinivaexpresado}{% Cuando no se cobra IVA y tampoco se quiere que aparezca la totalización del IVA. + \@ivaexpresadofalse \if@filas - \ClassWarning{factura}{La opción 'ivanoexplicito' no es compatible con la opción 'filas'. Sin efecto la opción 'filas'}{} + \ClassWarning{factura}{La opción 'sinivaexpresado' no es compatible con la opción 'filas'. Sin efecto la opción 'filas'}{} \@filasfalse \else \AtBeginDocument{\gdef\@ImpuestoG{0}\gdef\@ImpuestoR{0}\gdef\@ImpuestoA{0}} - \@ivaexplicitofalse \fi} \DeclareOption{sincantidad}{% Para no colocar el campo de la cantidad. \booltrue{SinCantidad} @@ -166,12 +169,13 @@ República Bolivariana de Venezuela. \DeclareOption{sinlineasv}{% Estilo 'sinlineasv'. \booltrue{SinLineasV}} -\DeclareOption{relleno}{\@rellenotrue}% Para rellenar con líneas en blanco de manera automática. +\DeclareOption{exparriba}{\@exparribatrue\boolfalse{ExpAbajo}}% Para rellenar con líneas en blanco de manera automática. +\DeclareOption{sinexpandir}{\boolfalse{ExpAbajo}\@exparribafalse}% No expande ninguna de las dos partes de la factura. \DeclareOption{linea}{% Para la línea que protege el espacio en blanco. - \if@relleno + \if@exparriba \@lineatrue \else - \ClassWarning{factura}{La opción 'linea' requiere la opción 'relleno'. Sin efecto opción 'linea'.}{} + \ClassWarning{factura}{La opción 'linea' requiere la opción 'exparriba'. Sin efecto opción 'linea'.}{} \fi} \DeclareOption{conreporte}{\@reportetrue}% Para imprimir factura y reporte. \DeclareOption{soloreporte}{\@reportetrue\@facturafalse}% Para imprimir sólo el reporte. @@ -285,11 +289,11 @@ República Bolivariana de Venezuela. \def\Proveedor#1{\gdef\@Proveedor{#1}} %% Los descuentos. -\def\Descuento#1{\gdef\@DescuentoGPorc{#1}\gdef\@DescuentoRPorc{#1}\gdef\@DescuentoAPorc{#1}\gdef\@DescuentoEPorc{#1}} -\def\DescuentoG#1{\gdef\@DescuentoGPorc{#1}} -\def\DescuentoR#1{\gdef\@DescuentoRPorc{#1}} -\def\DescuentoA#1{\gdef\@DescuentoAPorc{#1}} -\def\DescuentoE#1{\gdef\@DescuentoEPorc{#1}} +\def\Descuento#1{\@descuentostotalestrue\gdef\@DescuentoGPorc{#1}\gdef\@DescuentoRPorc{#1}\gdef\@DescuentoAPorc{#1}\gdef\@DescuentoEPorc{#1}} +\def\DescuentoG#1{\@descuentostotalestrue\gdef\@DescuentoGPorc{#1}} +\def\DescuentoR#1{\@descuentostotalestrue\gdef\@DescuentoRPorc{#1}} +\def\DescuentoA#1{\@descuentostotalestrue\gdef\@DescuentoAPorc{#1}} +\def\DescuentoE#1{\@descuentostotalestrue\gdef\@DescuentoEPorc{#1}} \def\Denom#1{\gdef\@Denominacion{#1}}% La denominación puede ser 'FACTURA', 'COTIZACIÓN' u otra. \def\@Denominacion{\@@DenomFactura}% Se predetermina la factura. @@ -428,7 +432,7 @@ República Bolivariana de Venezuela. %% El tipo de IVA ('G', 'R', 'A' o '(E)') también tiene su tipo de letra. \def\LetraTipoIVA#1{\gdef\@LetraTipoIVA{#1\selectfont}} -%% Letra para la descripción general (comando \desc). +%% Letra para la descripción larga (comando \Descripcion). \def\LetraDescripcion#1{\gdef\@LetraDescripcion{#1\selectfont}} %% Tipo de letra para el texto bajo las líneas para firmar. @@ -463,7 +467,7 @@ República Bolivariana de Venezuela. \ifx&\else\setlength{\@FirmaFacturaYcorr}{#3}\fi \savebox{\@CajaFirmaEmisor}{#1}% \if@reporte - \expandafter\AtBeginDocument + \expandafter\AtBeginShipoutNext \else \expandafter\AtEndDocument \fi @@ -521,7 +525,7 @@ República Bolivariana de Venezuela. \end{textblock*} \fi} -%% Con \FondoFactura le damos el nombre del archivo que contiene el formato de la factura, por ejemplo para compilaciones con 'prefactura', 'cotizacion' o para incluir una imagen de fondo como ``marca de agua''. +%% Con \FondoFactura le damos el nombre del archivo que contiene el formato de la factura, por ejemplo para compilaciones con 'prefactura', 'cotizacion' o para incluir una imagen de fondo como 'marca de agua'. \newcommand{\FondoFactura}[1]{% \if@factura \RequirePackage{graphicx}% @@ -616,9 +620,6 @@ República Bolivariana de Venezuela. \input{factura.def}% Cargamos los valores predeterminados. -%% \@SeparaMinTotales es el mínimo espacio entre los totales en el modo 'filas', y SepTotales es una dimensión interna, estirable, con ese como su mínimo. -\AtBeginDocument{\expandafter\setlength{\@SepTotales}{\the\@SeparaMinTotales plus 1fill}} - \if@todosiva \@BIRtrue \@BIAtrue @@ -634,11 +635,10 @@ República Bolivariana de Venezuela. \if@spanish \RequirePackage[spanish]{babel}% Babel en castellano. \RequirePackage[T1]{fontenc}% Codificación T1 para las tipografías. - \RequirePackage[utf8]{inputenc}% UTF-8. \IfFileExists{lmodern.sty}{\RequirePackage{lmodern}}{} \fi -\if@relleno +\if@exparriba \RequirePackage{zref-savepos}% Para guardar la posición en 'Y'. \fi @@ -651,11 +651,11 @@ República Bolivariana de Venezuela. \newcommand\@EncabezadoFactura{% \ifdefvoid{\@Resumen}{\@EscribeDatos}{\@EscribeDatosResumen}% \vspace*{\@SeparaElementos}% - \if@relleno\else\vfill\fi} + \if@exparriba\else\vfill\fi} %% Comando para escribir el encabezado en el modo de reporte. \newcommand\@EncabezadoReporte{% - \vspace*{-\topskip}% TODO: ¿se coloca o no? + \vspace*{-\topskip}% \vspace*{\@InicioRep}% \@EscribeDatosReporte \@LetraReporte} @@ -671,7 +671,7 @@ República Bolivariana de Venezuela. %% Comando auxiliar para la definición del ambiente de la factura; al final de este comando está el texto que va en el enddef del ambiente de la factura. \newcommand{\@FacturaAuxCmd}[1]{% - \if@relleno + \if@exparriba \setlength{\@EspacioVacioInicial}{\zposy{EspacioVacioInicial}sp}% \setlength{\@EspacioVacioFinal}{\zposy{EspacioVacioFinal}sp}% \global\@EspacioVacioInicial=\@EspacioVacioInicial% ¿por qué tendré que globalizarlas? @@ -682,7 +682,7 @@ República Bolivariana de Venezuela. \ifx\undefined\Total\relax\else\ClassError{factura}{** Parece ya haber un renglón de montos **}{}\fi % % http://tex.stackexchange.com/questions/111203/tabularx-bottom-alignment-on-r-or-l-columns-when-x-column-wraps - \renewcommand{\tabularxcolumn}[1]{m{##1}}% TODO: Alineación vertical cuando hay más de una línea. + \renewcommand{\tabularxcolumn}[1]{m{##1}}% TODO: Cuando el campo de la descripción en la factura ocupa más que una línea, los de al lado salen centrados. % Comando para poner en cero los contadores de los totales porque el ambiente de la factura se evalúa tres veces y los totales se sumarían todos tres veces. \newcommand{\@ZERO}{% \FPset\BIG{0}\global\let\BIG\BIG @@ -734,9 +734,9 @@ República Bolivariana de Venezuela. if@Desc##1\endcsname% \@EscribeTotalColSubt{##1}% \@EscribeTotalColDesc{##1}% - \if@ivaexplicito\@EscribeTotalColBI{##1}\fi + \if@ivaexpresado\@EscribeTotalColBI{##1}\fi \else - \if@ivaexplicito\@EscribeTotalColBI{##1}\fi + \if@ivaexpresado\@EscribeTotalColBI{##1}\fi \fi}% % Forma agupada para la presentación de totales en modo de columnas. \newcommand{\@EscribeTotalColAgrupado}{% @@ -752,7 +752,7 @@ República Bolivariana de Venezuela. \if@BIR\@EscribeTotalColBI{R}\fi \@EscribeTotalColBI{G}% \if@BIA\@EscribeTotalColBI{A}\fi - \if@ivaexplicito + \if@ivaexpresado \if@BIR\@EscribeTotalColAlicuota{R}\fi \@EscribeTotalColAlicuota{G}% \if@BIA\@EscribeTotalColAlicuota{A}\fi @@ -985,7 +985,8 @@ República Bolivariana de Venezuela. \let\ItemG\Item \newcommand{\ItemX}[1]{% Ítem sin precio. \if@csv\immediate\write\csv{"\unexpanded{##1}"}\fi - & ##1 && \if@descuentos ... \fi & \hfill ... \hfill\mbox{}\\}} + & ##1 && \if@descuentos ... \fi & \hfill ... \hfill\mbox{}\\ + \if@lineaitem\hline\fi}} {% Con cantidad: \if@descuentos \newcommand{\Item}[4]{\@ITEM{G}{##1}{##2}{##3}{##4}}% Ítem normal. @@ -1011,7 +1012,8 @@ República Bolivariana de Venezuela. \if@duc \if@csv\immediate\write\csv{"\unexpanded{##2}","","##1"}\fi ##2 & \hfill ... \hfill\mbox{} & \@LetraNumeros\numprint{##1} & \if@descuentos ... \fi & \hfill ... \hfill\mbox{} \\ - \fi}}% + \fi + \if@lineaitem\hline\fi}}% \@LetraItems% Este es el tipo de letra que tendrán los items, y en este tipo de letra se define el \baselineskip de toda la factura. \ifbool{SinCantidad} % Abramos la tabla. @@ -1129,7 +1131,7 @@ República Bolivariana de Venezuela. % #1% Aquí entran todos los items que el usuario declara dentro del ambiente. \if@filas - % Esto en lugar de \if@relleno para que no se haga una linea vacía en la tabla cuando la caja está vacía. + % Esto en lugar de \if@exparriba para que no se haga una linea vacía en la tabla cuando la caja está vacía. \ifdim \ht\@CajaEspacioVacio=0pt \if@lineaitem\else\hline\fi% Verificamos si hay que poner la línea horizontal. Si está 'lineaitem' ya salió debido a esta opción. \else @@ -1156,11 +1158,11 @@ República Bolivariana de Venezuela. \@EscribeTotalColAgrupado \else \if@Exento \@EscribeTotalCol{E}\fi - \if@BIR\@EscribeTotalCol{R}\if@ivaexplicito\@EscribeTotalColAlicuota{R}\fi\fi - \@EscribeTotalCol{G}\if@ivaexplicito\@EscribeTotalColAlicuota{G}\fi - \if@BIA\@EscribeTotalCol{A}\if@ivaexplicito\@EscribeTotalColAlicuota{A}\fi\fi + \if@BIR\@EscribeTotalCol{R}\if@ivaexpresado\@EscribeTotalColAlicuota{R}\fi\fi + \@EscribeTotalCol{G}\if@ivaexpresado\@EscribeTotalColAlicuota{G}\fi + \if@BIA\@EscribeTotalCol{A}\if@ivaexpresado\@EscribeTotalColAlicuota{A}\fi\fi \fi - \cline{2-2}% + \if@ivaexpresado\cline{2-2}\fi% \hfill \@LetraTitTotal\@@Total & \@TotalTotal\@LetraNumTotal\numprint{\Total}\\ \end{tabular}\endgroup% \\\hline @@ -1170,7 +1172,7 @@ República Bolivariana de Venezuela. \if@filas \@LetraNumTotales \vspace*{\@SeparaElementos}\par - \if@relleno\else\vfill\fi + \if@exparriba\else\vfill\fi \@TotalTotal \@GeneraCajasTotalesFilas \newbox{\@CajaTotal}% @@ -1230,13 +1232,13 @@ República Bolivariana de Venezuela. \fi \fi \par - \if@relleno + \if@exparriba \vspace*{-\@EspacioVacioInicial}% \vspace*{\@EspacioVacioFinal}% \zsaveposy{EspacioVacioInicial}% \fi \vfill - \if@relleno\zsaveposy{EspacioVacioFinal}\fi + \if@exparriba\zsaveposy{EspacioVacioFinal}\fi \vspace*{\@SeparaElementos}\par} \if@factura @@ -1252,6 +1254,13 @@ República Bolivariana de Venezuela. \else \pagestyle{empty}% \fi + % Los descuentos totales no son compatibles -y no sé si lo serán- con el modo de totalización en filas. + \if@filas + \if@descuentostotales + \ClassWarning{factura}{La opción 'filas' no es compatible aún con los descuentos totales; sin efecto opción 'filas'.}{} + \@filasfalse\boolfalse{Filas} + \fi + \fi \addtolength{\@PosFechaX}{\oddsidemargin+1in}% Le sumamos el margen izquierdo a las posiciones de las cosas; importante que se haga en un \AtBeginDocument antes de que empiecen a escribirse otras cosas que también se agregan a \AtBeginDocument. \addtolength{\@PosDenomX}{\oddsidemargin+1in}% \addtolength{\@PosControlX}{\oddsidemargin+1in}% @@ -1260,11 +1269,12 @@ República Bolivariana de Venezuela. \setlength{\parindent}{0pt}% \setlength{\lineskip}{0pt}% \setlength{\parskip}{0pt plus 1pt}% + \expandafter\setlength{\@SepTotales}{\the\@SeparaMinTotales plus 1fill}% \@SeparaMinTotales es el mínimo espacio entre los totales en el modo 'filas', y SepTotales es una dimensión interna, estirable, con ese como su mínimo. \thispagestyle{empty}% \pagenumbering{roman}% \@EncabezadoFactura} \if@reporte - \expandafter\AtBeginDocument + \expandafter\AtBeginShipoutNext \else \expandafter\AtEndDocument% Para la factura no puede estar lo que viene en un \AtBeginDocument porque se inserta un espacio extra que genera una página extra; tiene que estar en \AtEndDocument. \fi @@ -1292,21 +1302,20 @@ República Bolivariana de Venezuela. \fi %% El comando para la descripción del servicio prestado. - \NewDocumentCommand{\Descripcion}{s +m}{% + \NewDocumentCommand{\Descripcion}{+m}{% \@LetraDescripcion \begin{tikzpicture} \node[draw=black, fill=white, inner sep=\@SeparaInternaDescrip, line width=\@EspesorLineaDescrip, rounded corners=\@EsquinaLineaDescrip, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraDescrip, shadow yshift=-\@SombraDescrip}]{% - \IfBooleanTF{#1}% - {\parbox[t]{\textwidth-\@SombraDescrip-2\@SeparaInternaDescrip-2\@EspesorLineaDescrip}}% - {\parbox[t][\textheight-\pagetotal-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip] - {\textwidth-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip}}% - {\setlength{\parindent}{0.5cm}% - \setlength{\parskip}{2pt plus 8pt}% - \IfBooleanF{#1}{\vfill}% - #2% - \IfBooleanF{#1}{\vfill}% - }}; + \ifbool{ExpAbajo} + {\parbox[t][\textheight-\pagetotal-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip] + {\textwidth-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip}}% + {\parbox[t]{\textwidth-\@SombraDescrip-2\@SeparaInternaDescrip-2\@EspesorLineaDescrip}}% + {\setlength{\parindent}{0.5cm}% + \setlength{\parskip}{2pt plus 8pt}% + \ifbool{ExpAbajo}{\vfill}{}% + #1% + \ifbool{ExpAbajo}{\vfill}{}}};% \end{tikzpicture} \par\vspace*{\@SombraDescrip}}% \else @@ -1357,15 +1366,15 @@ República Bolivariana de Venezuela. %% Comando para el fondo del reporte. \newcommand{\@CargaFondoReporte}{% - \if@fondoreporte - \if@fondoreportestar - \AddToShipoutPictureBG{\includegraphics{\@FondoReporte}}% - \else - \begin{textblock*}{\paperwidth}(0pt,0pt)% - \noindent\includegraphics{\@FondoReporte}% - \end{textblock*}% + \begin{textblock*}{\paperwidth}(0pt,0pt)% Tuve que abrir el textblock* aquí para que aplique siempre; de esta manera se corrige un defecto que se produce cuando se usa \vspace* al inicio de la página (dentro de \@EncabezadoReporte). + \if@fondoreporte + \if@fondoreportestar + \AddToShipoutPictureBG{\includegraphics{\@FondoReporte}}% + \else + \noindent\includegraphics{\@FondoReporte}% + \fi \fi - \fi} + \end{textblock*}} %% Comando que coloca las firmas. \newcommand{\@PosicionaFirmas}{% @@ -1383,7 +1392,7 @@ República Bolivariana de Venezuela. \savebox{\@CajaCond}{% \parbox{\textwidth+\oddsidemargin+1in-\@PosCondX}{\@EstiloCondiciones}}% \ifbool{CondYnegativo} - {\addtolength{\@PosCondY}{\paperheight}}% TODO: ¿como los demás o lo dejo así? + {\addtolength{\@PosCondY}{\paperheight}}% Aquí la caja abre hacia abajo, por eso no restamos el tamaño de la caja (\ht y \dp). {}% \begin{textblock*}{\wd\@CajaCond}(\@PosCondX,\@PosCondY)% \usebox{\@CajaCond}% @@ -1514,7 +1523,7 @@ República Bolivariana de Venezuela. %% \FPifeq\@DescuentoAPorc{0}\else\if@BIA\addtolength{\@LineaNodoYo}{2\baselineskip}\fi\fi %% \FPifeq\@DescuentoEPorc{0}\else\if@Exento\addtolength{\@LineaNodoYo}{2\baselineskip}\fi\fi \addtolength{\@LineaNodoYo}{\baselineskip/2}% - \if@ivaexplicito + \if@ivaexpresado \addtolength{\@LineaNodoYo}{2\baselineskip}% \if@BIR\addtolength{\@LineaNodoYo}{2\baselineskip}\fi \if@BIA\addtolength{\@LineaNodoYo}{2\baselineskip}\fi diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def index df7feb6f06c..665d30d2043 100644 --- a/Master/texmf-dist/tex/latex/factura/factura.def +++ b/Master/texmf-dist/tex/latex/factura/factura.def @@ -34,7 +34,7 @@ %% and factura-beispiel-rechnung.tex. %% \ProvidesFile{factura.def} -[2015/03/30 v2.00^^J +[2015/04/13 v2.05^^J Archivo valores iniciales y condiciones de borde para factura.cls ] @@ -128,10 +128,10 @@ Archivo valores iniciales y condiciones de borde para factura.cls \SepElementos{0.2cm} %% Separación horizontal entre las cajas del encabezado y separación interna entre la línea y el texto. -\SepEncabez{0.2cm}{4pt} +\SepEncabez{0.2cm}{6pt} %% Separación interna entre la línea y el texto de la descripción. -\SepDescrip{4pt} +\SepDescrip{6pt} %% Espesor de la línea de las cajas del encabezado, curvatura de la esquina y sombra. \LineaEncabez{0.4pt}{10pt}{0pt} @@ -176,7 +176,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls %% El tipo de IVA ('G', 'R', 'A' o '(E)') también tiene su tipo de letra. \LetraTipoIVA{\fontsize{12}{12}} -%% Letra para la descripción general (comando \desc). +%% Letra para la descripción larga (comando \Descripcion). \LetraDescripcion{\fontsize{14}{16.8}} %% Tipo de letra para el texto bajo las líneas para firmar. |