% ----------------------------------------------------------
%  letter.tex
%  Globale Vorlage fuer Briefartige Documente LX-Office 2.6
%
%  Changelog: see gitlog
   \newcommand{\ftLetterVersion}{1.1-u  (03.01.2012)}
%
%  Lizenz
%  http://www.gnu.de/licenses/gpl-3.0.html
%
%  Siehe ./README
%
%  Autor: Wulf Coulmann scripts_at_gpl.coulmann.de
%  Aufgebaut auf invoice.tex 0.1 kmk@lilalaser.de
%
% ----------------------------------------------------------

\documentclass[letter,fontsize=11pt]{scrlttr2}


\begingroup
  \makeatletter
  \@latex@warning@no@line{ #### this is default.tex \ftLetterVersion #####}
\endgroup


\usepackage{ifpdf}
\usepackage{graphicx}
\usepackage{german}
\usepackage{textcomp}
\usepackage{lastpage}
\usepackage{filecontents}
\usepackage{etex}
\usepackage{ltxtable}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{xstring}
\newcommand{\leer}{}
\usepackage{zwischensumme}
\ifthenelse{\isundefined{\employeecountry}}{\input{mydata}}{}

%% meta infos
\newcommand{\docname}{<%template_meta.formname NOESCAPE%>}
\newcommand{\TemplateMetaLanguageDescription}{<%template_meta.language.description NOESCAPE%>}
\newcommand{\LangCode}{<%template_meta.language.template_code NOESCAPE%>}
\newcommand{\TemplateMetaLanguageOutputNumberformat}{<%template_meta.language.output_numberformat NOESCAPE%>}
\newcommand{\TemplateMetaLanguageOutputDateformat}{<%template_meta.language.output_dateformat NOESCAPE%>}
\newcommand{\TemplateMetaFormat}{<%template_meta.format NOESCAPE%>}
\newcommand{\TemplateMetaExtension}{<%template_meta.extension NOESCAPE%>}
\newcommand{\TemplateMetaMedia}{<%template_meta.media NOESCAPE%>}
\newcommand{\TemplateMetaPrinterDescription}{<%template_meta.printer.description NOESCAPE%>}
\newcommand{\TemplateMetaPrinterTemplateCode}{<%template_meta.printer.template_code NOESCAPE%>}

%%%%%%%%% Report-Variablen umsetzen, damit latex sie in lxbriefkopf.tex sieht.
%%%% Die eigenen Daten
\newcommand{\employeename}{<%employee_name%>}
\newcommand{\employeecompany}{<%employee_company%>}
\newcommand{\employeeaddress}{<%employee_address%>}
\newcommand{\employeetel}{<%employee_tel%>}
\newcommand{\employeefax}{<%employee_fax%>}
\newcommand{\employeecoustid}{<%employee_co_ustid%>}
\newcommand{\employeetaxnumber}{<%employee_taxnumber%>}
\newcommand{\media}{<%media%>}


%%%% Adressat
\newcommand{\name}{<%name%>}
\newcommand{\Shipname}{\ifthenelse{\equal{<%shiptoname%>}{\leer}}{<%name%>}{<%shiptoname%>}}
\newcommand{\departmentone}{<%department_1%>}
\newcommand{\departmenttwo}{<%department_2%>}
\newcommand{\cpgreeting}{<%cp_greeting%>}
\newcommand{\cptitle}{<%cp_title%>}
\newcommand{\cpgivenname}{<%cp_givenname%>}
\newcommand{\cpname}{<%cp_name%>}
\newcommand{\street}{<%street%>}
\newcommand{\Shipstreet}{\ifthenelse{\equal{<%shiptostreet%>}{\leer}}{<%street%>}{<%shiptostreet%>}}
\newcommand{\country}{<%country%>}
\newcommand{\Shipcountry}{<%shiptocountry%>}
\newcommand{\UstId}{<%ustid%>}
\newcommand{\zipcode}{<%zipcode%>}
\newcommand{\Shipzipcode}{\ifthenelse{\equal{<%shiptozipcode%>}{\leer}}{<%zipcode%>}{<%shiptozipcode%>}}
\newcommand{\city}{<%city%>}
\newcommand{\Shipcity}{\ifthenelse{\equal{<%shiptocity%>}{\leer}}{<%city%>}{<%shiptocity%>}}
\newcommand{\phone}{<%customerphone%>}
\newcommand{\fax}{<%customerfax%>}

%%%% Variablen, die sich auf das ganze Dokument beziehen
\newcommand{\kundennummer}{<%customernumber%>}
\newcommand{\vendornumber}{<%vendornumber%>}
\newcommand{\quonumber}{<%quonumber%>}                     % Angebotsnummer
\newcommand{\ordnumber}{<%ordnumber%>}                     % Auftragsnummer bei uns
\newcommand{\cusordnumber}{<%cusordnumber%>}               % Auftragsnummer beim Kunden
\newcommand{\invnumber}{<%invnumber%>}                     % Rechnungsnummer
\newcommand{\donumber}{<%donumber%>}                       % Lieferscheinnummer
%\newcommand{\docnumber}{Rechnungsnummer: \invnumber}
\newcommand{\quodate}{<%quodate%>}                         % Angebotsdatum
\newcommand{\orddate}{<%orddate%>}                         % Auftragsdatum
\newcommand{\reqdate}{<%reqdate%>}                         % gewuenschtes Lieferdatum
\newcommand{\deliverydate}{<%deliverydate%>}                % Lieferdatum
\newcommand{\invdate}{<%invdate%>}                         % Rechnungsdatum
\newcommand{\transdate}{<%transdate%>}                     % Lieferscheindatum
\newcommand{\terms}{<%terms%>}                             % Zahlungsfrist
\newcommand{\duedate}{<%duedate%>}                         % Fälligkeitsdatum
\newcommand{\invtotal}{<%invtotal NOFORMAT%>}              % Gesamtbetrag
\newcommand{\paid}{<%paid NOFORMAT%>}                      % Schon bezahlt
\newcommand{\total}{<%total NOFORMAT%>}                    % Restbetrag
\newcommand{\subtotal}{<%subtotal NOFORMAT%>}              % Restbetrag
\newcommand{\paymentterms}{<%payment_terms%>}              % Zahlungsbedingungen
\newcommand{\paymentPrivatEnd}{E}                          % Endung bei Privatkunden
\newcommand{\paymenttype}{<%payment_description%>}         % name der Zahlungs-art - fuer Steuerung brutto/netto


%%%% Lieferadresse
\newcommand{\shiptoname}{<%shiptoname%>}
\newcommand{\shiptocontact}{<%shiptocontact%>}
\newcommand{\shiptodepartmentone}{<%shiptodepartment_1%>}
\newcommand{\shiptodepartmenttwo}{<%shiptodepartment_2%>}
\newcommand{\shiptostreet}{<%shiptostreet%>}
\newcommand{\shiptocity}{<%shiptocity%>}
\newcommand{\shiptocountry}{<%shiptocountry%>}
\newcommand{\shiptophone}{<%shiptophone%>}
\newcommand{\shiptozipcode}{<%shiptozipcode%>}
\newcommand{\shiptofax}{<%shiptofax%>}

%%%% Die Waehrungsvariable in Waehrunszeichen umsetzen
\newcommand{\currency}{<%currency%>}
\ifthenelse{\equal{\currency}{EUR}}{\let\currency\euro}{}
\ifthenelse{\equal{\currency}{YEN}}{\let\currency\textyen}{}
\ifthenelse{\equal{\currency}{GBP}}{\let\currency\pounds}{}
\ifthenelse{\equal{\currency}{USD}}{\let\currency\$}{}

%%%%%%%%%%%%% Ende Reportvariablen-Umsetzung

\newcommand{\NoValue}{0}
\newcommand{\Picklist}{0}
\newcommand{\PurchaseOrder}{0}
\newcommand{\trash}{0}
\newcommand{\nonemptyline}[2]{\ifthenelse{\equal{#2}{\leer}}{}{#1#2~\\}}
\newcommand{\MyAdress}{\IfStrEq{\docname}{sales_delivery_order}{\Shipname~\\
  % lieferadresse wenn Lieferschein
    \nonemptyline{\cpgreeting{ }\cpgivenname{ }}{\cpname}
    \nonemptyline{}{\departmentone}
    \Shipstreet ~\\
    \Shipzipcode{ }\Shipcity
    \ifthenelse{\equal{\Shipcountry}{\employeecountry}}{}{~\\ \Shipcountry}   % Laenderangabe wird nur gedruckt,
    ~                                             % wenn der Empfaenger nicht im eigenen Land sitzt.
  }{
    \name~\\
    \nonemptyline{\cpgreeting{ }\cpgivenname{ }}{\cpname}
    \nonemptyline{}{\departmentone}
    \street ~\\
    \zipcode{ }\city
    \ifthenelse{\equal{\country} {\employeecountry}}{}{
         \ifthenelse{\equal{\country}{\leer}}{}{ ~\\ \country} } % Laenderangabe wird nur gedruckt,
    ~                                           % wenn der Empfaenger nicht im eigenen Land sitzt.
  }
}



\begin{document}

%%% dei folgenden Funktionen lesen den Dokumentennamen aus und _muessen_nach_ \begin{dokument} stehen.

% ==== statische Begriffe in der aktuellen Sprache einlesen
\input{translations}


\ifthenelse{\bgPdfEmailOnly = 1 }{
  \ifthenelse{\equal{\media}{email}}{
  }{
    \firsthead{}
    \watermark{}
  }
}{}


% ==== dokumenttyp ermitteln
\IfStrEq{\docname}{pick_list}{
  % Sammelliste
  \setkomavar{backaddress}{\DeliveryAddress}
  \firsthead{
      \hspace{-3mm}
     \resizebox{\useplength{firstheadwidth}-50mm}{!}{%
           \huge \TitlePicklist
    }
  }
  \renewcommand{\NoValue}{1}
  \renewcommand{\Picklist}{1}
  \newcommand{\doctype}{}
  \newcommand{\MyDocdate}{\transdate}
  \newcommand{\DocNoTitle}{\DelorderNumber}
  \newcommand{\docnumber}{\donumber}
  \renewcommand{\deliverydate}{\transdate}
  % 2. Documentnummer
    \ifthenelse{\equal{\ordnumber}{\leer}}{
    % wenn keine Auftragsnummer -> Angebotsnummer
      \newcommand{\SecNoTitle}{\QuotationNumber}
      \newcommand{\secnumber}{\quonumber}
    }{
      \newcommand{\SecNoTitle}{\OrderNumber}
      \newcommand{\secnumber}{\ordnumber}
    }
}{}
\IfStrEq{\docname}{sales_delivery_order}{
  % Lieferschein
  \renewcommand{\NoValue}{1}
  \newcommand{\doctype}{\TitleDelorder}
  \newcommand{\MyDocdate}{\transdate}
  \newcommand{\DocNoTitle}{\DelorderNumber}
  \newcommand{\docnumber}{\donumber}
  \renewcommand{\deliverydate}{\transdate}
  % 2. Documentnummer
    \ifthenelse{\equal{\ordnumber}{\leer}}{
    % wenn keine Auftragsnummer -> Angebotsnummer
      \newcommand{\SecNoTitle}{\QuotationNumber}
      \newcommand{\secnumber}{\quonumber}
    }{
      \newcommand{\SecNoTitle}{\OrderNumber}
      \newcommand{\secnumber}{\ordnumber}
    }
}{}
\IfStrEq{\docname}{invoice}{
  % Rechnung
  \newcommand{\doctype}{\TitleInv}
  \newcommand{\MyDocdate}{\invdate}
  \newcommand{\DocNoTitle}{\InvNumber}
  \newcommand{\docnumber}{\invnumber}
  % 2. Documentnummer
    \ifthenelse{\equal{\ordnumber}{\leer}}{
    % wenn keine Auftragsnummer -> Angebotsnummer
      \newcommand{\SecNoTitle}{\QuotationNumber}
      \newcommand{\secnumber}{\quonumber}
    }{
      \newcommand{\SecNoTitle}{\OrderNumber}
      \newcommand{\secnumber}{\ordnumber}
    }
}{}
\IfStrEq{\docname}{proforma}{
  \newcommand{\doctype}{\TitleProforma}
  \newcommand{\MyDocdate}{\invdate}
  \newcommand{\DocNoTitle}{\InvNumber}
  \newcommand{\docnumber}{\invnumber}
  % 2. Documentnummer
    \ifthenelse{\equal{\ordnumber}{\leer}}{
    % wenn keine Auftragsnummer -> Angebotsnummer
      \newcommand{\SecNoTitle}{\QuotationNumber}
      \newcommand{\secnumber}{\quonumber}
    }{
      \newcommand{\SecNoTitle}{\OrderNumber}
      \newcommand{\secnumber}{\ordnumber}
    }
}{}
\IfStrEq{\docname}{purchase_order}{
  \renewcommand{\PurchaseOrder}{1}
  \newcommand{\doctype}{\TitlePurchaseOrder}
  \newcommand{\MyDocdate}{\orddate}
  \newcommand{\DocNoTitle}{\RequestOrderNumber}
  \newcommand{\docnumber}{\ordnumber}
  \renewcommand{\deliverydate}{\reqdate}
  \renewcommand{\DelDate}{\ReqByTitle}
  \renewcommand{\CustomerID}{\VendorID}
  \renewcommand{\kundennummer}{\vendornumber}
  \newcommand{\SecNoTitle}{}
  \newcommand{\secnumber}{}
}{}
\IfStrEq{\docname}{credit_note}{
  \newcommand{\doctype}{\TitleCreditNote}
  \newcommand{\MyDocdate}{\invdate}
  \newcommand{\DocNoTitle}{\CredNumber}
  \newcommand{\docnumber}{\invnumber}
  % keine 2. Documentnummer
    \newcommand{\SecNoTitle}{}
    \newcommand{\secnumber}{}
}{}
\IfStrEq{\docname}{sales_order}{
  % Auftragsbestaetigung
  \newcommand{\doctype}{\TitleSalesOrder}
  \newcommand{\MyDocdate}{\orddate}
  \renewcommand{\deliverydate}{\reqdate}
  \newcommand{\DocNoTitle}{\OrderNumber}
  \newcommand{\docnumber}{\ordnumber}
  % 2. Documentnummer
    \ifthenelse{\equal{\ordnumber}{\leer}}{
    % wenn keine Angebotsnummer -> leer
      \newcommand{\SecNoTitle}{}
      \newcommand{\secnumber}{}
    }{
      \newcommand{\SecNoTitle}{\QuotationNumber}
      \newcommand{\secnumber}{\quonumber}
    }
}{ }
\IfStrEq{\docname}{sales_quotation}{
  % Angebot
  \newcommand{\doctype}{\TitleSalesQuotation}
  \newcommand{\MyDocdate}{\quodate}
  \renewcommand{\DelDate}{\ValidUntil}
  \renewcommand{\deliverydate}{\reqdate}
  \newcommand{\DocNoTitle}{\QuotationNumber}
  \newcommand{\docnumber}{\quonumber}
  % 2. Documentnummer
    \newcommand{\SecNoTitle}{}
    \newcommand{\secnumber}{}
}{ }



% ==== \paid auf 0.00 falls leer
\IfSubStr{\paid}{\DecimalSign}{}{\renewcommand{\paid}{0{\DecimalSign}00}}



\setkomavar{date}{}


\begin{letter}{{\ifthenelse{\isnamedefined{MyAdressfield}}{\MyAdressfield
  }{\MyAdress
  }}
}
\opening{}

%========Datum und Nummern====================================================

\newcommand{\DocId}{
  \begin{tabular*}{\textwidth+1em }{@{\extracolsep{\fill}}llllr}
    \MakeUppercase{\tiny \DocNoTitle} &
    \MakeUppercase{\tiny \CustomerID} &
    \MakeUppercase{\tiny \SecNoTitle } &
    \MakeUppercase{\tiny \DelDate }   &
    \MakeUppercase{\tiny \Date}~\\
    \mainfont\docnumber      &
    \mainfont\kundennummer   &
    \mainfont\secnumber   &
    \mainfont\deliverydate  &
    \mainfont\MyDocdate~\\
\end{tabular*}  ~\\
}

\hspace{-0.5em} \DocId




\nexthead{
  \ifthenelse{\bgPdfFirstPageOnly = 1 }{
    \hspace{-4mm}  \DocId
  }{}
}
\vspace{ 5mm}

{\noindent\textbf\doctype}~\\
\IfEndWith{\paymenttype}{\paymentPrivatEnd}{\PriceInclTax }{ }


%======Die eigentliche-Tabelle========================================

% temporaere Datei mit Tabelle anlegen
\begin{filecontents}{<%template_meta.tmpfile NOESCAPE%>.table.tex}
\mainfont
\resetlaufsumme



  \ifthenelse{\NoValue > 0 }
  { % Tabelle ohne Preisen
    \ifthenelse{\Picklist = 1 }{

    \begin{longtable}{@{}rlX@{ }rlrrrl@{}}
     }{
    \begin{longtable}{@{}rlX@{ }rlrr@{}}

     }
      % Kopfzeile der Tabelle

        {\Pos} &
        {\Number} &
        {\ItemNo} &
        {\Count} &
        {\Unit} \hspace{2mm}
        \ifthenelse{\Picklist = 1 }{& {\Take} & {\Storage} }{}
        ~\\
        \midrule
      \endfirsthead

      % Tabellenkopf nach dem Umbruch
        {\Pos} &
        {\Number} &
        {\ItemNo} &
        {\Count} &
        {\Unit} \hspace{2mm}
        \ifthenelse{\Picklist = 1 }{& {\Take} & {\Storage} }{}
        ~\\

        \midrule
      \endhead

      <%foreach number%>
        <%runningnumber%>                        % Laufende Positionsnummer
        &
        <%number%>                               % Artikelnummer
        &
        <%description%>                           % Kurzbeschreibung des Artikels
        \ifthenelse{\equal{<%longdescription%>}{\leer}}{}{ \newline <%longdescription%>}
        % Ein zeilenweises Auslieferdatum, wenn es gesetzt bei der Position hinterlegt ist.
        \ifthenelse{\equal{<%deliverydate_oe%>}{\leer}}{}{
                \newline \DelDate:~<%deliverydate_oe%>}
        &
        <%qty NOFORMAT%>                 % Menge
        &
        <%unit%>               % Einheit
        %\ifthenelse{\Picklist = 1 }{& {x} & {x} }{}
        %\ifthenelse{\Picklist = 1 }{& {x} & {x} \hhline{~~~~~--} }{~\\}
        \ifthenelse{\Picklist = 1 }{& {\underline{;~~~~~~~~~}} & {\underline{;~~~~~~~~~}}~\\ }{~\\}
        %~\\ %
      <%end number%>
    \end{longtable}     % Ende der zentralen Tabelle
  }{ % Tabelle mit Preisen
    \begin{longtable}{@{}rlX@{ }rlrrr@{}}
      % Kopfzeile der Tabelle

        {\Pos} &
        {\Number} &
        {\ItemNo} &
        {\Count} &
        {\Unit} &
        {\Fee} &
        {\Dis} &
        {\Total} \hspace{2mm} ~\\
        \midrule
      \endfirsthead

      % Tabellenkopf nach dem Umbruch
        {\Pos} &
        {\Number} &
        {\ItemNo} &
        {\Count} &
        {\Unit} &
        {\Fee} &
        {\Dis} &
        {\Total} \hspace{2mm} ~\\
        \midrule
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabCarry{:} \MarkZwsumPos}
      \endhead


      % Fuss der Teiltabellen
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabSubTotal{:} \MarkZwsumPos } ~\\
      \endfoot

      % Das Ende der Tabelle
        \midrule
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabSubTotal{:} \MarkZwsumPos} ~\\
      \endlastfoot

      <%foreach number%>
        <%runningnumber%>                        % Laufende Positionsnummer
        &
        <%number%>                               % Artikelnummer
        &
        <%description%>                           % Kurzbeschreibung des Artikels
        \ifthenelse{\equal{<%longdescription%>}{\leer}}{}{ \newline <%longdescription%>}
        % Ein zeilenweises Auslieferdatum, wenn es gesetzt ist.
        \ifthenelse{\equal{<%reqdate%>}{\leer}}{}{
                \newline \DelDate:~<%reqdate%>}
        &
        <%qty NOFORMAT%>         % Menge
        &
        <%unit%>              % Einheit
        &
        %\IfEndWith{\paymentterms}{_e}{EN}{\brutto{<%sellprice NOFORMAT%>}{<%qty NOFORMAT%>}{<%p_discount%>}}
        \IfEndWith{\paymenttype}{\paymentPrivatEnd}{
            \BruttoSellPrice{<%sellprice NOFORMAT%>}{<%tax_rate%>}
            &
            \ifthenelse{\equal{<%p_discount%>}{0}}{}{ -<%p_discount%>\%}
            &
            \BruttoWert{<%linetotal NOFORMAT%>}{<%tax_rate%>}
        }{
            \numprint{<%sellprice NOFORMAT%>}
            &
            \ifthenelse{\equal{<%p_discount%>}{0}}{}{ -<%p_discount%>\%}
            &
            \Wert{<%linetotal NOFORMAT%>} % Zeilensumme addieren
        }
        ~\\ %
      <%end number%>
    \end{longtable}     % Ende der zentralen Tabelle
  }
\end{filecontents}  % Ende der Hilfsdatei.

\LTXtable{\textwidth}{<%template_meta.tmpfile NOESCAPE%>.table.tex}

\rule{\textwidth}{0pt}   % Ein (unsichtbarer) Strich quer ueber die Seite
\vspace{ 5mm}
\vspace{-2em plus 10em minus 2em}~\\
\ifthenelse{\NoValue > 0 }
{ % wenn keine Zahlen
}{ % Wenn Zahlen
  \parbox{\textwidth}{
    \mainfont
    %
    %
    \setlength{\tabcolsep}{0.2em}
    \ifthenelse{\equal{\paid}{0{\DecimalSign}00} }
    {  % Wenn noch nichts gezahlt wurde
       \IfSubStr{\invtotal}{\DecimalSign}{}{
         \fpAdd{\invtotal}{0}{<%subtotal NOFORMAT%>}
         <%foreach tax%>
         \fpAdd{\invtotal}{\invtotal}{<%tax NOFORMAT%>}
         <%end tax%>
       }
       \hfill
       \begin{tabular}{@{}rrr@{}}
               %{Summe vor Steuern:}& {\numprint{<%subtotal NOFORMAT%>}} & ~\\

               % Die unterschiedlichen Steueranteile getrennt ausweisen
               <%foreach tax%>
                 { \IfEndWith{\paymenttype}{\paymentPrivatEnd}{\TaxInc }{ } <%taxdescription%>}
                          &
                 {\numprint{<%tax NOFORMAT%>}}& ~\\
               <%end tax%>
               \midrule[1pt]
               {\Sum~ \currency:} & \textbf{\numprint{\invtotal}}
       \end{tabular}
    }
    {  % Wenn bereits etwas gezahlt wurde
       \hfill
       \begin{tabular}{@{}rrr@{}}

               {\EbT}& {\numprint{<%subtotal NOFORMAT%>}} & ~\\

               % Die unterschiedlichen Steueranteile getrennt ausweisen
               <%foreach tax%>
               {<%taxdescription%>}
                        &
               {\numprint{<%tax NOFORMAT%>}}& ~\\
               <%end tax%>

               \midrule  % Ein dünner Strich
               \Sum & \numprint{\invtotal} & ~\\

               <%foreach payment%>
                       \AlreadyPayed~ {<%paymentdate%>}:& -{\numprint{<%payment%>}} & ~\\
               <%end paymentdate%>

               \midrule[2pt]  % Ein etwas dickerer Strich
               {\Left~ \currency:} & \numprint{\total}
       \end{tabular}
    }% ende ithenelse

  } %Ende des Summenkasten
}

\vfill                 % Den Rest-Text soweit wie möglich nach unten schieben
\ifthenelse{\isempty{<%notes%>}}{}{
      \mainfont
\noindent <%notes%> ~\\[2em]
      }%
\small
\noindent \YourOrder
\ifthenelse{\Picklist = 0}{\noindent \ifthenelse{\equal{<%ustid%>}{\leer}}{}{\UstidTitle} \UstId}{}
\noindent \paymenthints          % ist in translations.tex deffiniert
\ifthenelse{\PurchaseOrder = 0}{\noindent \paymentterms}{}


\end{letter}
\end{document}
