be93079e5bc760a5c9589d43ce53e2d17dda827f
[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}{$(template_meta.tmpfile NOESCAPE)$.table.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}{\euro}
102 \ifthenelse{\equal{$(currency)$}{YEN}}{\let\currency\textyen}{}
103 \ifthenelse{\equal{$(currency)$}{GBP}}{\let\currency\pounds}{}
104 \ifthenelse{\equal{$(currency)$}{USD}}{\let\currency\$}{}
105
106 % ---------- Ende Reportvariablen-Umsetzung ----------
107
108 % ---------- Briefkopf dazuladen ----------
109 \input{kivitendobriefkopf}
110
111 \begin{document}
112 % ---------- Schrift Hauptdokuments (Computermodern-sanserif)  ----------
113 % \fontfamily{cmss}\fontsize{10}{12pt plus 0.12pt minus 0.1pt}\selectfont
114 % ---------- Schrift Helvetica ------------------------
115 \fontfamily{phv}\fontsize{10}{12pt plus 0.12pt minus 0.1pt}\selectfont
116 % ---------- Firmenlogo nur erste Seite ----------
117 \thispagestyle{briefkopf}
118
119 % ---------- Datum und Nummern ----------
120 % Position unterhalb des Briefkopfs
121 \vspace*{\vlogospacing}
122 \renewcommand{\arraystretch}{0.9}
123 \begin{minipage}[b]{177mm}
124 \sperren{\textbf{Rechnung Nr. \invnumber}}
125 {\tiny Bitte stets angeben}
126 \hfill
127         \small
128         \begin{tabular}[b]{r@{\hspace{2mm}}p{\hlogospacing}}
129                 \textbf{Seite} & {\thepage} von \pageref{LastPage}\\
130                 \textbf{Datum} & \invdate \\
131                 \textbf{Kunden Nr.} & \kundennummer\\
132                 \nonemptyline{\textbf{Auftrag Nr.} &}{\ordnumber}
133                 \nonemptyline{\textbf{Rechnung Nr.} &}{\invnumber}
134                 \textbf{Ansprechpartner} & \employeename\\
135                 \nonemptyline{\textbf{Durchwahl} &}{\employeetel}
136                 \nonemptyline{\textbf{E-Mail} &}{\employeeemail}
137         \end{tabular}\\[10mm plus 20mm minus 10mm]
138 \end{minipage}
139 \renewcommand{\arraystretch}{1}
140 \normalsize
141 % ---------- Begrüßung und Bemerkungen ----------
142 \vspace{ 5mm}
143 \lettergreeting
144 Hiermit erlauben wir uns, Ihnen die nachfolgenden Positionen $(if orddate)$gemäß
145 Ihrem Auftrag vom \orddate{ }$(end)$in Rechnung zu stellen.\\
146
147 Für Nachfragen steht Ihnen \employeename \ per Telefon (\employeetel)
148 oder per E-Mail (\employeeemail) gerne zur Verfügung.\\[1\baselineskip]
149 \ifthenelse{\isempty{$(notes)$}}{}{
150       $(notes)$\\[1\baselineskip]
151       }%
152 %Mit freundlichen Grüßen\\[1\baselineskip]
153 %\employeename\\[1\baselineskip]
154 % ---------- Die eigentliche-Tabelle ----------
155 % ---------- Tabelle puffern ----------
156 \begin{filecontents}{\employeetable}
157 % ---------- globale Variable laufsumme deklarieren ----------
158 \resetlaufsumme
159 % ---------- Spaltendefinition ----------
160 %\begin{longtable}{@{}rlX@{ }rlrr@{\makebox[\widthof{\textbf{~\currency}}]}}
161 \begin{longtable}{@{}rlX@{ }rlrr@{\makebox[\widthof{\textbf{}}]}}
162 % ---------- Kopfzeile der Tabelle ----------
163         \textbf{Pos} &
164         \textbf{Art.Nr.} &
165         \textbf{Bezeichnung} &
166         \textbf{Menge} &
167         \textbf{ME} &
168         \textbf{EP/€} &
169         \textbf{GP/€} \\
170         \midrule
171   \endfirsthead
172 % ---------- Tabellenkopf nach dem Umbruch ----------
173         \textbf{Pos} &
174         \textbf{Art.Nr.} &
175         \textbf{Bezeichnung} &
176         \textbf{Menge} &
177         \textbf{ME} &
178         \textbf{EP/€} &
179         \textbf{GP/€} \\
180         \midrule
181         & & \multicolumn{4}{r}{} & \MarkUebertrPos\\[1.5em]
182   \endhead
183 % ---------- Fuss der Teiltabellen ----------
184         \midrule
185         & & \multicolumn{4}{r}{} & \MarkZwsumPos \\
186   \endfoot
187 % ---------- Das Ende der Tabelle ----------
188         \midrule
189 %       & & \multicolumn{4}{r}{ Nettobetrag:} & \MarkZwsumPos \\
190 \endlastfoot
191 % ---------- Positionen ----------
192 $(foreach number)$
193         $(runningnumber)$ &
194         $(number)$ &
195         $(description)$
196 %       \ifthenelse{\equal{$(longdescription)$}{}}{}{\newline
197 %       \renewcommand{\baselinestretch}{1}\footnotesize
198 %       {\footnotesize $(longdescription)$
199 %       \renewcommand{\baselinestretch}{1}\normalsize
200 %       }}
201         \ifthenelse{\equal{$(deliverydate_oe)$}{\leer}}{}{
202                 \newline Lieferdatum:~$(deliverydate_oe)$}
203         &
204         $(qty)$ &
205         $(unit)$ &
206         \ifthenelse{\isempty{$(sellprice)$}}{&}{
207                 \numprint{$(sellprice)$}
208                 \ifthenelse{\equal{$(p_discount)$}{0}}{}{ -$(p_discount)$\%} &
209                 \numprint{$(linetotal)$}\Wert{$(linetotal NOFORMAT)$}
210         }\\ %
211   $(end number)$
212
213 \end{longtable}
214 % ----------  Ende der Hilfsdatei ----------
215 \end{filecontents}
216 % ---------- Puffertabelle öffnen ----------
217 \LTXtable{\textwidth}{\employeetable}
218 %---------- Bereich für die Summen ----------
219 \parbox{\textwidth}{
220 %---------- Summenbereich nach recht schieben  ----------
221 \hfill
222 \setlength{\tabcolsep}{0mm}
223 \begin{tabular}[b]{@{}r@{ }r@{ }l}
224    {Nettobetrag:}& \numprint{$(subtotal)$}& \currency\\
225 % ---------- Alle Steuern ausweisen ----------
226    $(foreach tax)$
227 %       {$(taxdescription)$ auf }\numprint{$(taxbase)$}~\currency: & \numprint{$(tax)$}& \\
228                 {$(taxdescription)$}:  & \numprint{$(tax)$}& \currency\\
229    $(end tax)$
230    \midrule
231    {\textbf{Rechnungsbetrag:}} & \bfseries\numprint{\invtotal} & \textbf{\currency}\\
232 % ---------- Wenn bereits etwas gezahlt wurde ----------
233 $(if invtotal != total)$
234         $(foreach payment)$
235            Zahlung vom {$(paymentdate)$}: & {\numprint{-$(payment)$}} & \currency \\
236         $(end paymentdate)$
237         \midrule
238         \textbf{Offener Betrag: } & \textbf{\numprint{\total}} & \textbf{\currency}\\
239 $(end)$
240 \bottomrule
241 \end{tabular}
242 } %Ende des Summenkasten
243
244 % ---------- Lieferadresse ----------
245 \ifthenelse{%
246      \equal{\shiptoname}{\name} \AND
247      \equal{\shiptodepartmentone}{\leer} \AND
248      \equal{\shiptodepartmenttwo}{\leer} \AND
249      \equal{\shiptostreet}{\street} \AND
250      \equal{\shiptozipcode}{\zipcode} \AND
251      \equal{\shiptocity}{\city}
252      }{}
253 {
254 % ---------- Umbruch dazwischen verhindern ----------
255 \vspace*{0.5em}
256 \parbox{\textwidth}{
257 % ---------- Bereich für Lieferadresse ----------
258 \textbf{Leistungsempfänger:}\hfill\parbox[t]{0.7\textwidth}{
259                 \shiptoname \\
260                 \nonemptyline{}{\shiptodepartmentone}
261                 \nonemptyline{}{\shiptodepartmenttwo}
262                 \shiptostreet \\
263                 \shiptocountry{ }\shiptozipcode{ }\shiptocity\\[1mm]
264                 \nonemptyline{Tel: }{\shiptophone}
265                 \nonemptyline{Fax: }{\shiptofax}
266         }%ende parbox
267 }% ende parbox
268 }% ende ifthenelse
269 % ---------- Nachbemerkung mit max. Abstand nach unten ----------
270 $(if payment_terms)$
271 \vspace*{0.5em}
272 \textbf{Zahlungsbedingungen:}\hfill\parbox[t]{0.7\textwidth}{$(payment_terms)$}\\
273 $(end)$
274 \vspace*{0.5em}
275 %Bitte überweisen Sie den Rechnungsbetrag in Höhe von
276 %{\numprint{\total}~\currency} innerhalb von
277 %%{\numprint{\total}~\currency}
278 %\ifthenelse{\equal{\duedate}{\leer}}{{14}}{{\terms}}~Tagen
279 %auf das unten angegebene Konto.
280 %\ifthenelse{\equal{\duedate}{\leer}}{}\\ \vfil
281 %  {Nach dem {\duedate} behalten wir uns Verzugszinsen vor.}
282 Soweit nicht anders angegeben, \ifthenelse{\equal{\deliverydate}{\leer}}
283    {entspricht das Leistungsdatum dem Rechnungsdatum.}
284    {wurde die Leistung am {\deliverydate} erbracht.}\\
285 \vfill
286 \footnotesize
287 Bereits gelieferte Waren bleiben bis zur vollständigen Bezahlung der
288 Rechnung unser Eigentum.
289 %}
290
291 \end{document}