summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/factura
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-03-07 23:21:11 +0000
committerKarl Berry <karl@freefriends.org>2016-03-07 23:21:11 +0000
commit7ac81bc4c8445b925f4504174ad526d178221fcb (patch)
treec3f2d0bfb2df30ee0f2698ae427a382538bf868a /Master/texmf-dist/tex/latex/factura
parent40d910b7a2d64c93a11bdc1a1de5a9f905e88826 (diff)
factura (7mar16)
git-svn-id: svn://tug.org/texlive/trunk@39963 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/factura')
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.cls731
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.def70
2 files changed, 460 insertions, 341 deletions
diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls
index b39686ea09a..bb8c10b67e5 100644
--- a/Master/texmf-dist/tex/latex/factura/factura.cls
+++ b/Master/texmf-dist/tex/latex/factura/factura.cls
@@ -6,7 +6,7 @@
%%
%% factura.dtx (with options: `class')
%%
-%% Copyright 2015 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -29,15 +29,16 @@
%% factura-ejemplo-prefactura.tex, factura-ejemplo-factura1.tex
%% factura-ejemplo-factura2.tex, factura-ejemplo-factura3.tex,
%% factura-ejemplo-factura4.tex, factura-ejemplo-factura5.tex,
-%% factura-ejemplo-factura6.tex, factura-ejemplo-reporte1.tex,
+%% factura-ejemplo-factura6.tex, factura-ejemplo-factura7.tex,
+%% factura-ejemplo-factura8.tex, factura-ejemplo-reporte1.tex,
%% factura-ejemplo-reporte2.tex, factura-ejemplo-reporte3.tex,
%% and factura-beispiel-rechnung.tex.
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{factura}
-[2015/08/26 v2.1^^J
-Clase para elaborar facturas legales en la^^J
-República Bolivariana de Venezuela.
+[2016/02/07 v2.6
+Clase para elaborar facturas legales
+en la República Bolivariana de Venezuela.
]
\newif\if@prefactura
@@ -54,7 +55,7 @@ República Bolivariana de Venezuela.
\newif\if@descuentos
\newif\if@denom
\newif\if@sinnumero
-\newif\if@lineaitem
+\newif\if@conlineasha
\newif\if@linea
\newif\if@G
\newif\if@BIR
@@ -80,51 +81,52 @@ República Bolivariana de Venezuela.
\newif\if@factura \@facturatrue
\newif\if@reporte
\newif\if@nombre
+\newif\if@pagado
\newif\if@impdesc
-\RequirePackage{xifthen}% 'xifthen' para algunos de los condicionales.
\RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios.
-\newboolean{Descuentos}
-\newboolean{SinCantidad}
-\newboolean{Filas}
-\newboolean{G}
-\newboolean{SinLineasV}
-\newboolean{DCU}
-\newboolean{DUC}
-\newboolean{PrimeroDesc}
-\newboolean{ExpAbajo}\booltrue{ExpAbajo}
+\newbool{Descuentos}
+\newbool{SinCantidad}
+\newbool{SinLineasVertInt}
+\newbool{SinLineasVertExt}
+\newbool{SinLineasHoriInt}
+\newbool{SinLineasHoriExt}
+\newbool{DCU}
+\newbool{DUC}
+\newbool{PrimeroDesc}
+\newbool{ExpAbajo}\booltrue{ExpAbajo}
%% Condicionales auxiliares para hacer que la línea oblicua salga donde corresponde.
-\newboolean{LineaDesdeColUno}
-\newboolean{LineaDesdeColDos}
-\newboolean{LineaHastaColUno}
-\newboolean{LineaHastaColDos}
-\newboolean{LineaHastaFinal}
-\newboolean{LineaHastaTotal}
+\newbool{LineaDesdeColUno}
+\newbool{LineaDesdeColDos}
+\newbool{LineaHastaColUno}
+\newbool{LineaHastaColDos}
+\newbool{LineaHastaFinal}
+\newbool{LineaHastaTotal}
%% Condicionales auxiliares para la posición de los objetos fijos cuando son medidos desde la derecha, o desde abajo.
-\newboolean{FechaXnegativo}
-\newboolean{FechaYnegativo}
-\newboolean{CondYnegativo}% no hay CondXnegativo.
-\newboolean{DenomXnegativo}
-\newboolean{DenomYnegativo}
-\newboolean{ControlXnegativo}
-\newboolean{ControlYnegativo}
-\newboolean{FirmasYnegativo}% no hay FirmasXnegativo; hay X_inicial y X_final para las firmas.
-
-\DeclareOption{prefactura}{\@prefacturatrue\@denomtrue}% La prefactura; con el diseño de la forma libre... para enviar por correo electrónico, fax o imprimir preliminarmente.
-\DeclareOption{cotizacion}{\@cotizaciontrue\@denomtrue}% Cambia la denominación a 'COTIZACIÓN' y no 'FACTURA'.
+\newbool{FechaXnegativo}
+\newbool{FechaYnegativo}
+\newbool{CondYnegativo}% no hay CondXnegativo.
+\newbool{DenomXnegativo}
+\newbool{DenomYnegativo}
+\newbool{ControlXnegativo}
+\newbool{ControlYnegativo}
+\newbool{FirmasYnegativo}% no hay FirmasXnegativo; hay X_inicial y X_final para las firmas.
+
+\DeclareOption{prefactura}{\@prefacturatrue\@denomtrue\@confirmasfalse}% La prefactura; con el diseño de la forma libre... para enviar por correo electrónico, fax o imprimir preliminarmente.
+\DeclareOption{cotizacion}{\@cotizaciontrue\@denomtrue\@unafirmatrue}% Cambia la denominación a 'COTIZACIÓN' y no 'FACTURA'.
\DeclareOption{nospanish}{\@spanishfalse}% No carga babel en castellano ni la codificación T1 de las letras.
\DeclareOption{sinfirmas}{\@confirmasfalse}% No agrega los espacios para firmar.
\DeclareOption{unafirma}{\@unafirmatrue\@confirmastrue}% No agrega el espacio para que firme quien recibe.
+\DeclareOption{dosfirmas}{\@unafirmafalse\@confirmastrue}% Pone las dos firmas para firmar.
\DeclareOption{descuentos}{\booltrue{Descuentos}\@descuentostrue}% Para los descuentos individuales.
-\DeclareOption{sincond}{\@concondicionesfalse}% No agrega la línea de las condiciones de pago.
+\DeclareOption{sincondiciones}{\@concondicionesfalse}% No agrega el texto con las condiciones del documento.
\DeclareOption{denom}{\@denomtrue}% Agrega el texto con la denominación del documento, para las formas libres que no tienen el número de factura.
-\DeclareOption{sinnumero}{\@sinnumerotrue\@denomtrue}% Coloca el texto de la denominación del documento pero sin colocar el número.
-\DeclareOption{G}{\@Gtrue\booltrue{G}}% Con esta opción sale la letra 'G' en los items con IVA general, y sale el porcentaje en la base imponible general.
-\DeclareOption{lineaitem}{\@lineaitemtrue}% Una línea en cada ítem.
-\DeclareOption{filas}{\@filastrue\booltrue{Filas}}% Estilo de totalización en filas.
+\DeclareOption{sinnumero}{\@sinnumerotrue\@denomtrue}% Escribir el texto de la denominación del documento pero sin escribir el número.
+\DeclareOption{G}{\@Gtrue}% Con esta opción sale la letra 'G' en los items con IVA general, y sale el porcentaje en la base imponible general.
+\DeclareOption{filas}{\@filastrue}% Estilo de totalización en filas.
\DeclareOption{centrado}{% Total y exento 'centrado'; sólo para estilo 'filas'
\if@filas
\@centradotrue
@@ -161,7 +163,7 @@ República Bolivariana de Venezuela.
\else
\AtBeginDocument{\gdef\@ImpuestoG{0}\gdef\@ImpuestoR{0}\gdef\@ImpuestoA{0}}
\fi}
-\DeclareOption{sincantidad}{% Para no colocar el campo de la cantidad.
+\DeclareOption{sincantidad}{% Para no poner el campo de la cantidad.
\booltrue{SinCantidad}
\if@dcu
\ClassWarning{factura}{La opción 'sincantidad' no es compatible con 'dcu' . Sin efecto opción 'dcu'}{}
@@ -172,8 +174,15 @@ República Bolivariana de Venezuela.
\@ducfalse\@cdutrue\boolfalse{DUC}\boolfalse{PrimeroDesc}
\fi}
+\DeclareOption{conlineasha}{\@conlineashatrue}% Una línea horizontal para cada ítem, como las facturas a mano.
\DeclareOption{sinlineasv}{% Estilo 'sinlineasv'.
- \booltrue{SinLineasV}}
+ \booltrue{SinLineasVertExt}\booltrue{SinLineasVertInt}}
+\DeclareOption{sinlineasvi}{\booltrue{SinLineasVertInt}}% Estilo 'sinlineasvi'.
+\DeclareOption{sinlineasve}{\booltrue{SinLineasVertExt}}% Estilo 'sinlineasve'.
+\DeclareOption{sinlineash}{% Estilo 'sinlineash'.
+ \booltrue{SinLineasHoriExt}\booltrue{SinLineasHoriInt}}
+\DeclareOption{sinlineashi}{\booltrue{SinLineasHoriInt}}% Estilo 'sinlineashi'.
+\DeclareOption{sinlineashe}{\booltrue{SinLineasHoriExt}}% Estilo 'sinlineashe'.
\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.
@@ -201,15 +210,14 @@ República Bolivariana de Venezuela.
\RequirePackage[absolute]{textpos}% Es necesario 'textpos' para colocar texto en ubicaciones arbitrarias.
\RequirePackage{geometry}% 'geometry' para ajustar todos los márgenes.
\RequirePackage{xstring}% Lo usamos sólo para tomar el menos al principio de una longitud.
-\RequirePackage{pbox}% Para la caja autoajustable.
\RequirePackage{calc}% 'calc' para hacer aritmética con las dimensiones.
\RequirePackage{fp-upn}% Fundamental el paquete 'fp-upn' para todos los cálculos.
\RequirePackage{numprint}% Con 'numprint' expresamos los totales en el formato requerido.
-\RequirePackage{tikz}% Para los recuadros del encabezado,
-\usetikzlibrary{shadows}% y para el de la descripción.
+\RequirePackage{tikz}% Para los recuadros del encabezado de la factura,
+ \usetikzlibrary{shadows}% y para el de la descripción.
\RequirePackage{tabularx}% Con 'tabularx' hacemos la tabla.
-\RequirePackage{environ}% Con 'environ' podemos usar tabularx dentro del ambiente de la factura y colocar texto en el enddef.
-\RequirePackage{fancyhdr}% Los encabezados fancy; así se use solamente en reporte, hay que cargarlo siempre.
+\RequirePackage{environ}% Con 'environ' podemos usar tabularx dentro del ambiente de la factura y escribir texto en el enddef.
+\RequirePackage{fancyhdr}% Las cabeceras fancy; así se use solamente en reporte, hay que cargarlo siempre.
\AtBeginDocument{% Da error si algún campo necesario no está definido.
\if@reporte
@@ -230,10 +238,7 @@ República Bolivariana de Venezuela.
\ifdefvoid{\@Email}{\ClassWarning{factura}{** Pudiera definirse una dirección de correo electrónico **}{}}{}%
\ifdefvoid{\@Fecha}{\ClassError{factura}{** Hay que definir la fecha de emisión **}{}}{}%
\if@concondiciones
- \ifdefvoid{\@Condiciones}{\ClassError{factura}{** Hay que definir las condiciones de pago o usar la opción 'sincond' **}{}}{}%
- \fi
- \if@confirmas
- \ifdefvoid{\@Emisor}{\ClassError{factura}{** Hay que definir el nombre del emisor cuando no se omite (con la opción 'sinfirmas') el espacio para firmar. **}{}}{}%
+ \ifdefvoid{\@Condiciones}{\ClassError{factura}{** Hay que definir las condiciones del documento o usar la opción 'sincondiciones' **}{}}{}%
\fi
\if@cotizacion
\ifdefvoid{\@FondoFactura}{\ClassWarning{factura}{** En la opción para cotizacion se recomienda agregar el fondo **}{}}{}%
@@ -273,7 +278,7 @@ República Bolivariana de Venezuela.
%% La geometría en formato de factura y de reporte.
%% El margen superior está definido desde el encabezado con los datos del cliente.
%% El margen inferior está definido hasta el final de la descripción (o del cuadro de la factura si no hay descripción).
-%% Hay elementos que salen fuera de estos márgenes, como las firmas, las condiciones de pago, la numeración y la fecha.
+%% Hay elementos que salen fuera de estos márgenes, como las firmas, las condiciones del documento, la numeración y la fecha.
\def\GeometriaFactura#1{\gdef\@GeometriaFactura{#1}}
\def\GeometriaReporte#1{\gdef\@GeometriaReporte{#1}}
@@ -302,6 +307,7 @@ República Bolivariana de Venezuela.
\def\Direccion#1{\gdef\@Direccion{#1}}
\def\Telefono#1{\gdef\@Telefono{#1}}
\def\Email#1{\gdef\@Email{#1}}
+\def\Conforme#1{\gdef\@Conforme{#1}}
\def\Emisor#1{\gdef\@Emisor{#1}}
\def\Proveedor#1{\gdef\@Proveedor{#1}}
@@ -330,21 +336,20 @@ República Bolivariana de Venezuela.
\IfBooleanTF{#1}{\@DescEnumtrue\gdef\@DescuentoEnum{#2}}{\@DescEnumfalse\gdef\@DescuentoEporc{#2}}%
\@DescEtrue\@Descuentostrue}
-\def\Denom#1{\gdef\@Denominacion{#1}}% La denominación puede ser 'FACTURA', 'COTIZACIÓN' u otra.
-\def\@Denominacion{\@@DenomFactura}% Se predetermina la factura.
+\def\Denom#1{\gdef\@Denominacion{#1}}% La denominación puede ser 'FACTURA', 'COTIZACIÓN' u otra. Se predetermina una de estas dos según las opciones de la clase.
%% Número de la factura con \Num, número de control con \NumControl, y número de serie de control \NumSerieControl.
\def\Num#1{\gdef\@Num{\nplpadding{\@DigitosNumeracion}\npthousandsep{}\numprint{#1}}}
\def\NumControl#1{\gdef\@NumControl{\nplpadding{\@DigitosNumeracion}\npthousandsep{}\numprint{#1}}}% Si el número de control no se especifica, toma el mismo que el de la factura
\def\NumSerieControl#1{\gdef\@NumSerieControl{#1}}% Si el número de serie de control no se especifica, toma '00'.
-%% Estilo de cabeceras de páginas o piés de página.
-\def\EstiloPag#1{\gdef\@EstiloPag{#1}}
+%% Información de página: cabeceras de páginas o piés de página.
+\def\InfoPagina#1{\gdef\@InfoPagina{#1}}
-%% Texto que esclarece las condiciones de pago.
+%% Texto que esclarece las condiciones del documento.
\NewDocumentCommand{\Condiciones}{+m}{\gdef\@Condiciones{#1}}
-%% Resumen opcional que va colocado a la derecha de los datos del cliente.
+%% Resumen opcional que va a la derecha de los datos del cliente.
\NewDocumentCommand{\Resumen}{+m}{\gdef\@Resumen{#1}}
\AtBeginDocument{%
@@ -358,10 +363,10 @@ República Bolivariana de Venezuela.
\FPupn\@DescuentoRporc{\@DescuentoRporc{} \@DigitosPorc{} round clip}%
\FPupn\@DescuentoAporc{\@DescuentoAporc{} \@DigitosPorc{} round clip}%
\FPupn\@DescuentoEporc{\@DescuentoEporc{} \@DigitosPorc{} round clip}%
- \FPupn\@DescuentoGfactor{100 \@DescuentoGporc{} / \@DigitosPorc{} round}%
- \FPupn\@DescuentoRfactor{100 \@DescuentoRporc{} / \@DigitosPorc{} round}%
- \FPupn\@DescuentoAfactor{100 \@DescuentoAporc{} / \@DigitosPorc{} round}%
- \FPupn\@DescuentoEfactor{100 \@DescuentoEporc{} / \@DigitosPorc{} round}}
+ \FPupn\@DescuentoGfactor{100 \@DescuentoGporc{} /}%
+ \FPupn\@DescuentoRfactor{100 \@DescuentoRporc{} /}%
+ \FPupn\@DescuentoAfactor{100 \@DescuentoAporc{} /}%
+ \FPupn\@DescuentoEfactor{100 \@DescuentoEporc{} /}}
%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) condiciones, iv) número de control, v) firmas.
\def\PosFecha#1#2{%
@@ -403,10 +408,10 @@ República Bolivariana de Venezuela.
{\boolfalse{FirmasYnegativo}\setlength{\@PosFirmasY}{#3}}}
%% La firma se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
-%% Tamaño y espesor de la línea de las firmas.
+%% Tamaño y grosor de la línea de las firmas.
\def\LineaFirmas#1#2{%
\setlength{\@TamLineaFirmas}{#1}%
- \setlength{\@EspesorLineaFirmas}{#2}}
+ \setlength{\@GrosorLineaFirmas}{#2}}
%% Separación mínima horizontal entre los totales en modo de filas y distancia vertical entre esas líneas, fija.
\def\SepFilas#1#2{\setlength{\@SeparaMinTotales}{#1}\setlength{\@SeparaFilas}{#2}}
@@ -420,11 +425,11 @@ República Bolivariana de Venezuela.
%% Separación interna entre la línea y el texto de la descripción.
\def\SepDescrip#1{\setlength{\@SeparaInternaDescrip}{#1}}
-%% Espesor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
-\def\LineaEncabez#1#2#3{\setlength{\@EspesorLineaEncabez}{#1}\setlength{\@EsquinaLineaEncabez}{#2}\setlength{\@SombraEncabez}{#3}}
+%% Grosor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
+\def\LineaEncabez#1#2#3{\setlength{\@GrosorLineaEncabez}{#1}\setlength{\@EsquinaLineaEncabez}{#2}\setlength{\@SombraEncabez}{#3}}
-%% Espesor de la línea de la descripción, curvatura de la esquina y sombra.
-\def\LineaDescrip#1#2#3{\setlength{\@EspesorLineaDescrip}{#1}\setlength{\@EsquinaLineaDescrip}{#2}\setlength{\@SombraDescrip}{#3}}
+%% Grosor de la línea de la descripción, curvatura de la esquina y sombra.
+\def\LineaDescrip#1#2#3{\setlength{\@GrosorLineaDescrip}{#1}\setlength{\@EsquinaLineaDescrip}{#2}\setlength{\@SombraDescrip}{#3}}
%% El espacio vertical que hay que avanzar sólo en la primera página del reporte antes de empezar a escribir sobre él. Usable cuando la primera página tiene un membrete y las demás no, es decir, cuando se usa \FondoReporte y no \FondoReporte*.
\def\InicioReporte#1{\setlength{\@InicioReporte}{#1}}
@@ -434,7 +439,7 @@ República Bolivariana de Venezuela.
\def\LetraItems#1{\gdef\@LetraItems{#1\selectfont}}
%% Con este comando se cambia la etra del título de la tabla, es decir, los textos 'Cantidad, 'Descripción', etc...
-\def\LetraTitRenglon#1{\gdef\@LetraTitRenglon{#1\selectfont}}
+\def\LetraTitCuadro#1{\gdef\@LetraTitCuadro{#1\selectfont}}
%% Tipo de letra de los títulos de los totales, por ejemplo los textos: 'B.I. G', 'IVA G'.
\def\LetraTitTotales#1{\gdef\@LetraTitTotales{#1\selectfont}}
@@ -454,8 +459,8 @@ República Bolivariana de Venezuela.
%% Tipo de letra para el texto en el encabezado de la factura.
\def\LetraEncFactura#1{\gdef\@LetraEncFactura{#1\selectfont}}
-%% Tipo de letra para los datos en el modo reporte.
-\def\LetraDatosReporte#1{\gdef\@LetraDatosReporte{#1\selectfont}}
+%% Tipo de letra para el texto en el encabezado del reporte.
+\def\LetraEncReporte#1{\gdef\@LetraEncReporte{#1\selectfont}}
%% Letra para los montos individuales de la factura y las cantidades.
\def\LetraNumeros#1{\gdef\@LetraNumeros{#1\selectfont}}
@@ -469,7 +474,7 @@ República Bolivariana de Venezuela.
%% Tipo de letra para el texto bajo las líneas para firmar.
\def\LetraFirmas#1{\gdef\@LetraFirmas{#1\selectfont}}
-%% Tipo de letra para las condiciones de pago.
+%% Tipo de letra para las condiciones del documento.
\def\LetraCondiciones#1{\gdef\@LetraCondiciones{#1\selectfont}}
%% Letra para la denominación del documento ('FACTURA', 'COTIZACIÓN',...).
@@ -484,8 +489,8 @@ República Bolivariana de Venezuela.
%% Letra para el título del reporte.
\def\LetraTitReporte#1{\gdef\@LetraTitReporte{#1\selectfont}}
-%% Letra para los encabezados de las páginas en el modo reporte.
-\def\LetraEncReporte#1{\gdef\@LetraEncReporte{#1\selectfont}}
+%% Letra para las cabeceras de las páginas en el modo reporte.
+\def\LetraInfoPagina#1{\gdef\@LetraInfoPagina{#1\selectfont}}
%% Letra para el reporte.
\def\LetraReporte#1{\gdef\@LetraReporte{#1\selectfont}}
@@ -506,7 +511,7 @@ República Bolivariana de Venezuela.
\begin{textblock*}{\@TamLineaFirmas}%
(\textwidth+\oddsidemargin+1in-\@TamLineaFirmas/2-\wd\@CajaFirmaEmisor/2-\@PosFirmasXdos+\@FirmaFacturaXcorr,\@PosFirmasY-\ht\@CajaFirmaEmisor-\dp\@CajaFirmaEmisor+\@FirmaFacturaYcorr)%
\usebox{\@CajaFirmaEmisor}%
- \end{textblock*}}
+ \end{textblock*}}%
\fi}
\NewDocumentCommand{\FirmaReporte}{O{} O{0pt} O{0pt} G{\@Proveedor} O{2cm} O{1.5cm}}{% \Firma[imagen][x-corr][y-corr]{texto}[posición en X desde la derecha][tamaño linea]
@@ -517,7 +522,7 @@ República Bolivariana de Venezuela.
\ifx&#1&\else\savebox{\DibujoFirma}{#1}\@firma@dibujotrue\fi
\ifx&#2&\else\setlength{\@FirmaReporteXcorr}{#2}\fi
\ifx&#3&\else\setlength{\@FirmaReporteYcorr}{#3}\fi
- \savebox{\TextoFirma}{\pbox[t]{\linewidth}{#4}}%
+ \savebox{\TextoFirma}{#4}%
\ifx&#5&\setlength{\@FirmaReporteTextPos}{2cm}\else\setlength{\@FirmaReporteTextPos}{#5}\fi
\ifx&#6&\setlength{\@FirmaReporteTamLinea}{1.5cm}\else\setlength{\@FirmaReporteTamLinea}{#6}\fi
\@LetraFirmas
@@ -536,7 +541,7 @@ República Bolivariana de Venezuela.
\hfill
\parbox{\@FirmaReporteTamLinea}{%
\if@firma@dibujo\zsaveposy{Firma@zref@PosY}\fi
- \rule{\@FirmaReporteTamLinea}{\@EspesorLineaFirmas}\\
+ \rule{\@FirmaReporteTamLinea}{\@GrosorLineaFirmas}\\
\centering{\usebox{\TextoFirma}}}%
\hspace*{\@FirmaReporteTextPos}\par
\if@firma@dibujo
@@ -571,13 +576,19 @@ República Bolivariana de Venezuela.
\IfBooleanT{#1}{\@fondoreportestartrue}% Con * sale en todas las páginas; sin * sale sólo en la primera página.
\fi}
-%% El título para el reporte.
+%% Comando para establecer desde el preámbulo el estilo de página (\pagestyle) del reporte, tanto para la primera página como para las siguientes.
+\NewDocumentCommand{\EstiloPagReporte}{o m}{%
+ \gdef\@EstiloPagReporteResto{#2}
+ \IfValueTF{#1}{\gdef\@EstiloPagReporteUno{#1}}{\gdef\@EstiloPagReporteUno{\@EstiloPagReporteResto}}}
+
+%% El título para el reporte.
\NewDocumentCommand{\TituloReporte}{s m}{%
\gdef\@TituloReporte{#2}%
- \IfBooleanTF{#1}{% Con '*' sale el título salga en el estilo de la página. Sin * no sale allí.
- \gdef\@EstiloPag{\let\\\relax\@EstiloPagTitulo}}%
- {\let\@EstiloPag\@EstiloPagNoTitulo}}
+ \IfBooleanTF{#1}{% Con '*' sale el título en las cabeceras o piés. Sin '*' no.
+ \gdef\@InfoPagina{\let\\\relax\@InfoPaginaTitulo}}%
+ {\let\@InfoPagina\@InfoPaginaNoTitulo}}
+%% Para cada cliente o para cada personalización se puede tener un archivo .def o .tex con su nombre y ciertas macros cargadas. Ese archivo lo ponemos incluir con '\Cliente' en lugar de usar \input, y la extensión deberá ser .def o .tex.
\newcommand{\Cliente}[1]{%
\IfFileExists{#1.def}{\input{#1.def}}{%
\IfFileExists{#1.tex}{\input{#1.tex}}{%
@@ -591,9 +602,13 @@ República Bolivariana de Venezuela.
\newlength{\@TamResumen}
\newlength{\@TamFinalEncabez}
\newlength{\@TamLineaFirmas}
-\newlength{\@EspesorLineaFirmas}
-\newlength{\@EspesorLineaEncabez}
-\newlength{\@EspesorLineaDescrip}
+\newlength{\@TamCantidad}
+\newlength{\@TamPrecioU}
+\newlength{\@TamDescuento}
+\newlength{\@TamPrecioT}
+\newlength{\@GrosorLineaFirmas}
+\newlength{\@GrosorLineaEncabez}
+\newlength{\@GrosorLineaDescrip}
\newlength{\@EsquinaLineaEncabez}
\newlength{\@EsquinaLineaDescrip}
\newlength{\@SombraEncabez}
@@ -630,6 +645,7 @@ República Bolivariana de Venezuela.
\newlength{\@FirmaReporteTextPos}
\newlength{\@FirmaReporteFirmaPos}
\newlength{\@FirmaReporteTamLinea}
+\newlength{\@TempDimen}
%% Cajas para uso interno.
\newbox{\@CajaDatos}
@@ -641,9 +657,11 @@ República Bolivariana de Venezuela.
\newbox{\@CajaControl}
\newbox{\@CajaCond}
\newbox{\@CajaEspacioVacio}
+\newbox{\@CajaPrueba}
-%% Contador para uso interno: '1' cuando hay IVA R o IVA A, y '2' cuando hay ambos.
-\newcounter{IVANoGeneral}
+%% Contadores para uso interno para uso interno:
+\newcounter{@IVANoGeneral}% '0' con sólo IVA G, '1' cuando hay IVA R o IVA A, y '2' cuando hay ambos.
+\newcounter{@NumItem}% Número del ítem actual, para uso de algunas macros en el cuadro de la factura.
\input{factura.def}% Cargamos los valores predeterminados.
@@ -674,13 +692,13 @@ República Bolivariana de Venezuela.
\RequirePackage{zref-savepos}% Para la firma, que debe ser cargado aquí porque \FirmaReporte no se ejecuta desde el preámbulo.
\fi
-%% Comando para escribir el encabezado en el modo de factura.
+%% Comando para escribir el encabezado en la factura.
\newcommand\@EncabezadoFactura{%
\ifdefvoid{\@Resumen}{\@EscribeDatos}{\@EscribeDatosResumen}%
\vspace*{\@SeparaElementos}%
\if@exparriba\else\vfill\fi}
-%% Comando para escribir el encabezado en el modo de reporte.
+%% Comando para escribir el encabezado en el reporte.
\newcommand\@EncabezadoReporte{%
\vspace*{-\topskip}%
\if@fondoreporte
@@ -697,10 +715,63 @@ República Bolivariana de Venezuela.
%% http://tex.stackexchange.com/questions/108565/know-the-cell-width-with-tabular-or-include-a-paragraph-box-without-specifying
\NewEnviron{factura}{%
\expandafter\@FacturaAuxCmd\expandafter{\BODY}%
- \if@linea\@DibujaLinea\fi
\ifnum\value{page}=1\else\ClassError{factura}{** La factura ocupa mas que una pagina **}{}\fi
}
+%% Comando auxiliar para agregar un carácter al final de cada línea en la descripción dentro del cuadro de la factura si ocupa ésta más de una línea.
+%% Gracias a Gustavo Mezzetti y David Carlisle (Thanks to Gustavo Mezzetti and David Carlisle)
+%% http://tex.stackexchange.com/questions/296035/insert-a-special-character-at-each-end-of-line-in-a-paragraph
+%% http://tex.stackexchange.com/questions/248944/how-to-put-before-lines
+\newcommand{\@DescripcionAuxCmd}[2]{%
+ \setbox0\hbox{\parbox[t]{\linewidth}{#1\par\global\count1=\prevgraf}}%
+ \ifnum\count1 = 1
+ #1\if@impdesc\hfill\ \@EscribeTipoDeImpuesto*{#2}\fi
+ \else
+ \parbox[t]{\linewidth-1em}{%
+ \David@XStart#1\David@XEnd
+ \par
+ \count0=\prevgraf
+ \count2=\prevgraf
+ \loop
+ \ifnum\count0=\count2
+ \if@impdesc
+ \vskip-\baselineskip
+ \mbox{}\hfill\rlap{\hspace*{1em}\llap{\@EscribeTipoDeImpuesto*{#2}}}%
+ \fi
+ \else
+ \mbox{}\hfill\rlap{\hspace*{0.1em}\@CaracterEOL}%
+ \fi
+ \vskip-2\baselineskip
+ \advance\count0 -1
+ \ifnum\count0 > 0
+ \repeat
+ \kern\count2\baselineskip\mbox{}%
+ \strut}%
+ \fi
+ \global\expandafter\newcount\csname c@Item\expandafter\romannumeral\value{@NumItem}Lineas\endcsname
+ \global\expandafter\csname c@Item\expandafter\romannumeral\value{@NumItem}Lineas\endcsname=\count1}
+
+%% Comandos auxiliares para colocar en \parbox cada celda.
+\newcommand{\@CantidadAuxCmd}[1]{%
+ \savebox{\@CajaPrueba}{#1}%
+ \ifdim\wd\@CajaPrueba > \@TamCantidad \global\@TamCantidad=\wd\@CajaPrueba\fi
+ \parbox{\@TamCantidad}{#1}}
+
+\newcommand{\@PrecioUAuxCmd}[1]{%
+ \savebox{\@CajaPrueba}{#1}%
+ \ifdim\wd\@CajaPrueba > \@TamPrecioU \global\@TamPrecioU=\wd\@CajaPrueba\fi
+ \parbox{\@TamPrecioU}{#1}}
+
+\newcommand{\@DescuentoAuxCmd}[1]{%
+ \savebox{\@CajaPrueba}{#1}%
+ \ifdim\wd\@CajaPrueba > \@TamDescuento \global\@TamDescuento=\wd\@CajaPrueba\fi
+ \parbox{\@TamDescuento}{#1}}
+
+\newcommand{\@PrecioTAuxCmd}[1]{%
+ \savebox{\@CajaPrueba}{#1}%
+ \ifdim\wd\@CajaPrueba > \@TamPrecioT \global\@TamPrecioT=\wd\@CajaPrueba\fi
+ \parbox{\@TamPrecioT}{#1}}
+
%% Presentación de totales en modo de columnas.
\newcommand{\@EscribeTotalCol}[1]{%
\expandafter\FPifeq\csname Desc#1\endcsname{0}%
@@ -721,19 +792,22 @@ República Bolivariana de Venezuela.
\if@BIR\if@DescR\@EscribeTotalColDesc{R}\fi\fi
\if@DescG\@EscribeTotalColDesc{G}\fi
\if@BIA\if@DescA\@EscribeTotalColDesc{A}\fi\fi
- \if@Exento\@EscribeTotalColBI{E}\fi
- \if@BIR\@EscribeTotalColBI{R}\fi
- \@EscribeTotalColBI{G}%
- \if@BIA\@EscribeTotalColBI{A}\fi
\if@ivaexpresado
+ \if@Exento\@EscribeTotalColBI{E}\fi
+ \if@BIR\@EscribeTotalColBI{R}\fi
+ \@EscribeTotalColBI{G}%
+ \if@BIA\@EscribeTotalColBI{A}\fi
\if@BIR\@EscribeTotalColAlicuota{R}\fi
\@EscribeTotalColAlicuota{G}%
\if@BIA\@EscribeTotalColAlicuota{A}\fi
\fi}
\newcommand{\@EscribeTotalColBI}[1]{%
- {\@LetraTitTotales \csname @@BI#1\endcsname
- \ifthenelse{\equal{#1}{E}}{}{\if@G\ \hfill(\csname @Alicuota#1porc\endcsname\%)\else\mbox{}\fi}}
+ \@LetraTitTotales \csname @@BI#1\endcsname
+ \ifx#1E%
+ \else
+ \if@G\ \hfill(\csname @Alicuota#1porc\endcsname\%)\else\mbox{}\fi
+ \fi
& \@LetraNumTotales\numprint{\csname BI#1\endcsname} \\}
\newcommand{\@EscribeTotalColAlicuota}[1]{%
@@ -770,9 +844,14 @@ República Bolivariana de Venezuela.
\newcommand{\@EscribeTotalFilasBIizq}[1]{%
\@LetraTitTotales\csname @@BI#1\endcsname
- \ifthenelse{\equal{#1}{G}}
- {\if@G \ (\@AlicuotaGporc\%)\fi}% Si hay otra B.I. que no sea general, colocamos el porcentaje explícito en la general.
- {\ifthenelse{\equal{#1}{E}}{}{\ (\csname @Alicuota#1porc\endcsname\%)}}}
+ \ifx#1G%
+ \if@G \ (\@AlicuotaGporc\%)\fi% Si hay otra B.I. que no sea general, escribimos el porcentaje explícito en la general.
+ \else
+ \ifx#1E%
+ \else
+ \ (\csname @Alicuota#1porc\endcsname\%)%
+ \fi
+ \fi}
\newcommand{\@EscribeTotalFilasBIder}[1]{%
\@LetraNumTotales\numprint{\csname BI#1\endcsname}}
@@ -789,15 +868,21 @@ República Bolivariana de Venezuela.
\newcommand{\@EscribeTotalFilasDescder}[1]{%
\@LetraNumTotales\numprint{\csname Desc#1\endcsname}}
+\newcommand{\@EscribeTotalFilasAuxTotal}{\@LetraTitTotal\@@Total: & \@LetraNumTotal\numprint{\Total}}
+
\newcommand{\@EscribeTotalFilas}[2][]{%
- \@EscribeTotalFilasAuxTabla{%
+ \begin{tabular}[b]{@{}l@{\extracolsep{1ex}}r@{}}% ¡Esta tabla tiene que abrir hacia abajo para que la separación entre las filas se
\csname @EscribeTotalFilasBI\endcsname{#2}%
- \ifthenelse{\equal{#2}{E}}{%
- \ifthenelse{\equal{#1}{T}}{%
+ \ifx#2E%
+ \ifx#1T%
\\[\@SeparaFilas]%
- \@LetraTitTotal\@@Total: & \@LetraNumTotal\numprint{\Total}}{}}%
- {\\[\@SeparaFilas]%
- \csname @EscribeTotalFilasAlicuota\endcsname{#2}}}}
+ \@EscribeTotalFilasAuxTotal
+ \fi
+ \else
+ \\[\@SeparaFilas]%
+ \csname @EscribeTotalFilasAlicuota\endcsname{#2}%
+ \fi
+ \end{tabular}}
\newcommand{\@GeneraCajasTotalesFilas}{%
\if@Exento
@@ -806,7 +891,7 @@ República Bolivariana de Venezuela.
\savebox{\@CajaBIET}{\@EscribeTotalFilas[T]{E}}%
\fi
\if@BIR
- \addtocounter{IVANoGeneral}{1}%
+ \addtocounter{@IVANoGeneral}{1}%
\newbox{\@CajaBIR}\newbox{\@CajaAliR}\newbox{\@CajaBIAliR}%
\savebox{\@CajaBIR}{\@EscribeTotalFilasSoloBI{R}}%
\savebox{\@CajaAliR}{\@EscribeTotalFilasSoloAlicuota{R}}%
@@ -817,7 +902,7 @@ República Bolivariana de Venezuela.
\savebox{\@CajaAliG}{\@EscribeTotalFilasSoloAlicuota{G}}%
\savebox{\@CajaBIAliG}{\@EscribeTotalFilas{G}}%
\if@BIA
- \addtocounter{IVANoGeneral}{1}%
+ \addtocounter{@IVANoGeneral}{1}%
\newbox{\@CajaBIA}\newbox{\@CajaAliA}\newbox{\@CajaBIAliA}%
\savebox{\@CajaBIA}{\@EscribeTotalFilasSoloBI{A}}%
\savebox{\@CajaAliA}{\@EscribeTotalFilasSoloAlicuota{A}}%
@@ -849,23 +934,28 @@ República Bolivariana de Venezuela.
\if@Exento\usebox{\@CajaBIET}\else\usebox{\@CajaTotal}\fi
\if@centrado\hspace*{\@SepTotales}\fi}
-\newcommand{\@EscribeTotalFilasAuxTabla}[1]{%
- \begin{tabular}[b]{@{}l@{\extracolsep{1ex}}r@{}}% ¡Esta tabla tiene que abrir hacia abajo para que la separación entre las filas se pueda colocar con \@SeparaFilas!
- #1
- \end{tabular}}
-
%% Comando que guarda la posición en X para el nodo A de la línea.
\newcommand{\@LineaNodoACoordX}{\hspace*{-\tabcolsep}\zsaveposx{LineaNodoACoordX}\hspace*{\tabcolsep}}
%% Comando que guarda la posición en X para el nodo B de la línea.
\newcommand{\@LineaNodoBCoordX}{\hspace*{-\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{\tabcolsep}}
%% Escribe la letra que designa al tipo de impuesto que aplica al ítem.
-\newcommand{\@EscribeTipoDeImpuesto}[1]{%
- \@LetraTipoIVA%\fi% El espacio antes de la letra.
- \ifthenelse{\equal{#1}{E}}{\@DenomAlicuotaE}{}% Si está exento escribimos '(E)'.
- \ifthenelse{\equal{#1}{R}}{\@DenomAlicuotaR}{}% Si tiene IVA reducido escribimos 'R'.
- \ifthenelse{\equal{#1}{A}}{\@DenomAlicuotaA}{}% Si tiene IVA adicional escribimos 'A'.
- \ifthenelse{\equal{#1}{G}}{\if@G\@DenomAlicuotaG\fi}{}}% Una 'G' para IVA general si hace falta.
+\NewDocumentCommand{\@EscribeTipoDeImpuesto}{s m}{%
+ % Hay que abrir un grupo de ejecución porque el cambio en la tipografía altera la celda.
+ \ifx#2G{%
+ \if@G
+ {\@LetraTipoIVA\@DenomAlicuotaG}% Si tiene IVA general escribimos 'G' si se solicita.
+ \IfBooleanF{#1}{\ \hfill}%
+ \else
+ \hfill
+ \fi}\fi
+ {\if@G
+ {\@LetraTipoIVA
+ \ifx#2E\@DenomAlicuotaE\fi% Si está exento escribimos '(E)'.
+ \ifx#2R\@DenomAlicuotaR\fi% Si tiene IVA reducido escribimos 'R'.
+ \ifx#2A\@DenomAlicuotaA\fi% Si tiene IVA adicional escribimos 'A'.
+ \IfBooleanF{#1}{\ \hfill}}%
+ \fi}}
%% 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}{%
@@ -901,10 +991,42 @@ República Bolivariana de Venezuela.
% Sumamos a la base imponible.
\expandafter\FPupn\csname BI#1\endcsname{\csname Desc#1\endcsname{} \csname Subt#1\endcsname{} - \@DigitosMoneda{} round}%
\global\expandafter\let\csname BI#1\expandafter\endcsname\csname BI#1\endcsname
- \ifthenelse{\equal{#1}{E}}{}{%
+ \ifx#1E%
+ \else{%
% Sumamos a la alícuota.
\expandafter\FPupn\csname Alicuota#1\endcsname{\csname BI#1\endcsname{} \csname @Impuesto#1\endcsname{} * \@DigitosMoneda{} round}%
- \global\expandafter\let\csname Alicuota#1\expandafter\endcsname\csname Alicuota#1\endcsname}}
+ \global\expandafter\let\csname Alicuota#1\expandafter\endcsname\csname Alicuota#1\endcsname}%
+ \fi}
+
+%% Comandos auxiliares para poder evaluar la definición de las columnas en la tabla con un comando que se expande completamente.
+\def\@FacturaAuxColumnasEval{
+ % Primera línea.
+ \ifbool{SinLineasVertExt}{}{|}
+ % Columna 'X' con DCU, columna fantasma con 'sincantidad' y columa 'c' con CDU.
+ \ifbool{PrimeroDesc}{X}{
+ \ifbool{SinCantidad}{l@{\extracolsep{0pt}}}{c}}
+ % Segunda línea.
+ \ifbool{SinCantidad}{}{\ifbool{SinLineasVertInt}{}{|}}
+ % Columna 'c' con DCU, columna 'r' con DUC, columna 'X' sin espacio para 'sincantidad' y columna 'X' con CDU.
+ \ifbool{DCU}{c}{
+ \ifbool{DUC}{r}{
+ \ifbool{SinCantidad}{X@{\extracolsep{0pt}}}{X}}}
+ % Tercera línea, que sale solamente cuando no se usa 'sincantidad'.
+ \ifbool{SinCantidad}{}{\ifbool{SinLineasVertInt}{}{|}}
+ % Columna 'c' para DUC y columna 'r' para cualquier otro caso (DCU, CDU y 'sincantidad').
+ \ifbool{DUC}{c}{r}
+ % Cuarta línea.
+ \ifbool{SinLineasVertInt}{}{|}
+ % Columna 'c' para 'descuentos' y columna 'r' sin espacio si no hay descuentos individuales.
+ \ifbool{Descuentos}{c}{r@{\extracolsep{0pt}}}
+ % Quinta línea, que sale solamente cuando hay descuentos.
+ \ifbool{Descuentos}{\ifbool{SinLineasVertInt}{}{|}}{}
+ % Columna 'r' siempre.
+ r
+ % Sexta y última línea.
+ \ifbool{SinLineasVertExt}{}{|}}
+
+\edef\@FacturaAuxInicioCmd{\noexpand\begin{tabularx}{\textwidth}{\@FacturaAuxColumnasEval}}
%% 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]{%
@@ -918,54 +1040,72 @@ República Bolivariana de Venezuela.
\fi
\ifx\undefined\Total\relax\else\ClassError{factura}{** Parece ya haberse usado un entorno de factura **}{}\fi
%
+ % Comandos \David@SavePos, \David@XStart, \David@XEnd, \David@XPad, \David@XLeft y \David@XRight para poder manejar el salto de línea en las columnas adyacentes a la columna 'X' del tabularx (la descripción), cuando esta ocupa más que una línea.
+ % Gracias a David Carlisle (Thanks to David Carlisle).
% http://tex.stackexchange.com/questions/111203/tabularx-bottom-alignment-on-r-or-l-columns-when-x-column-wraps
- \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.
+ \def\David@SavePos##1{\leavevmode\pdfsavepos\write\@auxout{\gdef\noexpand##1{\the\pdflastypos sp}}}%
+ \def\David@XStart{\expandafter\David@SavePos\csname save@start@\romannumeral\value{@NumItem}\endcsname}%
+ \def\David@XEnd{\expandafter\David@SavePos\csname save@end@\romannumeral\value{@NumItem}\endcsname}%
+ \def\David@XPad##1##2##3{%
+ \vtop{%
+ \baselineskip\normalbaselineskip
+ ##2%
+ \expandafter
+ \ifx\csname save@start@##1\endcsname
+ \relax
+ \else
+ \dimen@\csname save@start@##1\endcsname\relax
+ \loop
+ \ifdim\dimen@>\csname save@end@##1\endcsname
+ \advance\dimen@-\baselineskip
+ \settowidth{\@TempDimen}{##3}%
+ \ifdim\@TempDimen=0pt\settowidth{\@TempDimen}{##2}\fi
+ \hbox{\parbox{\@TempDimen}{\mbox{}\hfill\@CaracterCeldasVacias\hfill\mbox{}}}%
+ \repeat
+ \fi
+ ##3}}%
+ \def\David@XLeft##1{\David@XPad{\romannumeral\value{@NumItem}}{\hbox{##1}}{}}%
+ \def\David@XRight##1{\David@XPad{\romannumeral\value{@NumItem}}{}{\hbox{##1}}}%
%
% Comando interno para todos los ítems.
\newcommand{\@ITEM}[5]{% 1. [R|G|A|E]; 2. cantidad; 3. descripción; 4. p/u; 5. dcto.
+ \addtocounter{@NumItem}{1}%
% Calculamos.
\FPupn\PrecioU{##4 \@DigitosMoneda{} round}%
\ifx\\##5\\\FPset\Dcto{0}\else\FPupn\Dcto{##5 \@DigitosPorc{} round clip}\fi% Fijamos en 0 el descuento si no se especifica.
- \FPupn\PrecioT{100 \Dcto{} 100 - / ##2 * ##4 * \@DigitosMoneda{} round}%
+ \FPupn\PrecioT{100 \Dcto{} 100 - / ##2 * \PrecioU{} * \@DigitosMoneda{} round}%
\global\let\PrecioU\PrecioU
\global\let\Dcto\Dcto
\global\let\PrecioT\PrecioT
% Primer campo: Acá puede ir la cantidad (cdu) o la descripción (dcu y duc).
\ifbool{SinCantidad}{}{%
\ifbool{PrimeroDesc}
- {##3% dcu y duc.
- \if@impdesc~\hfill\@EscribeTipoDeImpuesto{##1}\fi}% dcu y duc.
- {\@LetraNumeros\numprint{##2}}}% cdu.
+ {\@DescripcionAuxCmd{##3}{##1}}% dcu y duc.
+ {\David@XLeft{\@CantidadAuxCmd{\mbox{}\hfill \@LetraNumeros \numprint{##2}\hfill\mbox{}}}}}% cdu.
&
% Segundo campo: Acá puede ir la descripción (cdu), la cantidad (dcu), o el precio unitario (duc).
\ifbool{PrimeroDesc}{%
\if@dcu
- \@LetraNumeros\numprint{##2}% dcu.
+ \David@XRight{\@CantidadAuxCmd{\mbox{}\hfill \@LetraNumeros \numprint{##2}\hfill\mbox{}}}% dcu.
\else
- \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\ \hfill\fi% duc.
- \@LetraNumeros\numprint{\PrecioU}% duc.
- \fi}%
- {##3% cdu.
- \if@impdesc~\hfill\@EscribeTipoDeImpuesto{##1}\fi}% cdu.
+ \David@XRight{\@PrecioUAuxCmd{\if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \@LetraNumeros \numprint{\PrecioU}}}% duc.
+ \fi}
+ {\@DescripcionAuxCmd{##3}{##1}}% cdu.
&
% Tercer campo: Acá puede ir el precio unitario (cdu y dcu) o la cantidad (duc).
- \FPifeq\PrecioU{##4}\else\ClassWarning{factura}{** Se está introduciendo un precio con más de dos decimales: (##3 -> ##4) **}{}\fi% Advertimos cuando el precio unitario tiene más de dos decimales.
+ \FPifeq\PrecioU{##4}\else\ClassWarning{factura}{** Se está introduciendo un precio con más de dos decimales: (##3 - ##4. Redondeado a \PrecioU) **}{}\fi% Advertimos cuando el precio unitario tiene más de dos decimales.
\ifbool{SinCantidad}{}{%
\if@duc
- % El tercer campo está alineado a la derecha, entonces tenemos que centrar los números de esta forma.
- % ¡Está alineado a la derecha para que la totalización no se descuadre!
- \mbox{}\hfill\@LetraNumeros\numprint{##2}\hfill\mbox{}% duc.
+ \David@XRight{\@CantidadAuxCmd{\mbox{}\hfill \@LetraNumeros \numprint{##2}\hfill\mbox{}}}% duc.
\else
- \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\ \hfill\fi% dcu y cdu.
- \@LetraNumeros\numprint{\PrecioU}% dcu y cdu.
+ \David@XRight{\@PrecioUAuxCmd{\if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \@LetraNumeros \numprint{\PrecioU}}}% dcu y cdu.
\fi}%
&
% Cuarto campo: Descuento.
- \ifbool{Descuentos}{\FPifeq\Dcto{0}\else\@LetraNumeros\numprint{\Dcto}\%\fi}{}%
+ \ifbool{Descuentos}{\FPifeq\Dcto{0}\else\David@XRight{\@DescuentoAuxCmd{\mbox{}\hfill \@LetraNumeros \numprint{\Dcto}\%\hfill\mbox{}}}\fi}{}% Tenemos que usar un condicional booleano porque si no da problemas con el condicional \FPifeq.
&
% Quinto campo: El total.
- \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\ \hfill\fi
- \@LetraNumeros\numprint{\PrecioT}%
+ \David@XRight{\@PrecioTAuxCmd{\if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \@LetraNumeros \numprint{\PrecioT}}}%
% Escribimos al csv.
\if@csv
\ifbool{SinCantidad}
@@ -1000,115 +1140,61 @@ República Bolivariana de Venezuela.
\expandafter\FPupn\csname Subt##1\endcsname{\PrecioT{} \csname Subt##1\endcsname{} + \@DigitosMoneda{} round}%
\global\expandafter\let\csname Subt##1\expandafter\endcsname\csname Subt##1\endcsname
\\
- \if@lineaitem\hline\fi}%
+ \if@conlineasha\hline\fi}%
%
\ifbool{SinCantidad}
- % Definamos todos los comandos.
- {% Sin cantidad:
+ % Definamos todos los comandos \Item***.
+ {%
\if@descuentos
\newcommand{\Item}[3]{\@ITEM{G}{1}{##1}{##2}{##3}}% Ítem normal.
\newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{##1}{##2}{##3}}% Ítem con IVA reducido.
\newcommand{\ItemA}[3]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{##1}{##2}{##3}}% Ítem con IVA reducido.
- \newcommand{\ItemE}[3]{\global\@Exentotrue\@ITEM{E}{1}{##1}{##2}{##3}}% Ítem con IVA reducido.
+ \newcommand{\ItemE}[3]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{##1}{##2}{##3}}% Ítem con IVA reducido.
\else
\newcommand{\Item}[2]{\@ITEM{G}{1}{##1}{##2}{0}}% Ítem normal.
\newcommand{\ItemR}[2]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{##1}{##2}{0}}% Ítem con IVA reducido.
\newcommand{\ItemA}[2]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{##1}{##2}{0}}% Ítem con IVA reducido.
- \newcommand{\ItemE}[2]{\global\@Exentotrue\@ITEM{E}{1}{##1}{##2}{0}}% Ítem con IVA reducido.
+ \newcommand{\ItemE}[2]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{##1}{##2}{0}}% Ítem con IVA reducido.
\fi
\let\ItemG\Item
\newcommand{\ItemX}[1]{% Ítem sin precio.
\if@csv\immediate\write\csv{"\unexpanded{##1}"}\fi
- & ##1 && \if@descuentos ... \fi & \hfill ... \hfill\mbox{}\\
- \if@lineaitem\hline\fi}}
- {% Con cantidad:
+ & ##1 && \if@descuentos \@CaracterItemXVacio \fi & \hfill \@CaracterItemXVacio \hfill\mbox{}\\
+ \if@conlineasha\hline\fi}%
+ \if@csv
+ \if@descuentos
+ \immediate\write\csv{"\@@Descripcion","\@@Descuento","\@@Precio \space (\@Moneda)"}
+ \else
+ \immediate\write\csv{"\@@Descripcion","\@@Precio \space (\@Moneda)"}
+ \fi
+ \fi}
+ {%
\if@descuentos
\newcommand{\Item}[4]{\@ITEM{G}{##1}{##2}{##3}{##4}}% Ítem normal.
\newcommand{\ItemR}[4]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{##1}{##2}{##3}{##4}}% Ítem con IVA reducido.
\newcommand{\ItemA}[4]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{##1}{##2}{##3}{##4}}% Ítem con IVA adicional.
- \newcommand{\ItemE}[4]{\global\@Exentotrue\@ITEM{E}{##1}{##2}{##3}{##4}}% Ítem exento de IVA.
+ \newcommand{\ItemE}[4]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{##1}{##2}{##3}{##4}}% Ítem exento de IVA.
\else
\newcommand{\Item}[3]{\@ITEM{G}{##1}{##2}{##3}{0}}% Ítem normal.
\newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{##1}{##2}{##3}{0}}% Ítem con IVA reducido.
\newcommand{\ItemA}[3]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{##1}{##2}{##3}{0}}% Ítem con IVA adicional.
- \newcommand{\ItemE}[3]{\global\@Exentotrue\@ITEM{E}{##1}{##2}{##3}{0}}% Ítem exento de IVA.
+ \newcommand{\ItemE}[3]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{##1}{##2}{##3}{0}}% Ítem exento de IVA.
\fi
\let\ItemG\Item
\newcommand{\ItemX}[2]{% Ítem sin precio.
\if@cdu
\if@csv\immediate\write\csv{"##1","\unexpanded{##2}",""}\fi
- \@LetraNumeros\numprint{##1} & ##2 & \hfill ... \hfill\mbox{} & \if@descuentos ... \fi & \hfill ... \hfill\mbox{} \\
+ \@LetraNumeros\numprint{##1} & ##2 & \hfill \@CaracterItemXVacio \hfill\mbox{} & \if@descuentos \@CaracterItemXVacio \fi & \hfill \@CaracterItemXVacio \hfill\mbox{} \\
\fi
\if@dcu
\if@csv\immediate\write\csv{"\unexpanded{##2}","##1",""}\fi
- ##2 & \@LetraNumeros\numprint{##1} & \hfill ... \hfill\mbox{} & \if@descuentos ... \fi & \hfill ... \hfill\mbox{} \\
+ ##2 & \@LetraNumeros\numprint{##1} & \hfill \@CaracterItemXVacio \hfill\mbox{} & \if@descuentos \@CaracterItemXVacio \fi & \hfill \@CaracterItemXVacio \hfill\mbox{} \\
\fi
\if@duc
\if@csv\immediate\write\csv{"\unexpanded{##2}","","##1"}\fi
- ##2 & \hfill ... \hfill\mbox{} & \@LetraNumeros\numprint{##1} & \if@descuentos ... \fi & \hfill ... \hfill\mbox{} \\
+ ##2 & \hfill \@CaracterItemXVacio \hfill\mbox{} & \@LetraNumeros\numprint{##1} & \if@descuentos \@CaracterItemXVacio \fi & \hfill \@CaracterItemXVacio \hfill\mbox{} \\
\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.
- {% Sin cantidad:
- \ifbool{SinLineasV}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{ l@{\extracolsep{0pt}} X@{\extracolsep{0pt}} r c r }}
- {\begin{tabularx}{\textwidth}{ l@{\extracolsep{0pt}} X@{\extracolsep{0pt}} r r@{\extracolsep{0pt}} r }}}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{|l@{\extracolsep{0pt}} X@{\extracolsep{0pt}} r|c|r|}}
- {\begin{tabularx}{\textwidth}{|l@{\extracolsep{0pt}} X@{\extracolsep{0pt}} r|r@{\extracolsep{0pt}} r|}}}%
- \hline
- \@ZERO
- \if@csv
- \if@descuentos
- \immediate\write\csv{"\@@Descripcion","\@@Descuento","\@@Precio \space (\@Moneda)"}
- \else
- \immediate\write\csv{"\@@Descripcion","\@@Precio \space (\@Moneda)"}
- \fi
- \fi
- &% Avanzamos hasta la descripción.
- \ifbool{LineaDesdeColDos}{\@LineaNodoACoordX}{}%
- \@LetraTitRenglon \@@Descripcion
- &% Avanzamos hasta la columna fantasma del precio unitario.
- \ifbool{LineaHastaColDos}{\zsaveposx{LineaNodoBCoordX}}{}%
- \if@filas\else\hfill\mbox{}\fi
- &% Avanzamos hasta el descuento, que puede o no existir.
- \if@descuentos
- \@LetraTitRenglon \@@Descuento \hfill\mbox{}%
- \fi
- &% Avanzamos hasta el precio total.
- \mbox{}\hfill
- \@LetraTitRenglon \@@Precio \space (\@Moneda)\hfill\mbox{}%
- \ifbool{LineaHastaFinal}{\hspace*{\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{-\tabcolsep}}{}%
- \\\hline}
- {% Con cantidad:
- \ifbool{SinLineasV}
- {\ifbool{DCU}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{X c r c r}}% dcu.
- {\begin{tabularx}{\textwidth}{X c r r@{\extracolsep{0pt}} r}}}% dcu.
- {\ifbool{DUC}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{X r c c r}}% duc.
- {\begin{tabularx}{\textwidth}{X r c r@{\extracolsep{0pt}} r}}}% duc.
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{c X r c r}}% cdu.
- {\begin{tabularx}{\textwidth}{c X r r@{\extracolsep{0pt}} r}}}}}% cdu.
- {\ifbool{DCU}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{|X|c|r|c|r|}}% dcu.
- {\begin{tabularx}{\textwidth}{|X|c|r|r@{\extracolsep{0pt}} r|}}}% dcu.
- {\ifbool{DUC}
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{|X|r|c|c|r|}}% duc.
- {\begin{tabularx}{\textwidth}{|X|r|c|r@{\extracolsep{0pt}} r|}}}% duc.
- {\ifbool{Descuentos}
- {\begin{tabularx}{\textwidth}{|c|X|r|c|r|}}% cdu.
- {\begin{tabularx}{\textwidth}{|c|X|r|r@{\extracolsep{0pt}} r|}}}}}% cdu.
- \hline
- \@ZERO
+ \if@conlineasha\hline\fi}%
\if@csv
\if@cdu
\if@descuentos
@@ -1131,57 +1217,62 @@ República Bolivariana de Venezuela.
\immediate\write\csv{"\@@Descripcion","\@@PrecioU \space (\@Moneda)","\@@Cantidad","\@@PrecioT \space (\@Moneda)"}%
\fi
\fi
- \fi
- \ifbool{LineaDesdeColUno}{\@LineaNodoACoordX}{}%
- \ifbool{PrimeroDesc}{\@LetraTitRenglon \@@Descripcion}{\@LetraTitRenglon \@@Cantidad}%
- &
- \ifbool{LineaHastaColUno}{\hspace*{-\arrayrulewidth}\@LineaNodoBCoordX\hspace*{\arrayrulewidth}}{}%
- \ifbool{LineaDesdeColDos}{\@LineaNodoACoordX}{}%
- \if@cdu \@LetraTitRenglon \@@Descripcion \fi
- \if@dcu \@LetraTitRenglon \@@Cantidad \fi
- \if@duc \mbox{}\hfill \@LetraTitRenglon \@@PrecioU \space (\@Moneda)\hfill\mbox{}\fi
- &
- \ifbool{LineaHastaColDos}{\hspace*{-\arrayrulewidth}\@LineaNodoBCoordX\hspace*{\arrayrulewidth}}{}%
- \mbox{}\hfill
- \if@duc
- \@LetraTitRenglon \@@Cantidad
- \else
- \@LetraTitRenglon \@@PrecioU \space (\@Moneda)%
- \fi
- \hfill\mbox{}
- &% Avanzamos hasta el descuento, que puede o no existir.
- \if@descuentos
- \@LetraTitRenglon \@@Descuento \hfill\mbox{}%
- \fi
- &% Avanzamos hasta el precio total.
- \mbox{}\hfill
- \@LetraTitRenglon \@@PrecioT \space (\@Moneda)\hfill\mbox{}%
- \ifbool{LineaHastaFinal}
- {\hspace*{\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{-\tabcolsep}}
- {}%
- \\
- \hline
- }%
+ \fi}
+ %
+ \@LetraItems% Este es el tipo de letra que tendrán los ítems, y en este tipo de letra se define el \baselineskip de toda la factura.
+ \@FacturaAuxInicioCmd
+ \ifbool{SinLineasHoriExt}{}{\hline}%
+ \@ZERO
+ % Estamos en la cantidad o la descripción.
+ \ifbool{LineaDesdeColUno}{\@LineaNodoACoordX}{}%
+ \ifbool{SinCantidad}{}{\ifbool{PrimeroDesc}{\@DescripcionAuxCmd{\@LetraTitCuadro \@@Descripcion}{}}{\@CantidadAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Cantidad \hfill\mbox{}}}}%
+ &% Avanzamos hasta la descripción, la cantidad o el precio unitario.
+ \ifbool{LineaDesdeColDos}{\@LineaNodoACoordX}{}%
+ \ifbool{LineaHastaColUno}{\hspace*{-\arrayrulewidth}\@LineaNodoBCoordX\hspace*{\arrayrulewidth}}{}%
+ \ifbool{SinCantidad}{\@DescripcionAuxCmd{\@LetraTitCuadro \@@Descripcion}{}}
+ {\if@cdu \@DescripcionAuxCmd{\@LetraTitCuadro \@@Descripcion}{}\fi
+ \if@dcu \@CantidadAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Cantidad \hfill\mbox{}}\fi
+ \if@duc \@PrecioUAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioU \hfill\mbox{}}\fi}%
+ &% Avanzamos hasta el precio unitario, o la cantidad, o columna fantasma cuando es 'sincantidad'.
+ \ifbool{SinCantidad}{%
+ \ifbool{LineaHastaColDos}{\hspace*{\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{-\tabcolsep}}{}}%
+ {\ifbool{LineaHastaColDos}{\hspace*{-\arrayrulewidth}\@LineaNodoBCoordX\hspace*{\arrayrulewidth}}{}%
+ \mbox{}\hfill
+ \if@duc
+ \@CantidadAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Cantidad \hfill\mbox{}}%
+ \else
+ \@PrecioUAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioU \space (\@Moneda)\hfill\mbox{}}%
+ \fi}%
+ &% Avanzamos hasta el descuento, que puede o no existir.
+ \if@descuentos \@DescuentoAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Descuento \hfill\mbox{}}\fi
+ &% Avanzamos hasta el precio total.
+ \@PrecioTAuxCmd{\mbox{}\hfill \@LetraTitCuadro \ifbool{SinCantidad}{\@@Precio}{\@@PrecioT}\space (\@Moneda)\hfill\mbox{}}%
+ \ifbool{LineaHastaFinal}{\hspace*{\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{-\tabcolsep}}{}%
+ \\
+ \ifbool{SinLineasHoriInt}{}{\hline}%
%
#1% Aquí entran todos los items que el usuario declara dentro del ambiente.
+ %
\if@filas
% 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.
+ \ifbool{SinLineasHoriExt}{}{\if@conlineasha\else\hline\fi}% Verificamos si hay que poner la línea horizontal. Si está 'conlineasha' ya salió debido a esta opción.
\else
- \usebox{\@CajaEspacioVacio}%
+ &\usebox{\@CajaEspacioVacio}%
\if@linea\mbox{}\zsaveposy{LineaNodoBCoordY}\fi% Se guarda la coordenada Y del punto de la derecha de la línea diagonal. Tiene que haber \mbox{}.
- &&&&\\
- \hline% Siempre que hay relleno se pone la línea acá.
+ &&&\\
+ \ifbool{SinLineasHoriExt}{}{\hline}% Siempre que hay relleno se pone la línea acá.
\fi
\else
- \if@lineaitem\else\hline\fi
+ \ifbool{SinLineasHoriInt}{}{\if@conlineasha\else\hline\fi}% Línea que cierra los ítems en la tabla.
% Agregamos el espacio espúreo.
\ifdim \ht\@CajaEspacioVacio=0pt
\else
- \ifbool{SinLineasV}{\multicolumn{5}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{5}{|c|}{\usebox{\@CajaEspacioVacio}}}\\
+ % Rellenamos la tabla con espacio espúreo, y le agregamos las lineas externas, si aplica.
+ \ifbool{SinLineasVertExt}{\multicolumn{5}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{5}{|c|}{\usebox{\@CajaEspacioVacio}}}\\
\fi
- \ifbool{SinLineasV}
+ % Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica.
+ \ifbool{SinLineasVertExt}
{\multicolumn{5}{r}\begingroup
\ifdim \ht\@CajaEspacioVacio=0pt \else \if@linea\zsaveposx{LineaNodoBCoordX}\zsaveposy{LineaNodoBCoordY}\fi\fi
\begin{tabular}[b]{@{\extracolsep{2\tabcolsep}}lr}}
@@ -1200,7 +1291,8 @@ República Bolivariana de Venezuela.
\if@ivaexpresado\cline{2-2}\fi
\hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\
\end{tabular}\endgroup
- \\\hline
+ \\
+ \ifbool{SinLineasHoriExt}{}{\hline}%
\fi
\end{tabularx}%
%
@@ -1213,7 +1305,7 @@ República Bolivariana de Venezuela.
\newbox{\@CajaTotal}%
\savebox{\@CajaTotal}{{\@LetraTitTotal\@@Total}: \@LetraNumTotal\numprint{\Total}}%
%
- \ifnum \value{IVANoGeneral}=0%
+ \ifnum \value{@IVANoGeneral}=0%
\newbox{\@CajaGET}%
\savebox{\@CajaGET}{\@EscribeTotalesFilasGET}%
\ifdim \the\wd\@CajaGET < \textwidth
@@ -1225,7 +1317,7 @@ República Bolivariana de Venezuela.
\if@centrado\hspace*{\@SepTotales}\fi
\fi
\fi
- \ifnum \value{IVANoGeneral}=1%
+ \ifnum \value{@IVANoGeneral}=1%
\newbox{\@CajaGxET}%
\savebox{\@CajaGxET}{\@EscribeTotalesFilasGxET}%
\ifdim \the\wd\@CajaGxET < \textwidth
@@ -1241,7 +1333,7 @@ República Bolivariana de Venezuela.
\if@centrado\hspace*{\@SepTotales}\fi
\fi
\fi
- \ifnum \value{IVANoGeneral}=2%
+ \ifnum \value{@IVANoGeneral}=2%
\newbox{\@CajaRGAET}%
\savebox{\@CajaRGAET}{\@EscribeTotalesFilasRGAET}%
\ifdim \the\wd\@CajaRGAET < \textwidth
@@ -1277,24 +1369,21 @@ República Bolivariana de Venezuela.
\vspace*{\@SeparaElementos}\par}
\if@factura
+ % Los descuentos totales no son compatibles -y no sé si lo serán- con el modo de totalización en filas.
+ \if@filas
+ \if@Descuentos
+ \ClassWarning{factura}{La opción 'filas' no es compatible con los descuentos totales; sin efecto opción 'filas'.}{}
+ \@filasfalse
+ \fi
+ \fi
+ \if@cotizacion\def\@Denominacion{\@@DenomCotiza}\else\def\@Denominacion{\@@DenomFactura}\fi% Fijamos la denominación del documento paras las cotizaciones o facturas, que son casos particulares del modo 'factura'.
\AtEndPreamble{% La geometría debe aplicarse aquí.
\expandafter\geometry\expandafter{\@GeometriaFactura}}
- \AtBeginDocument{% Aquí en la factura hay que cargar el estilo de página del reporte, pero con a la factura aplica \thispagestyle en empty luego, aunque quedará \pagestyle aplicado.
- \if@fondoreporte
- \if@fondoreportestar
- \pagestyle{solopie}%
- \else
- \pagestyle{plain}%
- \fi
+ \AtBeginDocument{% Aquí en la factura hay que cargar el estilo de página del reporte, pero con la factura se aplicará \thispagestyle{empty} luego, aunque quedará \pagestyle aplicado desde ahora.
+ \if@fondoreportestar
+ \pagestyle{soloabajo}% Cuando el fondo es con '*' la información de página va sólo abajo.
\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@Descuentos
- \ClassWarning{factura}{La opción 'filas' no es compatible con los descuentos totales; sin efecto opción 'filas'.}{}
- \@filasfalse\boolfalse{Filas}
- \fi
+ \pagestyle{plain}% Esto aplica para cuando se define un fondo sin '*' y cuando no se define fondo en el reporte.
\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}%
@@ -1316,7 +1405,6 @@ República Bolivariana de Venezuela.
{%
\@CargaFondoFactura
\@PosicionaFecha
- \if@cotizacion\def\@Denominacion{\@@DenomCotiza}\fi
\if@denom\@PosicionaDenom\fi
\if@confirmas\@PosicionaFirmas\fi
\if@concondiciones\@PosicionaCondiciones\fi
@@ -1324,8 +1412,10 @@ República Bolivariana de Venezuela.
\if@linea
\RequirePackage{zref-savepos}% Para determinar las coordenadas de la línea.
+ \RequirePackage{eso-pic}% Para poder usar \AtBeginShipoutNext porque si no se hace en el 'shipout' de la página se genera un espacio en blanco extra.
+ \AtBeginShipoutNext{\if@linea\@DibujaLinea\fi}
\if@filas
- \ifbool{SinLineasV}
+ \ifbool{SinLineasVertInt}
{\booltrue{LineaDesdeColUno}\booltrue{LineaHastaFinal}}
{\ifbool{PrimeroDesc}
{\booltrue{LineaDesdeColUno}\booltrue{LineaHastaColUno}}
@@ -1340,12 +1430,12 @@ República Bolivariana de Venezuela.
\NewDocumentCommand{\Descripcion}{+m}{%
\@LetraDescripcion
\begin{tikzpicture}
- \node[draw=black, fill=white, inner sep=\@SeparaInternaDescrip, line width=\@EspesorLineaDescrip, rounded corners=\@EsquinaLineaDescrip,
+ \node[draw=black, fill=white, inner sep=\@SeparaInternaDescrip, line width=\@GrosorLineaDescrip, rounded corners=\@EsquinaLineaDescrip,
copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraDescrip, shadow yshift=-\@SombraDescrip}]{%
\ifbool{ExpAbajo}
- {\parbox[t][\textheight-\pagetotal-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip]
- {\textwidth-2\@SeparaInternaDescrip-\@EspesorLineaDescrip-\@SombraDescrip}}%
- {\parbox[t]{\textwidth-\@SombraDescrip-2\@SeparaInternaDescrip-2\@EspesorLineaDescrip}}%
+ {\parbox[t][\textheight-\pagetotal-2\@SeparaInternaDescrip-\@GrosorLineaDescrip-\@SombraDescrip]
+ {\textwidth-2\@SeparaInternaDescrip-\@GrosorLineaDescrip-\@SombraDescrip}}%
+ {\parbox[t]{\textwidth-\@SombraDescrip-2\@SeparaInternaDescrip-2\@GrosorLineaDescrip}}%
{\setlength{\parindent}{0.5cm}%
\setlength{\parskip}{2pt plus 8pt}%
\ifbool{ExpAbajo}{\vfill}{}%
@@ -1359,7 +1449,7 @@ República Bolivariana de Venezuela.
\fi
\if@reporte
- \ifdefvoid{\@EstiloPag}{\let\@EstiloPag\@EstiloPagNoTitulo}{}%
+ \ifdefvoid{\@InfoPagina}{\let\@InfoPagina\@InfoPaginaNoTitulo}{}%
\if@factura
\else
\AtEndPreamble{%
@@ -1372,14 +1462,21 @@ República Bolivariana de Venezuela.
\fancy@setoffs
\@CargaFondoReporte
\@EncabezadoReporte
- \if@fondoreporte
- \if@fondoreportestar
- \pagestyle{solopie}%
+ \ifdefvoid{\@EstiloPagReporteResto}{%
+ \if@fondoreportestar% Si no usamos \EstiloPagReporte entonces se fijará 'soloabajo' cuando se use \FondoReporte* para que sólo use marcas de pie de página, y si no se usó \FondoReporte* entonces se fijará 'plain' que usa cabeceras y piés de página.
+ \pagestyle{soloabajo}%
\else
\pagestyle{plain}%
- \thispagestyle{solonumpag}%
- \fi
- \fi
+ \fi}
+ {\pagestyle{\@EstiloPagReporteResto}}% Si usamos \EstiloPagReporte en su argumento obligatorio entonces fijamos ese estilo de página.
+ \ifdefvoid{\@EstiloPagReporteUno}{%
+ \if@fondoreporte% Si no le damos a \EstiloPagReporte su argumento opcional, entonces se fijará 'solonumpag' como el estilo de página para la primera página, pero solamente si usamos \FondoReporte, ya que el estilo de página predeterminado al usar \FondoReporte* ya se acaba de fijar y no necesita el caso especial de la primera hoja (\thispagestyle).
+ \if@fondoreportestar
+ \else
+ \thispagestyle{solonumpag}%
+ \fi
+ \fi}
+ {\thispagestyle{\@EstiloPagReporteUno}}% Si usamoe el argumento opcional de \EstiloPagReporte establecemos ese estilo de página.
\pagenumbering{arabic}%
\setlength{\parindent}{0.666cm}%
\setlength{\parskip}{4pt plus 6pt minus 2pt}% separación entre párrafos en el reporte.
@@ -1409,7 +1506,7 @@ República Bolivariana de Venezuela.
\fi
\end{textblock*}}
-%% Comando que coloca las firmas.
+%% Comando que coloca los espacios para firmar.
\newcommand{\@PosicionaFirmas}{%
\savebox{\@CajaFirmas}{%
\parbox{\textwidth+\oddsidemargin+1in-\@PosFirmasXuno-\@PosFirmasXdos}{\@EstiloFirmas}}%
@@ -1420,7 +1517,7 @@ República Bolivariana de Venezuela.
\usebox{\@CajaFirmas}%
\end{textblock*}}
-%% Comando que coloca las condiciones de pago.
+%% Comando que coloca las condiciones del documento.
\newcommand{\@PosicionaCondiciones}{%
\savebox{\@CajaCond}{%
\parbox{\textwidth+\oddsidemargin+1in-\@PosCondX}{\@EstiloCondiciones}}%
@@ -1433,8 +1530,7 @@ República Bolivariana de Venezuela.
%% Comando que coloca el número de control.
\newcommand{\@PosicionaNumControl}{%
- \savebox{\@CajaControl}{%
- \pbox{\textwidth}{\@EstiloNumControl}}%
+ \savebox{\@CajaControl}{\@EstiloNumControl}%
\ifbool{ControlXnegativo}
{\addtolength{\@PosControlX}{\textwidth-\wd\@CajaControl}}
{}%
@@ -1471,9 +1567,9 @@ República Bolivariana de Venezuela.
\usebox{\@CajaFecha}%
\end{textblock*}}
-%% Comando que coloca los datos en el modo de reporte.
+%% Comando que coloca la identificación del reporte al inicio.
\newcommand{\@EscribeDatosReporte}{%
- {\@LetraDatosReporte
+ {\@LetraEncReporte
\setlength{\parindent}{0pt}%
{\bfseries \@@Proveedor} \@Proveedor \par
{\bfseries \@@Cliente} \@RazonSocial \par
@@ -1484,9 +1580,9 @@ República Bolivariana de Venezuela.
\newcommand{\@EscribeDatos}{%
{\@LetraEncFactura% Abrimos un nuevo grupo para que el cambio de tipografía sea sólo local.
\begin{tikzpicture}
- \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@EspesorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
+ \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@GrosorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraEncabez, shadow yshift=-\@SombraEncabez}]{%
- \parbox{\textwidth-\@SombraEncabez-2\@SeparaInternaEncabez-\@EspesorLineaEncabez}{%
+ \parbox{\textwidth-\@SombraEncabez-2\@SeparaInternaEncabez-\@GrosorLineaEncabez}{%
\hfill {\@LetraTitEnc \@@Datos} \hfill \mbox{}\par
{\bfseries \@@RazonSocial} \@RazonSocial
\dotfill
@@ -1496,43 +1592,54 @@ República Bolivariana de Venezuela.
{\bfseries \@@Direccion} \@Direccion
\par
{\bfseries \@@Telefono} {\ttfamily \@Telefono}%
- \ifdefvoid{\@Email}{}{\hspace*{0.2cm}$\diamond$\hspace*{0.2cm}{\bfseries \@@Email} {\ttfamily \@Email}}}};%
+ \ifdefvoid{\@Email}{}{\hspace*{0.666em}\@CaracterSeparaTelefonoEmail\hspace*{0.666em}{\bfseries \@@Email} {\ttfamily \@Email}}}};%
\end{tikzpicture}%
\par\vspace*{\@SombraEncabez}}}% Para que textblock* esté en modo vertical.
+%% Comandos auxiliares para los datos y el resumen.
+\newcommand{\@DatosAux}{%
+ \vfill
+ \hfill {\@LetraTitEnc \@@Datos}\hfill \mbox{}\par
+ {\bfseries \@@RazonSocial} \@RazonSocial \par
+ {\bfseries \@@RIF} {\ttfamily \@RIF} \par
+ \ifdefvoid{\@Contacto}{}{{\bfseries \@@Contacto} \@Contacto \par}%
+ {\bfseries \@@Direccion} \@Direccion \par
+ {\bfseries \@@Telefono} {\ttfamily \@Telefono} \hfill \par
+ \ifdefvoid{\@Email}{}{{\bfseries \@@Email} {\ttfamily \@Email}}%
+ \vfill}
+
+\newcommand{\@ResumenAux}{%
+ \hfill {\@LetraTitEnc \@@Resumen}\hfill \mbox{}%
+ \vfill\@Resumen\vfill}
+
%% Comando que coloca las dos cajas del encabezado: la de los datos del cliente y la del resumen.
\newcommand{\@EscribeDatosResumen}{%
{\@LetraEncFactura% Abrimos un nuevo grupo para que el cambio de tipografía sea sólo local.
\savebox{\@CajaDatos}{%
- \parbox[t]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@EspesorLineaEncabez-\@SombraEncabez}{%
- \hfill {\@LetraTitEnc \@@Datos} \hfill \mbox{}\par
- {\bfseries \@@RazonSocial} \@RazonSocial \par
- {\bfseries \@@RIF} {\ttfamily \@RIF} \par
- \ifdefvoid{\@Contacto}{}{{\bfseries \@@Contacto} \@Contacto \par}%
- {\bfseries \@@Direccion} \@Direccion \par
- {\bfseries \@@Telefono} {\ttfamily \@Telefono} \hfill \par
- \ifdefvoid{\@Email}{}{{\bfseries \@@Email} {\ttfamily \@Email}}}}%
+ \parbox[t]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@GrosorLineaEncabez-\@SombraEncabez}{%
+ \@DatosAux}}%
\savebox{\@CajaResumen}{%
- \parbox[t]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@EspesorLineaEncabez-\@SombraEncabez}{%
- \hfill {\@LetraTitEnc \@@Resumen} \hfill \mbox{}%
- \null\vfill\@Resumen}}%
+ \parbox[t]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@GrosorLineaEncabez-\@SombraEncabez}{%
+ \@ResumenAux}}%
\setlength{\@TamDatos}{\ht\@CajaDatos+\dp\@CajaDatos}%
\setlength{\@TamResumen}{\ht\@CajaResumen+\dp\@CajaResumen}%
- \ifthenelse{\@TamDatos>\@TamResumen}
- {\setlength{\@TamFinalEncabez}{\@TamDatos}}
- {\setlength{\@TamFinalEncabez}{\@TamResumen}}%
+ \ifdim\@TamDatos>\@TamResumen
+ \setlength{\@TamFinalEncabez}{\@TamDatos}%
+ \else
+ \setlength{\@TamFinalEncabez}{\@TamResumen}%
+ \fi
\begin{tikzpicture}
- \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@EspesorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
+ \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@GrosorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraEncabez, shadow yshift=-\@SombraEncabez}]{%
- \usebox{\@CajaDatos}};%
+ \parbox[t][\@TamFinalEncabez]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@GrosorLineaEncabez-\@SombraEncabez}{%
+ \@DatosAux}};%
\end{tikzpicture}%
\hspace*{\@SeparaEncabez}\hspace*{\@SombraEncabez}%
\begin{tikzpicture}
- \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@EspesorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
+ \node[draw=black, fill=white, inner sep=\@SeparaInternaEncabez, line width=\@GrosorLineaEncabez, rounded corners=\@EsquinaLineaEncabez,
copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraEncabez, shadow yshift=-\@SombraEncabez}]{%
- \parbox[t][\@TamFinalEncabez]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@EspesorLineaEncabez-\@SombraEncabez}{% Tenemos que rehacer la caja por los espacios dinámicos que deben volver a calcularse cuando ya la caja tiene un tamaño vertical definitivo.
- \hfill {\@LetraTitEnc \@@Resumen} \hfill \mbox{}%
- \null\vfill\@Resumen\vfill\null}};%
+ \parbox[t][\@TamFinalEncabez]{\textwidth/2-\@SeparaEncabez/2-2\@SeparaInternaEncabez-\@GrosorLineaEncabez-\@SombraEncabez}{%
+ \@ResumenAux}};%
\end{tikzpicture}%
\par\vspace*{\@SombraEncabez}}}% El \par es para que textblock* esté en modo vertical.
@@ -1602,7 +1709,7 @@ República Bolivariana de Venezuela.
\immediate\closeout\csv
\fi}
-%% Hubo que redefinir \cleardoublepage agregándole \thispagestyle{empty} porque si no queda una página en blanco con encabezados usando twoside.
+%% Hubo que redefinir \cleardoublepage agregándole \thispagestyle{empty} porque si no queda una página en blanco con cabeceras de página usando twoside.
\def\cleardoublepage{%
\clearpage
\if@twoside
diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def
index e3d685c4642..272cd2a0300 100644
--- a/Master/texmf-dist/tex/latex/factura/factura.def
+++ b/Master/texmf-dist/tex/latex/factura/factura.def
@@ -6,7 +6,7 @@
%%
%% factura.dtx (with options: `def')
%%
-%% Copyright 2015 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -29,19 +29,20 @@
%% factura-ejemplo-prefactura.tex, factura-ejemplo-factura1.tex
%% factura-ejemplo-factura2.tex, factura-ejemplo-factura3.tex,
%% factura-ejemplo-factura4.tex, factura-ejemplo-factura5.tex,
-%% factura-ejemplo-factura6.tex, factura-ejemplo-reporte1.tex,
+%% factura-ejemplo-factura6.tex, factura-ejemplo-factura7.tex,
+%% factura-ejemplo-factura8.tex, factura-ejemplo-reporte1.tex,
%% factura-ejemplo-reporte2.tex, factura-ejemplo-reporte3.tex,
%% and factura-beispiel-rechnung.tex.
%%
\ProvidesFile{factura.def}
-[2015/08/26 v2.1^^J
+[2016/02/07 v2.6
Archivo valores iniciales y condiciones de borde para factura.cls
]
%% La geometría en formato de factura y de reporte.
%% El margen superior está definido desde el encabezado con los datos del cliente.
%% El margen inferior está definido hasta el final de la descripción (o del cuadro de la factura si no hay descripción).
-%% Hay elementos que salen fuera de estos márgenes, como las firmas, las condiciones de pago, la numeración y la fecha.
+%% Hay elementos que salen fuera de estos márgenes, como las firmas, las condiciones del documento, la numeración y la fecha.
\GeometriaFactura{letterpaper,vmargin={5cm,5.5cm}, hmargin={1cm,1cm},footskip=0pt, headsep=0pt, headheight=0pt}
\GeometriaReporte{letterpaper,vmargin={2.8cm,2.5cm},hmargin={3cm,2cm},footskip=1.2cm,headsep=0.777cm,headheight=1.5cm}
@@ -50,7 +51,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\def\@AlicuotaR{0.08}
\def\@AlicuotaA{0.22}
-%% i) separador de miles, ii) separador decimal, iii) número de decimales para la moneda iv) y para los porcentajes, v) número de dígitos de la la numeración de la factura:
+%% i) separador de miles, ii) separador decimal, iii) número de decimales para la moneda iv) y para los porcentajes, v) número de dígitos de la numeración de la factura:
\npthousandsep{.}
\npdecimalsign{,}
\def\@DigitosMoneda{2}
@@ -60,7 +61,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls
%% La moneda:
\def\@Moneda{Bs.}
-%% Al lado de cada ítem va la letra que designa el gravámen que aplica sobre él:
+%% Al lado de cada ítem va la letra que designa el gravamen que aplica sobre él:
\def\@DenomAlicuotaG{G}
\def\@DenomAlicuotaR{R}
\def\@DenomAlicuotaA{A}
@@ -100,12 +101,23 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\def\@@Datos{Datos del cliente}
\def\@@Resumen{Resumen del servicio}
\def\@@Conforme{Recib\'i conforme}
+\def\@@Emisor{Por el emisor}
+\def\@@Pagado{PAGADO}
\def\@@DenomFactura{FACTURA}
\def\@@DenomCotiza{COTIZACI\'ON}
\def\@@Control{N\textordmasculine\space CONTROL}
\def\@@Proveedor{Proveedor:}
\def\@@Cliente{Cliente:}
+%% i) Carácter de fin de línea en el cuadro de la factura,
+%% ii) carácter para separar el teléfono del e-mail del cliente,
+%% iii) carácter para los campos vacíos cuando se usa \ItemX,
+%% iv) carácter para las celdas vacíos cuando la descripción del ítem ocupa más que una línea.
+\def\@CaracterEOL{$\hookleftarrow$}
+\def\@CaracterSeparaTelefonoEmail{$\diamond$}
+\def\@CaracterItemXVacio{...}
+\def\@CaracterCeldasVacias{$\cdot$}
+
%% Separación entre el inicio de una columna en la tabla y el inicio del texto.
\tabcolsep=0.15cm
@@ -118,7 +130,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\PosFirmas{5cm}{1cm}{-2.4cm}
%% La firma se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
-%% Tamaño y espesor de la línea de las firmas.
+%% Tamaño y grosor de la línea de las firmas.
\LineaFirmas{5.5cm}{0.7pt}
%% Separación mínima horizontal entre los totales en modo de filas y distancia vertical entre esas líneas, fija.
@@ -133,10 +145,10 @@ Archivo valores iniciales y condiciones de borde para factura.cls
%% Separación interna entre la línea y el texto de la descripción.
\SepDescrip{6pt}
-%% Espesor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
+%% Grosor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
\LineaEncabez{0.4pt}{10pt}{0pt}
-%% Espesor de la línea de la descripción, curvatura de la esquina y sombra.
+%% Grosor de la línea de la descripción, curvatura de la esquina y sombra.
\LineaDescrip{0.4pt}{0pt}{4pt}
%% El espacio vertical que hay que avanzar sólo en la primera página del reporte antes de empezar a escribir sobre él. Usable cuando la primera página tiene un membrete y las demás no, es decir, cuando se usa \FondoReporte y no \FondoReporte*.
@@ -147,7 +159,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\LetraItems{\fontsize{14}{18}}
%% Con este comando se cambia la etra del título de la tabla, es decir, los textos 'Cantidad, 'Descripción', etc...
-\LetraTitRenglon{\fontsize{10}{10}\bfseries}
+\LetraTitCuadro{\fontsize{10}{10}\bfseries}
%% Tipo de letra de los títulos de los totales, por ejemplo los textos: 'B.I. G', 'IVA G'.
\LetraTitTotales{\fontsize{12}{12}\bfseries}
@@ -167,8 +179,8 @@ Archivo valores iniciales y condiciones de borde para factura.cls
%% Tipo de letra para el texto en el encabezado de la factura.
\LetraEncFactura{\fontsize{11}{12.5}}
-%% Tipo de letra para los datos en el modo reporte.
-\LetraDatosReporte{\fontsize{13}{16}}
+%% Tipo de letra para el texto en el encabezado del reporte.
+\LetraEncReporte{\fontsize{13}{16}}
%% Letra para los montos individuales de la factura y las cantidades.
\LetraNumeros{\fontsize{14}{14}}
@@ -182,7 +194,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls
%% Tipo de letra para el texto bajo las líneas para firmar.
\LetraFirmas{\fontsize{12}{12}}
-%% Tipo de letra para las condiciones de pago.
+%% Tipo de letra para las condiciones del documento.
\LetraCondiciones{\fontsize{12}{12}}
%% Letra para la denominación del documento ('FACTURA', 'COTIZACIÓN',...).
@@ -197,8 +209,8 @@ Archivo valores iniciales y condiciones de borde para factura.cls
%% Letra para el título del reporte.
\LetraTitReporte{\fontsize{16}{22}\bfseries}
-%% Letra para los encabezados de las páginas en el modo reporte.
-\LetraEncReporte{\fontsize{12}{12}\slshape}
+%% Letra para las cabeceras de las páginas en el modo reporte.
+\LetraInfoPagina{\fontsize{12}{12}\slshape}
%% Letra para el reporte.
\LetraReporte{\fontsize{12}{20}}
@@ -209,13 +221,13 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\if@unafirma
\else
\parbox{\@TamLineaFirmas}{%
- \rule{\@TamLineaFirmas}{\@EspesorLineaFirmas}
- \centering \@@Conforme}%
+ \rule{\@TamLineaFirmas}{\@GrosorLineaFirmas}
+ \centering \ifdefvoid{\@Conforme}{\@@Conforme}{\@Conforme}}%
\fi
\hfill
\parbox{\@TamLineaFirmas}{%
- \rule{\@TamLineaFirmas}{\@EspesorLineaFirmas}
- \centering \@Emisor}}
+ \rule{\@TamLineaFirmas}{\@GrosorLineaFirmas}
+ \centering \ifdefvoid{\@Emisor}{\if@cotizacion \@@Emisor \else \@@Pagado \fi}{\@Emisor}}}
\newcommand{\@EstiloCondiciones}{\@LetraCondiciones \@Condiciones}
@@ -234,37 +246,37 @@ Archivo valores iniciales y condiciones de borde para factura.cls
\newcommand{\@EstiloFecha}{\@LetraFecha\@@Fecha{\ttfamily\ \@Fecha}}
-\newcommand{\@EstiloPagNoTitulo}{\@LetraEncReporte Reporte correspondiente a la factura n\'umero \@Num \space de fecha \@Fecha}
+\newcommand{\@InfoPaginaNoTitulo}{\@LetraInfoPagina Reporte correspondiente a la factura n\'umero \@Num \space de fecha \@Fecha}
-\newcommand{\@EstiloPagTitulo}{\@LetraEncReporte \@TituloReporte \space - \@Proveedor \space - \@Fecha}
+\newcommand{\@InfoPaginaTitulo}{\@LetraInfoPagina \@TituloReporte \space - \@Proveedor \space - \@Fecha}
-%% Estilos de página: normal, sólo encabezados, sólo piés de página y sólo número de página al pié.
+%% Estilos de página: normal, sólo cabeceras, sólo piés de página y sólo número de página al pié.
\fancypagestyle{plain}{%
\expandafter\ps@fancy
\fancyhf{}%
\renewcommand{\headrule}{\headrulebak}%
- \fancyhead[LEO]{\@EstiloPag}%
+ \fancyhead[LEO]{\@InfoPagina}%
\fancyfoot[C]{\thepage}}
-\fancypagestyle{soloenc}{%
+\fancypagestyle{soloarriba}{%
\expandafter\ps@fancy
\fancyhf{}%
\renewcommand{\headrule}{\headrulebak}%
- \fancyhead[LO]{\@EstiloPag}%
+ \fancyhead[LO]{\@InfoPagina}%
\fancyhead[RO]{\thepage}%
\if@twoside
\fancyhead[LE]{\thepage}%
- \fancyhead[RE]{\@EstiloPag}%
+ \fancyhead[RE]{\@InfoPagina}%
\fi}
-\fancypagestyle{solopie}{%
+\fancypagestyle{soloabajo}{%
\expandafter\ps@fancy
\fancyhf{}%
\renewcommand{\headrule}{}%
- \fancyfoot[LO]{\@EstiloPag}%
+ \fancyfoot[LO]{\@InfoPagina}%
\fancyfoot[RO]{\thepage}%
\if@twoside
- \fancyfoot[RE]{\@EstiloPag}%
+ \fancyfoot[RE]{\@InfoPagina}%
\fancyfoot[LE]{\thepage}%
\fi}