summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/factura
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-08-17 21:50:51 +0000
committerKarl Berry <karl@freefriends.org>2019-08-17 21:50:51 +0000
commit0e6e40151d7ac2a51ec47a632924e9876f390661 (patch)
tree28ccb854f9f0915b1bc77d271cedaf2b190dfb16 /Master/texmf-dist/tex/latex/factura
parent75ea8af969ed61b1f317bf97428d4dc273364b7e (diff)
factura (17aug19)
git-svn-id: svn://tug.org/texlive/trunk@51895 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/factura')
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.cls382
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.def67
2 files changed, 249 insertions, 200 deletions
diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls
index 40acc98cbd1..c4260d9ea71 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 2018 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2019 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -20,7 +20,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Emilio Lazo Zaia.
+%% The Current Maintainer of this work is Emilio Augusto Lazo Zaia.
%%
%% This work consists of the files README and factura.dtx
%% with its derived files factura.ins, factura.cls, factura.def,
@@ -37,7 +37,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{factura}
-[2018/08/02 v3.57
+[2019/08/16 v3.70
Clase para elaborar facturas legales
en la Repu'blica Bolivariana de Venezuela.
]
@@ -45,35 +45,36 @@ en la Repu'blica Bolivariana de Venezuela.
\RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios y para \AtEndPreamble.
%% Condicionales auxiliares que sólo pueden ser usados dentro de un grupo.
-\newbool{Electro}
+\newbool{DCU}
+\newbool{DUC}
\newbool{Descuentos}
+%% (quitado por no vigente)
+ % \newbool{Electro}
+\newbool{ExpAbajo}\booltrue{ExpAbajo}
\newbool{IVA}
-\newbool{Subtotal}
+\newbool{NumItem}
+\newbool{PrimeroDescripcion}
\newbool{SinCantidad}
-\newbool{SinLineasVertInt}
-\newbool{SinLineasVertExt}
\newbool{SinLineaHoriNI}
\newbool{SinLineaHoriTit}
\newbool{SinLineaHoriTot}
\newbool{SinLineasHoriExt}
-\newbool{DCU}
-\newbool{DUC}
-\newbool{NumItem}
-\newbool{PrimeroDescripcion}
-\newbool{ExpAbajo}\booltrue{ExpAbajo}
+\newbool{SinLineasVertExt}
+\newbool{SinLineasVertInt}
+\newbool{Subtotal}
%% Condicionales auxiliares para la posición de los objetos fijos cuando son medidos desde la derecha, o desde abajo.
-\newbool{FechaXnegativo}
-\newbool{FechaYnegativo}
-\newbool{FechaYarriba}
-\newbool{CondYnegativo}% no hay CondXnegativo.
-\newbool{CondYarriba}
-\newbool{DenomXnegativo}
-\newbool{DenomYnegativo}
-\newbool{DenomYarriba}
+\newbool{NotaFinalYarriba}
+\newbool{NotaFinalYnegativo}% no hay NotaFinalXnegativo.
\newbool{ControlXnegativo}
-\newbool{ControlYnegativo}
\newbool{ControlYarriba}
+\newbool{ControlYnegativo}
+\newbool{DenomXnegativo}
+\newbool{DenomYarriba}
+\newbool{DenomYnegativo}
+\newbool{FechaXnegativo}
+\newbool{FechaYarriba}
+\newbool{FechaYnegativo}
\newbool{FirmasYnegativo}% no hay FirmasXnegativo; hay X_inicial y X_final para las firmas.
%% Condicionales relativos a opciones de la clase.
@@ -89,7 +90,8 @@ en la Repu'blica Bolivariana de Venezuela.
\newif\ifdescuentos
\newif\ifdosfirmas
\newif\ifduc
-\newif\ifelectro
+%% (quitado por no vigente)
+ % \newif\ifelectro
\newif\ifexpandecuadro
\newif\iffilas
\newif\ifG
@@ -114,6 +116,7 @@ en la Repu'blica Bolivariana de Venezuela.
\newif\ifsinlineasve
\newif\ifsinlineasvi
\newif\ifsinmarcas
+\newif\ifsinmonedatotales
\newif\ifsinnumero
\newif\ifsinreverso
\newif\ifsintotales
@@ -169,16 +172,16 @@ en la Repu'blica Bolivariana de Venezuela.
\newlength{\@GrosorLineaEncabezado}
\newlength{\@GrosorLineaNotaPrevia}
\newlength{\@GrosorLineaDescripcion}
-\newlength{\@GrosorLineaCondiciones}
+\newlength{\@GrosorLineaNotaFinal}
\newlength{\@GrosorLineaInfoPag}
\newlength{\@EsquinaLineaEncabezado}
\newlength{\@EsquinaLineaNotaPrevia}
\newlength{\@EsquinaLineaDescripcion}
-\newlength{\@EsquinaLineaCondiciones}
+\newlength{\@EsquinaLineaNotaFinal}
\newlength{\@SombraEncabezado}
\newlength{\@SombraNotaPrevia}
\newlength{\@SombraDescripcion}
-\newlength{\@SombraCondiciones}
+\newlength{\@SombraNotaFinal}
\newlength{\@LineaNodoXo}
\newlength{\@LineaNodoYo}
\newlength{\@LineaNodoXf}
@@ -191,18 +194,20 @@ en la Repu'blica Bolivariana de Venezuela.
\newlength{\@PosFirmasXuno}
\newlength{\@PosFirmasXdos}
\newlength{\@PosFirmasY}
-\newlength{\@PosCondicionesX}
-\newlength{\@PosCondicionesY}
+\newlength{\@PosNotaFinalXuno}
+\newlength{\@PosNotaFinalXdos}
+\newlength{\@PosNotaFinalY}
\newlength{\@PosControlX}
\newlength{\@PosControlY}
\newlength{\@EspacioVacioInicial}
\newlength{\@EspacioVacioFinal}
+\newlength{\@EspacioSignoMonetario}
\newlength{\@SeparaItemsExtra}
\newlength{\@SeparaItemsExtraFinal}
\newlength{\@SeparaInternaEncabezado}
\newlength{\@SeparaInternaNotaPrevia}
\newlength{\@SeparaInternaDescripcion}
-\newlength{\@SeparaInternaCondiciones}
+\newlength{\@SeparaInternaNotaFinal}
\newlength{\@SeparaDatosResumen}
\newlength{\@SeparaVertical}
\newlength{\@SeparaMinTotales}
@@ -231,7 +236,7 @@ en la Repu'blica Bolivariana de Venezuela.
\newbox{\@CajaFecha}
\newbox{\@CajaDenom}
\newbox{\@CajaControl}
-\newbox{\@CajaCond}
+\newbox{\@CajaNotaFinal}
\newbox{\@CajaEspacioVacio}
\newbox{\@CajaPrueba}
\newbox{\@CajaCaracterCR}
@@ -261,7 +266,7 @@ en la Repu'blica Bolivariana de Venezuela.
\DeclareOption{descuentos}{\descuentostrue}% Para los descuentos individuales.
\DeclareOption{dosfirmas}{\dosfirmastrue}% Pone las dos firmas para firmar.
\DeclareOption{duc}{\ductrue}% Descripción, luego precio unitario y luego cantidad.
-\DeclareOption{electro}{\electrotrue}% Parche por el Decreto 3085 de Nikolài.
+\DeclareOption{electro}{\CLASSERROR{Ya no esta' vigente el descuento en la ali'cuota general por pagos electro'nicos}}% Parche por el Decreto 3.085 de Nikolái, ya no vigente.
\DeclareOption{expandecuadro}{\expandecuadrotrue}% Para rellenar con líneas en blanco de manera automática.
\DeclareOption{filas}{\filastrue}% Estilo de totalización en filas.
\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.
@@ -286,6 +291,7 @@ en la Repu'blica Bolivariana de Venezuela.
\DeclareOption{sinlineasvi}{\sinlineasvitrue}% Estilo 'sinlineasvi'.
\DeclareOption{sinlineasv}{\sinlineasvtrue}% Estilo 'sinlineasv'.
\DeclareOption{sinmarcas}{\sinmarcastrue}% Para evitar que aparezcan los caracteres especiales cuando la descripción es larga.
+\DeclareOption{sinmonedatotales}{\sinmonedatotalestrue}% Para que no ponga el signo monetario en los totales.
\DeclareOption{sinnumero}{\sinnumerotrue}% Escribir el texto de la denominación del documento pero sin escribir el número.
\DeclareOption{sinreverso}{\sinreversotrue}% Para no imprimir el reverso de la factura.
\DeclareOption{sintotales}{\sintotalestrue}% No escribe los totales al final, por ejemplo para cotizaciones de productos similares.
@@ -339,24 +345,29 @@ en la Repu'blica Bolivariana de Venezuela.
\DTMfdef{ddmmyyyy}#1#2#3#4#5#6#7#8&{\DTMs{#5#6#7#8-#3#4-#1#2}}
\DTMfdef{mm-dd-yyyy}#1-#2-#3&{\DTMs{#3-#1-#2}}
-%% Macros internas para el texto de la metadata que se va a escribir con la versión de la clase.
-\def\@factura@ver{\expandafter\csname ver@factura.cls\endcsname}
-\StrBefore*{\@factura@ver}{ }[\@factura@fecha]
-\StrBetween*[1,2]{\@factura@ver}{ }{ }[\@factura@vernum]
-\def\@factura@version{Hecho con la clase factura-\@factura@vernum\ (\@factura@fecha)}
+%% Macros internas para el texto de la metadata que se va a escribir con el número de la versión de la clase.
+\edef\@factura@ver{\expandafter\csname ver@factura.cls\endcsname}
+\ExplSyntaxOn
+ \seq_set_split:NnV \l_tmpa_seq {~} {\@factura@ver}
+ \tl_set:Nx \@factura@vernum {\seq_item:Nn \l_tmpa_seq {2}}
+
+ \seq_set_split:NnV \l_tmpa_seq {~} {\@factura@ver}
+ \tl_set:Nx \@factura@fecha {\seq_item:Nn \l_tmpa_seq {1}}
+\ExplSyntaxOff
+\def\@factura@ver{Hecho con la clase factura-\@factura@vernum\ (\@factura@fecha)}
%% Escribimos la versión de la clase en la metadata del PDF.
\ifxetex
- \special{pdf: docinfo << /Subject (\@factura@version) >>}
+ \special{pdf: docinfo << /Subject (\@factura@ver) >>}
\else
\ifluatex
- \pdfextension info{/Subject (\@factura@version)}
+ \pdfextension info{/Subject (\@factura@ver)}
\else
- \pdfinfo{/Subject (\@factura@version)}
+ \pdfinfo{/Subject (\@factura@ver)}
\fi
\fi
-\AtEndPreamble{
+\def\@EstableceOpciones{%
% Establecemos los parámetros y macros relativas a la fecha.
\DTMsetstyle{\@FormatoFecha}\DTMsetup{datesep=\@FechaSeparadores}\gdef\DTMinformat{\@FormatoFechaEntrada}
@@ -478,16 +489,17 @@ en la Repu'blica Bolivariana de Venezuela.
\fi
\fi
- \ifelectro
- \booltrue{Electro}
- \gdef\@NotaInterna{\@TextoDescuentoPresidencial}
- \CLASSWARNING{Ya no esta' vigente el descuento en la ali'cuota general. Aplica'ndolo igual como se pidio'}
- \CLASSWARNING{Se establecio' el texto aclaratorio del descuento presidencial como 'nota interna'}
- \iffilas
- \filasfalse
- \CLASSWARNING{La opcio'n 'electro' no es compatible con la opcio'n 'filas'. Sin efecto la opcio'n 'filas'}
- \fi
- \fi
+%% (quitado por no vigente)
+ % \ifelectro
+ % \boolfalse{Electro}
+ % \electrofalse
+ % \gdef\@NotaInterna{\@TextoDescuentoPresidencial}
+ % \CLASSWARNING{Se establecio' el texto aclaratorio del descuento presidencial como 'nota interna'}
+ % \iffilas
+ % \filasfalse
+ % \CLASSWARNING{La opcio'n 'electro' no es compatible con la opcio'n 'filas'. Sin efecto la opcio'n 'filas'}
+ % \fi
+ % \fi
\iftodosiva \@BIRtrue \@BIAtrue \@Exentotrue \Gtrue \fi
\ifsiniva\AtBeginDocument{\gdef\@ImpuestoG{0}\gdef\@ImpuestoR{0}\gdef\@ImpuestoA{0}}\fi
@@ -555,7 +567,16 @@ en la Repu'blica Bolivariana de Venezuela.
\@twosidetrue\@mparswitchtrue
\else
\@twosidefalse\@mparswitchfalse
- \fi
+ \fi}
+
+\NewDocumentCommand{\BeforeEndPreamble}{s s +m}{
+ \IfBooleanTF{#2}
+ {\gpreto{\@BeforeEndPreamble}{#3}}
+ {\IfBooleanTF{#1}{\long\gdef\@BeforeEndPreamble{#3}}{\gappto{\@BeforeEndPreamble}{#3}}}}
+
+\AtEndPreamble{
+ \@EstableceOpciones
+ \ifx\@undefined\@BeforeEndPreamble\else\@BeforeEndPreamble\@EstableceOpciones\fi
% Escribimos en el .log las opciones cargadas:
\ifagrupado \CLASSINFO{Opcio'n cargada: agrupado}\fi
@@ -570,7 +591,8 @@ en la Repu'blica Bolivariana de Venezuela.
\ifdescuentos \CLASSINFO{Opcio'n cargada: descuentos}\fi
\ifdosfirmas \CLASSINFO{Opcio'n cargada: dosfirmas}\fi
\ifduc \CLASSINFO{Opcio'n cargada: duc}\fi
- \ifelectro \CLASSINFO{Opcio'n cargada: electro}\fi
+ %% (quitado por no vigente)
+ % \ifelectro \CLASSINFO{Opcio'n cargada: electro}\fi
\ifexpandecuadro \CLASSINFO{Opcio'n cargada: expandecuadro}\fi
\iffilas \CLASSINFO{Opcio'n cargada: filas}\fi
\ifG \CLASSINFO{Opcio'n cargada: G}\fi
@@ -595,6 +617,7 @@ en la Repu'blica Bolivariana de Venezuela.
\ifsinlineasve \CLASSINFO{Opcio'n cargada: sinlineasve}\fi
\ifsinlineasvi \CLASSINFO{Opcio'n cargada: sinlineasvi}\fi
\ifsinmarcas \CLASSINFO{Opcio'n cargada: sinmarcas}\fi
+ \ifsinmonedatotales \CLASSINFO{Opcio'n cargada: sinmonedatotales}\fi
\ifsinnumero \CLASSINFO{Opcio'n cargada: sinnumero}\fi
\ifsinreverso \CLASSINFO{Opcio'n cargada: sinreverso}\fi
\ifsintotales \CLASSINFO{Opcio'n cargada: sintotales}\fi
@@ -618,7 +641,7 @@ en la Repu'blica Bolivariana de Venezuela.
%% La geometría para la factura, su reverso, y el reporte.
%% Para la factura, 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 del documento, la numeración y la fecha.
+%% Hay elementos que salen fuera de estos márgenes, como las firmas, la nota final, la numeración y la fecha.
\def\GeometriaFactura#1{\gdef\@GeometriaFactura{#1}}
\def\GeometriaReverso#1{\gdef\@GeometriaReverso{#1}}
\def\GeometriaReporte#1{\gdef\@GeometriaReporte{#1}}
@@ -637,6 +660,7 @@ en la Repu'blica Bolivariana de Venezuela.
\def\@DescuentoRnum{0}
\def\@DescuentoAnum{0}
\def\@DescuentoEnum{0}
+\FPset\PrecioUtempx{1}
%% \Fecha, \FormatoFecha, \Credito, \Moneda, \RazonSocial, \Nombre, \RIF, \CI, \Contacto, \Dirección, \Telefono, \Email, \Conforme, \Emisor, \Proveedor.
\NewDocumentCommand{\Fecha}{s m g g}{%
@@ -697,8 +721,12 @@ en la Repu'blica Bolivariana de Venezuela.
%% Información de página: cabeceras de páginas o pies de página.
\def\InfoPagina#1{\gdef\@InfoPagina{#1}}
-%% Texto que esclarece las condiciones del documento.
-\NewDocumentCommand{\Condiciones}{+m}{\gdef\@Condiciones{#1}}
+%% Texto para la nota final.
+\NewDocumentCommand{\NotaFinal}{+m}{\gdef\@NotaFinal{#1}}
+\NewDocumentCommand{\Condiciones}{+m}{\gdef\@NotaFinal{#1}\@ClassWarningCondiciones}
+
+%% Advertencia para la migración de cualquier comando para condiciones a nota final.
+\def\@ClassWarningCondiciones{\CLASSWARNING{Ya no son condiciones sino nota final, debe hacerse la migración a los nuevos comandos}}
%% Resumen opcional que va a la derecha de los datos del cliente.
\NewDocumentCommand{\Resumen}{+m}{\gdef\@Resumen{#1}}
@@ -723,26 +751,27 @@ en la Repu'blica Bolivariana de Venezuela.
\CLASSWARNING{Fecha del documento \@Fecha\space distinta de la fecha de hoy}%
\fi
+%% (quitado por no vigente)
% Establecemos el signo monetario dependiendo de la fecha de emisión de la factura, para efectos de la Reconversión Monetaria:
- \ifx\@undefined\@Moneda
- \DTMsaveddatediff{FechaEmision}{FechaBsS}{\AuxFecha}%
- \ifnum\AuxFecha<0%
- \Moneda{\@MonedaBs}%
- \LetraNotaInterna{\fontsize{14}{18}}%
- \NotaInterna{\FPupn\TotalBsS{\Total{} 100000 div \@DigitosMoneda{} round}Según Decreto Presidencial 3.548, el total en Bolívares Soberanos es de {\bfseries \@MonedaBsS~\numprint{\TotalBsS}}}%
- \CLASSWARNING{Se establecio' el texto aclaratorio sobre el total en Boli'vares Soberanos como una nota interna}%
- \else
- \DTMsaveddatediff{FechaEmision}{FechaBs}{\AuxFecha}%
- \ifnum\AuxFecha>-1%
- \Moneda{\@MonedaBs}%
- \else
- \Moneda{\@MonedaBsS}%
- \LetraNotaInterna{\fontsize{14}{18}}%
- \NotaInterna{\FPupn\TotalBsF{\Total{} 100000 * \@DigitosMoneda{} round}El total en Bolívares Fuertes es de {\bfseries \@MonedaBsF~\numprint{\TotalBsF}}}%
- \CLASSWARNING{Se establecio' el texto aclaratorio sobre el total en Boli'vares Fuertes como una nota interna}%
- \fi
- \fi
- \fi
+ % \ifx\@undefined\@Moneda
+ % \DTMsaveddatediff{FechaEmision}{FechaBsS}{\AuxFecha}%
+ % \ifnum\AuxFecha<0%
+ % \Moneda{\@MonedaBs}%
+ % \LetraNotaInterna{\fontsize{14}{18}}%
+ % \NotaInterna{\FPupn\TotalBsS{\Total{} 100000 div \@DigitosMoneda{} round}Según Decreto Presidencial 3.548, el total en Bolívares Soberanos es de {\bfseries \@MonedaBsS~\numprint{\TotalBsS}}}%
+ % \CLASSWARNING{Se establecio' el texto aclaratorio sobre el total en Boli'vares Soberanos como una nota interna}%
+ % \else
+ % \DTMsaveddatediff{FechaEmision}{FechaBs}{\AuxFecha}%
+ % \ifnum\AuxFecha>-1%
+ % \Moneda{\@MonedaBs}%
+ % \else
+ % \Moneda{\@MonedaBsS}%
+ % \LetraNotaInterna{\fontsize{14}{18}}%
+ % \NotaInterna{\FPupn\TotalBsF{\Total{} 100000 * \@DigitosMoneda{} round}El total en Bolívares Fuertes es de {\bfseries \@MonedaBsF~\numprint{\TotalBsF}}}%
+ % \CLASSWARNING{Se establecio' el texto aclaratorio sobre el total en Boli'vares Fuertes como una nota interna}%
+ % \fi
+ % \fi
+ % \fi
% Efectuamos distintos chequeos para dar errores o advertencias si faltó algo.
\ifdefvoid{\@RazonSocial}{\CLASSERROR{Hay que definir la razo'n social}}{}%
@@ -760,7 +789,7 @@ en la Repu'blica Bolivariana de Venezuela.
\ifdefvoid{\@Direccion}{\CLASSERROR{Hay que definir la direccio'n fiscal}}{}%
\ifdefvoid{\@Telefono}{\CLASSWARNING{Pudiera definirse un nu'mero telefo'nico}}{}%
\ifdefvoid{\@Email}{\CLASSWARNING{Pudiera definirse una direccio'n de correo electro'nico}}{}%
- \ifdefvoid{\@Condiciones}{\CLASSWARNING{Pudieran definirse las condiciones del documento}}{}%
+ \ifdefvoid{\@NotaFinal}{\CLASSWARNING{Pudiera definirse una nota final}}{}%
\ifcotizacion
\ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opcio'n para cotizacion se recomienda agregar el fondo}}{}%
\fi
@@ -824,55 +853,49 @@ en la Repu'blica Bolivariana de Venezuela.
\def\Num{\@Num}%
\def\NumSerieControl{\@NumSerieControl}%
\def\NumControl{\@NumControl}%
- \def\Condiciones{\@Condiciones}%
+ \def\NotaFinal{\@NotaFinal}%
\def\Resumen{\@Resumen}%
\def\NotaPrevia{\@NotaPrevia}%
\def\NotaInterna{\@NotaInterna}%
\def\NotaExterna{\@NotaExterna}%
\def\TituloReporte{\@TituloReporte}}
-%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) condiciones, iv) número de control, v) firmas.
+%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) nota final, iv) número de control, v) firmas.
\NewDocumentCommand{\PosFecha}{s m m}{
+ \setlength{\@PosFechaX}{#2}
+ \setlength{\@PosFechaY}{#3}
\IfBooleanTF{#1}{\booltrue{FechaYarriba}}{\boolfalse{FechaYarriba}}
- \IfBeginWith{#2}{-}
- {\StrBehind{#2}{-}[\templeng]\setlength{\@PosFechaX}{-\templeng}\booltrue{FechaXnegativo}}
- {\boolfalse{FechaXnegativo}\setlength{\@PosFechaX}{#2}}
- \IfBeginWith{#3}{-}
- {\StrBehind{#3}{-}[\templeng]\setlength{\@PosFechaY}{-\templeng}\booltrue{FechaYnegativo}}
- {\boolfalse{FechaYnegativo}\setlength{\@PosFechaY}{#3}}}
+ \IfBeginWith{#2}{-}{\booltrue{FechaXnegativo}}{\boolfalse{FechaXnegativo}}
+ \IfBeginWith{#3}{-}{\booltrue{FechaYnegativo}}{\boolfalse{FechaYnegativo}}}
\NewDocumentCommand{\PosDenom}{s m m}{
+ \setlength{\@PosDenomX}{#2}
+ \setlength{\@PosDenomY}{#3}
\IfBooleanTF{#1}{\booltrue{DenomYarriba}}{\boolfalse{DenomYarriba}}
- \IfBeginWith{#2}{-}
- {\StrBehind{#2}{-}[\templeng]\setlength{\@PosDenomX}{-\templeng}\booltrue{DenomXnegativo}}
- {\boolfalse{DenomXnegativo}\setlength{\@PosDenomX}{#2}}
- \IfBeginWith{#3}{-}
- {\StrBehind{#3}{-}[\templeng]\setlength{\@PosDenomY}{-\templeng}\booltrue{DenomYnegativo}}
- {\boolfalse{DenomYnegativo}\setlength{\@PosDenomY}{#3}}}
+ \IfBeginWith{#2}{-}{\booltrue{DenomXnegativo}}{\boolfalse{DenomXnegativo}}
+ \IfBeginWith{#3}{-}{\booltrue{DenomYnegativo}}{\boolfalse{DenomYnegativo}}}
\NewDocumentCommand{\PosControl}{s m m}{
+ \setlength{\@PosControlX}{#2}
+ \setlength{\@PosControlY}{#3}
\IfBooleanTF{#1}{\booltrue{ControlYarriba}}{\boolfalse{ControlYarriba}}
- \IfBeginWith{#2}{-}
- {\StrBehind{#2}{-}[\templeng]\setlength{\@PosControlX}{-\templeng}\booltrue{ControlXnegativo}}
- {\boolfalse{ControlXnegativo}\setlength{\@PosControlX}{#2}}
- \IfBeginWith{#3}{-}
- {\StrBehind{#3}{-}[\templeng]\setlength{\@PosControlY}{-\templeng}\booltrue{ControlYnegativo}}
- {\boolfalse{ControlYnegativo}\setlength{\@PosControlY}{#3}}}
-
-\NewDocumentCommand{\PosCondiciones}{s m m}{
- \IfBooleanTF{#1}{\booltrue{CondYarriba}}{\boolfalse{CondYarriba}}
- \setlength{\@PosCondicionesX}{#2}%
- \IfBeginWith{#3}{-}
- {\StrBehind{#3}{-}[\templeng]\setlength{\@PosCondicionesY}{-\templeng}\booltrue{CondYnegativo}}
- {\boolfalse{CondYnegativo}\setlength{\@PosCondicionesY}{#3}}}
-%% 'X' no acepta valores negativos en \PosCondiciones.
+ \IfBeginWith{#2}{-}{\booltrue{ControlXnegativo}}{\boolfalse{ControlXnegativo}}
+ \IfBeginWith{#3}{-}{\booltrue{ControlYnegativo}}{\boolfalse{ControlYnegativo}}}
+
+\NewDocumentCommand{\PosNotaFinal}{s m m m}{
+ \setlength{\@PosNotaFinalXuno}{#2}
+ \setlength{\@PosNotaFinalXdos}{#3}
+ \setlength{\@PosNotaFinalY}{#4}
+ \IfBooleanTF{#1}{\booltrue{NotaFinalYarriba}}{\boolfalse{NotaFinalYarriba}}
+ \IfBeginWith{#4}{-}{\booltrue{NotaFinalYnegativo}}{\boolfalse{NotaFinalYnegativo}}}
+\let\PosCondiciones\PosNotaFinal
+%% La nota final se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
\NewDocumentCommand{\PosFirmas}{m m m}{
\setlength{\@PosFirmasXuno}{#1}
\setlength{\@PosFirmasXdos}{#2}
- \IfBeginWith{#3}{-}
- {\StrBehind{#3}{-}[\templeng]\setlength{\@PosFirmasY}{-\templeng}\booltrue{FirmasYnegativo}}
- {\boolfalse{FirmasYnegativo}\setlength{\@PosFirmasY}{#3}}}
+ \setlength{\@PosFirmasY}{#3}
+ \IfBeginWith{#3}{-}{\booltrue{FirmasYnegativo}}{\boolfalse{FirmasYnegativo}}}
%% La firma se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
%% Tamaño y grosor de la línea de las firmas.
@@ -901,7 +924,8 @@ en la Repu'blica Bolivariana de Venezuela.
%% Separación interna entre la línea y el texto de la descripción.
\def\SepDescripcion#1{\setlength{\@SeparaInternaDescripcion}{#1}}
-\def\SepCondiciones#1{\setlength{\@SeparaInternaCondiciones}{#1}}
+\def\SepNotaFinal#1{\setlength{\@SeparaInternaNotaFinal}{#1}}
+\let\SepCondiciones\SepNotaFinal
%% Grosor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
@@ -924,12 +948,13 @@ en la Repu'blica Bolivariana de Venezuela.
\IfValueT{#2}{\setlength{\@EsquinaLineaDescripcion}{#2}}
\IfValueT{#3}{\setlength{\@SombraDescripcion}{#3}}}
-%% Grosor de la línea de las condiciones, curvatura de la esquina y sombra.
+%% Grosor de la línea de la nota final, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
-\NewDocumentCommand{\LineaCondiciones}{m g g}{
- \setlength{\@GrosorLineaCondiciones}{#1}
- \IfValueT{#2}{\setlength{\@EsquinaLineaCondiciones}{#2}}
- \IfValueT{#3}{\setlength{\@SombraCondiciones}{#3}}}
+\NewDocumentCommand{\LineaNotaFinal}{m g g}{
+ \setlength{\@GrosorLineaNotaFinal}{#1}
+ \IfValueT{#2}{\setlength{\@EsquinaLineaNotaFinal}{#2}}
+ \IfValueT{#3}{\setlength{\@SombraNotaFinal}{#3}}}
+\let\LineaCondiciones\LineaNotaFinal
%% 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}}
@@ -983,8 +1008,9 @@ en la Repu'blica Bolivariana de Venezuela.
%% Tipo de letra para la nota previa.
\def\LetraNotaPrevia#1{\gdef\@LetraNotaPrevia{#1\selectfont}}
-%% Tipo de letra para las condiciones del documento.
-\def\LetraCondiciones#1{\gdef\@LetraCondiciones{#1\selectfont}}
+%% Tipo de letra para la nota final.
+\def\LetraNotaFinal#1{\gdef\@LetraNotaFinal{#1\selectfont}}
+\let\LetraCondiciones\LetraNotaFinal
%% Letra para la denominación del documento ('FACTURA', 'COTIZACIÓN',...).
\def\LetraDenom#1{\gdef\@LetraDenom{#1\selectfont}}
@@ -1271,7 +1297,8 @@ en la Repu'blica Bolivariana de Venezuela.
\if@BIR\@EscribeTotalColAlicuota{R}\fi
\@EscribeTotalColAlicuota{G}%
\if@BIA\@EscribeTotalColAlicuota{A}\fi
- \ifbool{Electro}{\@EscribeTotalColAlicuotaGDesc}{}%
+ %% (quitado por no vigente)
+ % \ifbool{Electro}{\@EscribeTotalColAlicuotaGDesc}{}%
\fi}
\newcommand{\@EscribeTotalColBI}[1]{%
@@ -1280,24 +1307,25 @@ en la Repu'blica Bolivariana de Venezuela.
\else
\ifG\ \hfill(\csname @Alicuota#1porc\endcsname\%)\else\mbox{}\fi
\fi
- & \@LetraNumTotales\numprint{\csname BI#1\endcsname} \\}
+ & \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname BI#1\endcsname} \\}
\newcommand{\@EscribeTotalColAlicuota}[1]{%
{\@LetraTitTotales \csname @@Alicuota#1\endcsname\ \hfill (\csname @Alicuota#1porc\endcsname\%)}
- & \@LetraNumTotales\numprint{\csname Alicuota#1\endcsname} \\}
+ & \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname Alicuota#1\endcsname} \\}
-\newcommand{\@EscribeTotalColAlicuotaGDesc}{%
- {\@LetraTitTotales \@@AlicuotaGDesc\ \hfill (\@AlicuotaGDescPorc\%)}
- & \@LetraNumTotales\numprint{\AlicuotaGDesc} \\}
+%% (quitado por no vigente)
+ % \newcommand{\@EscribeTotalColAlicuotaGDesc}{%
+ % {\@LetraTitTotales \@@AlicuotaGDesc\ \hfill (\@AlicuotaGDescPorc\%)}
+ % & \@LetraNumTotales\@SignoMonetarioAux\numprint{\AlicuotaGDesc} \\}
\newcommand{\@EscribeTotalColSubt}[1]{%
{\@LetraTitTotales \csname @@Subtotal#1\endcsname}
- & \@LetraNumTotales\numprint{\csname Subt#1\endcsname} \\}
+ & \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname Subt#1\endcsname} \\}
\newcommand{\@EscribeTotalColDesc}[1]{%
{\@LetraTitTotales \csname @@Descuento#1\endcsname
\csname if@Desc#1num\endcsname \else \ \hfill (\csname @Descuento#1porc\endcsname\%)\fi}
- & \@LetraNumTotales\numprint{\csname Desc#1\endcsname} \\}
+ & \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname Desc#1\endcsname} \\}
%% Presentación de los totales en modo filas.
\newcommand{\@EscribeTotalFilasBI}[1]{%
@@ -1306,14 +1334,16 @@ en la Repu'blica Bolivariana de Venezuela.
\newcommand{\@EscribeTotalFilasAlicuota}[1]{%
\@EscribeTotalFilasAlicuotaizq{#1}: & \@EscribeTotalFilasAlicuotader{#1}}
-\newcommand{\@EscribeTotalFilasDesc}[1]{%
- \@EscribeTotalFilasDescizq{#1}: & \@EscribeTotalFilasDescder{#1}}
+%% (no implementado)
+ % \newcommand{\@EscribeTotalFilasDesc}[1]{%
+ % \@EscribeTotalFilasDescizq{#1}: & \@EscribeTotalFilasDescder{#1}}
\newcommand{\@EscribeTotalFilasSoloBI}[1]{%
{\@LetraTitTotales\@EscribeTotalFilasBIizq{#1}:} {\@LetraNumTotales\@EscribeTotalFilasBIder{#1}}}
-\newcommand{\@EscribeTotalFilasSoloDesc}[1]{%
- {\@LetraTitTotales\@EscribeTotalFilasDescizq{#1}:} {\@LetraNumTotales\@EscribeTotalFilasDescder{#1}}}
+%% (no implementado)
+ % \newcommand{\@EscribeTotalFilasSoloDesc}[1]{%
+ % {\@LetraTitTotales\@EscribeTotalFilasDescizq{#1}:} {\@LetraNumTotales\@EscribeTotalFilasDescder{#1}}}
\newcommand{\@EscribeTotalFilasSoloAlicuota}[1]{%
{\@LetraTitTotales\@EscribeTotalFilasAlicuotaizq{#1}:} {\@LetraNumTotales\@EscribeTotalFilasAlicuotader{#1}}}
@@ -1330,24 +1360,25 @@ en la Repu'blica Bolivariana de Venezuela.
\fi}
\newcommand{\@EscribeTotalFilasBIder}[1]{%
- \@LetraNumTotales\numprint{\csname BI#1\endcsname}}
+ \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname BI#1\endcsname}}
\newcommand{\@EscribeTotalFilasAlicuotaizq}[1]{%
\@LetraTitTotales\csname @@Alicuota#1\endcsname \ (\csname @Alicuota#1porc\endcsname\%)}
\newcommand{\@EscribeTotalFilasAlicuotader}[1]{%
- \@LetraNumTotales\numprint{\csname Alicuota#1\endcsname}}
+ \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname Alicuota#1\endcsname}}
-\newcommand{\@EscribeTotalFilasDescizq}[1]{%
- \@LetraTitTotales\csname @@Descuento#1\endcsname \ (\csname @Descuento#1porc\endcsname\%)}
+%% (no implementado)
+ % \newcommand{\@EscribeTotalFilasDescizq}[1]{%
+ % \@LetraTitTotales\csname @@Descuento#1\endcsname \ (\csname @Descuento#1porc\endcsname\%)}
-\newcommand{\@EscribeTotalFilasDescder}[1]{%
- \@LetraNumTotales\numprint{\csname Desc#1\endcsname}}
+ % \newcommand{\@EscribeTotalFilasDescder}[1]{%
+ % \@LetraNumTotales\@SignoMonetarioAux\numprint{\csname Desc#1\endcsname}}
-\newcommand{\@EscribeTotalFilasAuxTotal}{\@LetraTitTotal\@@Total: & \@LetraNumTotal\numprint{\Total}}
+\newcommand{\@EscribeTotalFilasAuxTotal}{\@LetraTitTotal\@@Total: & \@LetraNumTotal\@SignoMonetarioAux\numprint{\Total}}
\newcommand{\@EscribeTotalFilas}[2][]{%
- \begin{tabular}[b]{@{}l@{\extracolsep{1ex}}r@{}}% ¡Esta tabla tiene que abrir hacia abajo para que la separación entre las filas se
+ \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!
\csname @EscribeTotalFilasBI\endcsname{#2}%
\ifx#2E%
\ifx#1T%
@@ -1360,6 +1391,10 @@ en la Repu'blica Bolivariana de Venezuela.
\fi
\end{tabular}}
+%% Comando auxiliar para escribir el signo monetario cuando aplica
+\newcommand{\@SignoMonetarioAux}{%
+ \ifsinmonedatotales\else\@Moneda\hspace*{\@EspacioSignoMonetario}\fi}
+
\newcommand{\@GeneraCajasTotalesFilas}{%
\if@Exento
\newbox{\@CajaBIE}\newbox{\@CajaBIET}%
@@ -1438,7 +1473,8 @@ en la Repu'blica Bolivariana de Venezuela.
\FPset\DescA{0}\global\let\DescA\DescA
\FPset\DescX{0}\global\let\DescX\DescX
\FPset\AlicuotaG{0}\global\let\AlicuotaG\AlicuotaG
- \FPset\AlicuotaGDesc{0}\global\let\AlicuotaGDesc\AlicuotaGDesc
+ %% (quitado por no vigente)
+ % \FPset\AlicuotaGDesc{0}\global\let\AlicuotaGDesc\AlicuotaGDesc
\FPset\AlicuotaR{0}\global\let\AlicuotaR\AlicuotaR
\FPset\AlicuotaA{0}\global\let\AlicuotaA\AlicuotaA}
@@ -1448,18 +1484,20 @@ en la Repu'blica Bolivariana de Venezuela.
\FPifeq\SubtR{0}\else\@CalculaTotalesII{R}\fi
\FPifeq\SubtA{0}\else\@CalculaTotalesII{A}\fi
\FPifeq\SubtE{0}\else\@CalculaTotalesII{E}\fi
- \ifbool{Electro}{%
- \FPiflt\BIG\@AlicuotaGDescLimite
- \let\@AlicuotaGDesc\@AlicuotaGDescBajo
- \else
- \let\@AlicuotaGDesc\@AlicuotaGDescAlto
- \fi
- \FPupn\@AlicuotaGDescPorc{\@AlicuotaGDesc{} 100 * \@DigitosPorc{} round clip}%
- \FPupn\AlicuotaGDesc{\BIG{} \@AlicuotaGDesc{} * \@DigitosMoneda{} round}%
- \global\let\AlicuotaGDesc\AlicuotaGDesc
- \global\let\@AlicuotaGDescPorc\@AlicuotaGDescPorc
- \global\let\@AlicuotaGDesc\@AlicuotaGDesc}{}%
- \FPupn\Total{\BIE{} \BIR{} + \BIG{} + \BIA{} + \AlicuotaR{} + \AlicuotaG{} + \AlicuotaA{} + \AlicuotaGDesc{} sub \@DigitosMoneda{} round}%
+ %% (quitado por no vigente)
+ % \ifbool{Electro}{%
+ % \FPiflt\BIG\@AlicuotaGDescLimite
+ % \let\@AlicuotaGDesc\@AlicuotaGDescBajo
+ % \else
+ % \let\@AlicuotaGDesc\@AlicuotaGDescAlto
+ % \fi
+ % \FPupn\@AlicuotaGDescPorc{\@AlicuotaGDesc{} 100 * \@DigitosPorc{} round clip}%
+ % \FPupn\AlicuotaGDesc{\BIG{} \@AlicuotaGDesc{} * \@DigitosMoneda{} round}%
+ % \global\let\AlicuotaGDesc\AlicuotaGDesc
+ % \global\let\@AlicuotaGDescPorc\@AlicuotaGDescPorc
+ % \global\let\@AlicuotaGDesc\@AlicuotaGDesc}{}%
+ \FPupn\Total{\BIE{} \BIR{} + \BIG{} + \BIA{} + \AlicuotaR{} + \AlicuotaG{} + \AlicuotaA{} + \@DigitosMoneda{} round}%
+ %% (quitado por no vigente) arriba se sumaba también \AlicuotaGDesc{}.
\global\let\Total\Total}
\newcommand{\@CalculaTotalesII}[1]{%
@@ -1520,9 +1558,12 @@ en la Repu'blica Bolivariana de Venezuela.
%% Aquí tenemos que hacer coincidir los parámetros de \@CalculaItem con los de \@ITEM para poder hacer
%% \let\@CalculaItem\@ITEM cuando no hay factura sino solamente reporte.
\NewDocumentCommand{\@CalculaItem}{m m m o m m +o}{%
+ \gdef\@PrecioUtemp##1{\FPupn\PrecioUtemp{##1 \PrecioUtempx{} * clip}}%
\addtocounter{NumItem}{1}%
% Calculamos.
- \FPupn\PrecioU{#5 \@DigitosMoneda{} round}%
+ \@PrecioUtemp{#5}%
+ \FPupn\PrecioU{\PrecioUtemp{} \@DigitosMoneda{} round}%
+ \FPifeq\PrecioU{\PrecioUtemp}\else\CLASSWARNING{Se esta' introduciendo un precio con ma's de dos decimales: (#3 - \PrecioUtemp. Redondeado a \PrecioU)}{}\fi% Advertimos cuando el precio unitario tiene más de dos decimales.
\ifbool{Descuentos}
{\ifx\\#6\\\FPset\Dcto{0}\else\FPupn\Dcto{#6 \@DigitosPorc{} round clip}\fi}% Fijamos en 0 el descuento si no se especifica en \Item***.
{\FPset\Dcto{#6}%
@@ -1694,7 +1735,6 @@ en la Repu'blica Bolivariana de Venezuela.
{\@DescripcionAuxCmd{##3}{##1}}% cdu.
&
% Cuarto campo: Acá puede ir el precio unitario (cdu y dcu) o la cantidad (duc).
- \FPifeq\PrecioU{##5}\else\CLASSWARNING{Se esta' introduciendo un precio con ma's de dos decimales: (##3 - ##5. Redondeado a \PrecioU)}{}\fi% Advertimos cuando el precio unitario tiene más de dos decimales.
\ifbool{SinCantidad}{}{%
\ifduc
\David@XRight{\@CantidadAuxCmd{\mbox{}\hfill \@LetraNumeros \numprint{##2}\hfill\mbox{}}}% duc.
@@ -1859,11 +1899,12 @@ en la Repu'blica Bolivariana de Venezuela.
\if@Exento \@EscribeTotalCol{E}\fi
\if@BIR\@EscribeTotalCol{R}\ifsinivaexpresado\else\@EscribeTotalColAlicuota{R}\fi\fi
\@EscribeTotalCol{G}\ifsinivaexpresado\else\@EscribeTotalColAlicuota{G}\fi
- \ifbool{Electro}{\@EscribeTotalColAlicuotaGDesc}{}%
+ %% (quitado por no vigente)
+ % \ifbool{Electro}{\@EscribeTotalColAlicuotaGDesc}{}%
\if@BIA\@EscribeTotalCol{A}\ifsinivaexpresado\else\@EscribeTotalColAlicuota{A}\fi\fi
\fi
\ifsinivaexpresado\else\cline{2-2}\fi
- \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\
+ \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\@SignoMonetarioAux\numprint{\Total}\\
\end{tabular}\endgroup
\\
\ifdefvoid{\@NotaInterna}{}{\ifbool{SinLineaHoriNI}{}{\hline}\@ColumnasMultiColumnNotaIntAuxCmd}%
@@ -1881,7 +1922,7 @@ en la Repu'blica Bolivariana de Venezuela.
\ifexpandecuadro\else\vfill\fi
\@GeneraCajasTotalesFilas
\newbox{\@CajaTotal}%
- \savebox{\@CajaTotal}{{\@LetraTitTotal\@@Total}: \@LetraNumTotal\numprint{\Total}}%
+ \savebox{\@CajaTotal}{{\@LetraTitTotal\@@Total:} \@LetraNumTotal\@SignoMonetarioAux\numprint{\Total}}%
%
\ifnum \value{@IVANoGeneral}=0%
\newbox{\@CajaGET}%
@@ -2012,7 +2053,7 @@ en la Repu'blica Bolivariana de Venezuela.
\addtolength{\@PosFechaX}{\oddsidemargin+1in}% Le sumamos el margen izquierdo a las posiciones de las cosas; es importante que se haga en un \AfterEndPreamble antes de que empiecen a escribirse otras cosas en la página.
\addtolength{\@PosDenomX}{\oddsidemargin+1in}%
\addtolength{\@PosControlX}{\oddsidemargin+1in}%
- \addtolength{\@PosCondicionesX}{\oddsidemargin+1in}%
+ \addtolength{\@PosNotaFinalXuno}{\oddsidemargin+1in}%
\addtolength{\@PosFirmasXuno}{\oddsidemargin+1in}%
\setlength{\parindent}{0pt}%
\setlength{\lineskip}{0pt}%
@@ -2028,7 +2069,7 @@ en la Repu'blica Bolivariana de Venezuela.
\ifdenom\@PosicionaDenom\fi
\ifprefactura\@PosicionaNumControl\fi
\ifnum\value{@Firmas}=0\else\@PosicionaFirmas\fi
- \ifdefvoid{\@Condiciones}{}{\@PosicionaCondiciones}}
+ \ifdefvoid{\@NotaFinal}{}{\@PosicionaNotaFinal}}
\iflinea
% Para determinar las coordenadas de la línea hay que usar \AtBeginShipoutNext porque si no se hace en el 'shipout' de la página se genera un espacio en blanco extra.
\AtBeginShipoutNext{\iflinea\@DibujaLinea\fi}
@@ -2143,14 +2184,14 @@ en la Repu'blica Bolivariana de Venezuela.
\usebox{\@CajaFirmas}%
\end{textblock*}}
-%% Comando que coloca las condiciones del documento.
-\newcommand{\@PosicionaCondiciones}{%
- \savebox{\@CajaCond}{%
- \parbox{\textwidth+\oddsidemargin+1in-\@PosCondicionesX}{\@EscribeCondiciones}}%
- \ifbool{CondYnegativo}{\addtolength{\@PosCondicionesY}{\paperheight}}{}%
- \ifbool{CondYarriba}{\addtolength{\@PosCondicionesY}{-\ht\@CajaCond-\dp\@CajaCond}}{}% Aquí la caja abre hacia abajo, a menos de que usemos \PosCondiciones*
- \begin{textblock*}{\wd\@CajaCond}(\@PosCondicionesX,\@PosCondicionesY)%
- \usebox{\@CajaCond}%
+%% Comando que coloca la nota final.
+\newcommand{\@PosicionaNotaFinal}{%
+ \savebox{\@CajaNotaFinal}{%
+ \parbox{\textwidth+\oddsidemargin+1in-\@PosNotaFinalXuno-\@PosNotaFinalXdos}{\@EscribeNotaFinal}}%
+ \ifbool{NotaFinalYnegativo}{\addtolength{\@PosNotaFinalY}{\paperheight}}{}%
+ \ifbool{NotaFinalYarriba}{\addtolength{\@PosNotaFinalY}{-\ht\@CajaNotaFinal-\dp\@CajaNotaFinal}}{}% Aquí la caja abre hacia abajo, a menos de que usemos \PosNotaFinal*
+ \begin{textblock*}{\wd\@CajaNotaFinal}(\@PosNotaFinalXuno,\@PosNotaFinalY)%
+ \usebox{\@CajaNotaFinal}%
\end{textblock*}}
%% Comando que coloca el número de control.
@@ -2255,19 +2296,19 @@ en la Repu'blica Bolivariana de Venezuela.
\par\vspace*{\@SombraNotaPrevia}\vspace*{\@SeparaVertical}%
\ifexpandecuadro\else\vfill\fi}}}
-%% Comando que coloca la caja para las condiciones, con la posibilidad de TikZ.
-\newcommand{\@EscribeCondiciones}{%
+%% Comando que coloca la caja para la nota final, con la posibilidad de TikZ.
+\newcommand{\@EscribeNotaFinal}{%
{% Abrimos un nuevo grupo para que la redefinición del entorno 'tikzpicture' sea local.
- \ifdim\@GrosorLineaCondiciones=0pt%
- \setlength{\@SeparaInternaCondiciones}{0pt}\setlength{\@EsquinaLineaCondiciones}{0pt}\setlength{\@SombraCondiciones}{0pt}%
+ \ifdim\@GrosorLineaNotaFinal=0pt%
+ \setlength{\@SeparaInternaNotaFinal}{0pt}\setlength{\@EsquinaLineaNotaFinal}{0pt}\setlength{\@SombraNotaFinal}{0pt}%
\renewenvironment{tikzpicture}{\NewDocumentCommand{\node}{o +m}{####2}}{}%
\fi
\begin{tikzpicture}%
- \expandafter\node\expandafter[\@CondicionesTIKZ]{%
- \parbox{\textwidth-\@SombraCondiciones-2\@SeparaInternaCondiciones-\@GrosorLineaCondiciones}{\@EstiloCondiciones}}%
- \ifdim\@GrosorLineaCondiciones=0pt\else ;\fi
+ \expandafter\node\expandafter[\@NotaFinalTIKZ]{%
+ \parbox{\textwidth-\@PosNotaFinalXuno-\@PosNotaFinalXdos+\oddsidemargin+1in-\@SombraNotaFinal-2\@SeparaInternaNotaFinal-\@GrosorLineaNotaFinal}{\@EstiloNotaFinal}}%
+ \ifdim\@GrosorLineaNotaFinal=0pt\else ;\fi
\end{tikzpicture}%
- \par\vspace*{\@SombraCondiciones}}}
+ \par\vspace*{\@SombraNotaFinal}}}
%% Comandos auxiliares para los datos y el resumen.
%% En el caso de los datos, la versión \@DatosAux se ejecuta cuando no hay resumen, y la versión \@DatosAux* se ejecuta cuando hay resumen.
@@ -2355,7 +2396,8 @@ en la Repu'blica Bolivariana de Venezuela.
\immediate\write\csv{Totales: \@@SubtotalG: \Moneda \SubtG^^JTotales: \@@DescuentoG: \Moneda \DescG}%
\fi
\immediate\write\csv{Totales: \@@BIG: \Moneda \BIG^^JTotales: \@@AlicuotaG: \Moneda \AlicuotaG}%
- \FPifeq\AlicuotaGDesc{0}\else\immediate\write\csv{Totales: \@@AlicuotaGDesc: \Moneda \AlicuotaGDesc}\fi
+ %% (quitado por no vigente)
+ % \FPifeq\AlicuotaGDesc{0}\else\immediate\write\csv{Totales: \@@AlicuotaGDesc: \Moneda \AlicuotaGDesc}\fi
\if@BIA
\if@DescA
\immediate\write\csv{Totales: \@@SubtotalA: \Moneda \SubtA^^JTotales: \@@DescuentoA: \Moneda \DescA}%
diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def
index d1f13736231..58f6ac61cc6 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 2018 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2019 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -20,7 +20,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Emilio Lazo Zaia.
+%% The Current Maintainer of this work is Emilio Augusto Lazo Zaia.
%%
%% This work consists of the files README and factura.dtx
%% with its derived files factura.ins, factura.cls, factura.def,
@@ -36,23 +36,24 @@
%% factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%%
\ProvidesFile{factura.def}
-[2018/08/02 v3.57
+[2019/08/16 v3.70
Archivo de valores iniciales y condiciones de borde para factura.cls
]
%% La geometría para la factura, su reverso, y el reporte.
%% Para la factura, 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 del documento, la numeración y la fecha.
+%% Hay elementos que salen fuera de estos márgenes, como las firmas, la nota final, la numeración y la fecha.
\GeometriaFactura{letterpaper,vmargin={5.2cm,5.5cm},hmargin={1cm,1cm},footskip=0pt, headsep=0pt, headheight=0pt}
\GeometriaReverso{letterpaper,vmargin={1cm,1cm}, hmargin={1cm,1cm},footskip=0cm, headsep=0pt, headheight=0pt}
\GeometriaReporte{letterpaper,vmargin={2.8cm,2.5cm},hmargin={3cm,2cm},footskip=1.2cm,headsep=0.777cm,headheight=1.5cm}
-%% Factores para los distintos IVA y el límite para el descuento:
-\def\@AlicuotaG{0.12}
-\def\@AlicuotaGDescBajo{0.03}
-\def\@AlicuotaGDescAlto{0.05}
-\def\@AlicuotaGDescLimite{2000000}
+%% Factores para los distintos IVA:
+\def\@AlicuotaG{0.16}
+%% (quitado por no vigente)
+ % \def\@AlicuotaGDescBajo{0.03}
+ % \def\@AlicuotaGDescAlto{0.05}
+ % \def\@AlicuotaGDescLimite{2000000}
\def\@AlicuotaR{0.08}
\def\@AlicuotaA{0.27}
@@ -67,13 +68,17 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\def\@FechaSeparadores{-}
%% La moneda:
-\def\@MonedaBs{Bs.}
-\def\@MonedaBsS{Bs.S}
-\def\@MonedaBsF{Bs.F}
-
+\def\@Moneda{Bs.}
+%% (quitado por no vigente)
+ % \def\@MonedaBs{Bs.}
+ % \def\@MonedaBsS{Bs.S}
+ % \def\@MonedaBsF{Bs.F}
+\setlength\@EspacioSignoMonetario{.666ex}
+
+%% (quitado por no vigente)
%% Las fechas de la entrada de la reconversión monetaria:
-\DTMsavedate{FechaBsS}{2018-08-20}
-\DTMsavedate{FechaBs}{2019-01-01}
+ % \DTMsavedate{FechaBsS}{2018-08-20}
+ % \DTMsavedate{FechaBs}{2019-02-15}
%% Al lado de cada ítem va la letra que designa el gravamen que aplica sobre él:
\def\@DenomAlicuotaG{G}
@@ -81,8 +86,9 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\def\@DenomAlicuotaA{A}
\def\@DenomAlicuotaE{(E)}
-%% El texto predeterminado para la nota interna por el descuento presidencial.
-\def\@TextoDescuentoPresidencial{Se aplica un descuento del \@AlicuotaGDescPorc\% al IVA General seg\'un Decreto Presidencial 3.085 en Gaceta Oficial 41.239.}
+%% (quitado por no vigente)
+%% Texto predeterminado para la nota interna por el descuento presidencial.
+ % \def\@TextoDescuentoPresidencial{Se aplica un descuento del \@AlicuotaGDescPorc\% al IVA General seg\'un Decreto Presidencial 3.085 en Gaceta Oficial 41.239.}
%% Macros que guardan textos que corresponden a nombres de campos:
\def\@@Fecha{Fecha de emisi\'on:}
@@ -115,7 +121,8 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\def\@@IVA{IVA}
\def\@@PrecioT{Precio T.}
\def\@@AlicuotaG{IVA G}
-\def\@@AlicuotaGDesc{Descuento IVA G}
+%% (quitado por no vigente)
+ % \def\@@AlicuotaGDesc{Descuento IVA G}
\def\@@AlicuotaR{IVA R}
\def\@@AlicuotaA{IVA A}
\def\@@BIG{BI G}
@@ -163,12 +170,12 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\setlength{\@FirmaReportePosX}{2cm}
\setlength{\@FirmaReporteExcesoLinea}{1.5cm}
-%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) condiciones, iv) número de control, v) firmas.
+%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) nota final, iv) número de control, v) firmas.
\PosFecha*{-0cm}{5cm}
\PosDenom*{0cm}{5cm}
\PosControl*{0cm}{-2.4cm}
-\PosCondiciones{0cm}{-5.3cm}
-%% 'X' no acepta valores negativos en \PosCondiciones.
+\PosNotaFinal{0cm}{0cm}{-5.3cm}
+%% La nota final se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
\PosFirmas{5cm}{1cm}{-2.4cm}
%% La firma se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)
@@ -196,7 +203,7 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
%% Separación interna entre la línea y el texto de la descripción.
\SepDescripcion{6pt}
-\SepCondiciones{5pt}
+\SepNotaFinal{5pt}
%% Grosor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
@@ -210,9 +217,9 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
\LineaDescripcion{0.4pt}{0pt}{4pt}
-%% Grosor de la línea de las condiciones, curvatura de la esquina y sombra.
+%% Grosor de la línea de la nota final, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
-\LineaCondiciones{0pt}{0pt}{0pt}
+\LineaNotaFinal{0pt}{0pt}{0pt}
%% 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*.
\InicioReporte{1.6cm}
@@ -266,8 +273,8 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
%% Tipo de letra para la nota previa.
\LetraNotaPrevia{\fontsize{11}{12.5}}
-%% Tipo de letra para las condiciones del documento.
-\LetraCondiciones{\fontsize{12}{12}}
+%% Tipo de letra para la nota final.
+\LetraNotaFinal{\fontsize{12}{12}}
%% Letra para la denominación del documento ('FACTURA', 'COTIZACIÓN',...).
\LetraDenom{\fontsize{14}{14}\bfseries}
@@ -290,7 +297,7 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
%% Letra para el reporte.
\LetraReporte{\fontsize{12}{20}}
-%% Diseño hecho en TikZ para los datos del cliente, el resumen, la nota previa, la descripción y las condiciones.
+%% Diseño hecho en TikZ para los datos del cliente, el resumen, la nota previa, la descripción y la nota final.
\def\@DatosTIKZ{%
draw=black, fill=white, inner sep=\@SeparaInternaEncabezado, line width=\@GrosorLineaEncabezado, rounded corners=\@EsquinaLineaEncabezado, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraEncabezado, shadow yshift=-\@SombraEncabezado}}
@@ -302,8 +309,8 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\def\@DescripcionTIKZ{%
draw=black, fill=white, inner sep=\@SeparaInternaDescripcion, line width=\@GrosorLineaDescripcion, rounded corners=\@EsquinaLineaDescripcion, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraDescripcion, shadow yshift=-\@SombraDescripcion}}
-\def\@CondicionesTIKZ{%
- draw=black, fill=white, inner sep=\@SeparaInternaCondiciones, line width=\@GrosorLineaCondiciones, rounded corners=\@EsquinaLineaCondiciones, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraCondiciones, shadow yshift=-\@SombraCondiciones}}
+\def\@NotaFinalTIKZ{%
+ draw=black, fill=white, inner sep=\@SeparaInternaNotaFinal, line width=\@GrosorLineaNotaFinal, rounded corners=\@EsquinaLineaNotaFinal, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraNotaFinal, shadow yshift=-\@SombraNotaFinal}}
%% El diseño de las distintas partes de la hoja.
\newcommand{\@EstiloFirmas}{
@@ -321,7 +328,7 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\newcommand{\@EstiloNotaPrevia}{\@LetraNotaPrevia \@NotaPrevia}
-\newcommand{\@EstiloCondiciones}{\@LetraCondiciones \@Condiciones}
+\newcommand{\@EstiloNotaFinal}{\@LetraNotaFinal \@NotaFinal}
\newcommand{\@EstiloNumControl}{%
\renewcommand{\baselinestretch}{0}\selectfont