Merge remote branch 'origin/master'
[kivitendo-erp.git] / templates / print / Standard / invoice.tex
1 % invoice.tex
2 % Rechnung Verkauf
3 % Überarbeitet von Norbert Simon, n.simon@linet-services.de
4 % Version 2.5 vom 16. November 2011
5 % Basiert auf der Arbeit von kmk@lilalaser.de / 2007
6 % Diese Vorlage steht unter der GPL-Lizenz, Version 3
7 % siehe http://www.gnu.de/licenses/gpl-3.0.html
8 % ----------
9 % config: tag-style=$( )$
10 % ----------
11
12 \documentclass[twoside]{scrartcl}
13 \usepackage{fancyhdr}       % Für den Seitenkopf und -Fuß
14 \usepackage{ifpdf}          % Erlaubt eine Code-Weiche für PDF, oder DVI Ausgabe
15 \usepackage{xifthen}        % Allgemeine Code-Weiche
16 \usepackage{graphicx}       % Fuer die Einbindung der Logo-Graphik
17 \usepackage{german}         % Deutsche Trenn-Tabelle
18 \usepackage[utf8]{inputenc} % Umlaute direkt eingeben
19 \usepackage{textcomp}       % Sonderzeichen
20 \usepackage{lastpage}       % Fuer die Angabe "Seite 2 von 5"
21 \usepackage{filecontents}   % Um von latex aus eine Datei schreiben zu koennen
22 \usepackage{etex}           % Damit Marken verwendet werden koennen
23 \usepackage{ltxtable}       % Mehrseiten-Tabellen mit variabler Spaltenbreite
24 \usepackage{booktabs}       % Striche in Tabellen
25 \usepackage{numprint}       % Zahlen formatiert ausgeben
26 \usepackage[$(if myconfig_output_numberformat =~ "1.000,00")$german$(else)$$(if myconfig_output_numberformat =~ "1000,00")$germannosep$(else)$$(if myconfig_output_numberformat =~ "1,000.00")$english$(else)$englishnosep$(end)$$(end)$$(end)$]{zwischensumme}  % Lokales Makro zur Berechnung der Zwischensummen
27 \usepackage{microtype,relsize} %Feinpositionierung, Sperren von Text
28 \newcommand*{\sperren}[1]{\normalsize\textls*[200]{#1}} %Sperrung Überrschriften
29
30 % ---------- Report-Variablen zur Verwendung in kivitendobriefkopf.tex ----------
31 % ----------  Die eigenen Daten ----------
32 \newcommand{\employeename}{$(employee_name)$}
33 \newcommand{\employeecompany}{$(employee_company)$}
34 \newcommand{\employeeaddress}{$(employee_address)$}
35 \newcommand{\employeetel}{$(employee_tel)$}
36 \newcommand{\employeefax}{$(employee_fax)$}
37 \newcommand{\employeeemail}{$(employee_email)$}
38 \newcommand{\employeecoustid}{$(employee_co_ustid)$}
39 \newcommand{\employeetaxnumber}{$(employee_taxnumber)$}
40 \newcommand{\employeetable}{tabelle$(employee_login)$.tex}
41
42 % ---------- Eigene Bankverbindung falls nicht im Briefkopf gesetzt ----------
43 % \newcommand{\companybank}{$(company_bank)$}
44 % \newcommand{\companybankcode}{$(company_bank_code)$}
45 % \newcommand{\companyaccountnumber}{$(company_account_number)$}
46
47 % ---------- Adressat ----------
48 \newcommand{\name}{$(name)$}
49 \newcommand{\departmentone}{$(department_1)$}
50 \newcommand{\departmenttwo}{$(department_2)$}
51 \newcommand{\cpgreeting}{$(cp_greeting)$}
52 \newcommand{\cptitle}{$(cp_title)$}
53 \newcommand{\cpgivenname}{$(cp_givenname)$}
54 \newcommand{\cpname}{$(cp_name)$}
55 \newcommand{\street}{$(street)$}
56 \newcommand{\country}{$(country)$}
57 \newcommand{\zipcode}{$(zipcode)$}
58 \newcommand{\city}{$(city)$}
59 \newcommand{\phone}{$(customerphone)$}
60 \newcommand{\fax}{$(customerfax)$}
61 \newcommand{\lettergreeting}{
62         \ifthenelse{\equal{$(cp_gender)$}{f}}
63          {Sehr geehrte Frau $(cp_name)$,}
64         {\ifthenelse{\equal{$(cp_gender)$}{m}}
65           {Sehr geehrter Herr $(cp_name)$,}
66           {Sehr geehrte Damen und Herren,}
67         }\\[1\baselineskip]
68 }
69
70 % ---------- Rechnungsvariablen ----------
71 \newcommand{\kundennummer}{$(customernumber)$}
72 \newcommand{\quonumber}{$(quonumber)$}          % Angebotsnummer
73 \newcommand{\ordnumber}{$(ordnumber)$}          % Auftragsnummer bei uns
74 \newcommand{\cusordnumber}{$(cusordnumber)$}    % Auftragsnummer beim Kunden
75 \newcommand{\invnumber}{$(invnumber)$}          % Rechnungsnummer
76 \newcommand{\docnumber}{Rechnung Nr. \invnumber}
77 \newcommand{\quodate}{$(quodate)$}              % Angebotsdatum
78 \newcommand{\orddate}{$(orddate)$}              % Auftragsdatum
79 \newcommand{\reqdate}{$(reqdate)$}              % gewuenschtes Lieferdatum
80 \newcommand{\deliverydate}{$(deliverydate)$}    % Lieferdatum
81 \newcommand{\invdate}{$(invdate)$}              % Rechnungsdatum
82 \newcommand{\terms}{$(terms)$}                  % Zahlungsfrist
83 \newcommand{\duedate}{$(duedate)$}              % Fälligkeitsdatum
84 \newcommand{\invtotal}{$(invtotal)$}            % Gesamtbetrag
85 \newcommand{\paid}{$(paid)$}                    % Schon bezahlt
86 \newcommand{\total}{$(total)$}                  % Restbetrag
87
88 % ---------- Lieferadresse ----------
89 \newcommand{\shiptoname}{$(shiptoname)$}
90 \newcommand{\shiptocontact}{$(shiptocontact)$}
91 \newcommand{\shiptodepartmentone}{$(shiptodepartment_1)$}
92 \newcommand{\shiptodepartmenttwo}{$(shiptodepartment_2)$}
93 \newcommand{\shiptostreet}{$(shiptostreet)$}
94 \newcommand{\shiptocity}{$(shiptocity)$}
95 \newcommand{\shiptocountry}{$(shiptocountry)$}
96 \newcommand{\shiptophone}{$(shiptophone)$}
97 \newcommand{\shiptozipcode}{$(shiptozipcode)$}
98 \newcommand{\shiptofax}{$(shiptofax)$}
99
100 % ---------- Währungszeichen ----------
101 \newcommand{\currency}{$(currency)$}
102 \ifthenelse{\equal{\currency}{EUR}}{\let\currency\euro}{}
103 \ifthenelse{\equal{\currency}{YEN}}{\let\currency\textyen}{}
104 \ifthenelse{\equal{\currency}{GBP}}{\let\currency\pounds}{}
105 \ifthenelse{\equal{\currency}{USD}}{\let\currency\$}{}
106
107 % ---------- Ende Reportvariablen-Umsetzung ----------
108
109 % ---------- Briefkopf dazuladen ----------
110 \input{kivitendobriefkopf}
111
112 \begin{document}
113 % ---------- Schrift Hauptdokuments (Computermodern-sanserif)  ----------
114 % \fontfamily{cmss}\fontsize{10}{12pt plus 0.12pt minus 0.1pt}\selectfont
115 % ---------- Schrift Helvetica ------------------------
116 \fontfamily{phv}\fontsize{10}{12pt plus 0.12pt minus 0.1pt}\selectfont
117 % ---------- Firmenlogo nur erste Seite ----------
118 \thispagestyle{briefkopf}
119
120 % ---------- Datum und Nummern ----------
121 % Position unterhalb des Briefkopfs
122 \vspace*{\vlogospacing}
123 \renewcommand{\arraystretch}{0.9}
124 \begin{minipage}[b]{177mm}
125 \sperren{\textbf{Rechnung Nr. \invnumber}}
126 {\tiny Bitte stets angeben}
127 \hfill
128         \small
129         \begin{tabular}[b]{r@{\hspace{2mm}}p{\hlogospacing}}
130                 \textbf{Seite} & {\thepage} von \pageref{LastPage}\\
131                 \textbf{Datum} & \invdate \\
132                 \textbf{Kunden Nr.} & \kundennummer\\
133                 \nonemptyline{\textbf{Auftrag Nr.} &}{\ordnumber}
134                 \nonemptyline{\textbf{Rechnung Nr.} &}{\invnumber}
135                 \textbf{Ansprechpartner} & \employeename\\
136                 \nonemptyline{\textbf{Durchwahl} &}{\employeetel}
137                 \nonemptyline{\textbf{E-Mail} &}{\employeeemail}
138         \end{tabular}\\[10mm plus 20mm minus 10mm]
139 \end{minipage}
140 \renewcommand{\arraystretch}{1}
141 \normalsize
142 % ---------- Begrüßung und Bemerkungen ----------
143 \vspace{ 5mm}
144 \lettergreeting
145 Hiermit erlauben wir uns, Ihnen die nachfolgenden Positionen $(if orddate)$gemäß 
146 Ihrem Auftrag vom \orddate{ }$(end)$in Rechnung zu stellen.\\
147
148 Für Nachfragen steht Ihnen \employeename \ per Telefon (\employeetel) 
149 oder per E-Mail (\employeeemail) gerne zur Verfügung.\\[1\baselineskip]
150 \ifthenelse{\isempty{$(notes)$}}{}{
151       $(notes)$\\[1\baselineskip]
152       }%
153 %Mit freundlichen Grüßen\\[1\baselineskip]
154 %\employeename\\[1\baselineskip]
155 % ---------- Die eigentliche-Tabelle ----------
156 % ---------- Tabelle puffern ----------
157 \begin{filecontents}{\employeetable}
158 % ---------- globale Variable laufsumme deklarieren ----------
159 \resetlaufsumme
160 % ---------- Spaltendefinition ----------
161 %\begin{longtable}{@{}rlX@{ }rlrr@{\makebox[\widthof{\textbf{~\currency}}]}}
162 \begin{longtable}{@{}rlX@{ }rlrr@{\makebox[\widthof{\textbf{}}]}}
163 % ---------- Kopfzeile der Tabelle ----------
164         \textbf{Pos} &
165         \textbf{Art.Nr.} &
166         \textbf{Bezeichnung} &
167         \textbf{Menge} &
168         \textbf{ME} &
169         \textbf{EP/€} &
170         \textbf{GP/€} \\
171         \midrule
172   \endfirsthead
173 % ---------- Tabellenkopf nach dem Umbruch ----------
174         \textbf{Pos} &
175         \textbf{Art.Nr.} &
176         \textbf{Bezeichnung} &
177         \textbf{Menge} &
178         \textbf{ME} &
179         \textbf{EP/€} &
180         \textbf{GP/€} \\
181         \midrule
182         & & \multicolumn{4}{r}{} & \MarkUebertrPos\\[1.5em]
183   \endhead
184 % ---------- Fuss der Teiltabellen ----------
185         \midrule
186         & & \multicolumn{4}{r}{} & \MarkZwsumPos \\
187   \endfoot
188 % ---------- Das Ende der Tabelle ----------
189         \midrule
190 %       & & \multicolumn{4}{r}{ Nettobetrag:} & \MarkZwsumPos \\
191 \endlastfoot
192 % ---------- Positionen ----------
193 $(foreach number)$
194         $(runningnumber)$ &
195         $(number)$ &
196         $(description)$
197 %       \ifthenelse{\equal{$(longdescription)$}{}}{}{\newline
198 %       \renewcommand{\baselinestretch}{1}\footnotesize
199 %       {\footnotesize $(longdescription)$
200 %       \renewcommand{\baselinestretch}{1}\normalsize
201 %       }}
202         \ifthenelse{\equal{$(deliverydate_oe)$}{\leer}}{}{
203                 \newline Lieferdatum:~$(deliverydate_oe)$}
204         &
205         $(qty)$ &
206         $(unit)$ &
207         \ifthenelse{\isempty{$(sellprice)$}}{&}{
208                 \numprint{$(sellprice)$}
209                 \ifthenelse{\equal{$(p_discount)$}{0}}{}{ -$(p_discount)$\%} &
210                 \numprint{$(linetotal)$}\Wert{$(linetotal NOFORMAT)$}  
211         }\\ %
212   $(end number)$
213
214 \end{longtable}
215 % ----------  Ende der Hilfsdatei ----------
216 \end{filecontents}
217 % ---------- Puffertabelle öffnen ----------
218 \LTXtable{\textwidth}{\employeetable}
219 %---------- Bereich für die Summen ----------
220 \parbox{\textwidth}{
221 %---------- Summenbereich nach recht schieben  ----------
222 \hfill
223 \setlength{\tabcolsep}{0mm}
224 \begin{tabular}[b]{@{}r@{ }r@{ }l}
225    {Nettobetrag:}& \numprint{$(subtotal)$}& \currency\\
226 % ---------- Alle Steuern ausweisen ----------
227    $(foreach tax)$
228 %       {$(taxdescription)$ auf }\numprint{$(taxbase)$}~\currency: & \numprint{$(tax)$}& \\
229                 {$(taxdescription)$}:  & \numprint{$(tax)$}& \currency\\
230    $(end tax)$
231    \midrule  
232    {\textbf{Rechnungsbetrag:}} & \bfseries\numprint{\invtotal} & \textbf{\currency}\\
233 % ---------- Wenn bereits etwas gezahlt wurde ----------
234 $(if invtotal != total)$
235         $(foreach payment)$
236            Zahlung vom {$(paymentdate)$}: & {\numprint{-$(payment)$}} & \currency \\
237         $(end paymentdate)$
238         \midrule
239         \textbf{Offener Betrag: } & \textbf{\numprint{\total}} & \textbf{\currency}\\
240 $(end)$
241 \bottomrule
242 \end{tabular}
243 } %Ende des Summenkasten
244
245 % ---------- Lieferadresse ----------
246 \ifthenelse{%
247      \equal{\shiptoname}{\name} \AND
248      \equal{\shiptodepartmentone}{\leer} \AND
249      \equal{\shiptodepartmenttwo}{\leer} \AND
250      \equal{\shiptostreet}{\street} \AND
251      \equal{\shiptozipcode}{\zipcode} \AND
252      \equal{\shiptocity}{\city}
253      }{}
254 {
255 % ---------- Umbruch dazwischen verhindern ----------
256 \vspace*{0.5em}
257 \parbox{\textwidth}{
258 % ---------- Bereich für Lieferadresse ----------
259 \textbf{Leistungsempfänger:}\hfill\parbox[t]{0.7\textwidth}{
260                 \shiptoname \\
261                 \nonemptyline{}{\shiptodepartmentone}
262                 \nonemptyline{}{\shiptodepartmenttwo}
263                 \shiptostreet \\
264                 \shiptocountry{ }\shiptozipcode{ }\shiptocity\\[1mm]
265                 \nonemptyline{Tel: }{\shiptophone}
266                 \nonemptyline{Fax: }{\shiptofax}
267         }%ende parbox
268 }% ende parbox
269 }% ende ifthenelse
270 % ---------- Nachbemerkung mit max. Abstand nach unten ----------
271 $(if payment_terms)$
272 \vspace*{0.5em}
273 \textbf{Zahlungsbedingungen:}\hfill\parbox[t]{0.7\textwidth}{$(payment_terms)$}\\ 
274 $(end)$
275 \vspace*{0.5em}
276 %Bitte überweisen Sie den Rechnungsbetrag in Höhe von
277 %{\numprint{\total}~\currency} innerhalb von
278 %%{\numprint{\total}~\currency}
279 %\ifthenelse{\equal{\duedate}{\leer}}{{14}}{{\terms}}~Tagen
280 %auf das unten angegebene Konto.
281 %\ifthenelse{\equal{\duedate}{\leer}}{}\\ \vfil
282 %  {Nach dem {\duedate} behalten wir uns Verzugszinsen vor.}
283 Soweit nicht anders angegeben, \ifthenelse{\equal{\deliverydate}{\leer}}
284    {entspricht das Leistungsdatum dem Rechnungsdatum.}
285    {wurde die Leistung am {\deliverydate} erbracht.}\\
286 \vfill
287 \footnotesize
288 Bereits gelieferte Waren bleiben bis zur vollständigen Bezahlung der
289 Rechnung unser Eigentum.
290 %}
291
292 \end{document}