From e0004046da4d90c93c3221cc8acf2aedb5035f26 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 23 May 2018 22:07:19 +0000 Subject: factura (23may18) git-svn-id: svn://tug.org/texlive/trunk@47816 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/factura/factura.cls | 353 ++++++++++++++---------- Master/texmf-dist/tex/latex/factura/factura.def | 10 +- 2 files changed, 217 insertions(+), 146 deletions(-) (limited to 'Master/texmf-dist/tex/latex/factura') diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls index 54cc1b74aa1..2cb26296417 100644 --- a/Master/texmf-dist/tex/latex/factura/factura.cls +++ b/Master/texmf-dist/tex/latex/factura/factura.cls @@ -37,9 +37,9 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{factura} -[2018/04/17 v3.47 +[2018/05/22 v3.56 Clase para elaborar facturas legales -en la República Bolivariana de Venezuela. +en la Repu'blica Bolivariana de Venezuela. ] \RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios y para \AtEndPreamble. @@ -52,7 +52,9 @@ en la República Bolivariana de Venezuela. \newbool{SinCantidad} \newbool{SinLineasVertInt} \newbool{SinLineasVertExt} -\newbool{SinLineasHoriInt} +\newbool{SinLineaHoriNI} +\newbool{SinLineaHoriTit} +\newbool{SinLineaHoriTot} \newbool{SinLineasHoriExt} \newbool{DCU} \newbool{DUC} @@ -102,6 +104,9 @@ en la República Bolivariana de Venezuela. \newif\ifsinfirmas \newif\ifsiniva \newif\ifsinivaexpresado +\newif\ifsinlineahni +\newif\ifsinlineahtit +\newif\ifsinlineahtot \newif\ifsinlineash \newif\ifsinlineashe \newif\ifsinlineashi @@ -129,9 +134,11 @@ en la República Bolivariana de Venezuela. \newif\if@FondoReporteStar \newif\if@Nombre \newif\if@PruebaRef -\newif\if@LineaCompleta -\newif\if@LineaHastaTotal +\newif\if@ExpandeCuadro \newif\if@LineaDesdeInicio +\newif\if@LineaHastaTotal +\newif\if@LineaHastaFinal +\newif\if@LineaDescripcion \newif\if@BIR \newif\if@BIA \newif\if@Exento @@ -152,6 +159,7 @@ en la República Bolivariana de Venezuela. \newlength{\@TamLineaFirmas} \newlength{\@TamNumItem} \newlength{\@TamCantidad} +\newlength{\@TamDescripcion} \newlength{\@TamPrecioU} \newlength{\@TamPrecioS} \newlength{\@TamDescuento} @@ -212,6 +220,8 @@ en la República Bolivariana de Venezuela. \newlength{\@FirmaReportePosX} \newlength{\@FirmaReporteExcesoLinea} \newlength{\@TempDimen} +\newlength{\tabcolsep@@} +\newlength{\baselineskip@@} %% Cajas para uso interno. \newbox{\@CajaDatos} @@ -257,7 +267,7 @@ en la República Bolivariana de Venezuela. \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{impdesc}{\impdesctrue}% Para el tipo de impuesto en la descripción y no en el precio unitario y total. \DeclareOption{iva}{\ivatrue}% Para la columna del IVA. -\DeclareOption{linea}{\lineatrue}% Para la línea que protege el espacio en blanco. +\DeclareOption{linea}{\lineatrue}% Para la línea que inutiliza el espacio en blanco. \DeclareOption{nospanish}{\nospanishtrue}% No carga babel en castellano ni la codificación T1 de las letras. \DeclareOption{numitem}{\numitemtrue}% Para poner una columna extra al principio con el número del ítem. \DeclareOption{prefactura}{\prefacturatrue}% La prefactura; con el diseño de la forma libre... para enviar por correo electrónico, fax o imprimir preliminarmente. @@ -266,6 +276,9 @@ en la República Bolivariana de Venezuela. \DeclareOption{sinfirmas}{\sinfirmastrue}% No agrega los espacios para firmar. \DeclareOption{sinivaexpresado}{\sinivaexpresadotrue}% Cuando no se cobra IVA y tampoco se quiere que aparezca la totalización del IVA. \DeclareOption{siniva}{\sinivatrue}% No cobra IVA. +\DeclareOption{sinlineahni}{\sinlineahnitrue}% Estilo 'sinlineahni'. +\DeclareOption{sinlineahtot}{\sinlineahtottrue}% Estilo 'sinlineahtot'. +\DeclareOption{sinlineahtit}{\sinlineahtittrue}% Estilo 'sinlineahtit'. \DeclareOption{sinlineashe}{\sinlineashetrue}% Estilo 'sinlineashe'. \DeclareOption{sinlineashi}{\sinlineashitrue}% Estilo 'sinlineashi'. \DeclareOption{sinlineash}{\sinlineashtrue}% Estilo 'sinlineash'. @@ -301,6 +314,7 @@ en la República Bolivariana de Venezuela. \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. \RequirePackage[calc]{datetime2}% Para calcular la fecha del vencimiento del crédito. +\RequirePackage{anyfontsize}% Para las tipografías en tamaños arbitrarios. \RequirePackage{ifxetex}% Para poder modificar correctamente la metadata del PDF y agregar la versión de la clase. \RequirePackage{ifluatex}% Ditto. \RequirePackage{zref-savepos}[2016/05/21]% Para guardar la posición en 'Y' expandiendo el cuadro, para la línea y para la firma en el reporte si la hubiera. @@ -361,8 +375,18 @@ en la República Bolivariana de Venezuela. \ifsinlineasv\booltrue{SinLineasVertExt}\booltrue{SinLineasVertInt}\fi \ifsinlineasvi\booltrue{SinLineasVertInt}\fi \ifsinlineasve\booltrue{SinLineasVertExt}\fi - \ifsinlineash\booltrue{SinLineasHoriExt}\booltrue{SinLineasHoriInt}\fi - \ifsinlineashi\booltrue{SinLineasHoriInt}\fi + \ifsinlineash\booltrue{SinLineasHoriExt}\booltrue{SinLineaHoriNI}\booltrue{SinLineaHoriTit}\booltrue{SinLineaHoriTot}\fi + \ifsinlineashi\booltrue{SinLineaHoriNI}\booltrue{SinLineaHoriTit}\booltrue{SinLineaHoriTot}\fi + \ifsinlineahni\booltrue{SinLineaHoriNI}\fi + \ifsinlineahtit\booltrue{SinLineaHoriTit}\fi + \ifsinlineahtot + \iffilas + \CLASSWARNING{Las opciones 'sinlineahtot' y 'filas' no son compatibles. Sin efecto opcio'n 'sinlineahtot'} + \sinlineahtotfalse + \else + \booltrue{SinLineaHoriTot} + \fi + \fi \ifsinlineashe\booltrue{SinLineasHoriExt}\fi \ifdosfirmas @@ -411,11 +435,11 @@ en la República Bolivariana de Venezuela. \booltrue{SinCantidad} \ifdcu \dcufalse\@cdutrue\boolfalse{DCU}\boolfalse{PrimeroDescripcion} - \CLASSWARNING{La opción 'sincantidad' no es compatible con 'dcu'. Sin efecto opción 'dcu'} + \CLASSWARNING{La opcio'n 'sincantidad' no es compatible con 'dcu'. Sin efecto opcio'n 'dcu'} \fi \ifduc \ducfalse\@cdutrue\boolfalse{DUC}\boolfalse{PrimeroDescripcion} - \CLASSWARNING{La opción 'sincantidad' no es compatible con 'duc'. Sin efecto opción 'duc'} + \CLASSWARNING{La opcio'n 'sincantidad' no es compatible con 'duc'. Sin efecto opcio'n 'duc'} \fi \fi \ifdescuentos\booltrue{Descuentos}\fi @@ -424,7 +448,7 @@ en la República Bolivariana de Venezuela. \ifdescuentos \booltrue{Subtotal} \else - \CLASSWARNING{La opción 'subtotal' no aplica sin descuentos individuales. Sin efecto opción 'subtotal'} + \CLASSWARNING{La opcio'n 'subtotal' no aplica sin descuentos individuales. Sin efecto opcio'n 'subtotal'} \fi \fi @@ -432,11 +456,11 @@ en la República Bolivariana de Venezuela. \ifsintotales \iffilas \filasfalse - \CLASSWARNING{La opción 'sintotales' no aplica para el modo de totalización en filas. Sin efecto opción 'filas'} + \CLASSWARNING{La opcio'n 'sintotales' no aplica para el modo de totalizacio'n en filas. Sin efecto opcio'n 'filas'} \fi \ifcotizacion \else - \CLASSWARNING{La opción 'sintotales' no debe usarse en facturas sino en cotizaciones. No es válida una factura sin totales} + \CLASSWARNING{La opcio'n 'sintotales' no debe usarse en facturas sino en cotizaciones. No es va'lida una factura sin totales} \fi \fi @@ -444,24 +468,24 @@ en la República Bolivariana de Venezuela. \iffilas \else \centradofalse - \CLASSWARNING{La opción 'centrado' no es compatible con el modo de totalización en columnas. Sin efecto opción 'centrado'} + \CLASSWARNING{La opcio'n 'centrado' no es compatible con el modo de totalizacio'n en columnas. Sin efecto opcio'n 'centrado'} \fi \fi \ifagrupado \iffilas \agrupadofalse - \CLASSWARNING{La opción 'agrupado' no es compatible con el modo de totalización en filas. Sin efecto opción 'agrupado'} + \CLASSWARNING{La opcio'n 'agrupado' no es compatible con el modo de totalizacio'n en filas. Sin efecto opcio'n 'agrupado'} \fi \fi \ifelectro \booltrue{Electro} \gdef\@NotaInterna{\@TextoDescuentoPresidencial} - \CLASSWARNING{Ya no está vigente el descuento en la alícuota general. Aplicándolo igual como se pidió} - \CLASSINFO{Se estableció el texto aclaratorio del descuento presidencial como 'nota interna'} + \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 opción 'electro' no es compatible con la opción 'filas'. Sin efecto la opción 'filas'} + \CLASSWARNING{La opcio'n 'electro' no es compatible con la opcio'n 'filas'. Sin efecto la opcio'n 'filas'} \fi \fi @@ -470,7 +494,7 @@ en la República Bolivariana de Venezuela. \ifsinivaexpresado \iffilas \filasfalse - \CLASSWARNING{La opción 'sinivaexpresado' no es compatible con la opción 'filas'. Sin efecto la opción 'filas'} + \CLASSWARNING{La opcio'n 'sinivaexpresado' no es compatible con la opcio'n 'filas'. Sin efecto la opcio'n 'filas'} \else \AtBeginDocument{\gdef\@ImpuestoG{0}\gdef\@ImpuestoR{0}\gdef\@ImpuestoA{0}} \fi @@ -479,7 +503,7 @@ en la República Bolivariana de Venezuela. \iflinea \ifexpandecuadro \else - \CLASSWARNING{La opción 'linea' requiere la opción 'expandecuadro'. Activando la opción 'expandecuadro'} + \CLASSWARNING{La opcio'n 'linea' requiere la opcio'n 'expandecuadro'. Activando la opcio'n 'expandecuadro'} \expandecuadrotrue \fi \fi @@ -487,8 +511,13 @@ en la República Bolivariana de Venezuela. \ifnospanish \else \RequirePackage[spanish]{babel}% Babel en castellano. - \RequirePackage[T1]{fontenc}% Codificación T1 para las tipografías. - \IfFileExists{lmodern.sty}{\RequirePackage{lmodern}}{} + \ifxetex + \else + \ifluatex + \else + \RequirePackage[T1]{fontenc}% Codificación T1 para las tipografías; no aplica para XeLaTeX ni LuaLaTeX. + \fi + \fi \fi \ifexpandecuadro @@ -507,7 +536,7 @@ en la República Bolivariana de Venezuela. \@reportetrue \ifsoloreporte \soloreportefalse - \CLASSWARNING{La opción 'soloreporte' no es compatible con 'conreporte'. Sin efecto 'soloreporte'} + \CLASSWARNING{La opcio'n 'soloreporte' no es compatible con 'conreporte'. Sin efecto 'soloreporte'} \fi \fi \ifsoloreporte\@reportetrue\@facturafalse\@reversofalse\fi @@ -518,7 +547,7 @@ en la República Bolivariana de Venezuela. \ifsintotales\else\AtEndDocument{\@EscribeTotalesEnCSV}\fi \else \csvfalse - \CLASSWARNING{La opción 'csv' require generar la factura. Sin efecto opción 'csv'} + \CLASSWARNING{La opcio'n 'csv' require generar la factura. Sin efecto opcio'n 'csv'} \fi \fi @@ -529,49 +558,52 @@ en la República Bolivariana de Venezuela. \fi % Escribimos en el .log las opciones cargadas: - \ifagrupado \CLASSINFO{Opción cargada: agrupado}\fi - \ifcentradesc \CLASSINFO{Opción cargada: centradesc}\fi - \ifcentrado \CLASSINFO{Opción cargada: centrado}\fi - \ifconlineasha \CLASSINFO{Opción cargada: conlineasha}\fi - \ifconreporte \CLASSINFO{Opción cargada: conreporte}\fi - \ifcotizacion \CLASSINFO{Opción cargada: cotizacion}\fi - \ifcsv \CLASSINFO{Opción cargada: csv}\fi - \ifdcu \CLASSINFO{Opción cargada: dcu}\fi - \ifdenom \CLASSINFO{Opción cargada: denom}\fi - \ifdescuentos \CLASSINFO{Opción cargada: descuentos}\fi - \ifdosfirmas \CLASSINFO{Opción cargada: dosfirmas}\fi - \ifduc \CLASSINFO{Opción cargada: duc}\fi - \ifelectro \CLASSINFO{Opción cargada: electro}\fi - \ifexpandecuadro \CLASSINFO{Opción cargada: expandecuadro}\fi - \iffilas \CLASSINFO{Opción cargada: filas}\fi - \ifG \CLASSINFO{Opción cargada: G}\fi - \ifimpdesc \CLASSINFO{Opción cargada: impdesc}\fi - \ifiva \CLASSINFO{Opción cargada: iva}\fi - \iflinea \CLASSINFO{Opción cargada: linea}\fi - \ifnospanish \CLASSINFO{Opción cargada: nospanish}\fi - \ifnumitem \CLASSINFO{Opción cargada: numitem}\fi - \ifprefactura \CLASSINFO{Opción cargada: prefactura}\fi - \ifsincantidad \CLASSINFO{Opción cargada: sincantidad}\fi - \ifsinexpandir \CLASSINFO{Opción cargada: sinexpandir}\fi - \ifsinfirmas \CLASSINFO{Opción cargada: sinfirmas}\fi - \ifsiniva \CLASSINFO{Opción cargada: siniva}\fi - \ifsinivaexpresado \CLASSINFO{Opción cargada: sinivaexpresado}\fi - \ifsinlineash \CLASSINFO{Opción cargada: sinlineash}\fi - \ifsinlineashe \CLASSINFO{Opción cargada: sinlineashe}\fi - \ifsinlineashi \CLASSINFO{Opción cargada: sinlineashi}\fi - \ifsinlineasv \CLASSINFO{Opción cargada: sinlineasv}\fi - \ifsinlineasve \CLASSINFO{Opción cargada: sinlineasve}\fi - \ifsinlineasvi \CLASSINFO{Opción cargada: sinlineasvi}\fi - \ifsinmarcas \CLASSINFO{Opción cargada: sinmarcas}\fi - \ifsinnumero \CLASSINFO{Opción cargada: sinnumero}\fi - \ifsinreverso \CLASSINFO{Opción cargada: sinreverso}\fi - \ifsintotales \CLASSINFO{Opción cargada: sintotales}\fi - \ifsoloreporte \CLASSINFO{Opción cargada: soloreporte}\fi - \ifsubtotal \CLASSINFO{Opción cargada: subtotal}\fi - \iftodosiva \CLASSINFO{Opción cargada: todosiva}\fi - \iftwoside \CLASSINFO{Opción cargada: twoside}\fi - \ifunafirma \CLASSINFO{Opción cargada: unafirma}\fi - \ifvencimiento \CLASSINFO{Opción cargada: vencimiento}\fi + \ifagrupado \CLASSINFO{Opcio'n cargada: agrupado}\fi + \ifcentradesc \CLASSINFO{Opcio'n cargada: centradesc}\fi + \ifcentrado \CLASSINFO{Opcio'n cargada: centrado}\fi + \ifconlineasha \CLASSINFO{Opcio'n cargada: conlineasha}\fi + \ifconreporte \CLASSINFO{Opcio'n cargada: conreporte}\fi + \ifcotizacion \CLASSINFO{Opcio'n cargada: cotizacion}\fi + \ifcsv \CLASSINFO{Opcio'n cargada: csv}\fi + \ifdcu \CLASSINFO{Opcio'n cargada: dcu}\fi + \ifdenom \CLASSINFO{Opcio'n cargada: denom}\fi + \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 + \ifexpandecuadro \CLASSINFO{Opcio'n cargada: expandecuadro}\fi + \iffilas \CLASSINFO{Opcio'n cargada: filas}\fi + \ifG \CLASSINFO{Opcio'n cargada: G}\fi + \ifimpdesc \CLASSINFO{Opcio'n cargada: impdesc}\fi + \ifiva \CLASSINFO{Opcio'n cargada: iva}\fi + \iflinea \CLASSINFO{Opcio'n cargada: linea}\fi + \ifnospanish \CLASSINFO{Opcio'n cargada: nospanish}\fi + \ifnumitem \CLASSINFO{Opcio'n cargada: numitem}\fi + \ifprefactura \CLASSINFO{Opcio'n cargada: prefactura}\fi + \ifsincantidad \CLASSINFO{Opcio'n cargada: sincantidad}\fi + \ifsinexpandir \CLASSINFO{Opcio'n cargada: sinexpandir}\fi + \ifsinfirmas \CLASSINFO{Opcio'n cargada: sinfirmas}\fi + \ifsiniva \CLASSINFO{Opcio'n cargada: siniva}\fi + \ifsinivaexpresado \CLASSINFO{Opcio'n cargada: sinivaexpresado}\fi + \ifsinlineahni \CLASSINFO{Opcio'n cargada: sinlineahni}\fi + \ifsinlineahtit \CLASSINFO{Opcio'n cargada: sinlineahtit}\fi + \ifsinlineahtot \CLASSINFO{Opcio'n cargada: sinlineahtot}\fi + \ifsinlineash \CLASSINFO{Opcio'n cargada: sinlineash}\fi + \ifsinlineashe \CLASSINFO{Opcio'n cargada: sinlineashe}\fi + \ifsinlineashi \CLASSINFO{Opcio'n cargada: sinlineashi}\fi + \ifsinlineasv \CLASSINFO{Opcio'n cargada: sinlineasv}\fi + \ifsinlineasve \CLASSINFO{Opcio'n cargada: sinlineasve}\fi + \ifsinlineasvi \CLASSINFO{Opcio'n cargada: sinlineasvi}\fi + \ifsinmarcas \CLASSINFO{Opcio'n cargada: sinmarcas}\fi + \ifsinnumero \CLASSINFO{Opcio'n cargada: sinnumero}\fi + \ifsinreverso \CLASSINFO{Opcio'n cargada: sinreverso}\fi + \ifsintotales \CLASSINFO{Opcio'n cargada: sintotales}\fi + \ifsoloreporte \CLASSINFO{Opcio'n cargada: soloreporte}\fi + \ifsubtotal \CLASSINFO{Opcio'n cargada: subtotal}\fi + \iftodosiva \CLASSINFO{Opcio'n cargada: todosiva}\fi + \iftwoside \CLASSINFO{Opcio'n cargada: twoside}\fi + \ifunafirma \CLASSINFO{Opcio'n cargada: unafirma}\fi + \ifvencimiento \CLASSINFO{Opcio'n cargada: vencimiento}\fi % Cargamos aquí 'geometry' para que sea después de haber establecido 'twoside'. \RequirePackage{geometry}} @@ -675,14 +707,14 @@ en la República Bolivariana de Venezuela. %% Nota interna al cuadro de la factura y nota externa a él (que sale antes de \Descripcion). \NewDocumentCommand{\NotaInterna}{+m}{% - \ifdefvoid{\@NotaInterna}{}{\CLASSWARNING{Se sobreescribió la nota interna automática aclaratoria del descuento presidencial}}% + \ifdefvoid{\@NotaInterna}{}{\CLASSWARNING{Se sobreescribio' la nota interna previamente definida}}% \gdef\@NotaInterna{#1}} \NewDocumentCommand{\NotaExterna}{+m}{\gdef\@NotaExterna{#1}} \AtBeginDocument{% % Si no se especificó fecha, tomamos la de hoy. Además, advertimos cuando el documento se está compilando en una fecha distinta de la fecha establecida en el encabezado. \DTMifsaveddate{FechaEmision}{}{% - \CLASSWARNING{No se especificó fecha. Asumiendo la fecha de hoy}% + \CLASSWARNING{No se especifico' fecha. Asumiendo la fecha de hoy}% \DTMsavedate{FechaEmision}{\the\year-\the\month-\the\day}}% \DTMsavenow{Ahora}% \DTMsaveddatediff{FechaEmision}{Ahora}{\AuxFecha}% @@ -702,43 +734,46 @@ en la República Bolivariana de Venezuela. \Moneda{\@MonedaBsS}% \fi \else + \LetraNotaInterna{\fontsize{14}{18}}% + \NotaInterna{\FPupn\TotalBsS{\Total{} 1000 div \@DigitosMoneda{} round}Según Decreto Presidencial 3.332, 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}% \Moneda{\@MonedaBs}% \fi \fi % Efectuamos distintos chequeos para dar errores o advertencias si faltó algo. - \ifdefvoid{\@RazonSocial}{\CLASSERROR{Hay que definir la razón social}}{}% + \ifdefvoid{\@RazonSocial}{\CLASSERROR{Hay que definir la razo'n social}}{}% \if@reporte - \ifdefvoid{\@Num}{\CLASSWARNING{No se especificó el número de la factura. Puede dar error si el título del reporte no se especifica que aparezca en las cabeceras}}{}% + \ifdefvoid{\@Num}{\CLASSWARNING{No se especifico' el nu'mero de la factura. Puede dar error si el ti'tulo del reporte no se especifica que aparezca en las cabeceras}}{}% \ifdefvoid{\@Proveedor}{% \ifdefvoid{\@Emisor} {\CLASSERROR{Hay que definir el nombre del proveedor cuando se emite un reporte}}% - {\CLASSWARNING{Se toma el emisor como el proveedor por no haberse especificado este último}% + {\CLASSWARNING{Se toma el emisor como el proveedor por no haberse especificado este u'ltimo}% \let\@Proveedor=\@Emisor}} {}% \fi \if@factura \ifdefvoid{\@RIF}{\CLASSERROR{Hay que definir el R.I.F}}{}% - \ifdefvoid{\@Direccion}{\CLASSERROR{Hay que definir la dirección fiscal}}{}% - \ifdefvoid{\@Telefono}{\CLASSWARNING{Pudiera definirse un número telefónico}}{}% - \ifdefvoid{\@Email}{\CLASSWARNING{Pudiera definirse una dirección de correo electrónico}}{}% + \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}}{}% \ifcotizacion - \ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opción para cotizacion se recomienda agregar el fondo}}{}% + \ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opcio'n para cotizacion se recomienda agregar el fondo}}{}% \fi \ifprefactura - \ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opción para prefactura se recomienda agregar el fondo}}{}% + \ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opcio'n para prefactura se recomienda agregar el fondo}}{}% \fi \ifsinnumero \ifcotizacion \else - \CLASSERROR{La opción para no poner el número sólo es compatible con las cotizaciones}% + \CLASSERROR{La opcio'n para no poner el nu'mero so'lo es compatible con las cotizaciones}% \fi \fi \ifdenom \ifsinnumero \else - \ifdefvoid{\@Num}{\CLASSERROR{Hay que definir el número de la factura}}{}% + \ifdefvoid{\@Num}{\CLASSERROR{Hay que definir el nu'mero de la factura}}{}% \fi \fi \fi @@ -1109,6 +1144,7 @@ en la República Bolivariana de Venezuela. %% 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]{% + \immediate\write\@auxout{\gdef\noexpand\@TamDescripcion{\the\linewidth}}% Para poder establecer la línea diagonal hay que saber el tamaño del campo de la descripción. \ifimpdesc\settowidth{\@TempDimen}{\@EscribeTipoDeImpuesto{#2}}\fi \savebox{\@CajaPrueba}{% \parbox[t]{\linewidth}{% @@ -1478,14 +1514,16 @@ en la República Bolivariana de Venezuela. \ifbool{SinLineasVertExt}{}{|}} %% Comando para hacer los cálculos sobre cada ítem y establecer las macros con el contenido de cada ítem introducido. -\NewDocumentCommand{\@CalculaItem}{m m m o m m}{% +%% 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}{% \addtocounter{NumItem}{1}% % Calculamos. \FPupn\PrecioU{#5 \@DigitosMoneda{} round}% \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}% - \FPifeq\Dcto{0}\else\CLASSWARNING{Se pidió un descuento individual sin dar la opción de la clase 'descuentos'. No se tomará en cuenta}\fi + \FPifeq\Dcto{0}\else\CLASSWARNING{Se pidio' un descuento individual sin dar la opcio'n de la clase 'descuentos'. No se tomara' en cuenta}\fi \FPset\Dcto{0}}% También fijamos en 0 el descuento por si se especifica en \Item*** pero no se pide la opción 'descuentos'. \FPupn\PrecioS{#2 \PrecioU{} * \@DigitosMoneda{} round}% \FPupn\PrecioT{100 \Dcto{} 100 - / \PrecioS{} * \@DigitosMoneda{} round}% @@ -1502,6 +1540,7 @@ en la República Bolivariana de Venezuela. \expandafter\global\expandafter\edef\csname @Item@\romannumeral\value{NumItem}@PrecioU\endcsname{\noexpand\numprint{\PrecioU}}% \expandafter\global\expandafter\edef\csname @Item@\romannumeral\value{NumItem}@PrecioS\endcsname{\noexpand\numprint{\PrecioS}}% \expandafter\global\expandafter\edef\csname @Item@\romannumeral\value{NumItem}@Descuento\endcsname{\noexpand\numprint{\Dcto}}% + \expandafter\gdef\csname @Item@\romannumeral\value{NumItem}@DescripcionLarga\endcsname{#7}% \expandafter\global\expandafter\expandafter\edef\csname @Item@\romannumeral\value{NumItem}@IVA\endcsname{% \noexpand\numprint\expandafter{\csname @Alicuota#1porc\endcsname}}% \expandafter\global\expandafter\edef\csname @Item@\romannumeral\value{NumItem}@PrecioT\endcsname{\noexpand\numprint{\PrecioT}}} @@ -1509,7 +1548,7 @@ en la República Bolivariana de Venezuela. %% Macro interna para saber si una etiqueta existe o no. \gdef\@pruebaref#1{% \expandafter\ifx\csname @Etiqueta@#1\endcsname\relax - \CLASSWARNING{La etiqueta `#1' no está definida}\ignorespaces + \CLASSWARNING{La etiqueta `#1' no esta' definida}\ignorespaces \@PruebaReffalse \else \@PruebaReftrue @@ -1517,13 +1556,14 @@ en la República Bolivariana de Venezuela. %% Comandos para las referencias: i) referencia al número de ítem, ii) a la cantidad, iii) a la descripción, iv) al precio unitario, v) al descuento, vi) al precio total. \gdef\itemref#1{% - \ifbool{NumItem}{}{\CLASSWARNING{Es recomendable usar la opción 'numitem' para enumerar los ítems}}% + \ifbool{NumItem}{}{\CLASSWARNING{Es recomendable usar la opcio'n 'numitem' para enumerar los i'tems}}% \@pruebaref{#1}\if@PruebaRef \csname @Etiqueta@#1\endcsname \fi} \gdef\cantref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @Cantidad\endcsname \fi} \gdef\descref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @Descripcion\endcsname \fi} \gdef\puref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @PrecioU\endcsname \fi} \gdef\subtref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @PrecioS\endcsname \fi} \gdef\dctoref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @Descuento\endcsname \fi} +\gdef\ldescref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @DescripcionLarga\endcsname \fi} \gdef\ivaref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @IVA\endcsname \fi} \gdef\ptref#1{\@pruebaref{#1}\if@PruebaRef \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @PrecioT\endcsname \fi} @@ -1531,13 +1571,13 @@ en la República Bolivariana de Venezuela. \newcommand{\label@factura}[1]{% \expandafter\ifx\csname @Etiqueta@#1\endcsname\relax \expandafter\global\expandafter\edef\csname @Etiqueta@#1\endcsname{\arabic{NumItem}}\ignorespaces - \CLASSINFO{Etiqueta `#1' definida para el ítem \arabic{NumItem}}% + \CLASSINFO{Etiqueta `#1' definida para el i'tem \arabic{NumItem}}% \else \edef\@label@test@uno{\csname @Etiqueta@#1\endcsname}% \edef\@label@test@dos{\theNumItem}% \ifx\@label@test@uno\@label@test@dos \else - \CLASSWARNING{La etiqueta `#1' se definió más de una vez}\ignorespaces + \CLASSWARNING{La etiqueta `#1' se definio' ma's de una vez}\ignorespaces \fi \fi} @@ -1555,8 +1595,7 @@ en la República Bolivariana de Venezuela. % Comando auxiliar para abrir el '\multicolumn' para los totales en el modo de columnas y expandir completamente las columnas cuando hay o no barras verticales. \edef\@ColumnasMultiColumnTotalesAuxCmd{% \noexpand\multicolumn{8}{\ifbool{SinLineasVertExt}{}{|} r}\begingroup - \noexpand\ifdim \noexpand\ht\noexpand\@CajaEspacioVacio=0pt - \noexpand\else + \noexpand\if@ExpandeCuadro \noexpand\iflinea\noexpand\zsaveposx{LineaNodoBCoordX}\noexpand\zsaveposy{LineaNodoBCoordY}\noexpand\fi\noexpand\fi% Fijamos la posición (x,y) final para la línea ya que estaremos justo en el punto donde escribimos el total, y hasta allí llega la línea en el modo de columnas. \noexpand\begin{tabular}[b]{@{\noexpand\extracolsep{2\noexpand\tabcolsep}}lr \ifbool{SinLineasVertExt}{}{|}}} @@ -1567,18 +1606,17 @@ en la República Bolivariana de Venezuela. \setlength{\@EspacioVacioFinal}{\zposy{EspacioVacioFinal}sp}% \global\@EspacioVacioInicial=\@EspacioVacioInicial% Hay que globalizarlas \global\@EspacioVacioFinal=\@EspacioVacioFinal - \savebox{\@CajaEspacioVacio}{\parbox[b][\@EspacioVacioInicial-\@EspacioVacioFinal]{0pt}{% + \savebox{\@CajaEspacioVacio}{\parbox[b][\@EspacioVacioInicial-\@EspacioVacioFinal]{\@TamDescripcion}{% \iflinea - \if@LineaCompleta + \if@LineaHastaFinal \zsaveposy{LineaNodoBCoordY}% \else - \if@LineaHastaTotal - \else + \if@LineaDescripcion \zsaveposx{LineaNodoACoordX}\mbox{}\hfill \zsaveposx{LineaNodoBCoordX}\zsaveposy{LineaNodoBCoordY}% \fi \fi \fi}}% - \ifdim \ht\@CajaEspacioVacio=0pt \global\lineafalse \fi + \ifdim \ht\@CajaEspacioVacio=0pt \global\lineafalse \else \@ExpandeCuadrotrue \fi \fi \ifx\undefined\Total\relax\else\CLASSERROR{Parece ya haberse usado un entorno de factura}\fi @@ -1620,9 +1658,9 @@ en la República Bolivariana de Venezuela. \global\@SeparaItemsExtraFinal=\@SeparaItemsExtraFinal} % % Comando interno general para agregar cualquier ítem. - \NewDocumentCommand{\@ITEM}{m m m o m m}{% - % 1. [R|G|A|E|X]; 2. cantidad; 3. descripción; 4. descripción para el csv (entre corchetes); 5. p/u; 6. dcto. - \@CalculaItem{##1}{##2}{##3}{##5}{##6}% + \NewDocumentCommand{\@ITEM}{m m m o m m +o}{% + % 1. [R|G|A|E|X]; 2. cantidad; 3. descripción; 4. descripción para el csv (entre corchetes); 5. p/u; 6. dcto; 7. la descripción para el reporte. + \@CalculaItem{##1}{##2}{##3}{##5}{##6}[##7]% % Si no es el primer ítem, entonces hace falta \\ para terminar el ítem anterior. \ifnum\value{NumItem}=1% Aquí, \@CalculaItem aumenta en 1 el contador NumItem, que si vale 1 significa que aún no hemos procesado la línea 1, es decir, no hay que hacer el salto de línea. La última línea se termina en otro lado. \else @@ -1653,7 +1691,7 @@ en la Repú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 está introduciendo un precio con más de dos decimales: (##3 - ##5. Redondeado a \PrecioU)}{}\fi% Advertimos cuando el precio unitario tiene más de dos decimales. + \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. @@ -1732,11 +1770,15 @@ en la República Bolivariana de Venezuela. % Usamos la definición de \label@factura dentro del entorno de la factura para que sea local aquí nada más. \let\label\label@factura \@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. + \setlength{\baselineskip@@}{\baselineskip}% + \global\baselineskip@@=\baselineskip@@ \@FacturaAuxInicioCmd \ifbool{SinLineasHoriExt}{}{\hline}% \@ZERO + \setlength{\tabcolsep@@}{\tabcolsep}% + \global\tabcolsep@@=\tabcolsep@@ % Estamos en el número del ítem, si aplicara. - \if@LineaDesdeInicio \hspace*{-\tabcolsep}\zsaveposx{LineaNodoACoordX}\hspace*{\tabcolsep}\fi + \if@LineaDesdeInicio \zsaveposx{LineaNodoACoordX}\fi \ifbool{NumItem}{\@NumItemAuxCmd{\mbox{}\hfill \@LetraTitColumnas \@@NumItem \hfill\mbox{}}}{}% & % Avanzamos a la cantidad, o la descripción. @@ -1763,40 +1805,51 @@ en la República Bolivariana de Venezuela. \ifbool{IVA}{\@IVAAuxCmd{\mbox{}\hfill \@LetraTitColumnas \@@IVA \hfill\mbox{}}}{} &% Avanzamos hasta el precio total. \@PrecioTAuxCmd{\mbox{}\hfill \@LetraTitColumnas \ifbool{SinCantidad}{\@@Precio}{\@@PrecioT}\space (\Moneda)\hfill\mbox{}}% - \if@LineaCompleta \hspace*{\tabcolsep}\zsaveposx{LineaNodoBCoordX}\hspace*{-\tabcolsep}\fi + \if@LineaHastaFinal \zsaveposx{LineaNodoBCoordX}\fi \\ - \ifbool{SinLineasHoriInt}{}{\hline}% + \ifbool{SinLineaHoriTit}{}{\hline}% % #1% Aquí entran todos los items que el usuario declara dentro del ambiente. + \@CalculaTotalesI \@CalculaSeparaItemsExtraFinal \\[\@SeparaItemsExtraFinal]% El último fin de línea se hace aquí. - \ifconlineasha\hline\fi% Se verifica si hace falta una línea horizontal o no. + \ifconlineasha + \ifdefvoid{\@NotaInterna}{% + \ifbool{SinLineasHoriExt}{\if@ExpandeCuadro\hline\fi}{\hline}}{\hline}% + \fi% Se verifica si hace falta una línea horizontal o no. \iffilas % Esto en lugar de \ifexpandecuadro para que no se haga una linea vacía en la tabla cuando la caja está vacía. - \ifdim \ht\@CajaEspacioVacio=0pt - \ifdefvoid{\@NotaInterna}{% - \ifbool{SinLineasHoriExt}{}{% - \ifconlineasha\else\hline\fi}% Verificamos si hay que poner la línea horizontal. Si está 'conlineasha' ya salió debido a esta opción. - }{\@ColumnasMultiColumnNotaIntAuxCmd\ifbool{SinLineasHoriExt}{}{\hline}}% - \else + \if@ExpandeCuadro \ifbool{PrimeroDescripcion}{&\usebox{\@CajaEspacioVacio}&&&&&&\\}{&&\usebox{\@CajaEspacioVacio}&&&&&\\}% - \ifdefvoid{\@NotaInterna}{}{\@ColumnasMultiColumnNotaIntAuxCmd}% + \ifdefvoid{\@NotaInterna}{} + {\ifbool{SinLineaHoriNI}{}{\hline}% + \@ColumnasMultiColumnNotaIntAuxCmd}% \ifbool{SinLineasHoriExt}{}{\hline}% Siempre que hay relleno se pone la línea acá. + \else + \ifdefvoid{\@NotaInterna}{% + \ifbool{SinLineasHoriExt}{}{% + \ifconlineasha\else\hline\fi}}% Verificamos si hay que poner la línea horizontal. Si está 'conlineasha' entonces ya salió la línea. + {\ifbool{SinLineaHoriNI}{}{\ifconlineasha\else\hline\fi}% + \@ColumnasMultiColumnNotaIntAuxCmd + \ifbool{SinLineasHoriExt}{}{\hline}}% \fi \else - \ifbool{SinLineasHoriInt}{}{\ifconlineasha\else\hline\fi}% Línea que cierra los ítems en la tabla. - % Agregamos el espacio espúreo. - \ifdim \ht\@CajaEspacioVacio=0pt + \ifsintotales \else - % Rellenamos la tabla con espacio espúreo, y le agregamos las lineas externas, si aplica. + \ifbool{SinLineaHoriTot}{}{\ifconlineasha\else\hline\fi}% Línea que cierra los ítems en la tabla. + \fi + % Agregamos el espacio espúreo. + \if@ExpandeCuadro + % Rellenamos la tabla con espacio espúreo, y le agregamos las líneas externas, si aplica. \ifbool{SinLineasVertExt}{\multicolumn{8}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{8}{|c|}{\usebox{\@CajaEspacioVacio}}}\\ \fi - % Si pedimos sin totalizaciones, entonces cerramos la tabla ya, si no, calculamos los totales y los escribimos + % Si pedimos sin totalizaciones, entonces cerramos la tabla ya, si no, calculamos los totales y los escribimos. \ifsintotales + \ifdefvoid{\@NotaInterna}{}{\ifbool{SinLineaHoriNI}{}{\hline}\@ColumnasMultiColumnNotaIntAuxCmd}% + \ifbool{SinLineasHoriExt}{}{\hline}% \else - % Modo de columnas: Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica. + % Modo de columnas: Abrimos la tabla para escribir los totales y le agregamos las líneas verticales externas, si aplica. \@ColumnasMultiColumnTotalesAuxCmd - \@CalculaTotalesI \ifagrupado \@EscribeTotalColAgrupado \else @@ -1810,7 +1863,7 @@ en la República Bolivariana de Venezuela. \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\ \end{tabular}\endgroup \\ - \ifdefvoid{\@NotaInterna}{}{\@ColumnasMultiColumnNotaIntAuxCmd}% + \ifdefvoid{\@NotaInterna}{}{\ifbool{SinLineaHoriNI}{}{\hline}\@ColumnasMultiColumnNotaIntAuxCmd}% \ifbool{SinLineasHoriExt}{}{\hline}% \fi \fi @@ -1820,7 +1873,6 @@ en la República Bolivariana de Venezuela. \ifsintotales\gdef\Total{}\fi % Si pedimos no totalizar (sintotales), la opción filas queda desactivada. \iffilas - \@CalculaTotalesI \@LetraNumTotales \vspace*{\@SeparaVertical}\par \ifexpandecuadro\else\vfill\fi @@ -1871,7 +1923,7 @@ en la República Bolivariana de Venezuela. \if@Exento\usebox{\@CajaBIE}\hspace*{\@SeparaMinTotales}\fi\usebox{\@CajaTotal}% \ifcentrado\hspace*{\@SepTotales}\fi \else% Aquí casi cualquier cosa tiene aspecto feo. - \CLASSWARNING{Es mejor no usar la opción de totalización en filas en este caso, o disminuir los tamaños de los tipos de letra para la totalización}% + \CLASSWARNING{Es mejor no usar la opcio'n de totalizacio'n en filas en este caso, o disminuir los tama~nos de los tipos de letra para la totalizacio'n}% \centering{% \begin{tabular}{r@{\hspace*{\@SeparaMinTotales}}l} \usebox{\@CajaBIAliR} & \usebox{\@CajaBIAliA} \\[\@SeparaFilas] @@ -1895,11 +1947,11 @@ en la República Bolivariana de Venezuela. \ifbool{SinCantidad} % Definamos todos los comandos \Item***. El descuento es opcional; por eso usamos G{0} en \NewDocumentCommand. {% - \NewDocumentCommand{\Item}{m o m G{0}}{\@ITEM{G}{1}{#1}[#2]{#3}{#4}}% Ítem normal. - \NewDocumentCommand{\ItemR}{m o m G{0}}{\global\@BIRtrue\global\Gtrue\@ITEM{R}{1}{#1}[#2]{#3}{#4}}% Ítem con IVA reducido. - \NewDocumentCommand{\ItemA}{m o m G{0}}{\global\@BIAtrue\global\Gtrue\@ITEM{A}{1}{#1}[#2]{#3}{#4}}% Ítem con IVA adicional. - \NewDocumentCommand{\ItemE}{m o m G{0}}{\global\@Exentotrue\global\Gtrue\@ITEM{E}{1}{#1}[#2]{#3}{#4}}% Ítem exento de IVA. - \NewDocumentCommand{\ItemX}{m o}{\@ITEM{X}{1}{#1}[#2]{0}{0}}% Ítem sin precio. + \NewDocumentCommand{\Item}{m o m G{0} +o}{\@ITEM{G}{1}{#1}[#2]{#3}{#4}[#5]}% Ítem normal. + \NewDocumentCommand{\ItemR}{m o m G{0} +o}{\global\@BIRtrue\global\Gtrue\@ITEM{R}{1}{#1}[#2]{#3}{#4}[#5]}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m o m G{0} +o}{\global\@BIAtrue\global\Gtrue\@ITEM{A}{1}{#1}[#2]{#3}{#4}[#5]}% Ítem con IVA adicional. + \NewDocumentCommand{\ItemE}{m o m G{0} +o}{\global\@Exentotrue\global\Gtrue\@ITEM{E}{1}{#1}[#2]{#3}{#4}[#5]}% Ítem exento de IVA. + \NewDocumentCommand{\ItemX}{m o +o}{\@ITEM{X}{1}{#1}[#2]{0}{0}[#3]}% Ítem sin precio. \let\ItemG\Item \ifcsv \ifdescuentos @@ -1909,11 +1961,11 @@ en la República Bolivariana de Venezuela. \fi \fi} {% - \NewDocumentCommand{\Item}{m m o m G{0}}{\@ITEM{G}{#1}{#2}[#3]{#4}{#5}}% Ítem normal. - \NewDocumentCommand{\ItemR}{m m o m G{0}}{\global\@BIRtrue\global\Gtrue\@ITEM{R}{#1}{#2}[#3]{#4}{#5}}% Ítem con IVA reducido. - \NewDocumentCommand{\ItemA}{m m o m G{0}}{\global\@BIAtrue\global\Gtrue\@ITEM{A}{#1}{#2}[#3]{#4}{#5}}% Ítem con IVA adicional. - \NewDocumentCommand{\ItemE}{m m o m G{0}}{\global\@Exentotrue\global\Gtrue\@ITEM{E}{#1}{#2}[#3]{#4}{#5}}% Ítem exento de IVA. - \NewDocumentCommand{\ItemX}{m m o}{\@ITEM{X}{#1}{#2}[#3]{0}{0}}% Ítem sin precio. + \NewDocumentCommand{\Item}{m m o m G{0} +o}{\@ITEM{G}{#1}{#2}[#3]{#4}{#5}[#6]}% Ítem normal. + \NewDocumentCommand{\ItemR}{m m o m G{0} +o}{\global\@BIRtrue\global\Gtrue\@ITEM{R}{#1}{#2}[#3]{#4}{#5}[#6]}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m m o m G{0} +o}{\global\@BIAtrue\global\Gtrue\@ITEM{A}{#1}{#2}[#3]{#4}{#5}[#6]}% Ítem con IVA adicional. + \NewDocumentCommand{\ItemE}{m m o m G{0} +o}{\global\@Exentotrue\global\Gtrue\@ITEM{E}{#1}{#2}[#3]{#4}{#5}[#6]}% Ítem exento de IVA. + \NewDocumentCommand{\ItemX}{m m o +o}{\@ITEM{X}{#1}{#2}[#3]{0}{0}[#4]}% Ítem sin precio. \let\ItemG\Item \ifcsv \if@cdu @@ -1943,7 +1995,7 @@ en la República Bolivariana de Venezuela. % Los descuentos totales no son compatibles -y no creo que lo vayan a ser- con el modo de totalización en filas. \iffilas \if@DescuentoTotal - \CLASSWARNING{La opción 'filas' no es compatible con los descuentos totales; sin efecto opción 'filas'} + \CLASSWARNING{La opcio'n 'filas' no es compatible con los descuentos totales; sin efecto opcio'n 'filas'} \filasfalse \fi \fi @@ -1978,9 +2030,13 @@ en la República Bolivariana de Venezuela. % 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} \iffilas - \ifbool{SinLineasVertInt}{\@LineaCompletatrue} + \ifbool{SinLineasVertInt}{\@LineaDesdeIniciotrue\@LineaHastaFinaltrue}{\@LineaDescripciontrue}% \else - \@LineaHastaTotaltrue\@LineaDesdeIniciotrue + \ifsintotales + \@LineaDesdeIniciotrue\@LineaHastaFinaltrue + \else + \@LineaDesdeIniciotrue\@LineaHastaTotaltrue + \fi \fi \fi %% El comando para la descripción del servicio prestado. @@ -2233,25 +2289,40 @@ en la República Bolivariana de Venezuela. %% Comando que coloca la línea diagonal. \newcommand{\@DibujaLinea}{% - \@LetraItems% Volvemos a fijar el \baselineskip de la tabla. \setlength{\@LineaNodoXo}{\zposx{LineaNodoACoordX} sp}% \setlength{\@LineaNodoYo}{\zposy{LineaNodoBCoordY} sp}% \setlength{\@LineaNodoXf}{\zposx{LineaNodoBCoordX} sp}% \setlength{\@LineaNodoYf}{\zposy{LineaNodoBCoordY} sp}% \addtolength{\@LineaNodoYo}{\@EspacioVacioInicial-\@EspacioVacioFinal}% + \if@LineaDesdeInicio + \addtolength{\@LineaNodoXo}{-\tabcolsep@@}% + \fi + \if@LineaHastaFinal + \addtolength{\@LineaNodoXf}{\tabcolsep@@}% + \fi \iffilas + \addtolength{\@LineaNodoYf}{-.3\baselineskip@@}% + \if@LineaDescripcion + \addtolength{\@LineaNodoXo}{-\tabcolsep@@}% + \addtolength{\@LineaNodoXf}{\tabcolsep@@}% + \fi \else - \if@DescG \addtolength{\@LineaNodoYo}{2\baselineskip}\fi - \if@DescR \if@BIR \addtolength{\@LineaNodoYo}{2\baselineskip}\fi\fi - \if@DescA \if@BIA \addtolength{\@LineaNodoYo}{2\baselineskip}\fi\fi - \if@DescE \if@Exento \addtolength{\@LineaNodoYo}{2\baselineskip}\fi\fi - \addtolength{\@LineaNodoYo}{\baselineskip/2}% - \ifsinivaexpresado + \ifsintotales + \addtolength{\@LineaNodoYf}{-.3\baselineskip@@}% \else - \addtolength{\@LineaNodoYo}{2\baselineskip}% - \if@BIR\addtolength{\@LineaNodoYo}{2\baselineskip}\fi - \if@BIA\addtolength{\@LineaNodoYo}{2\baselineskip}\fi - \if@Exento\addtolength{\@LineaNodoYo}{\baselineskip}\fi + \if@DescG \addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi + \if@DescR \if@BIR \addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi\fi + \if@DescA \if@BIA \addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi\fi + \if@DescE \if@Exento \addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi\fi + \addtolength{\@LineaNodoYo}{\baselineskip@@}% + \addtolength{\@LineaNodoYf}{-.3\baselineskip@@}% + \ifsinivaexpresado + \else + \addtolength{\@LineaNodoYo}{2\baselineskip@@}% + \if@BIR\addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi + \if@BIA\addtolength{\@LineaNodoYo}{2\baselineskip@@}\fi + \if@Exento\addtolength{\@LineaNodoYo}{\baselineskip@@}\fi + \fi \fi \fi \iflinea diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def index fae09b821ba..4e191716a51 100644 --- a/Master/texmf-dist/tex/latex/factura/factura.def +++ b/Master/texmf-dist/tex/latex/factura/factura.def @@ -36,7 +36,7 @@ %% factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex. %% \ProvidesFile{factura.def} -[2018/04/17 v3.47 +[2018/05/22 v3.56 Archivo de valores iniciales y condiciones de borde para factura.cls ] @@ -68,11 +68,11 @@ Archivo de valores iniciales y condiciones de borde para factura.cls %% La moneda: \def\@MonedaBs{Bs.} -\def\@MonedaBsS{BsS.} +\def\@MonedaBsS{Bs.S} %% Las fechas de la entrada de la reconversión monetaria: -\DTMsavedate{FechaBsS}{2018-05-01} -\DTMsavedate{FechaBs}{2018-06-04} +\DTMsavedate{FechaBsS}{2018-06-04} +\DTMsavedate{FechaBs}{2019-01-01} %% Al lado de cada ítem va la letra que designa el gravamen que aplica sobre él: \def\@DenomAlicuotaG{G} @@ -81,7 +81,7 @@ Archivo de valores iniciales y condiciones de borde para factura.cls \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 3085 en Gaceta Oficial 41239.} +\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:} -- cgit v1.2.3