diff options
author | Karl Berry <karl@freefriends.org> | 2019-08-17 21:50:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-08-17 21:50:51 +0000 |
commit | 0e6e40151d7ac2a51ec47a632924e9876f390661 (patch) | |
tree | 28ccb854f9f0915b1bc77d271cedaf2b190dfb16 /Master/texmf-dist/tex | |
parent | 75ea8af969ed61b1f317bf97428d4dc273364b7e (diff) |
factura (17aug19)
git-svn-id: svn://tug.org/texlive/trunk@51895 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/factura/factura.cls | 382 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/factura/factura.def | 67 |
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 |