summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/factura
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-05-01 17:47:50 +0000
committerKarl Berry <karl@freefriends.org>2018-05-01 17:47:50 +0000
commita43715bc47c69e872b2b52a7ec02beef9e75fc30 (patch)
treee389bfe017f985d165dfec7f9df51982989ca6d4 /Master/texmf-dist/tex/latex/factura
parent55ce226bd9c2c353d74f100ac619cad3d1e6933e (diff)
factura (17apr17)
git-svn-id: svn://tug.org/texlive/trunk@47538 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/factura')
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.cls110
-rw-r--r--Master/texmf-dist/tex/latex/factura/factura.def11
2 files changed, 81 insertions, 40 deletions
diff --git a/Master/texmf-dist/tex/latex/factura/factura.cls b/Master/texmf-dist/tex/latex/factura/factura.cls
index 467826fcdaa..54cc1b74aa1 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 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2018 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 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{factura}
-[2018/03/13 v3.44
+[2018/04/17 v3.47
Clase para elaborar facturas legales
en la República Bolivariana de Venezuela.
]
@@ -301,6 +301,10 @@ en la República Bolivariana de Venezuela.
\RequirePackage{environ}% Con 'environ' podemos usar tabularx dentro del ambiente de la factura y escribir texto en el enddef.
\RequirePackage{fancyhdr}% Las cabeceras fancy; así se use solamente en reporte, hay que cargarlo siempre.
\RequirePackage[calc]{datetime2}% Para calcular la fecha del vencimiento del crédito.
+\RequirePackage{ifxetex}% Para poder modificar correctamente la metadata del PDF y agregar la versión de la clase.
+\RequirePackage{ifluatex}% Ditto.
+\RequirePackage{zref-savepos}[2016/05/21]% Para guardar la posición en 'Y' expandiendo el cuadro, para la línea y para la firma en el reporte si la hubiera.
+%% Hay que cargar siempre zref-savepos para poder compilar con LuaLaTeX porque este motor no tiene \pdfsavepos, \pdflastypos y zref-savepos las provee cuando no existen (motor LuaLaTex).
%% Gracias a Alan Munn y a wipet (Thanks to Alan Munn and wipet).
%% (https://tex.stackexchange.com/questions/396363/input-a-date-to-datetime2-in-a-format-different-than-iso)
@@ -321,6 +325,23 @@ en la República Bolivariana de Venezuela.
\DTMfdef{ddmmyyyy}#1#2#3#4#5#6#7#8&{\DTMs{#5#6#7#8-#3#4-#1#2}}
\DTMfdef{mm-dd-yyyy}#1-#2-#3&{\DTMs{#3-#1-#2}}
+%% Macros internas para el texto de la metadata que se va a escribir con la versión de la clase.
+\def\@factura@ver{\expandafter\csname ver@factura.cls\endcsname}
+\StrBefore*{\@factura@ver}{ }[\@factura@fecha]
+\StrBetween*[1,2]{\@factura@ver}{ }{ }[\@factura@vernum]
+\def\@factura@version{Hecho con la clase factura-\@factura@vernum\ (\@factura@fecha)}
+
+%% Escribimos la versión de la clase en la metadata del PDF.
+\ifxetex
+ \special{pdf: docinfo << /Subject (\@factura@version) >>}
+\else
+ \ifluatex
+ \pdfextension info{/Subject (\@factura@version)}
+ \else
+ \pdfinfo{/Subject (\@factura@version)}
+ \fi
+\fi
+
\AtEndPreamble{
% Establecemos los parámetros y macros relativas a la fecha.
\DTMsetstyle{\@FormatoFecha}\DTMsetup{datesep=\@FechaSeparadores}\gdef\DTMinformat{\@FormatoFechaEntrada}
@@ -456,10 +477,10 @@ en la República Bolivariana de Venezuela.
\fi
\iflinea
- \RequirePackage{zref-savepos}
\ifexpandecuadro
\else
\CLASSWARNING{La opción 'linea' requiere la opción 'expandecuadro'. Activando la opción 'expandecuadro'}
+ \expandecuadrotrue
\fi
\fi
\ifsinmarcas \def\@CaracterCR{\mbox{}} \def\@CaracterCeldasVacias{\mbox{}} \fi
@@ -477,7 +498,6 @@ en la República Bolivariana de Venezuela.
\CLASSWARNING{Las opciones 'expandecuadro' y 'sinexpandir' no son compatibles. Sin efecto ambas opciones}
\else
\boolfalse{ExpAbajo}
- \RequirePackage{zref-savepos}[2016/05/21]% Para guardar la posición en 'Y'.
\fi
\fi
\ifsinexpandir\boolfalse{ExpAbajo}\expandecuadrofalse\fi
@@ -492,9 +512,6 @@ en la República Bolivariana de Venezuela.
\fi
\ifsoloreporte\@reportetrue\@facturafalse\@reversofalse\fi
- \if@reporte
- \RequirePackage{zref-savepos}% Para la firma, que debe ser cargado aquí siempre que hay reporte porque \FirmaReporte no se ejecuta desde el preámbulo.
- \fi
\ifcsv
\if@factura
\newwrite\csv \immediate\openout\csv=\jobname.csv
@@ -559,15 +576,8 @@ en la República Bolivariana de Venezuela.
% Cargamos aquí 'geometry' para que sea después de haber establecido 'twoside'.
\RequirePackage{geometry}}
-%% Escribimos el total como comentario en el .log, y avisamos cuando la fecha no sea la de hoy.
+%% Escribimos el total como comentario en el .log.
\AtEndDocument{%
- \DTMifsaveddate{FechaEmision}{%
- \DTMsavenow{Ahora}%
- \DTMsaveddatediff{FechaEmision}{Ahora}{\AuxFecha}}{}%
- \ifnum\AuxFecha=0%
- \else
- \CLASSWARNING{Fecha del documento \@Fecha\space distinta de la fecha de hoy}%
- \fi
\ifsintotales
\else
\if@factura\CLASSINFO{\@@Total: \space\space\space \Moneda \Total}\fi
@@ -596,7 +606,7 @@ en la República Bolivariana de Venezuela.
\def\@DescuentoAnum{0}
\def\@DescuentoEnum{0}
-%% \Fecha, \FormatoFecha, \Credito, \RazonSocial, \Nombre, \RIF, \CI, \Contacto, \Dirección, \Telefono, \Email, \Conforme, \Emisor, \Proveedor.
+%% \Fecha, \FormatoFecha, \Credito, \Moneda, \RazonSocial, \Nombre, \RIF, \CI, \Contacto, \Dirección, \Telefono, \Email, \Conforme, \Emisor, \Proveedor.
\NewDocumentCommand{\Fecha}{s m g g}{%
\IfBooleanTF{#1}
{\AtEndPreamble{\DTMsavedate{FechaEmision}{#2-#3-#4}}}
@@ -607,6 +617,7 @@ en la República Bolivariana de Venezuela.
\IfValueT{#1}{\gdef\@FormatoFechaEntrada{#1}}\IfValueT{#2}{\gdef\@FormatoFecha{#2}}\IfValueT{#3}{\gdef\@FechaSeparadores{#3}}}
\def\Credito#1{\gdef\@Credito{#1}\vencimientotrue}
+\def\Moneda#1{\gdef\@Moneda{#1}}
\def\RazonSocial#1{\gdef\@RazonSocial{#1}}
\def\Nombre#1{\gdef\@RazonSocial{#1}\@Nombretrue}
\def\RIF#1{\gdef\@RIF{#1}}
@@ -669,7 +680,34 @@ en la República Bolivariana de Venezuela.
\NewDocumentCommand{\NotaExterna}{+m}{\gdef\@NotaExterna{#1}}
\AtBeginDocument{%
- % Efectuamos distintos chequeos.
+ % Si no se especificó fecha, tomamos la de hoy. Además, advertimos cuando el documento se está compilando en una fecha distinta de la fecha establecida en el encabezado.
+ \DTMifsaveddate{FechaEmision}{}{%
+ \CLASSWARNING{No se especificó fecha. Asumiendo la fecha de hoy}%
+ \DTMsavedate{FechaEmision}{\the\year-\the\month-\the\day}}%
+ \DTMsavenow{Ahora}%
+ \DTMsaveddatediff{FechaEmision}{Ahora}{\AuxFecha}%
+ \ifnum\AuxFecha=0%
+ \else
+ \CLASSWARNING{Fecha del documento \@Fecha\space distinta de la fecha de hoy}%
+ \fi
+
+ % Establecemos el signo monetario dependiendo de la fecha de emisión de la factura, para efectos de la reconversión monetaria:
+ \ifx\@undefined\@Moneda
+ \DTMsaveddatediff{FechaEmision}{FechaBsS}{\AuxFecha}%
+ \ifnum\AuxFecha>-1%
+ \DTMsaveddatediff{FechaEmision}{FechaBs}{\AuxFecha}%
+ \ifnum\AuxFecha>-1%
+ \Moneda{\@MonedaBs}%
+ \else
+ \Moneda{\@MonedaBsS}%
+ \fi
+ \else
+ \Moneda{\@MonedaBs}%
+ \fi
+ \fi
+
+ % Efectuamos distintos chequeos para dar errores o advertencias si faltó algo.
+ \ifdefvoid{\@RazonSocial}{\CLASSERROR{Hay que definir la razón social}}{}%
\if@reporte
\ifdefvoid{\@Num}{\CLASSWARNING{No se especificó el número de la factura. Puede dar error si el título del reporte no se especifica que aparezca en las cabeceras}}{}%
\ifdefvoid{\@Proveedor}{%
@@ -679,16 +717,12 @@ en la República Bolivariana de Venezuela.
\let\@Proveedor=\@Emisor}}
{}%
\fi
- \ifdefvoid{\@RazonSocial}{\CLASSERROR{Hay que definir la razón social}}{}%
\if@factura
\ifdefvoid{\@RIF}{\CLASSERROR{Hay que definir el R.I.F}}{}%
\ifdefvoid{\@Direccion}{\CLASSERROR{Hay que definir la dirección fiscal}}{}%
\ifdefvoid{\@Telefono}{\CLASSWARNING{Pudiera definirse un número telefónico}}{}%
\ifdefvoid{\@Email}{\CLASSWARNING{Pudiera definirse una dirección de correo electrónico}}{}%
\ifdefvoid{\@Condiciones}{\CLASSWARNING{Pudieran definirse las condiciones del documento}}{}%
- \DTMifsaveddate{FechaEmision}{}{%
- \CLASSWARNING{No se especificó fecha. Asumiendo la fecha de hoy}%
- \DTMsavedate{FechaEmision}{\the\year-\the\month-\the\day}}%
\ifcotizacion
\ifdefvoid{\@FondoFactura}{\CLASSWARNING{En la opción para cotizacion se recomienda agregar el fondo}}{}%
\fi
@@ -718,6 +752,7 @@ en la República Bolivariana de Venezuela.
\gdef\@FechaVencimiento{\DTMusedate{FechaVencimiento}}}%
\ifx\@undefined\@NumControl\let\@NumControl\@Num\fi
\ifx\@undefined\@NumSerieControl\gdef\@NumSerieControl{00}\fi
+
% Establecemos los porcentajes de las alícuotas, y redondeamos los descuentos.
\FPupn\@AlicuotaGporc{\@AlicuotaG{} 100 * \@DigitosPorc{} round clip}%
\FPupn\@AlicuotaRporc{\@AlicuotaR{} 100 * \@DigitosPorc{} round clip}%
@@ -733,6 +768,7 @@ en la República Bolivariana de Venezuela.
\FPupn\@DescuentoEfactor{100 \@DescuentoEporc{} /}
% Una vez definido todo en el preámbulo, los comandos usados para definir campos servirán para mostrar el campo que se definió con ese comando.
+ \def\Moneda{\@Moneda}%
\def\RazonSocial{\@RazonSocial}%
\let\Nombre\RazonSocial
\def\RIF{\@RIF}%
@@ -1667,29 +1703,29 @@ en la República Bolivariana de Venezuela.
\newcommand{\@EscribeItemsEnCSV}[3]{%
\ifbool{SinCantidad}
{\ifdescuentos
- \immediate\write\csv{"\unexpanded{##3}","\Dcto","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","\Dcto","\PrecioT","##1"}%
\else
- \immediate\write\csv{"\unexpanded{##3}","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","\PrecioT","##1"}%
\fi}
{\if@cdu
\ifdescuentos
- \immediate\write\csv{"##2","\unexpanded{##3}","\PrecioU","\Dcto","\PrecioT","##1"}%
+ \write\csv{"##2","\unexpanded{##3}","\PrecioU","\Dcto","\PrecioT","##1"}%
\else
- \immediate\write\csv{"##2","\unexpanded{##3}","\PrecioU","\PrecioT","##1"}%
+ \write\csv{"##2","\unexpanded{##3}","\PrecioU","\PrecioT","##1"}%
\fi
\fi
\ifdcu
\ifdescuentos
- \immediate\write\csv{"\unexpanded{##3}","##2","\PrecioU","\Dcto","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","##2","\PrecioU","\Dcto","\PrecioT","##1"}%
\else
- \immediate\write\csv{"\unexpanded{##3}","##2","\PrecioU","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","##2","\PrecioU","\PrecioT","##1"}%
\fi
\fi
\ifduc
\ifdescuentos
- \immediate\write\csv{"\unexpanded{##3}","\PrecioU","##2","\Dcto","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","\PrecioU","##2","\Dcto","\PrecioT","##1"}%
\else
- \immediate\write\csv{"\unexpanded{##3}","\PrecioU","##2","\PrecioT","##1"}%
+ \write\csv{"\unexpanded{##3}","\PrecioU","##2","\PrecioT","##1"}%
\fi
\fi}}%
%
@@ -1867,9 +1903,9 @@ en la República Bolivariana de Venezuela.
\let\ItemG\Item
\ifcsv
\ifdescuentos
- \immediate\write\csv{"\@@Descripcion","\@@Descuento","\@@Precio \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@Descuento","\@@Precio \space (\Moneda)","\@@IVA"}%
\else
- \immediate\write\csv{"\@@Descripcion","\@@Precio \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@Precio \space (\Moneda)","\@@IVA"}%
\fi
\fi}
{%
@@ -1882,23 +1918,23 @@ en la República Bolivariana de Venezuela.
\ifcsv
\if@cdu
\ifdescuentos
- \immediate\write\csv{"\@@Cantidad","\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Cantidad","\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\else
- \immediate\write\csv{"\@@Cantidad","\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Cantidad","\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\fi
\fi
\ifdcu
\ifdescuentos
- \immediate\write\csv{"\@@Descripcion","\@@Cantidad","\@@PrecioU \space (\Moneda)","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@Cantidad","\@@PrecioU \space (\Moneda)","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\else
- \immediate\write\csv{"\@@Descripcion","\@@Cantidad","\@@PrecioU \space (\Moneda)","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@Cantidad","\@@PrecioU \space (\Moneda)","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\fi
\fi
\ifduc
\ifdescuentos
- \immediate\write\csv{"\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Cantidad","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Cantidad","\@@Descuento","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\else
- \immediate\write\csv{"\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Cantidad","\@@PrecioT \space (\Moneda)","\@@IVA"}%
+ \write\csv{"\@@Descripcion","\@@PrecioU \space (\Moneda)","\@@Cantidad","\@@PrecioT \space (\Moneda)","\@@IVA"}%
\fi
\fi
\fi}
diff --git a/Master/texmf-dist/tex/latex/factura/factura.def b/Master/texmf-dist/tex/latex/factura/factura.def
index f594b6396b8..fae09b821ba 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 2017 Emilio Lazo Zaia <emiliolazozaia@gmail.com>
+%% Copyright 2018 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 @@
%% factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%%
\ProvidesFile{factura.def}
-[2018/03/13 v3.44
+[2018/04/17 v3.47
Archivo de valores iniciales y condiciones de borde para factura.cls
]
@@ -67,7 +67,12 @@ Archivo de valores iniciales y condiciones de borde para factura.cls
\def\@FechaSeparadores{-}
%% La moneda:
-\def\Moneda{Bs.}
+\def\@MonedaBs{Bs.}
+\def\@MonedaBsS{BsS.}
+
+%% Las fechas de la entrada de la reconversión monetaria:
+\DTMsavedate{FechaBsS}{2018-05-01}
+\DTMsavedate{FechaBs}{2018-06-04}
%% Al lado de cada ítem va la letra que designa el gravamen que aplica sobre él:
\def\@DenomAlicuotaG{G}