Revision 5db07950
Von Moritz Bunkus vor etwa 12 Jahren hinzugefügt
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 |
|
|
1 | 12 |
\documentclass[twoside]{scrartcl} |
2 |
\usepackage{eurosym} |
|
3 |
\usepackage{tabularx} |
|
4 |
\usepackage{ifthen} |
|
5 |
\usepackage[utf8]{inputenc} |
|
6 |
\begin{document} |
|
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 |
|
7 | 29 |
|
8 |
\setlength{\parindent}{0cm} |
|
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} |
|
9 | 41 |
|
10 |
\pagestyle{empty} |
|
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)$} |
|
11 | 46 |
|
12 |
\newlength{\descrwidth}\setlength{\descrwidth}{10cm} |
|
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 |
} |
|
13 | 69 |
|
14 |
\fontfamily{cmss}\fontshape{n}\selectfont |
|
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 |
|
15 | 87 |
|
16 |
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont |
|
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)$} |
|
17 | 99 |
|
18 |
\vspace*{1.5cm} |
|
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\$}{} |
|
19 | 106 |
|
20 |
\begin{minipage}{8cm} |
|
21 |
<%name%> |
|
107 |
% ---------- Ende Reportvariablen-Umsetzung ---------- |
|
22 | 108 |
|
23 |
<%street%> |
|
109 |
% ---------- Briefkopf dazuladen ---------- |
|
110 |
\input{kivitendobriefkopf} |
|
24 | 111 |
|
25 |
<%zipcode%> <%city%> |
|
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} |
|
26 | 119 |
|
27 |
<%country%> |
|
28 |
\end{minipage} |
|
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} |
|
29 | 127 |
\hfill |
30 |
\begin{minipage}{6cm} |
|
31 |
\rightline{\LARGE\textbf{\textit{Rechnung}}} \vspace*{0.2cm} |
|
32 |
\rightline{\large\textbf{\textit{Nr. <%invnumber%>% \vspace*{0.2cm} |
|
33 |
}}} |
|
34 |
|
|
35 |
Rechnungsdatum:\hfill <%invdate%> |
|
36 |
|
|
37 |
Auftrag-Nr:\hfill <%ordnumber%> |
|
38 |
|
|
39 |
Telefon:\hfill <%phone%> |
|
40 |
|
|
41 |
Telefax:\hfill <%fax%> |
|
42 |
|
|
43 |
Ansprechpartner:\hfill <%employee%> |
|
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] |
|
44 | 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.\\ |
|
45 | 147 |
|
46 |
\vspace*{0.5cm} |
|
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)$ |
|
47 | 213 |
|
48 |
Ihre Bestellung <%cusordnumber%> vom <%orddate%> |
|
49 |
% \hfill |
|
50 |
|
|
51 |
|
|
52 |
\vspace*{0.5cm} |
|
53 |
|
|
54 |
Sehr geehrte Damen und Herren, |
|
55 |
|
|
56 |
für unsere erbrachten Lieferungen und Leistungen erlauben wir uns, |
|
57 |
folgende Positionen in Rechnung zu stellen. |
|
58 |
|
|
59 |
\vspace{0.5cm} |
|
60 |
|
|
61 |
\begin{tabularx}{\textwidth}{lrXrr} |
|
62 |
\hline |
|
63 |
\textbf{Pos} & \textbf{Menge} & \textbf{Bezeichnung} & |
|
64 |
\textbf{E-Preis/\euro} & \textbf{G-Preis/\euro} \\ |
|
65 |
\hline |
|
66 |
<%foreach number%> |
|
67 |
<%runningnumber%> & <%qty%> <%unit%> & \raggedright <%description%> & |
|
68 |
<%sellprice%> \euro & <%linetotal%> \euro \\ |
|
69 |
<%if discount_sub%> & Zwischensumme: & & <%discount_sub%> \euro & <%end if%>\\ |
|
70 |
<%end number%>\hline |
|
71 |
\multicolumn{4}{l}{Nettobetrag} & <%subtotal%> \euro \\ |
|
72 |
<%foreach tax%> |
|
73 |
\multicolumn{4}{l}{<%taxdescription%>} & <%tax%> \euro \\ |
|
74 |
<%end tax%> |
|
75 |
\multicolumn{4}{l}{\textbf{Endbetrag}} & \textbf{<%invtotal%> \euro} \\ \hline |
|
76 |
\end{tabularx} |
|
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 |
|
77 | 244 |
|
78 |
\vspace{1cm} |
|
79 |
\ifthenelse{\equal{<%deliverydate%>}{}}{Das Leistungsdatum entspricht, soweit nicht anders angegeben, dem Rechnungsdatum.}{Liefertermin: <%deliverydate%>} \\ |
|
80 |
Zahlbar bis <%duedate%> in Summe <%invtotal%> \euro\ ohne Abzüge. |
|
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 |
%} |
|
81 | 291 |
|
82 | 292 |
\end{document} |
83 |
|
Auch abrufbar als: Unified diff
Druckvorlagen: Standard-Vorlagensatz im kivitendo-Design nach offizieller Demo
Fixt #2049.