diff options
Diffstat (limited to 'Master/texmf-dist')
23 files changed, 649 insertions, 254 deletions
diff --git a/Master/texmf-dist/doc/latex/factura/README b/Master/texmf-dist/doc/latex/factura/README index 4a98c3ad2f2..24df99743cd 100644 --- a/Master/texmf-dist/doc/latex/factura/README +++ b/Master/texmf-dist/doc/latex/factura/README @@ -13,7 +13,7 @@ by invoking commands or editing. La clase de LaTeX 'factura' está diseñada para su uso en la República Bolivariana de Venezuela, conforme a los requerimientos fijados por las -providencias del SENIAT, válidas para marzo del año 2016. +providencias del SENIAT, válidas para la fecha de este paquete. Con la clase 'factura' se pueden elaborar facturas en formas libres fiscales, se pueden elaborar cotizaciones y reportes de servicios. @@ -31,6 +31,12 @@ $ pdflatex factura-ejemplo-fondo.tex $ pdflatex factura-ejemplo-membrete.tex $ xelatex factura-ejemplo-firma.tex $ pdflatex factura-ejemplo-prefactura.tex +$ pdflatex factura-ejemplo-cotizacion.tex +$ pdflatex factura-ejemplo-factura1.tex +... hasta el último +$ pdflatex factura-ejemplo-reporte1.tex +... hasta el último +$ pdflatex factura-beispiel-rechnung.tex $ pdflatex factura.dtx Los índices y la lista de cambios se generan automáticamente al compilar diff --git a/Master/texmf-dist/doc/latex/factura/factura-beispiel-rechnung.tex b/Master/texmf-dist/doc/latex/factura/factura-beispiel-rechnung.tex index 4f37e7cc60d..b1dfe97e13d 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-beispiel-rechnung.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-beispiel-rechnung.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `beispiel') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,7 +35,9 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Adaptado a otra legislación. +%%</desc> %% \documentclass[ prefactura, @@ -47,46 +49,46 @@ nospanish, \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} - \def\Moneda{\euro{}} +\def\Moneda{\euro{}} \makeatletter - \def\@AlicuotaG{0.19} - \def\@AlicuotaR{0.07} - \def\@DenomAlicuotaG{A} - \def\@DenomAlicuotaR{C} - \def\@DenomAlicuotaE{B} - \def\@@Datos{Kundenidentifikation} - \def\@@Resumen{Zusammenfassung} - \def\@@Fecha{Datum:} - \def\@@Nombre{Kunde:} \def\@@RazonSocial{Kunde:} - \def\@@RIF{USt-IdNr:} \def\@@CT{USt-IdNr:} - \def\@@Contacto{Kontactperson:} - \def\@@Direccion{Adresse:} - \def\@@Telefono{Telefon:} - \def\@@Email{E-mail:} - \def\@@Cliente{Kunde:} - \def\@@Proveedor{Lieferant:} - \def\@@Cantidad{Menge} - \def\@@Descripcion{Beschreibung} - \def\@@PrecioU{Einzelpreis} - \def\@@PrecioT{Gesamt} - \def\@@Precio{Preis} - \def\@@AlicuotaG{MwSt A} - \def\@@AlicuotaR{MwSt C} - \def\@@BIG{Netto 19\%} - \def\@@BIR{Netto 7\%} - \def\@@BIE{Mwst-befreit} - \def\@@Total{Brutto}% Zu zahlen / Brutto / Summe / Gesamt - \def\@@Conforme{der Kunde} - \def\@@DenomFactura{Rechnung} - \def\@@DenomCotiza{Voranschlag} - % \LetraNumeracion{\fontsize{14}{14}\bfseries} - \renewcommand{\@EstiloDenom}{\@LetraDenom\@Denominacion-\if@sinnumero\else\@LetraNumeracion Nr:\space\@Num\fi} - \renewcommand{\@EstiloNumControl}{} +\def\@AlicuotaG{0.19} +\def\@AlicuotaR{0.07} +\def\@DenomAlicuotaG{A} +\def\@DenomAlicuotaR{C} +\def\@DenomAlicuotaE{B} +\def\@@Datos{Kundenidentifikation} +\def\@@Resumen{Zusammenfassung} +\def\@@Fecha{Datum:} +\def\@@Nombre{Kunde:} \def\@@RazonSocial{Kunde:} +\def\@@RIF{USt-IdNr:} \def\@@CT{USt-IdNr:} +\def\@@Contacto{Kontactperson:} +\def\@@Direccion{Adresse:} +\def\@@Telefono{Telefon:} +\def\@@Email{E-mail:} +\def\@@Cliente{Kunde:} +\def\@@Proveedor{Lieferant:} +\def\@@Cantidad{Menge} +\def\@@Descripcion{Beschreibung} +\def\@@PrecioU{Einzelpreis} +\def\@@PrecioT{Gesamt} +\def\@@Precio{Preis} +\def\@@AlicuotaG{MwSt A} +\def\@@AlicuotaR{MwSt C} +\def\@@BIG{Netto 19\%} +\def\@@BIR{Netto 7\%} +\def\@@BIE{Mwst-befreit} +\def\@@Total{Brutto}% Zu zahlen / Brutto / Summe / Gesamt +\def\@@Conforme{der Kunde} +\def\@@DenomFactura{Rechnung} +\def\@@DenomCotiza{Voranschlag} +% \LetraNumeracion{\fontsize{14}{14}\bfseries} +\renewcommand{\@EstiloDenom}{\@LetraDenom\@Denominacion-\if@sinnumero\else\@LetraNumeracion Nr:\space\@Num\fi} +\renewcommand{\@EstiloNumControl}{} \makeatother \FondoFactura{factura-ejemplo-fondo} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \Nombre{Jacinto de Ayala y San Vicente} \CI{V-987.654.321} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-cotizacion.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-cotizacion.tex index cc049b3abcd..6894eb0ecab 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-cotizacion.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-cotizacion.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `cotiza') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,16 +35,20 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una cotización (cotizacion), -%% Escribe la denominación ("COTIZACIÓN") pero sin número (sinnumero), +%% Escribe la denominación (“COTIZACIÓN”) pero sin número (sinnumero), +%% No totaliza, para que el cliente tenga un presupuesto por distintos ítems que luego elegirá entre ellos, es decir, una lista de precios. (sintotales), %% Con el fondo de la imprenta agregado (\FondoFactura), %% Agregando la firma escaneada en la factura, es decir, en la cotización (\FirmaFactura), %% Sin resumen, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ cotizacion, sinnumero, % sin esta opción aparecerá el número de la cotización. +sintotales, % dosfirmas, % para poner las dos firmas % sinfirmas, % para no poner firmas ]{factura} @@ -55,7 +59,7 @@ sinnumero, % sin esta opción aparecerá el número de la cotización. \FirmaFactura{\includegraphics[width=5cm]{factura-ejemplo-firma.pdf}}[0pt][21pt] % \Denom{PRESUPUESTO} % También podemos cambiar el nombre del documento -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} @@ -69,6 +73,8 @@ sinnumero, % sin esta opción aparecerá el número de la cotización. \begin{factura} \Item{1}{ítem con IVA general}{1000} + \Item{1}{otro ítem con IVA general}{1100} + \Item{1}{otro ítem más con IVA general}{1200} \end{factura} \Descripcion{Descripción larga del servicio} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura1.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura1.tex index 0a3e48e0b80..802426afa03 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura1.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura1.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factuno') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,16 +35,18 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Todo con los valores por omisión, %% Con resumen (\Resumen), %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass{factura} \usepackage[utf8]{inputenc} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} \Contacto{Jacinto de Ayala} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura2.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura2.tex index 5e062ee6b00..72d9fb76983 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura2.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura2.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factdos') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,21 +35,25 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Con la columna para enumerar los ítems (numitem), %% Con descuentos individuales (descuentos), %% Primero la descripción, luego la cantidad, luego el precio unitario (dcu), %% Sin líneas verticales externas (sinlineasve), +%% Centra la descripción en los elementos en la factura (centradesc), %% Sólo la firma del emisor (unafirma), %% Alterando la separación mínima vertical entre los elementos (\SepElementos), %% Alterando la separación horizontal en el encabezado y la distancia desde el contorno hasta el texto (\SepEncabez), +%% Agregando una separación extra entre los ítems en la factura (\SepItemsExtra), %% Alterando la la distancia desde el contorno hasta el texto en la descripción (\SepDescrip), %% Alterando la línea de la descripción, la curvatura en la esquina y la sombra (\LineaDescrip), -%% Usando \Nombre y \CI en lugar de \RazonSocial y \RIF, +%% Usando “\Nombre” y “\CI” en lugar de “\RazonSocial” y “\RIF”, %% Con resumen (\Resumen), %% Agregando un ítem sin precio (\ItemX), %% Con artículos gravados con todos los IVA, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ numitem, @@ -57,17 +61,19 @@ descuentos, dcu, sinlineasve, % sinlineasv, % sin ninguna línea vertical +centradesc, unafirma, ]{factura} \usepackage[utf8]{inputenc} -\SepElementos{1cm} +\SepElementos{0.75cm} \SepEncabez{1cm}{16pt} +\SepItemsExtra{8pt} \SepDescrip{16pt} \LineaDescrip{1pt}{20pt}{3pt} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Nombre{Jacinto de Ayala y San Vicente} \CI{V-987.654.321} \Direccion{Av. Ayala, Galpón San Vicente, Sector Arauca, Apure, Venezuela} @@ -82,7 +88,7 @@ unafirma, \Item{1}{ítem con IVA general, con descuento}{1000}{8} \ItemR{1}{ítem con IVA reducido, con descuento}{1000}{5} \ItemA{1}{ítem con IVA adicional, con descuento}{1000}{10} - \ItemE{1}{ítem exento de impuesto, con descuento}{1000}{8} + \ItemE{1}{ítem exento de impuesto, con descuento}{1000} \ItemX{1}{línea sin precio} \end{factura} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura3.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura3.tex index f10a4880551..13a8483ec73 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura3.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura3.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `facttres') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Agrupados los totales por gravámenes (agrupado), %% Sin líneas verticales internas (sinlineasvi), @@ -50,6 +51,7 @@ %% Sin resumen, %% Con artículos gravados con todos los IVA, %% Sin descripción larga. +%%</desc> %% \documentclass[ agrupado, @@ -64,11 +66,11 @@ sinfirmas, \usepackage[utf8]{inputenc} -\SepElementos{1cm} +\SepElementos{0.75cm} \SepEncabez{1cm}{16pt} \LineaEncabez{1pt}{20pt}{3pt} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} \Contacto{Jacinto de Ayala} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura4.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura4.tex index 297ab0101ea..02c13d3b2ca 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura4.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura4.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factcuatro') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,23 +35,28 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Totalización en modo de filas (filas), +%% Centrados los totales en el modo de filas (centrado), %% Primero la descripción, luego el precio unitario, luego la cantidad (duc), %% Sin líneas verticales internas (sinlineasvi), %% Sin líneas horizontales internas (sinlineashi), %% Expande el cuadro de la factura con espacio en blanco (exparriba), %% Sin condiciones del documento (sincondiciones), +%% Agregando una separación extra entre los ítems en la factura (\SepItemsExtra), %% Cambiando varias de las tipografías (\Letra...), -%% Usando \Nombre y \CI en lugar de \RazonSocial y \RIF, +%% Usando “\Nombre” y “\CI” en lugar de “\RazonSocial” y “\RIF”, %% Sin especificar la persona de contacto, %% Sin especificar el e-mail del cliente, %% Sin resumen, %% Agregando un ítem sin precio (\ItemX), %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ filas, +centrado, duc, sinlineasvi, % sinlineasv, % sin ninguna línea vertical @@ -63,12 +68,13 @@ sincondiciones, \usepackage[utf8]{inputenc} +\SepItemsExtra{8pt} \LetraDescripcion{\fontsize{20}{30}} \LetraTitEnc{\fontsize{15}{20}\bfseries} \LetraFirmas{\fontsize{16}{20}\itshape} \LetraCondiciones{\fontsize{18}{28}\bfseries} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Nombre{Jacinto de Ayala y San Vicente} \CI{V-987.654.321} \Direccion{Av. Ayala, Galpón San Vicente, Sector Arauca, Apure, Venezuela} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura5.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura5.tex index 3c5ee4c86a3..16e0a426b9b 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura5.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura5.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factcinco') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,12 +35,12 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Escribimos factura y reporte, pero sólo producimos la factura, %% Cuadro de la factura sin la columna de cantidades (sincantidad), %% Totalización en modo de filas (filas), -%% Centrados los totales en el modo de filas (centrado), -%% Escribe la denominación ("FACTURA") y el número (denom), +%% Escribe la denominación (“FACTURA”) y el número (denom), %% Separado cada ítem con una línea horizontal (conlineasha), %% Sin expandir el cuadro de la factura ni la descripción (sinexpandir), %% Obligando a especificar todos los IVA así no existan productos gravados con ellos (todosiva), @@ -49,11 +49,11 @@ %% Con resumen (\Resumen), %% Agregando un ítem sin precio (\ItemX), %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ sincantidad, filas, -centrado, denom, conlineasha, sinexpandir, @@ -62,7 +62,7 @@ todosiva, \usepackage[utf8]{inputenc} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura6.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura6.tex index b970c7fd41c..dd89f19ae85 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura6.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura6.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factseis') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,11 +35,13 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Con la columna para enumerar los ítems (numitem), -%% Escribe la denominación ("FACTURA") y el número (denom), +%% Escribe la denominación (“FACTURA”) y el número (denom), %% Sin líneas verticales externas (sinlineasve), %% Sin líneas horizontales externas (sinlineashe), +%% Escribimos un ítem cuya descripción ocupa más que una línea, %% Obligando a especificar todos los IVA así no existan productos gravados con ellos (todosiva), %% Especificando 'G' en los ítems gravados con IVA general (G), %% Escribe un archivo CSV con la información numérica de la factura (csv), @@ -47,6 +49,7 @@ %% Especificando el nombre de quien firma la copia de la factura como recibida (\Conforme), %% Con etiquetas y referencias, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ numitem, @@ -63,11 +66,11 @@ csv, \usepackage[utf8]{inputenc} \makeatletter - \renewcommand{\@@Fecha}{\slshape FECHA DE EMISIÓN:} + \renewcommand{\@@Fecha}{\slshape FECHA:} \renewcommand{\@EstiloFecha}{\@LetraFecha\bfseries\@@Fecha\space{\color{blue}\@Fecha}} \makeatother -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} @@ -82,12 +85,12 @@ csv, \begin{factura} \Item{2}{ítem con IVA general}{1000}\label{primeritem} - \Item{4}{otro ítem con IVA general}{100} + \Item{10}{otro ítem con IVA general -descripción larga para mostrar el cambio de línea-}{1000} \end{factura} \Descripcion{Descripción larga del servicio. - En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, dando un total de \Moneda\ptref{primeritem}, el IVA de este ítem es de \Moneda\AlicuotaG; luego se facturó otro ítem dando un total final de \Moneda\Total. + En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, el descuento porcentual de ese artículo es \dctoref{primeritem}, dando un total de \Moneda\ptref{primeritem}. El IVA de este ítem es de \Moneda\numprint\AlicuotaG; luego se facturó otro artículo más, dando un total final de \Moneda\numprint\Total. % También podemos usar \dctoref{primeritem} para la referencia al descuento, y en cuanto a las totalizaciones: \BIE, \BIR, \BIA, \AlicuotaR, \AlicuotaA, \SubtG, \SubtE, \SubtR, \SubtA, \DescG, \DescE, \DescR, \DescA para los demás totales. } diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura7.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura7.tex index 21329c9bfea..bfdaa6b3cf5 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura7.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura7.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factsiete') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,8 +35,11 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Totalización en modo de filas (filas), +%% Escribimos un ítem cuya descripción ocupa más que una línea, +%% Cuando la descripción de un ítem ocupa más que una línea, no pone el carácter que indica continuación en la siguiente línea ni los caracteres en las columnas vacías (sinmarcas), %% Obligando a especificar todos los IVA así no existan productos gravados con ellos (todosiva), %% Cambiando la geometría del papel de la factura (\GeometriaFactura), %% Alterando la separación mínima vertical entre los elementos (\SepElementos), @@ -48,16 +51,18 @@ %% Alterando la longitud de las líneas para firmar y su grosor (\LineaFirmas), %% Alterando la posición de la fecha, las firmas y de la denominación del documento (\PosFecha, \PosFirmas y \PosDenom), %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ filas, +sinmarcas, todosiva, ]{factura} \usepackage[utf8]{inputenc} \GeometriaFactura{legalpaper,vmargin={5cm,5.5cm},hmargin={1cm,1cm},footskip=0pt,headsep=0pt,headheight=0pt} -\SepElementos{1cm} +\SepElementos{0.75cm} \SepEncabez{1cm}{16pt} \SepDescrip{16pt} \SepFilas{1cm}{10pt} @@ -68,7 +73,7 @@ todosiva, \PosFirmas{1cm}{1cm}{-3cm} \PosDenom{-0cm}{4.3cm} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} \Contacto{Jacinto de Ayala} @@ -81,6 +86,7 @@ todosiva, \begin{factura} \Item{1}{ítem con IVA general}{1000} + \Item{10}{otro ítem con IVA general -descripción larga para mostrar el cambio de línea-}{1000} \end{factura} \Descripcion{Descripción larga del servicio} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura8.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura8.tex index 32d3874283f..7292c2de5c0 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura8.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-factura8.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `factocho') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Escribimos factura y reporte, pero sólo producimos la factura, %% Sin expandir el cuadro de la factura ni la descripción (sinexpandir), @@ -43,6 +44,7 @@ %% Con descuentos totales en moneda aplicables por igual a todos los tipos de elementos existentes (\Descuento*), %% Con resumen (\Resumen), %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ sinexpandir, @@ -61,7 +63,7 @@ siniva, \LetraNumTotal{\fontsize{20}{30}\bfseries} \tabcolsep7pt -\Fecha{05-11-2016} +\Fecha{06-11-2017} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} \Contacto{Jacinto de Ayala} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-firma.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-firma.tex index 054873868e3..188dac80cb9 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-firma.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-firma.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `firma') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-fondo.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-fondo.tex index 2c12882b5d5..54f83b9781e 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-fondo.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-fondo.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `fondo') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -82,7 +82,7 @@ \fontdimen2\font=0.55em Imprenta: \hfill IMPRESOS DE LA VEGA. Av. Garcilaso de la Vega, Qta. San Román, Santa Mónica, Caracas, Venezuela. RIF: R-87.654.321-0. Tlf: (0123) 456.78.90\newline \fontdimen2\font=0.65em - e-mail: \hfill imprenta@sanrom.án. No. Providencia SENIAT 01/01060 de fecha 12/11/2008 - Control desde No. 00-000001 hasta No. 00-010000 / Fecha 01/01/2016.\par + e-mail: \hfill imprenta@sanrom.án. No. Providencia SENIAT 01/01060 de fecha 12/11/2008 - Control desde No. 00-000001 hasta No. 00-010000 / Fecha 01/01/2017.\par \end{minipage} \end{document} %% diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-membrete.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-membrete.tex index f9e2c7eac11..f9d6cbfe011 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-membrete.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-membrete.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `membrete') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-prefactura.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-prefactura.tex index 0160f89da0f..830e1ce3824 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-prefactura.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-prefactura.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `prefac') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una prefactura (prefactura), %% Expande el cuadro de la factura con espacio en blanco (exparriba), %% Con línea protectora del espacio en blanco (linea), @@ -42,6 +43,7 @@ %% Con descuentos totales en porcentaje aplicables por igual a todos los tipos de elementos existentes (\Descuento), %% Sin resumen, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ prefactura, @@ -55,7 +57,7 @@ linea, \FondoFactura{factura-ejemplo-fondo} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte1.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte1.tex index 8ff5ba9ed0b..365c7c9856c 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte1.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte1.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `repuno') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Escribimos un reporte, %% Generamos factura y reporte (conreporte), @@ -45,6 +46,7 @@ %% Sin especificar el proveedor, así toma el emisor de la factura como el nombre del proveedor, %% Sin resumen, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ conreporte, @@ -65,7 +67,7 @@ conreporte, % \EstiloPagReporte[empty]{soloarriba} % \EstiloPagReporte{soloarriba} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte2.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte2.tex index aa8a3a8b6f9..55cc0943a97 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte2.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte2.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `repdos') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos una factura, %% Escribimos un reporte, %% Escribimos factura y reporte, pero sólo producimos el reporte (soloreporte), @@ -45,6 +46,7 @@ %% Sin resumen, %% Con etiquetas y referencias, %% Con descripción larga (\Descripcion). +%%</desc> %% \documentclass[ soloreporte, @@ -59,7 +61,7 @@ soloreporte, % \EstiloPagReporte{solonumpag} % \EstiloPagReporte{soloabajo} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \Num{1} \RazonSocial{Ayala San Vicente Usureros} \RIF{Y-12.345.678-9} @@ -82,7 +84,7 @@ soloreporte, \begin{reporte} El reporte - página 1\newpage El reporte - página 2 \newpage El reporte - página 3. - En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, dando un total de \Moneda\ptref{primeritem}, el IVA de este ítem es de \Moneda\AlicuotaG; luego se facturó otro ítem dando un total final de \Moneda\Total. + En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, el descuento porcentual de ese artículo es \dctoref{primeritem}, dando un total de \Moneda\ptref{primeritem}. El IVA de este ítem es de \Moneda\numprint\AlicuotaG; luego se facturó otro artículo más, dando un total final de \Moneda\numprint\Total. % También podemos usar \dctoref{primeritem} para la referencia al descuento, y en cuanto a las totalizaciones: \BIE, \BIR, \BIA, \AlicuotaR, \AlicuotaA, \SubtG, \SubtE, \SubtR, \SubtA, \DescG, \DescE, \DescR, \DescA para los demás totales. \end{reporte} diff --git a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte3.tex b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte3.tex index dc8713bfaf0..c1a21a8c3c9 100644 --- a/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte3.tex +++ b/Master/texmf-dist/doc/latex/factura/factura-ejemplo-reporte3.tex @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `reptres') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,6 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% %% Descripción de este ejemplo: +%%<desc> %% Escribimos un reporte, %% Generamos solamente un reporte (soloreporte), %% El reporte se imprime en las dos caras del papel (twoside), @@ -44,6 +45,7 @@ %% Cambiamos el estilo de página para que la información del reporte aparezca como pie de página (\EstiloPagReporte), %% Agregando en el reporte la línea para firmar a mano (\FirmaReporte), %% Sin descripción larga. +%%</desc> %% \documentclass[ soloreporte, @@ -66,7 +68,7 @@ twoside, % \EstiloPagReporte[empty]{soloarriba} % \EstiloPagReporte{soloarriba} -\Fecha{05-11-2016} +\Fecha{06-11-2017} \RazonSocial{Ayala San Vicente Usureros} \Proveedor{Lázaro de la Vega y San Román} diff --git a/Master/texmf-dist/doc/latex/factura/factura.pdf b/Master/texmf-dist/doc/latex/factura/factura.pdf Binary files differindex c699f180d04..31abab875db 100644 --- a/Master/texmf-dist/doc/latex/factura/factura.pdf +++ b/Master/texmf-dist/doc/latex/factura/factura.pdf diff --git a/Master/texmf-dist/source/latex/factura/factura.dtx b/Master/texmf-dist/source/latex/factura/factura.dtx index c61c15b4fd9..96f5ecc12bc 100644 --- a/Master/texmf-dist/source/latex/factura/factura.dtx +++ b/Master/texmf-dist/source/latex/factura/factura.dtx @@ -1,7 +1,7 @@ %\iffalse meta-comment % % factura.dtx -% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -39,7 +39,7 @@ \input docstrip.tex \preamble -Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -135,8 +135,9 @@ and factura-beispiel-rechnung.tex. \Msg{ pdflatex factura-ejemplo-fondo.tex} \Msg{ pdflatex factura-ejemplo-membrete.tex} \Msg{ xelatex factura-ejemplo-firma.tex} -\Msg{ pdflatex factura-ejemplo-prefactura.tex} -\Msg{and recompile \jobname.dtx.} +\Msg{} +\Msg{Also compile all other examples and recompile \jobname.dtx.} +\Msg{} \Msg{To manual update index and changelog, type} \Msg{ makeindex -s gind.ist -o \jobname.ind \jobname.idx} \Msg{ makeindex -s gglo.ist -o \jobname.gls \jobname.glo} @@ -163,7 +164,7 @@ and factura-beispiel-rechnung.tex. %<class>\ProvidesClass{factura} %<def>\ProvidesFile{factura.def} %<*class|def> -[2016/06/25 v2.82 +[2017/03/11 v3.00 %<class>Clase para elaborar facturas legales %<class>en la República Bolivariana de Venezuela. %<def>Archivo valores iniciales y condiciones de borde para factura.cls @@ -172,10 +173,29 @@ and factura-beispiel-rechnung.tex. %</class|def> %<*driver> \documentclass{ltxdoc} -\usepackage[letterpaper,marginparsep=10pt,vmargin={3.2cm,2cm},hmargin={4cm,2cm}]{geometry} -\usepackage[usenames,dvipsnames]{color} +\usepackage[a4paper,headheight=0.6cm,headsep=0.77cm,footskip=1.2cm,footnotesep=0.54cm,marginparsep=10pt,vmargin={3.2cm,2cm},hmargin={4cm,2cm}]{geometry} +\usepackage[usenames,dvipsnames]{xcolor} \usepackage[spanish]{babel} -\usepackage{paralist,calc,verbatim,graphicx,array,todo,etoolbox,metalogo,ifxetex,ifluatex,footnote,hypdoc} +\usepackage{ + array, + calc, + catchfilebetweentags, + etoolbox, + footnote, + graphicx, + ifluatex, + ifxetex, + metalogo, + paralist, + pgffor, + regexpatch, + setspace, + tikz, + todo, + verbatim, + xparse, + xstring, + hypdoc} \ifxetex \usepackage{fontspec} @@ -196,14 +216,98 @@ and factura-beispiel-rechnung.tex. \makesavenoteenv{tabular} \makesavenoteenv{table} +\newcommand\flechaCR{% + \raisebox{-0.4ex}{% + \begin{tikzpicture} + \draw[line width=0.075ex] (0,0) arc (20:70:0.75ex) + (0,0) arc (-70:-20:0.75ex) ++ (0.8ex,0.55ex) arc (0:-100:1ex); + \end{tikzpicture}}} + \EnableCrossrefs \CodelineIndex \OnlyDescription \RecordChanges -\setlength{\parskip}{7pt} +\setlength\parskip{7pt} \setlength\IndexMin{100pt} +\widowpenalty10000 + +\newbool{ejemploizq} +\newbool{ejemploder} +\newbool{ejemplocondesc} + +\newcommand{\ListaDeEjemplos}{ + ejemplo-cotizacion, + ejemplo-prefactura, + ejemplo-factura1, + ejemplo-factura2, + ejemplo-factura3, + ejemplo-factura4, + ejemplo-factura5, + ejemplo-factura6, + ejemplo-factura7, + ejemplo-factura8, + ejemplo-reporte1, + ejemplo-reporte2, + ejemplo-reporte3, + beispiel-rechnung} + +\catcode`\%=11 +\catcode`\|=14 + +\newcommand{\InitEjemplo}{| + \catcode`\<=12 + \catcode`\>=12 + \foreach \auxvar in \ListaDeEjemplos {| + \expandafter\CatchFileBetweenDelims\csname \auxvar\endcsname{factura-\auxvar.tex}{<desc>}{</desc>}[\catcode37=11\catcode13=14]| + }| + \catcode`\<=13 + \catcode`\>=13 +} + +| Gracias a Werner y egreg por el uso de \begingroup\ttfamily\string ... \endgroup +| Thanks to Werner and egreg for the use of \begingroup\ttfamily\string ... \endgroup +| (http://tex.stackexchange.com/questions/342572/error-using-verb-as-the-replace-string-on-xpatchcmd) +\NewDocumentCommand{\Ejemplo}{s s O{0.5} m O{} G{1}}{| + \IfFileExists{factura-#4.pdf}{| + \catcode`\<=12 + \catcode`\>=12 + \IfBooleanTF{#1}{\booltrue{ejemploizq}}{\booltrue{ejemplocondesc}}| + \IfBooleanT{#2}{\booltrue{ejemploder}\boolfalse{ejemploizq}}| + \def\ancho{#3}| + \ifnum #6=1 {\phantomsection\par\mbox{}\hfill{\color{RoyalBlue}\ttfamily \large factura-#4}\hfill\mbox{}\par}{}\fi + \ifbool{ejemploder}{\hfill}{}| + \begin{minipage}{\ancho\linewidth} + \fbox{\includegraphics[page=#6,width=\linewidth-2\fboxrule-2\fboxsep]{factura-#4}} + \IfBooleanF{#1}{\addcontentsline{toc}{subsection}{factura-#4}} + \end{minipage}| + \ifbool{ejemploizq}{\hfill}{}| + \ifbool{ejemplocondesc} + {\hfill + \CatchFileBetweenDelims{\DescEjemplo}{factura-#4.tex}{<desc>}{</desc>}[\catcode37=11\catcode13=14]| + \catcode`\%=11 + \regexpatchcmd*{\DescEjemplo}{\c{[A-Za-z]*}}{\c{begingroup}\c{ttfamily}\c{string}\0\c{endgroup}}{}{}| + \regexpatchcmd*{\DescEjemplo}{(\()(\cL[a-z]*)(\))}{(\c{begingroup}\c{ttfamily}\2\c{endgroup})}{}{}| + \xpatchcmd*{\DescEjemplo}{%% }{\item}{}{}| + \xpatchcmd*{\DescEjemplo}{%%}{}{}{}| + \begin{minipage}{\linewidth-\ancho\linewidth} + \begin{itemize} + \setlength{\itemsep}{0pt} + #5\DescEjemplo + \end{itemize} + \end{minipage}} + {}| + \boolfalse{ejemploizq}\boolfalse{ejemploder}\boolfalse{ejemplocondesc}| + \catcode`\%=9 + \catcode`\<=13 + \catcode`\>=13 + }{\message{LaTeX warning: No existe factura-#4.pdf; se recomienda compilarlo antes de compilar este documento.}}} + +\catcode`\%=14 +\catcode`\|=12 + +\InitEjemplo + % No quiero que las notas pendientes tengan los números de página: \patchcmd{\todoitem}{(p.~\pageref{todopage:\thetodo}):}{-}{}{} @@ -249,14 +353,17 @@ and factura-beispiel-rechnung.tex. \maketitle \DocInput{\jobname.dtx} \clearpage + \phantomsection \addcontentsline{toc}{section}{\todoname} \todos \section*{Información específica de esta versión} - Para poder compilar con \LuaLaTeX{} es necesaria la versión v2.26 del paquete |zref|, de fecha 2016/05/21, y la versión v1.18 de |atbegshi| de fecha 2016/06/09. - - Esta versión de |factura| se sacó principalmente para corregir un error introducido en la versión anterior v2.72 en cuanto a las referencias, para agregar la opción |numitem| que enumera los ítems en la factura y para que la línea diagonal (opción |linea|) funcione correctamente siempre. + Para poder compilar con \LuaLaTeX{} es necesaria la versión v2.26 del paquete |zref|, de fecha 2016/05/21, y la versión v1.18 de |atbegshi| de fecha 2016/06/09. + + En esta versión se agregan unas opciones de la clase y se incorporan todos los ejemplo en la documentación. + \phantomsection \addcontentsline{toc}{section}{\changesname} \PrintChanges + \phantomsection \addcontentsline{toc}{section}{\glosname} \PrintIndex \end{document} @@ -335,7 +442,7 @@ and factura-beispiel-rechnung.tex. % \changes{v2.6}{2016/03/07}{Cuando la descripción en el cuadro de la factura ocupa más que una línea, agrega al final de cada línea el carácter $\hookleftarrow$.} % \changes{v2.6}{2016/03/07}{Corregido que salga la ``G'' obligatoria de IVA General cuando hay un elemento exento y uno con IVA General.} % \changes{v2.6}{2016/03/07}{Cuatro nuevas definiciones dentro del archivo \texttt{factura.def} para establecer algunos caracteres que antes estaban fijados dentro del archivo \texttt{factura.cls}} -% \changes{v2.6}{2016/03/07}{{\slshape parbox}es para cada elemento en la tabla, para asegurar que la denominación del gravámen quede alineada correctamente.} +% \changes{v2.6}{2016/03/07}{{\slshape parbox}es para cada elemento en la tabla, para asegurar que la denominación del gravamen quede alineada correctamente.} % \changes{v2.6}{2016/03/07}{Quitados los paquetes \texttt{xifthen} y \texttt{pbox}. Arreglada la presentación de los datos del cliente cuando el resumen es más grande.} % \changes{v2.6}{2016/03/07}{Cuando había descuentos totales y se pedía modo de totalización en filas, este modo no se apagaba correctamente y la línea oblicua daba problemas. Arreglado.} % \changes{v2.72}{2016/05/16}{Las macros internas \cs{@DescripcionAuxCmd} y \cs{@EscribeTipoDeImpuesto} fueron modificadas.} @@ -350,20 +457,28 @@ and factura-beispiel-rechnung.tex. % \changes{v2.82}{2016/06/25}{Reimplementada la línea diagonal para que funcione en todos los casos.} % \changes{v2.82}{2016/06/25}{Nueva macro interna \cs{@ColumnasMultiColumnTotalesAuxCmd} para hacer más general la colocación de los totales en el modo de columnas dentro de un \cs{multicolumn}.} % \changes{v2.82}{2016/06/25}{Quitado el paquete \texttt{MnSymbol} en favor del comando \cs{flechaCR} para la flecha que indica que la descripción ocupa más de una línea.} -% +% \changes{v3.00}{2016/10/25}{Se agregó la opción \texttt{sinmarcas} para pedir que no se escriba el carácter de fin de linea cuando la descripción ocupa más que una línea y también para evitar que salga el carácter que marca las celdas vacías también cuando la decripción es larga.} +% \changes{v3.00}{2017/03/11}{Nueva macro \cs{SepItemsExtra} para agregar espacio extra entre los ítems en la factura.} +% \changes{v3.00}{2017/03/11}{Opción nueva \texttt{sintotales} para que no se escriba ningún total de los elementos. Útil para cotizaciones de por ejemplo varias formas de un mismo producto.} +% \changes{v3.00}{2017/03/11}{Opción nueva \texttt{centradesc} para centrar el texto en la descripción de cada elemento en la factura.} +% \changes{v3.00}{2017/03/11}{Cambiado el interlineado en la documentación, el tamaño del papel y agregados a la documentación todos los ejemplos que están embebidos en el \texttt{.dtx}, de forma automática.} +% \changes{v3.00}{2017/03/11}{El descuento individual ahora es opcional al pedir la opción, es decir, no hace falta establecer en '0' los elementos donde no haya descuento cuando se usa la opción \texttt{descuentos}.} +% \changes{v3.00}{2017/03/11}{Opción \texttt{subtotal} para agregar una columna extra después del precio unitario y antes del descuento, para reflejar el precio antes de aplicar el descuento individual.} +% % \DoNotIndex{} % % \tableofcontents % % \section*{Brief description in english} % -% |factura| is the spanish word for 'invoice', so this is a \LaTeX{} class for typesetting and calculating invoices, made taking into account requirements of {\slshape SENIAT} legislation (tax collector entity on the Bolivarian Republic of Venezuela), but its use is not restricted to Venezuela because all variables and displayed text can be redefined by invoking commands or editing. +% |factura| is the spanish word for `invoice', so this is a \LaTeX{} class for typesetting and calculating invoices, made taking into account requirements of {\slshape SENIAT} legislation (tax collector entity on the Bolivarian Republic of Venezuela), but its use is not restricted to Venezuela because all variables and displayed text can be redefined by invoking commands or editing. % % \newpage +% \setstretch{1.4} % % \section{Introducción} % -% La clase de \LaTeX{} |factura| está diseñada para su uso en la República Bolivariana de Venezuela, conforme a los requerimientos fijados por las providencias del {\slshape SENIAT} 0591, 0257 y 0071, válidas éstas para marzo del año 2016. +% La clase de \LaTeX{} |factura| está diseñada para su uso en la República Bolivariana de Venezuela, conforme a los requerimientos fijados por las providencias del {\slshape SENIAT} 0591, 0257 y 0071, válidas éstas para marzo del año 2017. % % Con |factura| se pueden elaborar facturas en formas libres fiscales\footnote{En cuanto a las formas libres, cada hoja del talonario de facturas legales tiene un encabezado con los datos del emisor de la factura y un pie de página con la información de identificación de la imprenta, en tamaño de hoja carta entera; esto es lo que se llama ``forma libre''.}, cotizaciones y reportes de servicios, dejando todos los cálculos a \TeX{}. % @@ -404,10 +519,12 @@ and factura-beispiel-rechnung.tex. % % \item {\color{RoyalBlue}|xelatex factura-ejemplo-firma.tex|} % -% Compilamos el ejemplo de la {\slshape prefactura}, que es parte de esta documentación: +% Al tener el fondo, el membrete y la firma compilados en |.pdf| según los pasos anteriores, podremos compilar cualquiera de los ejemplos en |.tex| que el archivo |factura.dtx| genera, y eso lo debemos hacer, ya que todos ellos (en su versión en |.pdf|) forman parte de la documentación. Los podemos compilar así: % % \item {\color{RoyalBlue}|pdflatex factura-ejemplo-prefactura.tex|} % +% De esta forma como compilamos {\ttfamily factura-ejemplo-prefactura} compilamos todos los demás ejemplos: la cotización, las facturas del 1 hasta la última, el reporte del 1 hasta el último, y finalmente la factura para otra legislación.\footnote{Podemos también compilar con \LuaLaTeX{} o con \XeLaTeX{}.} +% % Al tener todo esto hecho volvemos a compilar |factura.dtx| para producir esta documentación, puesto que el |.dtx| necesita ser compilado más de una vez para que la documentación quede correctamente elaborada: % % \item {\color{RoyalBlue}|pdflatex factura.dtx|} @@ -417,15 +534,11 @@ and factura-beispiel-rechnung.tex. % \item {\color{RoyalBlue}|makeindex -s gind.ist -o factura.ind factura.idx|} % \item {\color{RoyalBlue}|makeindex -s gglo.ist -o factura.gls factura.glo|} % -% {\itshape No es necesario ejecutar los dos comandos anteriores porque los ejecuta el compilador al actuar sobre }|factura.dtx|. +% {\slshape No es necesario actualizar los índices con los dos comandos anteriores porque esos dos comandos los ejecuta el motor de compilación al actuar sobre }|factura.dtx|. % % \end{enumerate} % -% Al tener el fondo, el membrete y la firma compilados en |.pdf| según los pasos anteriores\footnote{Si sólo ejecutamos pdf\TeX{} para generar los archivos sin la documentación, tendremos que compilarlos con los pasos 2, 3 y 4.}, podremos compilar cualquiera de los ejemplos en |.tex| que el archivo |factura.dtx| genera, y eso lo podemos hacer, por ejemplo así: -% -% \noindent {\color{RoyalBlue}|pdflatex factura-ejemplo-factura1.tex|}\footnote{Podemos también compilar con \LuaLaTeX{} o con \XeLaTeX{}.} -% -% +% \newpage % \section{Archivos de ejemplo incluídos} % % Este paquete incluye varios ejemplos, entre ellos la emulación de un diseño de factura entregado por alguna imprenta, que nos sirve para nuestros ejemplos de prefacturas, un diseño de membrete que nos sirve para los reportes, una firma que emula ser una firma real escaneada para su inclusión en algunos casos, así como varios ejemplos de facturas, prefacturas, cotizaciones y reportes. Cada uno de ellos tiene al principio del documento fuente la aclaratoria de qué es lo que hace, para diferenciarlo de los demás ejemplos. @@ -437,8 +550,7 @@ and factura-beispiel-rechnung.tex. % |README| & Archivo con la descripción corta, \\ % |factura-ejemplo-firma.tex| & Ejemplo de firma digitalizada, \\ % |factura-ejemplo-fondo.tex| & Elemplo de una forma libre fiscal digitalizada, \\ -% |factura-ejemplo-membrete.tex| & El mismo ejemplo anterior pero sólo el encabezado, para \\ -% & poder usarlo como membrete, \\ +% |factura-ejemplo-membrete.tex| & Ejemplo de membrete para los reportes, \\ % |factura-ejemplo-prefactura.tex| & Ejemplo de ``{\slshape prefactura}'', \\ % |factura-ejemplo-cotizacion.tex| & Ejemplo de cotización, \\ % |factura-ejemplo-factura*.tex| & Ejemplos de facturas, \\ @@ -448,10 +560,16 @@ and factura-beispiel-rechnung.tex. % % \IfFileExists{factura-ejemplo-prefactura.pdf}{% % \newpage\section{Ejemplo preliminar\label{sec:ejemplo}} -% \noindent Lo que sigue es un ejemplo del aspecto final de una {\slshape ``prefactura''}, que está bajo el nombre de ``|factura-ejemplo-prefactura.tex|'' y más adelante explicaremos en qué consiste: +% Lo que sigue es un ejemplo del aspecto final de una {\slshape ``prefactura''}, que está bajo el nombre de ``|factura-ejemplo-prefactura.tex|'' y más adelante explicaremos en qué consiste: % -% \noindent\includegraphics[scale=0.7]{factura-ejemplo-prefactura.pdf} -% \newpage}{\message{LaTeX warning: No existe factura-ejemplo-prefactura; se recomienda compilarlo antes de compilar este documento.}} +% \noindent +% \mbox{}\hfill +% \vfil +% \fbox{\includegraphics[width=0.9\linewidth]{factura-ejemplo-prefactura.pdf}} +% \hfill\mbox{} +% \vfil\mbox{} +% \newpage} +% {\message{LaTeX warning: No existe factura-ejemplo-prefactura; se recomienda compilarlo antes de compilar este documento.}} % % % \section{Geometría de la hoja\label{sec:geohoja}} @@ -522,6 +640,9 @@ and factura-beispiel-rechnung.tex. % \DescribeOption{sinnumero} % Escribe el texto de la denominación del documento en su posición (e.g. ``COTIZACIÓN'') pero sin escribir el número; por ejemplo para las cotizaciones que no son documentos que legalmente lleven número, aunque el número puede ser para control interno. Esta opción implica la opción anterior |denom|. % +% \DescribeOption{sintotales} +% Con esta opción evitamos que se totalicen los elementos en la factura; sólo se presenta el cuadro sin los totales. La utilidad de esto no es en las facturas sino en las cotizaciones para casos donde se muestran variantes del mismo producto para que el cliente elija entre ellos. No tendría sentido totalizar allí sino que funcione como un listado de precios. {\itshape Debe usarse en las cotizaciones porque una factura sin totales no es válida.} +% % \DescribeOption{siniva} % No se cobra IVA, para los casos en los que eso aplique. % @@ -537,6 +658,12 @@ and factura-beispiel-rechnung.tex. % \DescribeOption{impdesc} % Con esta opción, la letra que indica la denominación del impuesto aplicado a cada elemento, en lugar de escribirse en el precio unitario y en el total, que es la forma predeterminada, sale escrito al final de la descripción. Puede preferirse de esta forma, y ahorra un poco de espacio usable en la descripción porque ya no sale en dos lugares dicha letra sino en uno solo. % +% \DescribeOption{centradesc} +% Podemos centrar el texto de la descripción de cada ítem en la factura con este comando en lugar de justificarlo. +% +% \DescribeOption{sinmarcas} +% Con |sinmarcas| evitamos que el carácter de fin de línea aparezca cuando la descripción ocupa más que una línea; ese carácter indica que la línea continúa abajo, y predeterminadamente es la flecha ``\flechaCR''. También con esta opción no aparece el carácter ``$\cdot$'' en las celdas vacías en este mismo caso. +% % \DescribeOption{numitem} % Con la opción |numitem| una nueva columna aparece en el cuadro de la factura donde se enumera cada ítem en el órden en el que se escriben dentro del entorno para la factura. Esto es útil por ejemplo cuando se hace referencia al número del ítem con el comando |\itemref|. Véase la sección \ref{sec:etiquetas}. % @@ -544,7 +671,10 @@ and factura-beispiel-rechnung.tex. % El ambiente |factura| tiene también la posibilidad de no mostrar el campo de la cantidad, ni aceptarlo como argumento de cada ítem; en ese caso los comandos |\Item| -de los que hablaremos en la sección \ref{sec:factura}- aceptan como argumentos solamente la descripción del elemento y su precio, en ese orden. % % \DescribeOption{descuentos} -% Permite agregar un descuento en porcentaje por cada ítem de la factura, siendo dicho porcentaje el último argumento de los comandos |\Item|, que tendrá que ser incluído como ``0'' en los elementos donde no aplique tal descuento. (Explicado también en la sección \ref{sec:factura}). +% Permite agregar un descuento en porcentaje en cada elemento de la factura, siendo dicho porcentaje el último argumento de los comandos |\Item|. Si no aplica descuento para un ítem, puede este dejarse sin ese argumento, dando el mismo resultado que indicar ``0'' como argumento para ese descuento. (Explicado también en la sección \ref{sec:factura}). +% +% \DescribeOption{subtotal} +% Agrega una columna extra en la factura; sólo aplica cuando también se usa la opción 'descuentos'. La nueva columna escribe el subtotal que cada ítem produce, es decir, el precio unitario multiplicado por la cantidad sin aplicar el descuento. Esta opción sobrerecarga la factura (precio unitario, descuento, subtotal y precio total), y su uso es recomendable cuando también se usa 'sincantidad', porque de esta forma se tiene el subtotal, descuento y el total. % % \DescribeOption{duc} % Cambia el orden de los campos en el documento impreso a: descripción, precio unitario, cantidad y precio total. {\itshape Esto no cambia la forma como deben especificarse los argumentos de |\Item| sino solamente cambiará cómo serán mostrados}. @@ -851,7 +981,7 @@ and factura-beispiel-rechnung.tex. % \DescribeMacro{\ItemE} % {\color{Red}|\Item|\marg{cantidad}\marg{descripción}\marg{precio unitario}\marg{\% descuento}} % -% Cuando pedimos descuentos individuales (opción |descuentos| al cargar la clase), todas las macros |\Item| requieren de un argumento más al final, que es el descuento porcentual, y deberá especificarse como |0| en los elementos en los que no haya descuento: +% Cuando pedimos descuentos individuales (opción |descuentos| al cargar la clase), todas las macros |\Item| tienen un posible\footnote{Es un argumento opcional, aunque va entre llaves como todos los demás.} argumento más al final. que es el descuento porcentual. No especificarlo da el mismo resultado que un descuento de 0\% sobre ese ítem: % % \subsubsection{Opción `{\ttfamily sincantidad}'\label{subsec:sincantidad}} % @@ -970,6 +1100,10 @@ and factura-beispiel-rechnung.tex. % % Las cajas donde van los datos del cliente y el resumen están separadas entre sí una distancia controlable con el primer argumento de |\SepEncabez|. Obviamente, si no se escribe un resumen saldría unícamente la caja de los datos del cliente, y esta separación no tendría efecto. El segundo argumento de |\SepEncabez| nos permite controlar la distancia entre la línea del recuadro y el texto, es decir, un margen interno entre el contorno de la caja y el texto que hay dentro para que no salga pegado a la línea que lo encierra. % +% \DescribeMacro{\SepItemsExtra}{\color{RoyalBlue}|\SepItemsExtra|\marg{sep. extra entre items}} +% +% Agrega una separación extra entre los elementos o ítems en el cuadro de la factura. La separación entre ítems está dada por el ``\textsl{baselineskip}'' que se da con el comando |\LetraItems| que se explicará más adelante en esta misma sección. +% % \DescribeMacro{\SepDescrip}{\color{RoyalBlue}|\SepDescrip|\marg{sep. interna texto}} % % Con este comando controlamos la distancia entre la línea del recuadro de la descripción y el texto, o sea, el margen interno del cuadro de la descripción, tal como lo definimos para el caso anterior. @@ -1075,7 +1209,7 @@ and factura-beispiel-rechnung.tex. % % \DescribeMacro{\LetraTitReporte}{\color{RoyalBlue}|\LetraTitReporte|\marg{tipo de letra}} % -% La letra del título del reporte, que sale al principio de éste, se puede cambiar con |\LetraTitReporte|. +% La letra del título del reporte se puede cambiar con |\LetraTitReporte|. % % \DescribeMacro{\LetraInfoPagina}{\color{RoyalBlue}|\LetraInfoPagina|\marg{tipo de letra}} % @@ -1105,7 +1239,7 @@ and factura-beispiel-rechnung.tex. % % \noindent \DescribeMacro{\label}{\color{RoyalBlue}|\label|\marg{etiqueta}} % -% Para ello usamos la conocida macro |\label| de \LaTeX{} justamente después del ítem que nos interese luego referenciar, por ejemplo: +% Para ello usamos la conocida macro |\label| de \LaTeX{} justamente después del ítem que nos interese luego referenciar, por ejemplo (usando descuentos individuales): % % \iffalse %<*literal> @@ -1113,7 +1247,7 @@ and factura-beispiel-rechnung.tex. \begin{verbatim} \begin{factura} \Item{1}{Artículo gravado con IVA general}{1000} - \Item{3}{Otro artículo gravado con IVA general}{1500}\label{el-otro} + \Item{3}{Otro artículo gravado con IVA general}{1500}{10}\label{el-otro} \end{factura} \end{verbatim} % \iffalse @@ -1126,18 +1260,19 @@ and factura-beispiel-rechnung.tex. % \noindent \DescribeMacro{\cantref}{\color{RoyalBlue}|\cantref|\marg{etiqueta}}\\ % \noindent \DescribeMacro{\descref}{\color{RoyalBlue}|\descref|\marg{etiqueta}}\\ % \noindent \DescribeMacro{\puref}{\color{RoyalBlue}|\puref|\marg{etiqueta}}\\ +% \noindent \DescribeMacro{\subtref}{\color{RoyalBlue}|\subtref|\marg{etiqueta}}\\ % \noindent \DescribeMacro{\dctoref}{\color{RoyalBlue}|\dctoref|\marg{etiqueta}}\\ % \noindent \DescribeMacro{\ptref}{\color{RoyalBlue}|\ptref|\marg{etiqueta}}\par % % Los comandos anteriores son para usarse donde queramos hacer la cita, es decir, en la descripción larga o en el reporte. % -% Si se quiere mostrar el número de fila que ocupa el ítem en la lista lo hacemos con |\itemref|, que en el ejemplo aparecería el número ``|2|'' indicando que es el segundo ítem de la factura\footnote{Cuando se usa \cs{itemref} conviene enumerar los ítems en la factura con la opción \texttt{numitem}.}. Con |\cantref| escribimos la cantidad del elemento citado mediante la etiqueta, en nuestro ejemplo sería ``|3|''. Para la descripción del ítem usamos |\descref|, que en el caso del ejemplo sería el texto ``|Otro artículo gravado con IVA general|''. Para el precio unitario usamos |\puref|, en el ejemplo ``|1.500,00|''. Si se quiere mostrar el descuento del ítem citado usamos |\dctoref|, que para el ejemplo sería ``|0|''. Por último, para mostrar el precio total usamos |\ptref|, y en nuestro ejemplo eso escribiría ``|4.500,00|''. +% Si se quiere mostrar el número de fila que ocupa el ítem en la lista lo hacemos con |\itemref|, que en el ejemplo aparecería el número ``|2|'' indicando que es el segundo ítem de la factura\footnote{Cuando se usa \cs{itemref} conviene enumerar los ítems en la factura con la opción \texttt{numitem}.}. Con |\cantref| escribimos la cantidad del elemento citado mediante la etiqueta, en nuestro ejemplo sería ``|3|''. Para la descripción del ítem usamos |\descref|, que en el caso del ejemplo sería el texto ``|Otro artículo gravado con IVA general|''. Para el precio unitario usamos |\puref|, en el ejemplo ``|1.500,00|''. El subtotal lo mostraríamos con |\subtref|; en nuestro caso ``|4.500,00|''. Si se quiere mostrar el descuento del ítem citado usamos |\dctoref|, que para el ejemplo sería ``|10|''. Por último, para mostrar el precio total usamos |\ptref|, y en nuestro ejemplo eso escribiría ``|4.050,00|'' puesto que aplicamos un descuento del 10\%. % -% Podemos ver que el uso de los comandos |\puref| y |\ptref| nos muestra el precio en el mismo formato con el que lo vemos en la presentación de la factura, en cuanto al redondeo y al separador de miles y decimal. +% Podemos ver que el uso de los comandos |\puref|, |\subtref| y |\ptref| nos muestra el precio en el mismo formato con el que lo vemos en la presentación de la factura, en cuanto al redondeo y al separador de miles y decimal. % % Con la asignación de estas etiquetas y su uso mediante las referencias podemos de manera conveniente citar cualquier ítem que se haya facturado, de manera dinámica sin tener que reescribir en la descripción larga o en el reporte aquello que ya se escribió en el cuadro de la factura. % -% Por otra parte, también podemos en la descripción larga y en el reporte referirnos al signo monetario con el comando |\Moneda|, y a cualquiera de los totales de la siguiente forma: +% Por otra parte, también podemos en la descripción larga y en el reporte referirnos al signo monetario con el comando |\Moneda|, y a cualquiera de los totales de la siguiente forma\footnote{Las macros de la tabla, para representarlas en el mismo formato que en la factura, debemos usar la macro \cs{numprint}}: % % \begin{tabular}{rl} % \hline @@ -1183,11 +1318,12 @@ and factura-beispiel-rechnung.tex. % {\bfseries \itshape Finalmente, como hemos dicho antes, una vez adecuada la clase al diseño que se quiere, se podrán escribir todos los comandos que hacen estos ajustes en un} |.tex| {\itshape o} |.def| {\itshape y cargarlo con} |\input|, |\include| {\itshape o con} |\Cliente|. % % \newpage +% \setstretch{1} % \section{Tabla con todas las opciones} % -% La tabla que sigue muestra una lista de las opciones posibles al momento de cargar la clase: +% \noindent La tabla que sigue muestra una lista de las opciones posibles al momento de cargar la clase: % -% \begin{tabular}{>{\ttfamily}rl} +% \noindent \begin{tabular}{>{\ttfamily}rl} % \rmfamily \bfseries Opción & \bfseries Significado \\ \hline % prefactura & Imprime una prefactura. \\ % cotización & Imprime una cotización. \\ @@ -1219,11 +1355,16 @@ and factura-beispiel-rechnung.tex. % todosiva & Expresa todos los tipos de IVA. \\ % G & Agrega una ``|G|'' en los ítems con IVA general. \\ % impdesc & Escribe la denominación del IVA en la descripción. \\ +% centradesc & Centra la descripción de los ítems. \\ +% sinmarcas & No escribe el carácter de fin de línea ni el carácter en las celdas vacías \\ +% & cuando la descripción ocupa más que una línea. \\ % numitem & Enumera los ítems en la factura en otra columna extra a la izquierda. \\ % denom & Explicita la denominación del documento. \\ % sinnumero & No pone el número cuando se usa |denom|. \\ +% sintotales & No escribe los totales al final del cuadro; para cotizaciones. \\ % sincantidad & Los artículos van sin expresar su cantidad. \\ % descuentos & Los artículos van con descuento individual. \\ +% subtotal & Muestra el subtotal de cada ítem antes aplicar descuento. \\ % csv & Genera un archivo |.csv| con la información numérica de la factura. \\ \hline % \end{tabular} % @@ -1232,7 +1373,7 @@ and factura-beispiel-rechnung.tex. % % A continuación presentamos una tabla con todos los comandos, que salvo |\FirmaReporte|, los |\Item| y |\Descripcion|, se poner todos en el preámbulo. % -% \begin{tabular}{>{\ttfamily}rl} +% \noindent \begin{tabular}{>{\ttfamily}rl} % \rmfamily \bfseries Comando & \bfseries Significado \\ \hline % |\GeometriaFactura| & Establece los parámetros de la geometría de la factura. \\ % |\GeometriaReporte| & Establece los parámetros de la geometría del reporte. \\ @@ -1277,14 +1418,15 @@ and factura-beispiel-rechnung.tex. % |\SepFilas| & Separación horizontal y vertical en los totales en el modo de filas. \\ % |\SepElementos| & Separación vertical entre los distintos elementos de la factura. \\ % |\SepEncabez| & Separación entre las cajas del encabezado de la factura y \\ -% & separación interna entre el borde y el texto. \\ +% & separación interna entre el borde y el texto. \\ +% |\SepItemsExtra| & Separación vertical extra entre los elementos en la factura. \\ % |\SepDescrip| & Separación interna entre el borde y el texto en la descripción. \\ % \end{tabular} % \newpage -% \begin{tabular}{>{\ttfamily}rl} +% \noindent \begin{tabular}{>{\ttfamily}rl} % \rmfamily \bfseries Comando & \bfseries Significado \\ \hline % |\LineaEncabez| & Grosor de la línea de las cajas del encabezado de la factura. \\ -% & curvatura de la esquina y sombra. \\ +% & curvatura de la esquina y sombra. \\ % |\LineaDescrip| & Grosor de la línea de la caja de la descripción. \\ % & curvatura de la esquina y sombra. \\ % |\LineaFirmas| & Longitud y grosor de las líneas para firmar. \\ @@ -1315,11 +1457,56 @@ and factura-beispiel-rechnung.tex. % |\cantref| & Hace referencia a la cantidad del ítem. \\ % |\descref| & Hace referencia a la descripción del ítem. \\ % |\puref| & Hace referencia al precio unitario del ítem. \\ +% |\subtref| & Hace referencia al subtotal del ítem. \\ % |\dctoref| & Hace referencia al descuento del ítem. \\ % |\ptref| & Hace referencia al precio total del ítem. \\ % |\mostrar| & Mostramos una variable que contenga ``|@|'' sin usar ``|\makeatletter|''\footnote{Este comando tampoco se usa en el preámbulo sino en cualquier otra parte del documento.}. % \end{tabular} % +% \section{Ejemplos incluídos\label{sec:ejemplos}} +% \todo*{Hay que hacer que en la documentación, toda opción y macro referencie al ejemplo donde se usa.} +% +% +% Desde la página siguiente se muestran todos los ejemplos incluídos en la clase: +% +% \newpage +% \newgeometry{marginparsep=0pt,vmargin={1cm,1cm},hmargin={1cm,1cm},footskip=0pt,footnotesep=0pt} +% \setlength{\parindent}{0pt} +% \hbadness=10000 +% +% \Ejemplo{ejemplo-cotizacion} +% \Ejemplo{ejemplo-prefactura} +% \newpage +% \Ejemplo{ejemplo-factura1} +% \Ejemplo{ejemplo-factura2}[\small] +% \newpage +% \Ejemplo{ejemplo-factura3} +% \Ejemplo{ejemplo-factura4} +% \newpage +% \Ejemplo{ejemplo-factura5} +% \Ejemplo{ejemplo-factura6} +% \newpage +% \Ejemplo[0.4]{ejemplo-factura7}[\small] +% \Ejemplo{ejemplo-factura8} +% \newpage +% \Ejemplo*[0.49]{ejemplo-reporte1} +% \Ejemplo**[0.49]{ejemplo-reporte1}{2} +% \Ejemplo[0.49]{ejemplo-reporte1}{3} +% \newpage +% \Ejemplo*[0.49]{ejemplo-reporte2} +% \Ejemplo**[0.49]{ejemplo-reporte2}{2} +% \Ejemplo[0.49]{ejemplo-reporte2}{3} +% \newpage +% \Ejemplo*[0.49]{ejemplo-reporte3} +% \Ejemplo**[0.49]{ejemplo-reporte3}{2} +% \Ejemplo[0.49]{ejemplo-reporte3}{3} +% \newpage +% \Ejemplo{beispiel-rechnung} +% +% \newpage +% \hbadness=1000 +% \restoregeometry +% % \StopEventually{\endorgo} % % \begin{macrocode} @@ -1338,6 +1525,7 @@ and factura-beispiel-rechnung.tex. \newif\if@descuentos \newif\if@denom \newif\if@sinnumero +\newif\if@sintotales \newif\if@conlineasha \newif\if@linea \newif\if@lineacompleta @@ -1369,11 +1557,14 @@ and factura-beispiel-rechnung.tex. \newif\if@nombre \newif\if@pagado \newif\if@impdesc +\newif\if@centradesc +\newif\if@sinmarcas \newif\if@pruebaref \RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios. \newbool{Descuentos} +\newbool{Subtotal} \newbool{SinCantidad} \newbool{SinLineasVertInt} \newbool{SinLineasVertExt} @@ -1402,11 +1593,26 @@ and factura-beispiel-rechnung.tex. \DeclareOption{unafirma}{\@unafirmatrue\@confirmastrue}% No agrega el espacio para que firme quien recibe. \DeclareOption{dosfirmas}{\@unafirmafalse\@confirmastrue}% Pone las dos firmas para firmar. \DeclareOption{descuentos}{\booltrue{Descuentos}\@descuentostrue}% Para los descuentos individuales. +\DeclareOption{subtotal}{% Para la columna extra del subtotal antes del descuento. + \if@descuentos + \booltrue{Subtotal} + \else + \ClassWarning{factura}{La opción 'subtotal' no aplica sin descuentos individuales. Sin efecto opción 'subtotal'}{} + \fi} \DeclareOption{sincondiciones}{\@concondicionesfalse}% No agrega el texto con las condiciones del documento. \DeclareOption{denom}{\@denomtrue}% Agrega el texto con la denominación del documento, para las formas libres que no tienen el número de factura. \DeclareOption{sinnumero}{\@sinnumerotrue\@denomtrue}% Escribir el texto de la denominación del documento pero sin escribir el número. \DeclareOption{G}{\@Gtrue}% Con esta opción sale la letra 'G' en los items con IVA general, y sale el porcentaje en la base imponible general. \DeclareOption{filas}{\@filastrue}% Estilo de totalización en filas. +\DeclareOption{sintotales}{\@sintotalestrue% No escribe los totales al final, por ejemplo para cotizaciones de productos similares. + \if@filas + \ClassWarning{factura}{La opción 'sintotales' no aplica para el modo de totalización en filas. Sin efecto opción 'filas'.}{} + \@filasfalse + \fi + \if@cotizacion + \else + \ClassWarning{factura}{La opción 'sintotales' no debe usarse en facturas sino en cotizaciones. No es válida una factura sin totales.}{} + \fi} \DeclareOption{centrado}{% Total y exento 'centrado'; sólo para estilo 'filas' \if@filas \@centradotrue @@ -1420,6 +1626,8 @@ and factura-beispiel-rechnung.tex. \@agrupadotrue \fi} \DeclareOption{impdesc}{\@impdesctrue}% Para el tipo de impuesto en la descripción y no en el precio unitario y total. +\DeclareOption{centradesc}{\@centradesctrue}% Para centrar la descripción de cada ítem. +\DeclareOption{sinmarcas}{\@sinmarcastrue}% Para evitar que aparezcan los caracteres especiales cuando la descripción es larga. \DeclareOption{numitem}{\booltrue{NumItem}}% Para poner una columna extra al principio con el número del ítem. \DeclareOption{dcu}{% Descripción, luego cantidad y luego precio unitario. \@dcutrue\@cdufalse\@ducfalse @@ -1478,7 +1686,7 @@ and factura-beispiel-rechnung.tex. \DeclareOption{csv}{% Para la salida en modo csv también. \if@factura \@csvtrue - \AtEndDocument{\@EscribeTotalesEnCSV} + \if@sintotales\else\AtEndDocument{\@EscribeTotalesEnCSV}\fi \else \ClassWarning{factura}{La opción 'csv' require generar la factura. Sin efecto opción 'csv'.}{} \fi} @@ -1554,7 +1762,10 @@ and factura-beispiel-rechnung.tex. \ClassWarning{factura}{** Fecha del documento\space \@Fecha\space distinta de la fecha de hoy. **}{}% \fi \fi - \if@factura\ClassInfo{factura}{\@@Total: \space\space\space \Moneda \Total}{}\fi} + \if@sintotales + \else + \if@factura\ClassInfo{factura}{\@@Total: \space\space\space \Moneda \Total}{}\fi + \fi} %</class> %<*class|def> @@ -1601,6 +1812,7 @@ and factura-beispiel-rechnung.tex. \def\@@Cantidad{Cantidad} \def\@@Descripcion{Descripci\'on} \def\@@PrecioU{Precio U.} +\def\@@PrecioS{Subtotal} \def\@@PrecioT{Precio T.} \def\@@Precio{Precio} \def\@@AlicuotaG{IVA G} @@ -1820,6 +2032,10 @@ and factura-beispiel-rechnung.tex. %<class>\def\SepEncabez#1#2{\setlength{\@SeparaEncabez}{#1}\setlength{\@SeparaInternaEncabez}{#2}} %<def>\SepEncabez{0.2cm}{6pt} +%% Separación extra entre los elementos en la factura. +%<class>\def\SepItemsExtra#1{\setlength{\@SeparaItemsExtra}{#1}} +%<def>\SepItemsExtra{0pt} + %% Separación interna entre la línea y el texto de la descripción. %<class>\def\SepDescrip#1{\setlength{\@SeparaInternaDescrip}{#1}} %<def>\SepDescrip{6pt} @@ -2030,6 +2246,7 @@ and factura-beispiel-rechnung.tex. \newlength{\@TamCantidad} \newlength{\@TamDescrip} \newlength{\@TamPrecioU} +\newlength{\@TamPrecioS} \newlength{\@TamDescuento} \newlength{\@TamPrecioT} \newlength{\@GrosorLineaFirmas} @@ -2058,6 +2275,8 @@ and factura-beispiel-rechnung.tex. \newlength{\@EspacioVacioInicial} \newlength{\@EspacioVacioFinal} \newlength{\@SeparaEncabez} +\newlength{\@SeparaItemsExtra} +\newlength{\@SeparaItemsExtraFinal} \newlength{\@SeparaInternaEncabez} \newlength{\@SeparaInternaDescrip} \newlength{\@SeparaElementos} @@ -2120,6 +2339,12 @@ and factura-beispiel-rechnung.tex. \RequirePackage{zref-savepos}% Para la firma, que debe ser cargado aquí porque \FirmaReporte no se ejecuta desde el preámbulo. \fi +\if@sinmarcas + \setlength{\@SeparaFinLineaDesc}{0pt} + \def\@CaracterCR{\mbox{}} + \def\@CaracterCeldasVacias{\mbox{}} +\fi + %% Comando para escribir el encabezado en la factura. \newcommand\@EncabezadoFactura{% \ifdefvoid{\@Resumen}{\@EscribeDatos}{\@EscribeDatosResumen}% @@ -2152,15 +2377,18 @@ and factura-beispiel-rechnung.tex. %% http://tex.stackexchange.com/questions/248944/how-to-put-before-lines \newcommand{\@DescripcionAuxCmd}[2]{% \immediate\write\@auxout{\gdef\noexpand\@TamDescrip{\the\linewidth}}% Para poder establecer la línea diagonal hay que saber el tamaño del campo de la descripción. - \setbox0\hbox{\parbox[t]{\linewidth}{#1% + \setbox0\hbox{\parbox[t]{\linewidth}{\if@centradesc\centering\arraybackslash\fi#1% \if@impdesc\hfill\ \@EscribeTipoDeImpuesto{#2}\fi% \par\global\count1=\prevgraf}}% \ifnum\count1 = 1 - #1% - \if@impdesc\hfill\ \@EscribeTipoDeImpuesto{#2}\fi + \if@centradesc\centering\arraybackslash\fi#1% + \if@impdesc\vskip-\baselineskip\hfill\ \@EscribeTipoDeImpuesto{#2}\fi \else \parbox[t]{\linewidth-\wd\@CajaCaracterCR-\@SeparaFinLineaDesc}{% - \David@XStart#1\David@XEnd + \David@XStart + \if@centradesc\centering\arraybackslash\fi + #1% + \David@XEnd \par \count0=\prevgraf \count2=\prevgraf @@ -2197,6 +2425,11 @@ and factura-beispiel-rechnung.tex. \ifdim\wd\@CajaPrueba > \@TamPrecioU \global\@TamPrecioU=\wd\@CajaPrueba\fi \parbox[t]{\@TamPrecioU}{#1}} +\newcommand{\@PrecioSAuxCmd}[1]{% + \savebox{\@CajaPrueba}{#1}% + \ifdim\wd\@CajaPrueba > \@TamPrecioS \global\@TamPrecioS=\wd\@CajaPrueba\fi + \parbox[t]{\@TamPrecioS}{#1}} + \newcommand{\@DescuentoAuxCmd}[1]{% \savebox{\@CajaPrueba}{#1}% \ifdim\wd\@CajaPrueba > \@TamDescuento \global\@TamDescuento=\wd\@CajaPrueba\fi @@ -2446,13 +2679,17 @@ and factura-beispiel-rechnung.tex. \ifbool{DUC}{c}{r} % Quinta línea. \ifbool{SinLineasVertInt}{}{|} + % Columna 'r' para subtotal antes del descuento, o columna fantasma si no se especifica 'subtotal'). + \ifbool{Subtotal}{r}{l@{\extracolsep{0pt}}} + % Sexta línea, que sale solamente cuando hay columna de subtotales. + \ifbool{Subtotal}{\ifbool{SinLineasVertInt}{}{|}}{} % Columna 'c' para 'descuentos' y columna 'r' sin espacio si no hay descuentos individuales. \ifbool{Descuentos}{c}{r@{\extracolsep{0pt}}} - % Sexta línea, que sale solamente cuando hay descuentos. + % Séptima línea, que sale solamente cuando hay descuentos. \ifbool{Descuentos}{\ifbool{SinLineasVertInt}{}{|}}{} % Columna 'r' siempre. r - % Séptima y última línea. + % Octava y última línea. \ifbool{SinLineasVertExt}{}{|}} %% Comando auxiliar para abrir la tabla del cuadro de la factura y expandir completamente las columnas. @@ -2460,7 +2697,7 @@ and factura-beispiel-rechnung.tex. %% 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{6}{\ifbool{SinLineasVertExt}{}{|} r}\begingroup + \noexpand\multicolumn{7}{\ifbool{SinLineasVertExt}{}{|} r}\begingroup \noexpand\ifdim \noexpand\ht\noexpand\@CajaEspacioVacio=0pt \noexpand\else \noexpand\if@linea\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. @@ -2472,8 +2709,10 @@ and factura-beispiel-rechnung.tex. % Calculamos. \FPupn\PrecioU{#4 \@DigitosMoneda{} round}% \ifx\\#5\\\FPset\Dcto{0}\else\FPupn\Dcto{#5 \@DigitosPorc{} round clip}\fi% Fijamos en 0 el descuento si no se especifica. - \FPupn\PrecioT{100 \Dcto{} 100 - / #2 * \PrecioU{} * \@DigitosMoneda{} round}% + \FPupn\PrecioS{#2 \PrecioU{} * \@DigitosMoneda{} round}% + \FPupn\PrecioT{100 \Dcto{} 100 - / \PrecioS{} * \@DigitosMoneda{} round}% \global\let\PrecioU\PrecioU + \global\let\PrecioS\PrecioS \global\let\Dcto\Dcto \global\let\PrecioT\PrecioT % Suma el elemento actual al subtotal acumulado. @@ -2483,6 +2722,7 @@ and factura-beispiel-rechnung.tex. \expandafter\gdef\csname @Item@\romannumeral\value{@NumItem}@Cantidad\endcsname{\numprint{#2}}% \expandafter\gdef\csname @Item@\romannumeral\value{@NumItem}@Descripcion\endcsname{#3}% \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\global\expandafter\edef\csname @Item@\romannumeral\value{@NumItem}@PrecioT\endcsname{\noexpand\numprint{\PrecioT}}} @@ -2502,6 +2742,7 @@ and factura-beispiel-rechnung.tex. \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\ptref#1{\@pruebaref{#1}\if@pruebaref \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @PrecioT\endcsname \fi} @@ -2578,7 +2819,8 @@ and factura-beispiel-rechnung.tex. % Si no es el primer ítem, entonces hace falta \\ para terminar el ítem anterior. \ifnum\value{@NumItem}=1% \else - \\ + \setlength{\@SeparaItemsExtraFinal}{\numexpr\the\count1\normalbaselineskip-\normalbaselineskip+\@SeparaItemsExtra}% + \\[\@SeparaItemsExtraFinal] \if@conlineasha\hline\fi% Líneas para separar cada ítem, si hiciera falta. \fi % Primer -opcional- campo: El número del ítem. @@ -2615,8 +2857,15 @@ and factura-beispiel-rechnung.tex. \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \hfill \@LetraNumeros \numprint{\PrecioU} \fi}}% dcu y cdu. \fi}% + & % Quinto -opcional- campo: Subtotal (para luego descuentos). + \ifbool{Subtotal}{% + \David@XRight{\@PrecioSAuxCmd{% + \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% + \else + \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \hfill \@LetraNumeros \numprint{\PrecioS} + \fi}}}{} & - % Quinto -opcional- campo: Descuento. + % Sexto -opcional- campo: Descuento. \ifbool{Descuentos}{% \David@XRight{\@DescuentoAuxCmd{% \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% @@ -2624,7 +2873,7 @@ and factura-beispiel-rechnung.tex. \mbox{}\hfill \@LetraNumeros \numprint{\Dcto}\%\hfill\mbox{}% \fi}}}{}% Tenemos que usar un condicional booleano porque si no da problemas con el condicional \FPifeq. & - % Sexto campo: El total. + % Séptimo campo: El total. \David@XRight{\@PrecioTAuxCmd{% \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% \else @@ -2687,6 +2936,8 @@ and factura-beispiel-rechnung.tex. \else \@PrecioUAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioU \space (\Moneda)\hfill\mbox{}}% \fi}% + &% Avanzamos hasta el subtotal, que puede o no existir, + \ifbool{Subtotal}{\@PrecioSAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioS \space (\Moneda)\hfill\mbox{}}}{}% &% Avanzamos hasta el descuento, que puede o no existir. \if@descuentos \@DescuentoAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Descuento \hfill\mbox{}}\fi &% Avanzamos hasta el precio total. @@ -2703,7 +2954,7 @@ and factura-beispiel-rechnung.tex. \ifdim \ht\@CajaEspacioVacio=0pt \ifbool{SinLineasHoriExt}{}{\if@conlineasha\else\hline\fi}% Verificamos si hay que poner la línea horizontal. Si está 'conlineasha' ya salió debido a esta opción. \else - \ifbool{PrimeroDescrip}{&\usebox{\@CajaEspacioVacio}&&&&\\}{&&\usebox{\@CajaEspacioVacio}&&&\\}% + \ifbool{PrimeroDescrip}{&\usebox{\@CajaEspacioVacio}&&&&&\\}{&&\usebox{\@CajaEspacioVacio}&&&&\\}% \ifbool{SinLineasHoriExt}{}{\hline}% Siempre que hay relleno se pone la línea acá. \fi \else @@ -2712,27 +2963,34 @@ and factura-beispiel-rechnung.tex. \ifdim \ht\@CajaEspacioVacio=0pt \else % Rellenamos la tabla con espacio espúreo, y le agregamos las lineas externas, si aplica. - \ifbool{SinLineasVertExt}{\multicolumn{6}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{6}{|c|}{\usebox{\@CajaEspacioVacio}}}\\ + \ifbool{SinLineasVertExt}{\multicolumn{7}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{7}{|c|}{\usebox{\@CajaEspacioVacio}}}\\ \fi - % Modo de columnas: Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica. - \@ColumnasMultiColumnTotalesAuxCmd - \@CalculaTotalesI - \if@agrupado - \@EscribeTotalColAgrupado + % Si pedimos sin totalizaciones, entonces cerramos la tabla ya, si no, calculamos los totales y los escribimos + \if@sintotales \else - \if@Exento \@EscribeTotalCol{E}\fi - \if@BIR\@EscribeTotalCol{R}\if@ivaexpresado\@EscribeTotalColAlicuota{R}\fi\fi - \@EscribeTotalCol{G}\if@ivaexpresado\@EscribeTotalColAlicuota{G}\fi - \if@BIA\@EscribeTotalCol{A}\if@ivaexpresado\@EscribeTotalColAlicuota{A}\fi\fi + % Modo de columnas: Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica. + \@ColumnasMultiColumnTotalesAuxCmd + \@CalculaTotalesI + \if@agrupado + \@EscribeTotalColAgrupado + \else + \if@Exento \@EscribeTotalCol{E}\fi + \if@BIR\@EscribeTotalCol{R}\if@ivaexpresado\@EscribeTotalColAlicuota{R}\fi\fi + \@EscribeTotalCol{G}\if@ivaexpresado\@EscribeTotalColAlicuota{G}\fi + \if@BIA\@EscribeTotalCol{A}\if@ivaexpresado\@EscribeTotalColAlicuota{A}\fi\fi + \fi + \if@ivaexpresado\cline{2-2}\fi + \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\ + \end{tabular}\endgroup + \\ + \ifbool{SinLineasHoriExt}{}{\hline}% \fi - \if@ivaexpresado\cline{2-2}\fi - \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\ - \end{tabular}\endgroup - \\ - \ifbool{SinLineasHoriExt}{}{\hline}% \fi \end{tabularx}% % + % Generamos la macro \Total vacía para que no dé error en algún posible uso dentro del documento. + \if@sintotales\gdef\Total{}\fi + % Si pedimos no totalizar (sintotales), la opción filas queda desactivada. \if@filas \@CalculaTotalesI \@LetraNumTotales @@ -2806,13 +3064,13 @@ and factura-beispiel-rechnung.tex. \vspace*{\@SeparaElementos}\par} \ifbool{SinCantidad} - % Definamos todos los comandos \Item***. + % Definamos todos los comandos \Item***. El descuento es opcional; por eso usamos G{0} en \NewDocumentCommand. {% \if@descuentos - \newcommand{\Item}[3]{\@ITEM{G}{1}{#1}{#2}{#3}}% Ítem normal. - \newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. - \newcommand{\ItemA}[3]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. - \newcommand{\ItemE}[3]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\Item}{m m G{0}}{\@ITEM{G}{1}{#1}{#2}{#3}}% Ítem normal. + \NewDocumentCommand{\ItemR}{m m G{0}}{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m m G{0}}{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemE}{m m G{0}}{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. \else \newcommand{\Item}[2]{\@ITEM{G}{1}{#1}{#2}{0}}% Ítem normal. \newcommand{\ItemR}[2]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{0}}% Ítem con IVA reducido. @@ -2830,10 +3088,10 @@ and factura-beispiel-rechnung.tex. \fi} {% \if@descuentos - \newcommand{\Item}[4]{\@ITEM{G}{#1}{#2}{#3}{#4}}% Ítem normal. - \newcommand{\ItemR}[4]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{#4}}% Ítem con IVA reducido. - \newcommand{\ItemA}[4]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{#1}{#2}{#3}{#4}}% Ítem con IVA adicional. - \newcommand{\ItemE}[4]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{#1}{#2}{#3}{#4}}% Ítem exento de IVA. + \NewDocumentCommand{\Item}{m m m G{0}}{\@ITEM{G}{#1}{#2}{#3}{#4}}% Ítem normal. + \NewDocumentCommand{\ItemR}{m m m G{0}}{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{#4}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m m m G{0}}{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{#1}{#2}{#3}{#4}}% Ítem con IVA adicional. + \NewDocumentCommand{\ItemE}{m m m G{0}}{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{#1}{#2}{#3}{#4}}% Ítem exento de IVA. \else \newcommand{\Item}[3]{\@ITEM{G}{#1}{#2}{#3}{0}}% Ítem normal. \newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{0}}% Ítem con IVA reducido. @@ -3300,6 +3558,7 @@ and factura-beispiel-rechnung.tex. %<*!class&!def&!firma&!fondo&!membrete&!batchfile> %% Descripción de este ejemplo: % +%%<desc> %<factuno|factdos|facttres|factcuatro|factcinco|factseis|factsiete|factocho|repuno|repdos>%% Escribimos una factura, %<prefac>%% Escribimos una prefactura (prefactura), %<cotiza>%% Escribimos una cotización (cotizacion), @@ -3319,12 +3578,13 @@ and factura-beispiel-rechnung.tex. % %<facttres>%% Agrupados los totales por gravámenes (agrupado), %<factcuatro|factcinco|factsiete>%% Totalización en modo de filas (filas), -%<factcinco>%% Centrados los totales en el modo de filas (centrado), +%<factcuatro>%% Centrados los totales en el modo de filas (centrado), % %<factdos>%% Primero la descripción, luego la cantidad, luego el precio unitario (dcu), %<factcuatro>%% Primero la descripción, luego el precio unitario, luego la cantidad (duc), -%<factcinco|factseis>%% Escribe la denominación ("FACTURA") y el número (denom), -%<cotiza>%% Escribe la denominación ("COTIZACIÓN") pero sin número (sinnumero), +%<factcinco|factseis>%% Escribe la denominación (“FACTURA”) y el número (denom), +%<cotiza>%% Escribe la denominación (“COTIZACIÓN”) pero sin número (sinnumero), +%<cotiza>%% No totaliza, para que el cliente tenga un presupuesto por distintos ítems que luego elegirá entre ellos, es decir, una lista de precios. (sintotales), % %<factdos|factseis>%% Sin líneas verticales externas (sinlineasve), %<facttres|factcuatro>%% Sin líneas verticales internas (sinlineasvi), @@ -3337,6 +3597,9 @@ and factura-beispiel-rechnung.tex. %<prefac|facttres>%% Con línea protectora del espacio en blanco (linea), % %<facttres>%% Con el tipo de impuesto como parte de la descripción y no de los precios (impdesc), +%<factdos>%% Centra la descripción en los elementos en la factura (centradesc), +%<factseis|factsiete>%% Escribimos un ítem cuya descripción ocupa más que una línea, +%<factsiete>%% Cuando la descripción de un ítem ocupa más que una línea, no pone el carácter que indica continuación en la siguiente línea ni los caracteres en las columnas vacías (sinmarcas), %<factcinco|factseis|factsiete>%% Obligando a especificar todos los IVA así no existan productos gravados con ellos (todosiva), %<factseis>%% Especificando 'G' en los ítems gravados con IVA general (G), %<factocho>%% Sin IVA (siniva), @@ -3362,6 +3625,7 @@ and factura-beispiel-rechnung.tex. % %<factdos|facttres|factsiete>%% Alterando la separación mínima vertical entre los elementos (\SepElementos), %<factdos|facttres|factsiete>%% Alterando la separación horizontal en el encabezado y la distancia desde el contorno hasta el texto (\SepEncabez), +%<factdos|factcuatro>%% Agregando una separación extra entre los ítems en la factura (\SepItemsExtra), %<factdos|factsiete>%% Alterando la la distancia desde el contorno hasta el texto en la descripción (\SepDescrip), %<factsiete>%% Alterando la separación horizontal y vertical entre los totales en el modo de filas (\SepFilas), %<facttres|factsiete>%% Alterando la línea de las cajas del encabezado, la curvatura en la esquina y la sombra (\LineaEncabez), @@ -3371,7 +3635,7 @@ and factura-beispiel-rechnung.tex. %<factcuatro|factocho>%% Cambiando varias de las tipografías (\Letra...), %<factseis>%% Redefiniendo el formato de la fecha (redefiniendo \@@Fecha y \@EstiloFecha), % -%<factdos|factcuatro>%% Usando \Nombre y \CI en lugar de \RazonSocial y \RIF, +%<factdos|factcuatro>%% Usando “\Nombre” y “\CI” en lugar de “\RazonSocial” y “\RIF”, %<factcuatro>%% Sin especificar la persona de contacto, %<factcuatro>%% Sin especificar el e-mail del cliente, %<factcinco|repuno>%% Especificando el nombre del emisor de la factura (\Emisor), @@ -3392,6 +3656,7 @@ and factura-beispiel-rechnung.tex. %<!facttres&!reptres&!beispiel>%% Con descripción larga (\Descripcion). %<facttres|reptres>%% Sin descripción larga. %<beispiel>%% Adaptado a otra legislación. +%%</desc> %% %<factuno>\documentclass{factura} %<!factuno>\documentclass[ @@ -3405,10 +3670,11 @@ and factura-beispiel-rechnung.tex. %<factdos|factseis>numitem, %<factdos>descuentos, %<factcuatro|factcinco|factsiete>filas, -%<factcinco>centrado, +%<factcuatro>centrado, %<facttres>agrupado, %<factcinco|factseis>denom, %<cotiza>sinnumero, % sin esta opción aparecerá el número de la cotización. +%<cotiza>sintotales, %<factdos>dcu, %<factcuatro>duc, %<factdos|factseis>sinlineasve, @@ -3422,6 +3688,8 @@ and factura-beispiel-rechnung.tex. %<facttres|factcuatro|prefac>exparriba, %<facttres|prefac>linea, %<facttres>impdesc, +%<factdos>centradesc, +%<factsiete>sinmarcas, %<factcinco|factseis|factsiete>todosiva, %<factseis>G, %<factocho>siniva, @@ -3439,41 +3707,41 @@ and factura-beispiel-rechnung.tex. %<beispiel>\usepackage[ngerman]{babel} %<beispiel>\usepackage[T1]{fontenc} %<beispiel> -%<beispiel> \def\Moneda{\euro{}} +%<beispiel>\def\Moneda{\euro{}} %<beispiel>\makeatletter -%<beispiel> \def\@AlicuotaG{0.19} -%<beispiel> \def\@AlicuotaR{0.07} -%<beispiel> \def\@DenomAlicuotaG{A} -%<beispiel> \def\@DenomAlicuotaR{C} -%<beispiel> \def\@DenomAlicuotaE{B} -%<beispiel> \def\@@Datos{Kundenidentifikation} -%<beispiel> \def\@@Resumen{Zusammenfassung} -%<beispiel> \def\@@Fecha{Datum:} -%<beispiel> \def\@@Nombre{Kunde:} \def\@@RazonSocial{Kunde:} -%<beispiel> \def\@@RIF{USt-IdNr:} \def\@@CT{USt-IdNr:} -%<beispiel> \def\@@Contacto{Kontactperson:} -%<beispiel> \def\@@Direccion{Adresse:} -%<beispiel> \def\@@Telefono{Telefon:} -%<beispiel> \def\@@Email{E-mail:} -%<beispiel> \def\@@Cliente{Kunde:} -%<beispiel> \def\@@Proveedor{Lieferant:} -%<beispiel> \def\@@Cantidad{Menge} -%<beispiel> \def\@@Descripcion{Beschreibung} -%<beispiel> \def\@@PrecioU{Einzelpreis} -%<beispiel> \def\@@PrecioT{Gesamt} -%<beispiel> \def\@@Precio{Preis} -%<beispiel> \def\@@AlicuotaG{MwSt A} -%<beispiel> \def\@@AlicuotaR{MwSt C} -%<beispiel> \def\@@BIG{Netto 19\%} -%<beispiel> \def\@@BIR{Netto 7\%} -%<beispiel> \def\@@BIE{Mwst-befreit} -%<beispiel> \def\@@Total{Brutto}% Zu zahlen / Brutto / Summe / Gesamt -%<beispiel> \def\@@Conforme{der Kunde} -%<beispiel> \def\@@DenomFactura{Rechnung} -%<beispiel> \def\@@DenomCotiza{Voranschlag} -%<beispiel> % \LetraNumeracion{\fontsize{14}{14}\bfseries} -%<beispiel> \renewcommand{\@EstiloDenom}{\@LetraDenom\@Denominacion-\if@sinnumero\else\@LetraNumeracion Nr:\space\@Num\fi} -%<beispiel> \renewcommand{\@EstiloNumControl}{} +%<beispiel>\def\@AlicuotaG{0.19} +%<beispiel>\def\@AlicuotaR{0.07} +%<beispiel>\def\@DenomAlicuotaG{A} +%<beispiel>\def\@DenomAlicuotaR{C} +%<beispiel>\def\@DenomAlicuotaE{B} +%<beispiel>\def\@@Datos{Kundenidentifikation} +%<beispiel>\def\@@Resumen{Zusammenfassung} +%<beispiel>\def\@@Fecha{Datum:} +%<beispiel>\def\@@Nombre{Kunde:} \def\@@RazonSocial{Kunde:} +%<beispiel>\def\@@RIF{USt-IdNr:} \def\@@CT{USt-IdNr:} +%<beispiel>\def\@@Contacto{Kontactperson:} +%<beispiel>\def\@@Direccion{Adresse:} +%<beispiel>\def\@@Telefono{Telefon:} +%<beispiel>\def\@@Email{E-mail:} +%<beispiel>\def\@@Cliente{Kunde:} +%<beispiel>\def\@@Proveedor{Lieferant:} +%<beispiel>\def\@@Cantidad{Menge} +%<beispiel>\def\@@Descripcion{Beschreibung} +%<beispiel>\def\@@PrecioU{Einzelpreis} +%<beispiel>\def\@@PrecioT{Gesamt} +%<beispiel>\def\@@Precio{Preis} +%<beispiel>\def\@@AlicuotaG{MwSt A} +%<beispiel>\def\@@AlicuotaR{MwSt C} +%<beispiel>\def\@@BIG{Netto 19\%} +%<beispiel>\def\@@BIR{Netto 7\%} +%<beispiel>\def\@@BIE{Mwst-befreit} +%<beispiel>\def\@@Total{Brutto}% Zu zahlen / Brutto / Summe / Gesamt +%<beispiel>\def\@@Conforme{der Kunde} +%<beispiel>\def\@@DenomFactura{Rechnung} +%<beispiel>\def\@@DenomCotiza{Voranschlag} +%<beispiel>% \LetraNumeracion{\fontsize{14}{14}\bfseries} +%<beispiel>\renewcommand{\@EstiloDenom}{\@LetraDenom\@Denominacion-\if@sinnumero\else\@LetraNumeracion Nr:\space\@Num\fi} +%<beispiel>\renewcommand{\@EstiloNumControl}{} %<beispiel>\makeatother %<factsiete>\GeometriaFactura{legalpaper,vmargin={5cm,5.5cm},hmargin={1cm,1cm},footskip=0pt,headsep=0pt,headheight=0pt} @@ -3499,8 +3767,9 @@ and factura-beispiel-rechnung.tex. %<repuno|reptres>% \EstiloPagReporte[empty]{soloarriba} %<repuno|reptres>% \EstiloPagReporte{soloarriba} %<cotiza>\FirmaFactura{\includegraphics[width=5cm]{factura-ejemplo-firma.pdf}}[0pt][21pt] -%<factdos|facttres|factsiete>\SepElementos{1cm} +%<factdos|facttres|factsiete>\SepElementos{0.75cm} %<factdos|facttres|factsiete>\SepEncabez{1cm}{16pt} +%<factdos|factcuatro>\SepItemsExtra{8pt} %<factdos|factsiete>\SepDescrip{16pt} %<factsiete>\SepFilas{1cm}{10pt} %<facttres|factsiete>\LineaEncabez{1pt}{20pt}{3pt} @@ -3523,12 +3792,12 @@ and factura-beispiel-rechnung.tex. %<factocho>\LetraNumTotal{\fontsize{20}{30}\bfseries} %<factocho>\tabcolsep7pt %<factseis>\makeatletter -%<factseis> \renewcommand{\@@Fecha}{\slshape FECHA DE EMISIÓN:} +%<factseis> \renewcommand{\@@Fecha}{\slshape FECHA:} %<factseis> \renewcommand{\@EstiloFecha}{\@LetraFecha\bfseries\@@Fecha\space{\color{blue}\@Fecha}} %<factseis>\makeatother %<!factuno&!factcinco> %<cotiza>% \Denom{PRESUPUESTO} % También podemos cambiar el nombre del documento -\Fecha{05-11-2016} +\Fecha{06-11-2017} %<factcinco|factseis|cotiza|prefac|repuno|repdos|beispiel>\Num{1} %<!factdos&!factcuatro&!beispiel>\RazonSocial{Ayala San Vicente Usureros} %<factdos|factcuatro|beispiel>\Nombre{Jacinto de Ayala y San Vicente} @@ -3556,14 +3825,17 @@ and factura-beispiel-rechnung.tex. %<!reptres>\begin{factura} %<!factdos&!factcinco&!factseis&!repdos&!reptres&!beispiel> \Item{1}{ítem con IVA general}{1000} %<factseis|repdos> \Item{2}{ítem con IVA general}{1000}\label{primeritem} -%<factuno|factcuatro|factseis|repdos> \Item{4}{otro ítem con IVA general}{100} +%<factuno|factcuatro|repdos> \Item{4}{otro ítem con IVA general}{100} +%<factseis|factsiete> \Item{10}{otro ítem con IVA general -descripción larga para mostrar el cambio de línea-}{1000} +%<cotiza> \Item{1}{otro ítem con IVA general}{1100} +%<cotiza> \Item{1}{otro ítem más con IVA general}{1200} %<facttres|prefac> \ItemR{1}{ítem con IVA reducido}{1000} %<facttres> \ItemA{1}{ítem con IVA adicional}{1000} %<facttres> \ItemE{1}{ítem exento de impuesto}{1000} %<factdos> \Item{1}{ítem con IVA general, con descuento}{1000}{8} %<factdos> \ItemR{1}{ítem con IVA reducido, con descuento}{1000}{5} %<factdos> \ItemA{1}{ítem con IVA adicional, con descuento}{1000}{10} -%<factdos> \ItemE{1}{ítem exento de impuesto, con descuento}{1000}{8} +%<factdos> \ItemE{1}{ítem exento de impuesto, con descuento}{1000} %<factdos|factcuatro> \ItemX{1}{línea sin precio} %<factcinco> \Item{ítem sin cantidad, con IVA general}{1000} %<factcinco> \ItemA{ítem sin cantidad, con IVA adicional}{1000} @@ -3581,7 +3853,7 @@ and factura-beispiel-rechnung.tex. %<repuno|repdos|reptres|factcinco|factocho>\begin{reporte} %<repuno|repdos|reptres|factcinco|factocho> El reporte - página 1\newpage El reporte - página 2 \newpage El reporte - página 3. %<repdos> -%<factseis|repdos> En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, dando un total de \Moneda\ptref{primeritem}, el IVA de este ítem es de \Moneda\AlicuotaG; luego se facturó otro ítem dando un total final de \Moneda\Total. +%<factseis|repdos> En el artículo número \itemref{primeritem} se facturaron \cantref{primeritem} \descref{primeritem} por un valor de \Moneda\puref{primeritem} cada uno, el descuento porcentual de ese artículo es \dctoref{primeritem}, dando un total de \Moneda\ptref{primeritem}. El IVA de este ítem es de \Moneda\numprint\AlicuotaG; luego se facturó otro artículo más, dando un total final de \Moneda\numprint\Total. %<factseis|repdos> % También podemos usar \dctoref{primeritem} para la referencia al descuento, y en cuanto a las totalizaciones: \BIE, \BIR, \BIA, \AlicuotaR, \AlicuotaA, \SubtG, \SubtE, \SubtR, \SubtA, \DescG, \DescE, \DescR, \DescA para los demás totales. %<factseis>} %<repdos%<repdos|factcinco|factocho> \FirmaReporte[\includegraphics[width=5cm]{factura-ejemplo-firma}][0pt][21pt] @@ -3732,7 +4004,7 @@ and factura-beispiel-rechnung.tex. %<fondo> \fontdimen2\font=0.55em %<fondo> Imprenta: \hfill IMPRESOS DE LA VEGA. Av. Garcilaso de la Vega, Qta. San Román, Santa Mónica, Caracas, Venezuela. RIF: R-87.654.321-0. Tlf: (0123) 456.78.90\newline %<fondo> \fontdimen2\font=0.65em -%<fondo> e-mail: \hfill imprenta@sanrom.án. No. Providencia SENIAT 01/01060 de fecha 12/11/2008 - Control desde No. 00-000001 hasta No. 00-010000 / Fecha 01/01/2016.\par +%<fondo> e-mail: \hfill imprenta@sanrom.án. No. Providencia SENIAT 01/01060 de fecha 12/11/2008 - Control desde No. 00-000001 hasta No. 00-010000 / Fecha 01/01/2017.\par \end{minipage} \end{document} %</fondo|membrete> diff --git a/Master/texmf-dist/source/latex/factura/factura.ins b/Master/texmf-dist/source/latex/factura/factura.ins index fb3c0334437..d053dc47073 100644 --- a/Master/texmf-dist/source/latex/factura/factura.ins +++ b/Master/texmf-dist/source/latex/factura/factura.ins @@ -6,7 +6,7 @@ %% %% factura.dtx (with options: `batchfile') %% -%% Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -37,7 +37,7 @@ \input docstrip.tex \preamble -Copyright 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -127,8 +127,9 @@ and factura-beispiel-rechnung.tex. \Msg{ pdflatex factura-ejemplo-fondo.tex} \Msg{ pdflatex factura-ejemplo-membrete.tex} \Msg{ xelatex factura-ejemplo-firma.tex} -\Msg{ pdflatex factura-ejemplo-prefactura.tex} -\Msg{and recompile \jobname.dtx.} +\Msg{} +\Msg{Also compile all other examples and recompile \jobname.dtx.} +\Msg{} \Msg{To manual update index and changelog, type} \Msg{ makeindex -s gind.ist -o \jobname.ind \jobname.idx} \Msg{ makeindex -s gglo.ist -o \jobname.gls \jobname.glo} diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls index 01d934a7c6c..29bf5f523f3 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 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -36,7 +36,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{factura} -[2016/06/25 v2.82 +[2017/03/11 v3.00 Clase para elaborar facturas legales en la República Bolivariana de Venezuela. ] @@ -55,6 +55,7 @@ en la República Bolivariana de Venezuela. \newif\if@descuentos \newif\if@denom \newif\if@sinnumero +\newif\if@sintotales \newif\if@conlineasha \newif\if@linea \newif\if@lineacompleta @@ -86,11 +87,14 @@ en la República Bolivariana de Venezuela. \newif\if@nombre \newif\if@pagado \newif\if@impdesc +\newif\if@centradesc +\newif\if@sinmarcas \newif\if@pruebaref \RequirePackage{etoolbox}% 'etoolbox' para los condicionales binarios. \newbool{Descuentos} +\newbool{Subtotal} \newbool{SinCantidad} \newbool{SinLineasVertInt} \newbool{SinLineasVertExt} @@ -119,11 +123,26 @@ en la República Bolivariana de Venezuela. \DeclareOption{unafirma}{\@unafirmatrue\@confirmastrue}% No agrega el espacio para que firme quien recibe. \DeclareOption{dosfirmas}{\@unafirmafalse\@confirmastrue}% Pone las dos firmas para firmar. \DeclareOption{descuentos}{\booltrue{Descuentos}\@descuentostrue}% Para los descuentos individuales. +\DeclareOption{subtotal}{% Para la columna extra del subtotal antes del descuento. + \if@descuentos + \booltrue{Subtotal} + \else + \ClassWarning{factura}{La opción 'subtotal' no aplica sin descuentos individuales. Sin efecto opción 'subtotal'}{} + \fi} \DeclareOption{sincondiciones}{\@concondicionesfalse}% No agrega el texto con las condiciones del documento. \DeclareOption{denom}{\@denomtrue}% Agrega el texto con la denominación del documento, para las formas libres que no tienen el número de factura. \DeclareOption{sinnumero}{\@sinnumerotrue\@denomtrue}% Escribir el texto de la denominación del documento pero sin escribir el número. \DeclareOption{G}{\@Gtrue}% Con esta opción sale la letra 'G' en los items con IVA general, y sale el porcentaje en la base imponible general. \DeclareOption{filas}{\@filastrue}% Estilo de totalización en filas. +\DeclareOption{sintotales}{\@sintotalestrue% No escribe los totales al final, por ejemplo para cotizaciones de productos similares. + \if@filas + \ClassWarning{factura}{La opción 'sintotales' no aplica para el modo de totalización en filas. Sin efecto opción 'filas'.}{} + \@filasfalse + \fi + \if@cotizacion + \else + \ClassWarning{factura}{La opción 'sintotales' no debe usarse en facturas sino en cotizaciones. No es válida una factura sin totales.}{} + \fi} \DeclareOption{centrado}{% Total y exento 'centrado'; sólo para estilo 'filas' \if@filas \@centradotrue @@ -137,6 +156,8 @@ en la República Bolivariana de Venezuela. \@agrupadotrue \fi} \DeclareOption{impdesc}{\@impdesctrue}% Para el tipo de impuesto en la descripción y no en el precio unitario y total. +\DeclareOption{centradesc}{\@centradesctrue}% Para centrar la descripción de cada ítem. +\DeclareOption{sinmarcas}{\@sinmarcastrue}% Para evitar que aparezcan los caracteres especiales cuando la descripción es larga. \DeclareOption{numitem}{\booltrue{NumItem}}% Para poner una columna extra al principio con el número del ítem. \DeclareOption{dcu}{% Descripción, luego cantidad y luego precio unitario. \@dcutrue\@cdufalse\@ducfalse @@ -195,7 +216,7 @@ en la República Bolivariana de Venezuela. \DeclareOption{csv}{% Para la salida en modo csv también. \if@factura \@csvtrue - \AtEndDocument{\@EscribeTotalesEnCSV} + \if@sintotales\else\AtEndDocument{\@EscribeTotalesEnCSV}\fi \else \ClassWarning{factura}{La opción 'csv' require generar la factura. Sin efecto opción 'csv'.}{} \fi} @@ -271,7 +292,10 @@ en la República Bolivariana de Venezuela. \ClassWarning{factura}{** Fecha del documento\space \@Fecha\space distinta de la fecha de hoy. **}{}% \fi \fi - \if@factura\ClassInfo{factura}{\@@Total: \space\space\space \Moneda \Total}{}\fi} + \if@sintotales + \else + \if@factura\ClassInfo{factura}{\@@Total: \space\space\space \Moneda \Total}{}\fi + \fi} %% La geometría en formato de factura y de reporte. %% El margen superior está definido desde el encabezado con los datos del cliente. @@ -420,6 +444,9 @@ en la República Bolivariana de Venezuela. %% Separación horizontal entre las cajas del encabezado y separación interna entre la línea y el texto. \def\SepEncabez#1#2{\setlength{\@SeparaEncabez}{#1}\setlength{\@SeparaInternaEncabez}{#2}} +%% Separación extra entre los elementos en la factura. +\def\SepItemsExtra#1{\setlength{\@SeparaItemsExtra}{#1}} + %% Separación interna entre la línea y el texto de la descripción. \def\SepDescrip#1{\setlength{\@SeparaInternaDescrip}{#1}} @@ -604,6 +631,7 @@ en la República Bolivariana de Venezuela. \newlength{\@TamCantidad} \newlength{\@TamDescrip} \newlength{\@TamPrecioU} +\newlength{\@TamPrecioS} \newlength{\@TamDescuento} \newlength{\@TamPrecioT} \newlength{\@GrosorLineaFirmas} @@ -632,6 +660,8 @@ en la República Bolivariana de Venezuela. \newlength{\@EspacioVacioInicial} \newlength{\@EspacioVacioFinal} \newlength{\@SeparaEncabez} +\newlength{\@SeparaItemsExtra} +\newlength{\@SeparaItemsExtraFinal} \newlength{\@SeparaInternaEncabez} \newlength{\@SeparaInternaDescrip} \newlength{\@SeparaElementos} @@ -694,6 +724,12 @@ en la República Bolivariana de Venezuela. \RequirePackage{zref-savepos}% Para la firma, que debe ser cargado aquí porque \FirmaReporte no se ejecuta desde el preámbulo. \fi +\if@sinmarcas + \setlength{\@SeparaFinLineaDesc}{0pt} + \def\@CaracterCR{\mbox{}} + \def\@CaracterCeldasVacias{\mbox{}} +\fi + %% Comando para escribir el encabezado en la factura. \newcommand\@EncabezadoFactura{% \ifdefvoid{\@Resumen}{\@EscribeDatos}{\@EscribeDatosResumen}% @@ -726,15 +762,18 @@ en la República Bolivariana de Venezuela. %% http://tex.stackexchange.com/questions/248944/how-to-put-before-lines \newcommand{\@DescripcionAuxCmd}[2]{% \immediate\write\@auxout{\gdef\noexpand\@TamDescrip{\the\linewidth}}% Para poder establecer la línea diagonal hay que saber el tamaño del campo de la descripción. - \setbox0\hbox{\parbox[t]{\linewidth}{#1% + \setbox0\hbox{\parbox[t]{\linewidth}{\if@centradesc\centering\arraybackslash\fi#1% \if@impdesc\hfill\ \@EscribeTipoDeImpuesto{#2}\fi% \par\global\count1=\prevgraf}}% \ifnum\count1 = 1 - #1% - \if@impdesc\hfill\ \@EscribeTipoDeImpuesto{#2}\fi + \if@centradesc\centering\arraybackslash\fi#1% + \if@impdesc\vskip-\baselineskip\hfill\ \@EscribeTipoDeImpuesto{#2}\fi \else \parbox[t]{\linewidth-\wd\@CajaCaracterCR-\@SeparaFinLineaDesc}{% - \David@XStart#1\David@XEnd + \David@XStart + \if@centradesc\centering\arraybackslash\fi + #1% + \David@XEnd \par \count0=\prevgraf \count2=\prevgraf @@ -771,6 +810,11 @@ en la República Bolivariana de Venezuela. \ifdim\wd\@CajaPrueba > \@TamPrecioU \global\@TamPrecioU=\wd\@CajaPrueba\fi \parbox[t]{\@TamPrecioU}{#1}} +\newcommand{\@PrecioSAuxCmd}[1]{% + \savebox{\@CajaPrueba}{#1}% + \ifdim\wd\@CajaPrueba > \@TamPrecioS \global\@TamPrecioS=\wd\@CajaPrueba\fi + \parbox[t]{\@TamPrecioS}{#1}} + \newcommand{\@DescuentoAuxCmd}[1]{% \savebox{\@CajaPrueba}{#1}% \ifdim\wd\@CajaPrueba > \@TamDescuento \global\@TamDescuento=\wd\@CajaPrueba\fi @@ -1020,13 +1064,17 @@ en la República Bolivariana de Venezuela. \ifbool{DUC}{c}{r} % Quinta línea. \ifbool{SinLineasVertInt}{}{|} + % Columna 'r' para subtotal antes del descuento, o columna fantasma si no se especifica 'subtotal'). + \ifbool{Subtotal}{r}{l@{\extracolsep{0pt}}} + % Sexta línea, que sale solamente cuando hay columna de subtotales. + \ifbool{Subtotal}{\ifbool{SinLineasVertInt}{}{|}}{} % Columna 'c' para 'descuentos' y columna 'r' sin espacio si no hay descuentos individuales. \ifbool{Descuentos}{c}{r@{\extracolsep{0pt}}} - % Sexta línea, que sale solamente cuando hay descuentos. + % Séptima línea, que sale solamente cuando hay descuentos. \ifbool{Descuentos}{\ifbool{SinLineasVertInt}{}{|}}{} % Columna 'r' siempre. r - % Séptima y última línea. + % Octava y última línea. \ifbool{SinLineasVertExt}{}{|}} %% Comando auxiliar para abrir la tabla del cuadro de la factura y expandir completamente las columnas. @@ -1034,7 +1082,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{6}{\ifbool{SinLineasVertExt}{}{|} r}\begingroup + \noexpand\multicolumn{7}{\ifbool{SinLineasVertExt}{}{|} r}\begingroup \noexpand\ifdim \noexpand\ht\noexpand\@CajaEspacioVacio=0pt \noexpand\else \noexpand\if@linea\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. @@ -1046,8 +1094,10 @@ en la República Bolivariana de Venezuela. % Calculamos. \FPupn\PrecioU{#4 \@DigitosMoneda{} round}% \ifx\\#5\\\FPset\Dcto{0}\else\FPupn\Dcto{#5 \@DigitosPorc{} round clip}\fi% Fijamos en 0 el descuento si no se especifica. - \FPupn\PrecioT{100 \Dcto{} 100 - / #2 * \PrecioU{} * \@DigitosMoneda{} round}% + \FPupn\PrecioS{#2 \PrecioU{} * \@DigitosMoneda{} round}% + \FPupn\PrecioT{100 \Dcto{} 100 - / \PrecioS{} * \@DigitosMoneda{} round}% \global\let\PrecioU\PrecioU + \global\let\PrecioS\PrecioS \global\let\Dcto\Dcto \global\let\PrecioT\PrecioT % Suma el elemento actual al subtotal acumulado. @@ -1057,6 +1107,7 @@ en la República Bolivariana de Venezuela. \expandafter\gdef\csname @Item@\romannumeral\value{@NumItem}@Cantidad\endcsname{\numprint{#2}}% \expandafter\gdef\csname @Item@\romannumeral\value{@NumItem}@Descripcion\endcsname{#3}% \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\global\expandafter\edef\csname @Item@\romannumeral\value{@NumItem}@PrecioT\endcsname{\noexpand\numprint{\PrecioT}}} @@ -1074,6 +1125,7 @@ en la República Bolivariana de Venezuela. \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\ptref#1{\@pruebaref{#1}\if@pruebaref \csname @Item@\expandafter\romannumeral\csname @Etiqueta@#1\endcsname @PrecioT\endcsname \fi} @@ -1149,7 +1201,8 @@ en la República Bolivariana de Venezuela. % Si no es el primer ítem, entonces hace falta \\ para terminar el ítem anterior. \ifnum\value{@NumItem}=1% \else - \\ + \setlength{\@SeparaItemsExtraFinal}{\numexpr\the\count1\normalbaselineskip-\normalbaselineskip+\@SeparaItemsExtra}% + \\[\@SeparaItemsExtraFinal] \if@conlineasha\hline\fi% Líneas para separar cada ítem, si hiciera falta. \fi % Primer -opcional- campo: El número del ítem. @@ -1186,8 +1239,15 @@ en la República Bolivariana de Venezuela. \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \hfill \@LetraNumeros \numprint{\PrecioU} \fi}}% dcu y cdu. \fi}% + & % Quinto -opcional- campo: Subtotal (para luego descuentos). + \ifbool{Subtotal}{% + \David@XRight{\@PrecioSAuxCmd{% + \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% + \else + \if@impdesc\else\@EscribeTipoDeImpuesto{##1}\fi \hfill \@LetraNumeros \numprint{\PrecioS} + \fi}}}{} & - % Quinto -opcional- campo: Descuento. + % Sexto -opcional- campo: Descuento. \ifbool{Descuentos}{% \David@XRight{\@DescuentoAuxCmd{% \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% @@ -1195,7 +1255,7 @@ en la República Bolivariana de Venezuela. \mbox{}\hfill \@LetraNumeros \numprint{\Dcto}\%\hfill\mbox{}% \fi}}}{}% Tenemos que usar un condicional booleano porque si no da problemas con el condicional \FPifeq. & - % Sexto campo: El total. + % Séptimo campo: El total. \David@XRight{\@PrecioTAuxCmd{% \ifx##1X \hfill \@CaracterItemXVacio \hfill\mbox{}% \else @@ -1258,6 +1318,8 @@ en la República Bolivariana de Venezuela. \else \@PrecioUAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioU \space (\Moneda)\hfill\mbox{}}% \fi}% + &% Avanzamos hasta el subtotal, que puede o no existir, + \ifbool{Subtotal}{\@PrecioSAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@PrecioS \space (\Moneda)\hfill\mbox{}}}{}% &% Avanzamos hasta el descuento, que puede o no existir. \if@descuentos \@DescuentoAuxCmd{\mbox{}\hfill \@LetraTitCuadro \@@Descuento \hfill\mbox{}}\fi &% Avanzamos hasta el precio total. @@ -1274,7 +1336,7 @@ en la República Bolivariana de Venezuela. \ifdim \ht\@CajaEspacioVacio=0pt \ifbool{SinLineasHoriExt}{}{\if@conlineasha\else\hline\fi}% Verificamos si hay que poner la línea horizontal. Si está 'conlineasha' ya salió debido a esta opción. \else - \ifbool{PrimeroDescrip}{&\usebox{\@CajaEspacioVacio}&&&&\\}{&&\usebox{\@CajaEspacioVacio}&&&\\}% + \ifbool{PrimeroDescrip}{&\usebox{\@CajaEspacioVacio}&&&&&\\}{&&\usebox{\@CajaEspacioVacio}&&&&\\}% \ifbool{SinLineasHoriExt}{}{\hline}% Siempre que hay relleno se pone la línea acá. \fi \else @@ -1283,27 +1345,34 @@ en la República Bolivariana de Venezuela. \ifdim \ht\@CajaEspacioVacio=0pt \else % Rellenamos la tabla con espacio espúreo, y le agregamos las lineas externas, si aplica. - \ifbool{SinLineasVertExt}{\multicolumn{6}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{6}{|c|}{\usebox{\@CajaEspacioVacio}}}\\ + \ifbool{SinLineasVertExt}{\multicolumn{7}{c}{\usebox{\@CajaEspacioVacio}}}{\multicolumn{7}{|c|}{\usebox{\@CajaEspacioVacio}}}\\ \fi - % Modo de columnas: Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica. - \@ColumnasMultiColumnTotalesAuxCmd - \@CalculaTotalesI - \if@agrupado - \@EscribeTotalColAgrupado + % Si pedimos sin totalizaciones, entonces cerramos la tabla ya, si no, calculamos los totales y los escribimos + \if@sintotales \else - \if@Exento \@EscribeTotalCol{E}\fi - \if@BIR\@EscribeTotalCol{R}\if@ivaexpresado\@EscribeTotalColAlicuota{R}\fi\fi - \@EscribeTotalCol{G}\if@ivaexpresado\@EscribeTotalColAlicuota{G}\fi - \if@BIA\@EscribeTotalCol{A}\if@ivaexpresado\@EscribeTotalColAlicuota{A}\fi\fi + % Modo de columnas: Abrimos la tabla para escribir los totales, y le agregamos las líneas verticales externas, si aplica. + \@ColumnasMultiColumnTotalesAuxCmd + \@CalculaTotalesI + \if@agrupado + \@EscribeTotalColAgrupado + \else + \if@Exento \@EscribeTotalCol{E}\fi + \if@BIR\@EscribeTotalCol{R}\if@ivaexpresado\@EscribeTotalColAlicuota{R}\fi\fi + \@EscribeTotalCol{G}\if@ivaexpresado\@EscribeTotalColAlicuota{G}\fi + \if@BIA\@EscribeTotalCol{A}\if@ivaexpresado\@EscribeTotalColAlicuota{A}\fi\fi + \fi + \if@ivaexpresado\cline{2-2}\fi + \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\ + \end{tabular}\endgroup + \\ + \ifbool{SinLineasHoriExt}{}{\hline}% \fi - \if@ivaexpresado\cline{2-2}\fi - \hfill \@LetraTitTotal\@@Total & \@LetraNumTotal\numprint{\Total}\\ - \end{tabular}\endgroup - \\ - \ifbool{SinLineasHoriExt}{}{\hline}% \fi \end{tabularx}% % + % Generamos la macro \Total vacía para que no dé error en algún posible uso dentro del documento. + \if@sintotales\gdef\Total{}\fi + % Si pedimos no totalizar (sintotales), la opción filas queda desactivada. \if@filas \@CalculaTotalesI \@LetraNumTotales @@ -1377,13 +1446,13 @@ en la República Bolivariana de Venezuela. \vspace*{\@SeparaElementos}\par} \ifbool{SinCantidad} - % Definamos todos los comandos \Item***. + % Definamos todos los comandos \Item***. El descuento es opcional; por eso usamos G{0} en \NewDocumentCommand. {% \if@descuentos - \newcommand{\Item}[3]{\@ITEM{G}{1}{#1}{#2}{#3}}% Ítem normal. - \newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. - \newcommand{\ItemA}[3]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. - \newcommand{\ItemE}[3]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\Item}{m m G{0}}{\@ITEM{G}{1}{#1}{#2}{#3}}% Ítem normal. + \NewDocumentCommand{\ItemR}{m m G{0}}{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m m G{0}}{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemE}{m m G{0}}{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{1}{#1}{#2}{#3}}% Ítem con IVA reducido. \else \newcommand{\Item}[2]{\@ITEM{G}{1}{#1}{#2}{0}}% Ítem normal. \newcommand{\ItemR}[2]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{1}{#1}{#2}{0}}% Ítem con IVA reducido. @@ -1401,10 +1470,10 @@ en la República Bolivariana de Venezuela. \fi} {% \if@descuentos - \newcommand{\Item}[4]{\@ITEM{G}{#1}{#2}{#3}{#4}}% Ítem normal. - \newcommand{\ItemR}[4]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{#4}}% Ítem con IVA reducido. - \newcommand{\ItemA}[4]{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{#1}{#2}{#3}{#4}}% Ítem con IVA adicional. - \newcommand{\ItemE}[4]{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{#1}{#2}{#3}{#4}}% Ítem exento de IVA. + \NewDocumentCommand{\Item}{m m m G{0}}{\@ITEM{G}{#1}{#2}{#3}{#4}}% Ítem normal. + \NewDocumentCommand{\ItemR}{m m m G{0}}{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{#4}}% Ítem con IVA reducido. + \NewDocumentCommand{\ItemA}{m m m G{0}}{\global\@BIAtrue\global\@Gtrue\@ITEM{A}{#1}{#2}{#3}{#4}}% Ítem con IVA adicional. + \NewDocumentCommand{\ItemE}{m m m G{0}}{\global\@Exentotrue\global\@Gtrue\@ITEM{E}{#1}{#2}{#3}{#4}}% Ítem exento de IVA. \else \newcommand{\Item}[3]{\@ITEM{G}{#1}{#2}{#3}{0}}% Ítem normal. \newcommand{\ItemR}[3]{\global\@BIRtrue\global\@Gtrue\@ITEM{R}{#1}{#2}{#3}{0}}% Ítem con IVA reducido. diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def index 70e4979b681..c5bce1afa81 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 2016 Emilio Lazo Zaia <emiliolazozaia@gmail.com> +%% Copyright 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com> %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -35,7 +35,7 @@ %% and factura-beispiel-rechnung.tex. %% \ProvidesFile{factura.def} -[2016/06/25 v2.82 +[2017/03/11 v3.00 Archivo valores iniciales y condiciones de borde para factura.cls ] @@ -74,6 +74,7 @@ Archivo valores iniciales y condiciones de borde para factura.cls \def\@@Cantidad{Cantidad} \def\@@Descripcion{Descripci\'on} \def\@@PrecioU{Precio U.} +\def\@@PrecioS{Subtotal} \def\@@PrecioT{Precio T.} \def\@@Precio{Precio} \def\@@AlicuotaG{IVA G} @@ -151,6 +152,9 @@ Archivo valores iniciales y condiciones de borde para factura.cls %% Separación horizontal entre las cajas del encabezado y separación interna entre la línea y el texto. \SepEncabez{0.2cm}{6pt} +%% Separación extra entre los elementos en la factura. +\SepItemsExtra{0pt} + %% Separación interna entre la línea y el texto de la descripción. \SepDescrip{6pt} |