%%
%% This is file `factura.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% factura.dtx  (with options: `def')
%% 
%% 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
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%%  http://www.latex-project.org/lppl/lppl-1-3c.{html|txt|tex|pdf}
%% and the latest version of this license is in
%%  http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2008/05/04 or later.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is Emilio Lazo Zaia.
%% 
%% This work consists of the files README and factura.dtx
%% with its derived files factura.ins, factura.cls, factura.def,
%% factura-ejemplo-aux.tex, factura-ejemplo-firma.tex,
%% factura-ejemplo-fondo.tex, factura-ejemplo-membrete.tex,
%% factura-ejemplo-cotizacion.tex, factura-ejemplo-prefactura.tex,
%% factura-ejemplo-factura01.tex, factura-ejemplo-factura02.tex,
%% factura-ejemplo-factura03.tex, factura-ejemplo-factura04.tex,
%% factura-ejemplo-factura05.tex, factura-ejemplo-factura06.tex,
%% factura-ejemplo-factura07.tex, factura-ejemplo-factura08.tex,
%% factura-ejemplo-factura09.tex, factura-ejemplo-factura10.tex,
%% factura-ejemplo-reporte1.tex, factura-ejemplo-reporte2.tex,
%% factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%% 
\ProvidesFile{factura.def}
[2018/08/02 v3.57
Archivo de valores iniciales y condiciones de borde para factura.cls
]

%% La geometría para la factura, su reverso, y el reporte.
%% Para la factura, el margen superior está definido desde el encabezado con los datos del cliente;
%%  el margen inferior está definido hasta el final de la descripción (o del cuadro de la factura si no hay descripción).
%%  Hay elementos que salen fuera de estos márgenes, como las firmas, las condiciones del documento, la numeración y la fecha.
\GeometriaFactura{letterpaper,vmargin={5.2cm,5.5cm},hmargin={1cm,1cm},footskip=0pt,  headsep=0pt,    headheight=0pt}
\GeometriaReverso{letterpaper,vmargin={1cm,1cm},    hmargin={1cm,1cm},footskip=0cm,  headsep=0pt,    headheight=0pt}
\GeometriaReporte{letterpaper,vmargin={2.8cm,2.5cm},hmargin={3cm,2cm},footskip=1.2cm,headsep=0.777cm,headheight=1.5cm}

%% Factores para los distintos IVA y el límite para el descuento:
\def\@AlicuotaG{0.12}
\def\@AlicuotaGDescBajo{0.03}
\def\@AlicuotaGDescAlto{0.05}
\def\@AlicuotaGDescLimite{2000000}
\def\@AlicuotaR{0.08}
\def\@AlicuotaA{0.27}

%% i) separador de miles, ii) separador decimal, iii) número de decimales para la moneda iv) y para los porcentajes, v) número de dígitos de la numeración de la factura, vi) formato de la fecha, vii) separadores para la fecha.
\npthousandsep{.}
\npdecimalsign{,}
\def\@DigitosMoneda{2}
\def\@DigitosPorc{2}
\def\@DigitosNumeracion{5}
\def\@FormatoFecha{ddmmyyyy}
\def\@FormatoFechaEntrada{dd-mm-yyyy}
\def\@FechaSeparadores{-}

%% La moneda:
\def\@MonedaBs{Bs.}
\def\@MonedaBsS{Bs.S}
\def\@MonedaBsF{Bs.F}

%% Las fechas de la entrada de la reconversión monetaria:
\DTMsavedate{FechaBsS}{2018-08-20}
\DTMsavedate{FechaBs}{2019-01-01}

%% Al lado de cada ítem va la letra que designa el gravamen que aplica sobre él:
\def\@DenomAlicuotaG{G}
\def\@DenomAlicuotaR{R}
\def\@DenomAlicuotaA{A}
\def\@DenomAlicuotaE{(E)}

%% El texto predeterminado para la nota interna por el descuento presidencial.
\def\@TextoDescuentoPresidencial{Se aplica un descuento del \@AlicuotaGDescPorc\% al IVA General seg\'un Decreto Presidencial 3.085 en Gaceta Oficial 41.239.}

%% Macros que guardan textos que corresponden a nombres de campos:
\def\@@Fecha{Fecha de emisi\'on:}
\def\@@FechaVencimiento{Fecha de vencimiento:}
\def\@@Control{N\textordmasculine\space CONTROL}
\def\@@Datos{Datos del cliente}
\def\@@Resumen{Resumen del servicio}
\def\@@DenomFactura{FACTURA}
\def\@@DenomCotiza{COTIZACI\'ON}
\def\@@RazonSocial{Raz\'on social:}
\def\@@Nombre{Nombre:}
\def\@@RIF{R.I.F.:}
\def\@@CI{C.I.:}
\def\@@Direccion{Direcci\'on fiscal:}
\def\@@Telefono{Tel\'efono:}
\def\@@Email{E-mail:}
\def\@@Contacto{Persona de contacto:}
\def\@@Proveedor{Proveedor:}
\def\@@Cliente{Cliente:}
\def\@@Emisor{Por el emisor}
\def\@@Conforme{Recib\'i conforme}
\def\@@Pagado{PAGADO}
\def\@@NumItem{\#}
\def\@@Cantidad{Cantidad}
\def\@@Descripcion{Descripci\'on}
\def\@@Precio{Precio}
\def\@@PrecioU{Precio U.}
\def\@@PrecioS{Subtotal}
\def\@@Descuento{Dcto.}
\def\@@IVA{IVA}
\def\@@PrecioT{Precio T.}
\def\@@AlicuotaG{IVA G}
\def\@@AlicuotaGDesc{Descuento IVA G}
\def\@@AlicuotaR{IVA R}
\def\@@AlicuotaA{IVA A}
\def\@@BIG{BI G}
\def\@@BIR{BI R}
\def\@@BIA{BI A}
\def\@@BIE{Exento}% La base imponible exenta. ;)
\def\@@Total{TOTAL}
\def\@@DescuentoG{Descuento G}
\def\@@DescuentoR{Descuento R}
\def\@@DescuentoA{Descuento A}
\def\@@DescuentoE{Descuento E}
\def\@@SubtotalG{Subtotal G}
\def\@@SubtotalR{Subtotal R}
\def\@@SubtotalA{Subtotal A}
\def\@@SubtotalE{Subtotal E}

%% i) carácter para separar el teléfono del e-mail del cliente,
%% ii) carácter para los campos vacíos cuando se usa \ItemX,
%% iii) carácter para las celdas vacías cuando la descripción del ítem ocupa más que una línea.
%% iv) carácter de retorno de carro en el cuadro de la factura,
\def\@CaracterSeparaTelefonoEmail{$\diamond$}
\def\@CaracterItemXVacio{...}
\def\@CaracterCeldasVacias{\mbox{}\hfill$\cdot$\hfill\mbox{}}
\def\@CaracterCR{\flechaCR}
\def\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}}}

%% Separación entre el inicio de una columna en la tabla y el inicio del texto.
\tabcolsep=0.15cm

%% Separación entre la última letra y el carácter que indica que se continúa en la línea siguiente en la descripción cuando ocupa más de una línea.
\setlength{\@SeparaFinLineaDesc}{0.15cm}

%% Separación entre el teléfono y el carácter \@CaracterSeparaTelefonoEmail, y luego desde ese carácter hasta el email,
%% para cuando no hay resumen.
\setlength{\@SeparaTelefonoEmail}{0.666em}

%% Grosor de la línea de 'fancyhdr' para las cabeceras, en aquellas donde haya línea.
\setlength{\@GrosorLineaInfoPag}{0.4pt}

%% Posición en X desde la derecha y excedente en la línea de la firma.
\setlength{\@FirmaReportePosX}{2cm}
\setlength{\@FirmaReporteExcesoLinea}{1.5cm}

%% Posiciones (X,Y) de los objetos: i) fecha, ii) denominación, iii) condiciones, iv) número de control, v) firmas.
\PosFecha*{-0cm}{5cm}
\PosDenom*{0cm}{5cm}
\PosControl*{0cm}{-2.4cm}
\PosCondiciones{0cm}{-5.3cm}
%% 'X' no acepta valores negativos en \PosCondiciones.
\PosFirmas{5cm}{1cm}{-2.4cm}
%% La firma se define con un X_inicial, un X_final y un Y_inicial (Xo,Xf,Y)

%% Tamaño y grosor de la línea de las firmas.
\LineaFirmas{5.5cm}{0.7pt}

%% Separación mínima horizontal entre los totales en modo de filas y distancia vertical entre esas líneas, fija.
\SepFilas{0.8cm}{2.5pt}

%% Separación vertical entre los elementos de la factura (entre el encabezado y el cuadro de la 'factura', luego desde dicho cuadro hasta la descripción, o hasta los totales en modo de filas).
\SepVertical{0.2cm}

%% Separación horizontal entre la caja de los datos del cliente y la caja del resumen.
\SepDatosResumen{0.2cm}

%% Separación horizontal interna entre la línea y el texto en los datos del cliente y en el resumen.
\SepEncabezado{6pt}

%% Separación interna entre la línea y el texto de la nota previa.
\SepNotaPrevia{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.
\SepDescripcion{6pt}

\SepCondiciones{5pt}

%% Grosor de la línea de las cajas del encabezado, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
\LineaEncabezado{0.4pt}{10pt}{0pt}

%% Grosor de la línea de la nota previa, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
\LineaNotaPrevia{0.4pt}{7pt}{0pt}

%% Grosor de la línea de la descripción, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
\LineaDescripcion{0.4pt}{0pt}{4pt}

%% Grosor de la línea de las condiciones, curvatura de la esquina y sombra.
%% (si pedimos linea de 0pt, todo queda en cero y no se abre el ambiente TikZ).
\LineaCondiciones{0pt}{0pt}{0pt}

%% El espacio vertical que hay que avanzar sólo en la primera página del reporte antes de empezar a escribir sobre él. Usable cuando la primera página tiene un membrete y las demás no, es decir, cuando se usa \FondoReporte y no \FondoReporte*.
\InicioReporte{1.6cm}

%% Tipos de letra para cada elemento posible:
%% Esta es la letra de la descripción de los items; y el espacio \baselineskip de *toda* la tabla de la factura se fija en este comando únicamente (se predeterminó 18pt).
\LetraItems{\fontsize{14}{18}}

%% Tipo de letra para la nota interna:
\LetraNotaInterna{\fontsize{11}{13}\itshape}

%% Tipo de letra para la nota externa:
\LetraNotaExterna{\fontsize{14}{16.8}}

%% Con este comando se cambia la etra del título de la tabla, es decir, los textos 'Cantidad, 'Descripción', etc...
\LetraTitColumnas{\fontsize{10}{10}\bfseries}

%% Tipo de letra de los títulos de los totales, por ejemplo los textos: 'B.I. G', 'IVA G'.
\LetraTitTotales{\fontsize{12}{12}\bfseries}

%% Letra con la que salen los totales parciales, es decir, los números, exceptuando el total general.
\LetraNumTotales{\fontsize{14}{12}}

%% Letra con la que sale la palabra 'TOTAL'.
\LetraTitTotal{\fontsize{12}{12}\bfseries}

%% Letra para el total general, el monto.
\LetraNumTotal{\fontsize{14}{14}\bfseries}

%% Tipo de letra para los títulos de las cajas del encabezado, por ejemplo: 'Datos del cliente'.
\LetraTitEnc{\fontsize{11}{12.5}\slshape}

%% Tipo de letra para el texto en el encabezado de la factura.
\LetraEncFactura{\fontsize{11}{12.5}}

%% Tipo de letra para el texto en el encabezado del reporte.
\LetraEncReporte{\fontsize{13}{16}}

%% Letra para los montos individuales de la factura y las cantidades.
\LetraNumeros{\fontsize{14}{14}}

%% El tipo de IVA ('G', 'R', 'A' o '(E)') también tiene su tipo de letra.
\LetraTipoIVA{\fontsize{12}{12}}

%% Letra para la descripción larga (comando \Descripcion).
\LetraDescripcion{\fontsize{14}{16.8}}

%% Tipo de letra para el texto bajo las líneas para firmar.
\LetraFirmas{\fontsize{12}{12}}

%% Tipo de letra para la nota previa.
\LetraNotaPrevia{\fontsize{11}{12.5}}

%% Tipo de letra para las condiciones del documento.
\LetraCondiciones{\fontsize{12}{12}}

%% Letra para la denominación del documento ('FACTURA', 'COTIZACIÓN',...).
\LetraDenom{\fontsize{14}{14}\bfseries}

%% Letra para la numeración de la factura.
\LetraNumeracion{\fontsize{14}{14}\bfseries\color{red}}

%% Letra para las fechas (emisión y vencimiento).
\LetraFecha{\fontsize{14}{15}}

%% Letra para el título del reporte.
\LetraTitReporte{\fontsize{16}{22}\bfseries}

%% Letra para las cabeceras de las páginas en el modo reporte.
\LetraInfoPagina{\fontsize{12}{12}\slshape}

%% Letra para el reverso de la factura.
\LetraReverso{\fontsize{10}{12}}

%% Letra para el reporte.
\LetraReporte{\fontsize{12}{20}}

%% Diseño hecho en TikZ para los datos del cliente, el resumen, la nota previa, la descripción y las condiciones.
\def\@DatosTIKZ{%
 draw=black, fill=white, inner sep=\@SeparaInternaEncabezado, line width=\@GrosorLineaEncabezado, rounded corners=\@EsquinaLineaEncabezado, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraEncabezado, shadow yshift=-\@SombraEncabezado}}

\let\@ResumenTIKZ\@DatosTIKZ

\def\@NotaPreviaTIKZ{%
 draw=black, fill=white, inner sep=\@SeparaInternaNotaPrevia, line width=\@GrosorLineaNotaPrevia, rounded corners=\@EsquinaLineaNotaPrevia, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraNotaPrevia, shadow yshift=-\@SombraNotaPrevia}}

\def\@DescripcionTIKZ{%
 draw=black, fill=white, inner sep=\@SeparaInternaDescripcion, line width=\@GrosorLineaDescripcion, rounded corners=\@EsquinaLineaDescripcion, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraDescripcion, shadow yshift=-\@SombraDescripcion}}

\def\@CondicionesTIKZ{%
 draw=black, fill=white, inner sep=\@SeparaInternaCondiciones, line width=\@GrosorLineaCondiciones, rounded corners=\@EsquinaLineaCondiciones, copy shadow={top color=black, bottom color=black, shadow xshift=\@SombraCondiciones, shadow yshift=-\@SombraCondiciones}}

%% El diseño de las distintas partes de la hoja.
\newcommand{\@EstiloFirmas}{
 \@LetraFirmas
 \ifnum \value{@Firmas}=1
 \else
  \parbox{\@TamLineaFirmas}{
   \rule{\@TamLineaFirmas}{\@GrosorLineaFirmas}
   \centering \ifdefvoid{\@Conforme}{\@@Conforme}{\@Conforme}}
 \fi
 \hfill
 \parbox{\@TamLineaFirmas}{
  \rule{\@TamLineaFirmas}{\@GrosorLineaFirmas}
  \centering \ifdefvoid{\@Emisor}{\ifcotizacion \@@Emisor \else \@@Pagado \fi}{\@Emisor}}}

\newcommand{\@EstiloNotaPrevia}{\@LetraNotaPrevia \@NotaPrevia}

\newcommand{\@EstiloCondiciones}{\@LetraCondiciones \@Condiciones}

\newcommand{\@EstiloNumControl}{%
 \renewcommand{\baselinestretch}{0}\selectfont
 \begin{tabular}{@{\extracolsep{0pt}}l}
  \@LetraDenom \@@Control \\[.4em]
  {\@LetraDenom\@NumSerieControl-}\space\@LetraNumeracion\@NumControl \\
 \end{tabular}}

\newcommand{\@EstiloDenom}{%
 \@LetraDenom\@Denominacion
 \ifsinnumero
 \else
  \space\space{\@LetraNumeracion N\textordmasculine\space\@Num}%
 \fi}

\newcommand*{\@EstiloFechas}{%
 \renewcommand{\baselinestretch}{0}%
 \setlength{\tabcolsep}{0pt}%
 \@LetraFecha\begin{tabular}{r@{\extracolsep{1ex}}l@{\extracolsep{0pt}}}
 \@@Fecha & \ttfamily\@Fecha \\[.3em]
 \ifvencimiento \@@FechaVencimiento & \ttfamily\@FechaVencimiento \\ \else \vspace*{-.3em}\fi
 \end{tabular}}

\newcommand{\@InfoPaginaNoTitulo}{\@LetraInfoPagina Reporte correspondiente a la factura n\'umero \@Num \space de fecha \@Fecha}

\newcommand{\@InfoPaginaTitulo}{\@LetraInfoPagina \@TituloReporte \space - \@Proveedor \space - \@Fecha}

%% Estilos de página: normal, sólo cabeceras, sólo pies de página y sólo número de página al pie.
\fancypagestyle{plain}{%
 \expandafter\ps@fancy
 \fancyhf{}%
 \renewcommand{\headrulewidth}{\@GrosorLineaInfoPag}%
 \fancyhead[LEO]{\@InfoPagina}%
 \fancyfoot[C]{\thepage}}

\fancypagestyle{soloarriba}{%
 \expandafter\ps@fancy
 \fancyhf{}%
 \renewcommand{\headrulewidth}{\@GrosorLineaInfoPag}%
 \fancyhead[LO]{\@InfoPagina}%
 \fancyhead[RO]{\thepage}%
 \if@twoside
  \fancyhead[LE]{\thepage}%
  \fancyhead[RE]{\@InfoPagina}%
 \fi}

\fancypagestyle{soloabajo}{%
 \expandafter\ps@fancy
 \fancyhf{}%
 \renewcommand{\headrulewidth}{0pt}%
 \fancyfoot[LO]{\@InfoPagina}%
 \fancyfoot[RO]{\thepage}%
 \if@twoside
  \fancyfoot[RE]{\@InfoPagina}%
  \fancyfoot[LE]{\thepage}%
 \fi}

\fancypagestyle{solonumpag}{%
 \expandafter\ps@fancy
 \fancyhf{}%
 \renewcommand{\headrulewidth}{0pt}%
 \fancyfoot[C]{\thepage}}

\endinput
%%
%% End of file `factura.def'.
