1
0
Fork 0
mirror of https://github.com/tomka/rechnung.git synced 2024-06-25 18:40:44 +02:00
rechnung.sty/rechnung.dtx

1056 lines
33 KiB
Plaintext
Raw Normal View History

2010-03-13 18:59:38 +01:00
% \iffalse
%% File: rechnung.dtx Copyright (C) 1998 M G Berberich
%% berberic@fmi.uni-passau.de
% <20>nderungen V3.40 (2015-03-11, Sven Schoradt <schoradt@netztierpfleger.de>)
% - Abschlagszahlungen in netto-Rechnungen eingebaut
2010-03-14 00:50:48 +01:00
% <20>nderungen V3.30 (2010-03-05, Tom Kazimiers <tom@voodoo-arts.net>)
2010-03-13 18:59:38 +01:00
% - Fehler behoben der eine MwSt von 0% nicht m<>glich machte
% - Euro als Standardw<64>hrung gesetzt, f<>r DM muss "\DMark" gesetzt
% werden
% - Macro hinzugef<65>gt um einen Prefix f<>r jedes Element eines Artikels
% zu setzen. Damit kann beispielsweise die Schriftgr<67><72>e der Artikel
% zeilen angepasst werden.
2010-03-14 00:50:48 +01:00
% <20>nderungen V3.20 (2009-12-08, Tom Kazimiers <tom@voodoo-arts.net>)
% - Mehrwertsteuersatz angepasst. von 16/7 auf 19/7
% - Einen Rechnungstyp "K" f<>r "Umsatzsteuer/keine Mehrwertsteuer"
% hinzugef<65>gt; verwendbar wenn MwSt. nach 19 UStG nicht anwendbar
2010-03-13 18:59:38 +01:00
% <20>nderungen V3.10 (2001-04-01, Ulrich Sibiller <uli42@web.de>)
% - Statt "Artikel" steht jetzt "Beschreibung" in der Titelzeile
% Eines Tages soll der User das einstellen k<>nnen
% - Kommazahlen f<>r Anzahl werden jetzt korrekt behandelt. Betr<74>ge werden
% bei der Ausgabe korrekt gerundet (0,34 * 0,20 -> 0,07; 0,34 * 0,24 = 0,09)
% - Daraus resultierend kann man jetzt f<>r Zahlen auch weniger
% als zwei Nachkommastellen angeben.
% - Spaltenbreiten werden zentral definiert (leider nicht automatisch, sollten
% user definable sein)
% - Bugfix: Wenn Positionsspalte abgeschaltet war, dann rutschten die Zeilen
% ein klein wenig nach oben (weil \strut dann fehlte)
%
% <20>nderungen V3.00 (2001-03-23, Ulrich Sibiller <uli42@web.de>)
% - Positionsspalte kann abgeschaltet werden (\PositionEin/Aus)
% - Mehrwertsteuer wird separat in zwei Zeilen ausgegeben
% - horizontale Trennlinien zwischen den einzelnen Artikeln
% k<>nnen abgeschaltet werden (\TrennerEin/Aus)
% - Reduktion auf weniger Code (durch Parametrisierung), da ein
% Gro<72>teil identisch war
% - Neues Kommando: \Posten ist ein Alias zu Artikel
% - Bugfix: Versandkosten mit erm. MwSt-Satz funktionieren jetzt. Keine
% Ahnung, ob es sowas ueberhaupt gibt, aber jedenfalls wurde das
% bisher nicht korrekt angezeigt!
% - Neues Environment: \Bestellung
%
%<*dtx>
\ProvidesFile{rechnung.dtx}
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{rechnung}
%<driver> \ProvidesFile{rechnung.drv}
% \fi
% \ProvidesFile{rechnung.dtx}
2010-03-14 00:50:48 +01:00
[2010/03/05 v3.30 BMG Rechnungs Style, enhanced by Ulrich Sibiller, Tom Kazimiers]
2010-03-13 18:59:38 +01:00
%
% \iffalse
%<*driver>
\documentclass[draft]{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{textcomp}
\usepackage{german}
\usepackage{rechnung}
\begin{document}
\DocInput{rechnung.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{rechnung.dtx}
2010-03-14 00:50:48 +01:00
% \title{Das \textsf{rechnung} Paket V3.30}
2010-03-13 18:59:38 +01:00
% \author{M G Berberich, Ulrich Sibiller, Tom Kazimiers}
2010-03-14 00:50:48 +01:00
% \date{2010-03-05}
2010-03-13 18:59:38 +01:00
%
% \let\env\textsf
%
% \maketitle
%
% \begin{abstract}
% Dieses Paket definiert \env{rechnung} und
% \env{rechnung\textasteriskcentered} Umgebungen
% um Rechnungen und Bestellungen zu erzeugen.
% \end{abstract}
%
% \changes{v1.00}{1998/11/16}
% {Auskoppelung der Umgebungen aus bmgbrief.cls}
%
% \changes{v1.01}{1998/11/19}
% {Zahlenleseroutine erneuert. Sie gibt jetzt lesbare Fehlermeldungen
% bei falscher Nachkommastellenzahl}
%
% \changes{v2.00}{1998/11/25}
% {Erweiterung um Netto- und Bruttorechnungen mit Mehrwertsteuer}
%
% \changes{v2.01}{1998/11/25}
% {Rundungsfehler in der Bruttorechnungen behoben}
%
% \changes{v3.00}{2001/03/23}
% {Positionen und Trennlinien abschaltbar, Code Cleanup <uli42@web.de>}
%
% \changes{v3.01}{2001/04/01}
% {Statt Artikel wird Beschreibung in der Titelzeile verwendet, Anzahl kann
% muss keine ganze Zahl mehr sein<uli42@web.de>}
% \changes{v3.20} {2009/12/08}
2010-03-14 00:50:48 +01:00
% {Einen Rechnungstyp "K" f<>r "nmsatzsteuer/keine Mehrwertsteuer"
2010-03-13 18:59:38 +01:00
% hinzugef<65>gt; verwendbar wenn MwSt. nach 19 UStG nicht anwendbar
% <tom@voodoo-arts.net>}
% \changes{v3.30} {2010/03/05}
2010-03-14 00:50:48 +01:00
% {Fehler behoben der eine MwSt von 0\% nicht m<>glich machte,
% Euro als Standardw<E4>hrung gesetzt, f<>r DM muss "\DMark" gesetzt
% werden; Mehrwertsteuersatz korrigiert (von 16/7 auf 19/7; Mittels
% einem Prefixmakro kann allen Tabellenelementen etwas vorangsteltt
% werden
% <tom@voodoo-arts.net>}
2010-03-13 18:59:38 +01:00
%
% \DeleteShortVerb{\|}
% \MakeShortVerb{\"}
% \let\package\textsf
% \let\env\textsf
%
% \section{Rechtliches}
%
%
% Da das Paket ohne jegliche Kosten lizenziert wird, besteht keinerlei
% Gew<65>hrleistung. Ich hafte weder f<>r unmittelbar noch mittelbar
% entstehende Sch<63>den aus der Verwendung des Paketes. Ich stelle das
% Paket so zur Verf<72>gung, \glqq wie es ist\grqq, ohne irgendeine
% Gew<65>hrleistung, weder ausdr<64>cklich noch implizit, einschlie<69>lich,
% aber nicht begrenzt auf, die Tauglichkeit und Verwendbarkeit f<>r
% einen bestimmten Zweck. Das volle Risiko bez<65>glich Qualit<69>t und
% Leistungsf<73>higkeit liegt bei Ihnen. Sollte das Programm fehlerhaft
% sein, <20>bernehmen Sie die Kosten f<>r notwendigen Service, Reparatur
% oder Korrektur.
%
% Die Weitergabe dieses Pakets ist erlaubt solange es
% \emph{vollst<73>ndig} weitergegeben wird. <20>nderungen an Dateien dieses
% Pakets sind nur zul<75>ssig wenn die Datei \emph{vorher} umbenannt
% wird, mein Copyright-Vermerke und der Haftungssausschlu<6C> erhalten
% bleiben und klar ersichtlich ist, da<64> es sich um eine ver<65>nderte
% Variante handelt.
%
%
%
% \section{Beschreibung}
%
% \DescribeEnv{Rechnung}\DescribeEnv{Bestellung}
% Die Umgebung \env{Rechnung} bzw \env{Bestellung} erstellt eine Rechnung
% oder Bestellung. Die beiden Makros sind identisch, es wird jedoch empfohlen,
% zur besseren Lesbarkeit das jeweils passende zu verwenden. Im weiteren Text
% wird nur \env{Rechnung} verwendet.
% Jede Position besteht aus einer Positionsnummer, die automatisch
% erstellt wird, der Anzahl, der Artikelbeschreibung und dem
% Einzelpreis des Artikels. Die Preise und die Gesamtsumme werden von
% \env{Rechnung} berechnet. \env{Rechnung} hat ein optionales
% Argument, da<64> den Typ der Rechnung/Bestellung angibt:
% \begin{description}
% \item[\texttt{\textbackslash begin\{Rechnung\}}]
% Eine \glqq Rechnung\grqq\ ohne Mehrwertsteuer. Diese Variante eignet
% sich z.\,B. zur Erstelllung von Bestellungen.
% \item[\texttt{\textbackslash begin\{Rechnung\}[N]}]
% Eine Rechnung bei der alle Preise als Nettopreise angegeben sind
% und bei der die Mehrwertsteuer angegeben und zum Endpreis addiert
% wird. (z\.B. f<>r gewerbliche Kunden)
% \item[\texttt{\textbackslash begin\{Rechnung\}[B]}]
% Eine Rechnung bei der alle Preise als Bruttopreise angegeben sind
% und die enthaltene Mehrwertsteuer ausgewiesen ist.
% (z.\,B. f<>r Endverbraucher)
% \item[\texttt{\textbackslash begin\{Rechnung\}[K]}]
% Eine Rechnung bei der alle Preise als Nettopreise angegeben sind
% und die Mehrwertsteuer nach \S19 UStG nicht ausweisbar ist.
% (z.\,B. f<>r Selbstst<73>ndige im Kleingewerbe)
% \end{description}
% \DescribeEnv{Rechnung\textasteriskcentered}
% \DescribeEnv{Bestellung\textasteriskcentered}
% Die Umgebung \env{Rechnung\textasteriskcentered} bzw. \env{Bestellung\textasteriskcentered}
% ist zu \env{Rechnung} bzw. \env{Bestellung}
% identisch, bis auf die, hier zus<75>tzlich vorhandenen, Artikelnummern.
% Der Platz f<>r die Artikelbeschreibungen wird entsprechend kleiner.
%
% \DescribeMacro{\Artikel}\DescribeMacro{\Posten}
% Mit "\Artikel" oder "\Posten" werden die einzelnen Positionen
% der Rechnung eingegeben. Es besteht kein
% Unterschied zwischen den beiden Makros.\\
% "\Artikel{"\textlangle Anzahl\textrangle"}{"
% \textlangle Artikel\textrangle"}{"
% \textlangle Einzelpreis\textrangle"}"\\
% bzw. bei \env{Rechnung\textasteriskcentered}
% und \env{Bestellung\textasteriskcentered}:\\
% "\Artikel{"\textlangle Anzahl\textrangle"}{"
% \textlangle Artikelnummer\textrangle"}{"
% \textlangle Artikel\textrangle"}{"
% \textlangle Einzelpreis\textrangle"}"\\
% "\Artikel" hat ein optionales
% Argument, da<64> es erlaubt f<>r diesen Artikel den erm<72><6D>igten
% Mehrwertsteuersatz auszuw<75>hlen. Diese Positionen werden hinter dem
% Preis mit einem $^*$ gekennzeichnet und unter der Tabelle wird bei
% Netto- und Bruttorechnungen eine \glqq Fu<46>note\grqq\ erzeugt.
% Zum Beispiel:\\
% "\Artikel[e]{5}{Der Herr der Ringe}{59,80}"\\ f<>gt eine Position mit
% 5 \emph{Herr der Ringe} zum erm<72><6D>igten Mehrwertsteuersatz ein.
2010-03-14 00:50:48 +01:00
% Mittels dem Makro "\ArtikelPrefix{...}" kann man jedem Element der
% Artikel einen Prefix geben. Damit l<>sst sich beispielsweise die
% Schriftgr<67><72>e dieser Auflistung im Ganzen <20>ndern:\\
% "\ArtikelPrefix{\small}"
%
2010-03-13 18:59:38 +01:00
%
% Versandkosten lassen sich mit \DescribeMacro{\Versandkosten}
% "\Versandkosten{"\textlangle Preis\textrangle"}" eingeben und
% bekommen keine Positionsnummer. Es sind auch erm<72><6D>igte Versandkosten <20>ber
% den optionalen Parameter "[e]" m<>glich, allerdings ist nicht bekannt, ob
% es sowas <20>berhaupt irgendwo gibt.
%
% \DescribeMacro{\Waehrung} Die W<>hrungseinheit, die hinter die Betr<74>ge
% gesetzt wird, ist auf DM voreingestellt. Mit "\Waehrung{...}" kann
% eine beliebige andere W<>hrung gesetzt werden, "\Waehrung{F}" setzt
% z.\,B. die W<>hrung auf \glqq F\grqq. F<>r den Euro gibt es eine Abk<62>rzung
% "\Euro" die identisch zu "\Waehrung{\texteuro}" ist und (falls das
% "textcomp"-Paket eingebunden ist) ein \texteuro\ erzeugt.
%
% \DescribeMacro{\Steuersatz}Die Steuers<72>tze lassen sich mit
% "\Steuersatz{"\textlangle Steuersatz 1\textrangle"}{"
% \textlangle Steuersatz 2\textrangle"}" festlegen. Standardm<64><6D>ig ist
% Steuersatz 1 auf "19" und Steuersatz 2 auf "7" eingestellt. Dies entspricht
% dem Mehrwertsteuersatz von 19\% und dem erm<72><6D>igtem Mehrwertsteuersatz von
2010-03-13 18:59:38 +01:00
% 7\%.
%
% \DescribeMacro{\Gesamtsumme}\DescribeMacro{\Mehrwertsteuer}
% Nach dem Ende einer \env{Rechnung}- bzw. \env{Bestellung}\-Umgebung lassen
% sich die Gesamtsumme und die Mehrwertsteuer
% noch mit den Makros "\Gesamtsumme" und
% "\Mehrwertsteuer" in den Text einf<6E>gen.
%
% \DescribeMacro{\PositionEin}\DescribeMacro{\PositionAus}
% Hiermit l<><6C>t sich die Ausgabe der Positionsspalte aktivieren bzw. unterdr<64>cken,
% da diese nicht immer ben<65>tigt wird. Voreingestellt ist "\PositionEin"
% Die Makros k<>nnen beliebig oft
% auftreten, es wird jedoch nur das letzte vor dem ersten Artikel beachtet.
% Sobald ein Artikel angegeben wurde, werden die Makros ignoriert.
%
% \DescribeMacro{\TrennerEin}\DescribeMacro{\TrennerAus}
% Eine Rechnung sieht oft besser aus, wenn sich keine Trennlinien zwischen den
% einzelnen Posten befinden. Da dies aber Geschmackssache ist, kann man die
% Ausgabe von Trennlinien mit den Makros "\TrennerEin" bzw. "\TrennerAus"
% steuern. Voreinstellung ist "\TrennerEin".
% Die Makros k<>nnen beliebig oft
% auftreten, es wird jedoch nur das letzte vor dem ersten Artikel beachtet.
% Sobald ein Artikel angegeben wurde, kann die Einstellung nicht mehr
% ver<65>ndert werden..
%
% \section{Beispiele}
%
% \subsection{Bestellung ohne Artikelnummern}
% Dieses Beispiel demonstriert, da<64> eine Vielzahl von Textauszeichnungs-
% und Formatierungsm<73>glichkeiten innerhalb einer \env{Rechnung}-Umgebung
% verwendet werden kann.
%
% \begin{verbatim}
% \begin{Rechnung}
% \Artikel{1}{Der Herr der Ringe
% \begin{enumerate}
% \item Die Gef<65>hrten
% \item Die zwei T<>rme
% \item Die R<>ckkehr des K<>nigs
% \end{enumerate}
% John Ronald R. Tolkien\\
% \scriptsize Taschenbuch, Erschienen 1972}{59,80}
% \Artikel{4}{\textbf{Der kleine Hobbit}\\
% \textit{John Ronald R. Tolkien}, Taschenbuch, Erschienen 1995}{12,90}
% \Versandkosten{9,90}
% \end{Rechnung}
% \noindent Ein Verrechnungsscheck <20>ber \Gesamtsumme\ liegt bei.
% \end{verbatim}
%
% \vbox{
% \begin{Rechnung}
% \Artikel{1}{Der Herr der Ringe
% \begin{enumerate}
% \item Die Gef<65>hrten
% \item Die zwei T<>rme
% \item Die R<>ckkehr des K<>nigs
% \end{enumerate}
% John Ronald R. Tolkien\\
% \scriptsize Taschenbuch, Erschienen 1972}{59,80}
% \Artikel{4}{\textbf{Der kleine Hobbit}\\
% \textit{John Ronald R. Tolkien}, Taschenbuch, Erschienen 1995}{12,90}
% \Versandkosten{9,90}
% \end{Rechnung}
% \noindent Ein Verrechnungsscheck <20>ber\Gesamtsumme\ liegt bei.
% }
% \subsection{Bestellung mit Artikelnummern}
%
% \begin{verbatim}
% \begin{Rechnung*}
% \Artikel{1}{3345765}{The \TeX-Book von Donald E. Knuth}{85,47}
% \Artikel{1500}{879847}{B<>roklammern}{0,03}
% \Versandkosten{12,95}
% \end{Rechnung*}
% \end{verbatim}
%
% \vbox{
% \begin{Rechnung*}
% \Artikel{1}{3345765}{The \TeX-Book von Donald E. Knuth}{85,47}
% \Artikel{1500}{879847}{B<>roklammern}{0,03}
% \Versandkosten{12,95}
% \end{Rechnung*}
% }
%
% \subsection{Rechnung mit Nettopreisen und Mehrwertsteuer}
%
% \begin{verbatim}
% \begin{Rechnung}[N]
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{79,88}
% \Artikel{20}{Erdn<64><6E>e}{0,99}
% \Versandkosten{10,00}
% \end{Rechnung}
% \noindent Im Betrag von \Gesamtsumme\ sind also
% \Mehrwertsteuer\ Mehrwertsteuer enthalten.
% \end{verbatim}
%
% \vbox{
% \begin{Rechnung}[N]
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{79,88}
% \Artikel{20}{Erdn<64>sse}{0,85}
% \Versandkosten{10,00}
% \end{Rechnung}
% \noindent Im Betrag von \Gesamtsumme\ sind also
% \Mehrwertsteuer\ Mehrwertsteuer enthalten.
% }
%
% \subsection{Rechnung mit Nettopreisen und Mehrwertsteuer, ohne Trennlinien und Positionsnummern}
%
% \begin{verbatim}
% \begin{Rechnung}[N]
% \PositionAus
% \TrennerAus
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{79,88}
% \Artikel{20}{Erdn<64><6E>e}{0,99}
% \Versandkosten{10,00}
% \end{Rechnung}
% \noindent Im Betrag von \Gesamtsumme\ sind also
% \Mehrwertsteuer\ Mehrwertsteuer enthalten.
% \end{verbatim}
%
% \vbox{
% \begin{Rechnung}[N]
% \PositionAus
% \TrennerAus
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{79,88}
% \Artikel{20}{Erdn<64>sse}{0,85}
% \Versandkosten{10,00}
% \end{Rechnung}
% \noindent Im Betrag von \Gesamtsumme\ sind also
% \Mehrwertsteuer\ Mehrwertsteuer enthalten.
% }
%
% \subsection{Rechnung mit Bruttopreisen und ausgewiesener Mehrwertsteuer}
%
% Hier mal ein Beispiel mit EUR:
%
% \begin{verbatim}
% \Euro
% \begin{Rechnung}[B]
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{42,73}
% \Artikel{20}{Erdn<64>sse}{0,49}
% \Versandkosten{5,80}
% \end{Rechnung}
% \end{verbatim}
%
% \vbox{
% \Euro
% \begin{Rechnung}[B]
% \Artikel[e]{1}{Donald E. Knuth: The \TeX-Book}{42,73}
% \Artikel{20}{Erdn<64>sse}{0,49}
% \Versandkosten{5,80}
% \end{Rechnung}
% }
%
% \cleardoublepage
%
%
%
% \section{\LaTeX-Code}
%
% \subsection{Deklarationen}
%
% Einige Z<>hler f<>r Position, Gesamtsumme, Mehrwertsteuer und zur
% Parameter<65>bergabe und tempor<6F>re Daten
% \begin{macrocode}
\newcount\@RCHcnt \newcount\@RCHsum \newcount\@RCHtmp
\newcount\@RCHmwst \newcount\@RCHmwsti \newcount\@RCHmwstii
\newcount\@RCHtmptmp \newcount\@RCHabschln \newcount\@RCHabschlb
\newcount\@RCHabschlmwst
2010-03-13 18:59:38 +01:00
% \end{macrocode}
%
% Die Dimensionen der Spalten
% \begin{macrocode}
\newdimen\@RCHPosWidth
\newdimen\@RCHAnzWidth
\newdimen\@RCHArtnumWidth
\newdimen\@RCHArtWidth
\newdimen\@RCHEinzelWidth
\newdimen\@RCHGesamtWidth
\@RCHPosWidth=1.5em%
\@RCHAnzWidth=2.9em%
\@RCHArtnumWidth=5em%
\@RCHEinzelWidth=4.8em%
\@RCHGesamtWidth=6.1em%
% \end{macrocode}
% \begin{macro}{\@RCHerm}
% Ein Schalter der das Auftauchen von erm<72><6D>igtem MwSt-Satz anzeigt.
% \begin{macrocode}
\newif\if@RCHerm
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHabschl}
% Ein Schalter der das Anzeigen der Abschlagsberechnung beeinflusst
% \begin{macrocode}
\newif\if@RCHabschl
% \end{macrocode}
% \end{macro}
%
2010-03-13 18:59:38 +01:00
% \begin{macro}{\@RCHpos}
% Ein Schalter der das Anzeigen der Pos-Spalte beeinflusst
% \begin{macrocode}
\newif\if@RCHpos
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHfirst}
% Ein Schalter der anzeigt, da<64> der erste Artikel eingef<65>gt wird
% \begin{macrocode}
\newif\if@RCHfirst
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHhor}
% Ein Schalter der anzeigt, ob horizontale Trennlinien zwischen den
% Artikeln eingef<65>gt werden
% \begin{macrocode}
\newif\if@RCHhor
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHartnum}
% Ein Schalter der anzeigt, ob die Artikelnr ausgegeben wird.
% \begin{macrocode}
\newif\if@RCHartnum
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHinit}
% Ein Schalter der anzeigt, ob schon initialisiert wurde.
% \begin{macrocode}
\newif\if@RCHinit
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHwdt}
% Breite der Spalte f<>r die Artikelbezeichnung
% \begin{macrocode}
\newdimen\@RCHwdt
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHstsi}
% normalen Mehrwertsteuersatz
% \begin{macrocode}
\newcommand*\@RCHstsi{19}
2010-03-13 18:59:38 +01:00
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHstsii}
% erm<72><6D>igter Mehrwertsteuersatz
% \begin{macrocode}
\newcommand*\@RCHstsii{7}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHustsi}
2010-03-14 00:50:48 +01:00
% Umsatzsteuer, wenn Mehrwertsteuer nach \S19 UStG nicht ausweisbar
2010-03-13 18:59:38 +01:00
% \begin{macrocode}
\newcommand*\@RCHustsi{0}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@ArtikelPrefix}
% aktueller Artikelprefix. Voreingestellt ist dieser leer.
% \begin{macrocode}
\newcommand*\@ArtikelPrefix{}
% \end{macrocode}
% \end{macro}
%
2010-03-13 18:59:38 +01:00
% \begin{macro}{\@waehrung}
% aktuelle W<>hrung. Voreingestellt ist Euro.
% \begin{macrocode}
\newcommand*\@waehrung{\texteuro}
% \end{macrocode}
% \end{macro}
%
% \subsection{Benutzermacros}
%
% \begin{macro}{\Steuersatz}
% Stellt neue Mehrwertsteuers<72>tze (normal und erm<72><6D>igt) ein.
% \begin{macrocode}
\newcommand*\Steuersatz[2]{\def\@RCHstsi{#1}\def\@RCHstsii{#2}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Waehrung}
% Stellt eine beliebige W<>hrung ein.
% \begin{macrocode}
\newcommand*\Waehrung[1]{\def\@waehrung{#1}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\PositionEin/Aus}
% Schaltet Positionsnummern ein oder aus.
% \begin{macrocode}
\newcommand*\PositionEin[0]{\if@RCHinit\else\global\@RCHpostrue\fi}
\newcommand*\PositionAus[0]{\if@RCHinit\else\global\@RCHposfalse\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\TrennerEin/Aus}
% Schaltet Positionsnummern ein oder aus.
% \begin{macrocode}
\newcommand*\TrennerEin[0]{\if@RCHinit\else\global\@RCHhortrue\fi}
\newcommand*\TrennerAus[0]{\if@RCHinit\else\global\@RCHhorfalse\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ArtikelPrefix}
% Setzt einen belibigen Prefix f<>r das Setzen der Artikelbeschreibung. Damit
% kann beispielsweise die Schriftgr<67><72>e angepasst werden.
% \begin{macrocode}
\newcommand*\ArtikelPrefix[1]{\def\@ArtikelPrefix{#1}}
% \end{macrocode}
% \end{macro}
%
2010-03-13 18:59:38 +01:00
% \begin{macro}{\Euro}
% Stellt die W<>hrung auf Euro um. (ben<65>tigt textcomp)
% \begin{macrocode}
\newcommand*\Euro{\def\@waehrung{\texteuro}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DMark}
% Stellt die W<>hrung auf DM um. (ben<65>tigt textcomp)
% \begin{macrocode}
\newcommand*\DMark{\def\@waehrung{D\kern-0.05em M}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Gesamtsumme}
% Gibt die Gesamtsumme der letzten Tabelle aus.
% \begin{macrocode}
\newcommand*\Gesamtsumme{\writeCurrency\@RCHsum}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Mehrwertsteuer}
% Gibt die Mehrwertsteuer der letzten Tabelle aus.
% \begin{macrocode}
\newcommand*\Mehrwertsteuer{\writeCurrency\@RCHmwst}
% \end{macrocode}
% \end{macro}
%
% \subsection{Zahlenmacros}
%
% \begin{macro}{\@RCHwrite}
% Gibt einen Z<>hler gerundet auf zwei Nachkommastellen aus.
% (cntr/100,cntr\%100)
% \begin{macrocode}
\newcommand*\@RCHwrite[1]{
\@tempcnta=#1
\@tempcntb\@tempcnta
\divide\@tempcnta100 \the\@tempcnta,%
\multiply\@tempcnta100\advance\@tempcntb-\@tempcnta
\@tempcnta\@tempcntb\divide\@tempcnta10 \the\@tempcnta
\multiply\@tempcnta10\advance\@tempcntb-\@tempcnta
\the\@tempcntb
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\writeCurrency}
% Gibt einen Z<>hler als W<>hrungsbetrag aus.
% \begin{macrocode}
\newcommand*\writeCurrency[1]{\@RCHwrite{#1}\,\@waehrung}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\writebfCurrency}
% Gibt eine Z<>hler als W<>hrungsbetrag mit fetter Zahl aus.
% \begin{macrocode}
\newcommand*\writebfCurrency[1]{{\fontseries{b}
\selectfont\writeCurrency{#1}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@readNum}
% Liest eine Zahl der Form [Zahl]*{,[Zahl]{[Zahl]}} in
% \verb|\@RCHtmp| ein
% \begin{macrocode}
\newcommand*\@readNum[1]{\@RCHtmp=0\@readA#1\relax}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@readA}
% Liest eine Zahl ein. Falls Nachkommastellen vorhanden sind,
% werden diese ebenfalls eingelesen. Nachkommastellen werden
% mit , oder . abgetrennt. Tritt eines dieser Zeichen auf, dann m<>ssen
% auch Nachkommastellen kommen, sonst wird ein Fehler ausgegeben.
% \begin{macrocode}
\newcommand*\@readA[1]{%
\expandafter\if#1\relax\@tempcnta0\@readC\relax
\else\expandafter\if#1.\@tempcnta0
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\@readB
\else\expandafter\if#1,\@tempcnta0
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\@readB
\else\multiply\@RCHtmp10\advance\@RCHtmp#1
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\@readA
\fi\fi\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@readB}
% Liest zwei Nachkommastellen ein. Bei 0 oder mehr als 2 Stellen
% wird eine Fehlermeldung erzeugt.
% \begin{macrocode}
\newcommand*\@readB[1]{%
\expandafter\if#1\relax\relax
\ifnum \@tempcnta > 2
\@RCHtmp0\PackageError{rechnung}{mehr als zwei
Nachkommastellen gefunden}
\else
\ifnum \@tempcnta = 2
\else
\ifnum \@tempcnta > 0
\advance\@tempcnta1
\multiply\@RCHtmp10
\@readB\relax
\else
\multiply\@RCHtmp100\PackageError{rechnung}{keine
Nachkommastellen gefunden}
\fi
\fi
\fi
\else
\advance\@tempcnta1
\multiply\@RCHtmp10
\advance\@RCHtmp#1\expandafter\@readB
\fi}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@readC}
% Liest zwei Nachkommastellen ein. Wenn weniger vorhanden sind, dann
% werden Nullen angenommen. Sind mehr als zwei Nachkommastellen vorhanden,
% erfolgt eine Fehlermeldung!
% \begin{macrocode}
\newcommand*\@readC[1]{%
\expandafter
\if#1\relax\relax
\ifnum \@tempcnta > 2
\@RCHtmp0\PackageError{rechnung}{mehr als zwei
Nachkommastellen gefunden}
\fi
\ifnum \@tempcnta < 2
\advance\@tempcnta1
\multiply\@RCHtmp10
\@readC\relax
\fi
\else
\advance\@tempcnta1
\multiply\@RCHtmp10
\advance\@RCHtmp#1\expandafter\@readC
\fi}
% \end{macrocode}
% \end{macro}
%
% \subsection{Rechnungsabschlu<6C>macros}
%
% \begin{macro}{\writefoot}
% Gibt Fu<46>note mit reduziertem MwSt.Satz aus.
% \begin{macrocode}
\newcommand*{\writefoot}[0]{
\if@RCHerm
\nointerlineskip
\vskip0.5ex
\hbox to \textwidth{
\hfill\footnotesize\strut
$^*$ Artikel mit \@RCHstsii\% Mehrwertsteuer}
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHsline}
% Erzeugt eine Zeile f<>r Summe, Mehrwertsteuer, \dots
% \begin{macrocode}
\newcommand*\@RCHsline[2]{%
\goodbreak\nointerlineskip
\vbox{\hrule
\hbox to\textwidth{%
\strut\lsep #1\hfil
\sep
\hbox to \@RCHGesamtWidth{\hfil#2}%
\rsep}%
\hrule\vskip-0.4pt}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHohne}
% Beendet eine Tabelle ohne Angabe von Mehrwertsteuer
% \begin{macrocode}
\newcommand*\@RCHohne{
\@RCHsline{Gesamtsumme}{\writebfCurrency\@RCHsum}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHnetto}
% Beendet eine Tabelle mit Nettopreisen und Mehrwertsteuer.
% \begin{macrocode}
\newcommand*\@RCHnetto{
\@RCHsline{Nettosumme}{\writeCurrency\@RCHsum}%
% \end{macrocode}
% \[\left\lfloor\frac{\hbox{Nettosumme}\cdot\hbox{Steuersatz}+50}{100}\right\rfloor\]
% \begin{macrocode}
\multiply\@RCHmwsti\@RCHstsi
\advance\@RCHmwsti50\divide\@RCHmwsti100
\multiply\@RCHmwstii\@RCHstsii
\advance\@RCHmwstii50\divide\@RCHmwstii100
\@RCHmwst\@RCHmwsti\advance\@RCHmwst\@RCHmwstii
\if@RCHerm
\@RCHsline{zzgl. \@RCHstsii\% MwSt.}{\writeCurrency\@RCHmwstii}%
\fi
\@RCHsline{zzgl. \@RCHstsi\% MwSt.}{\writeCurrency\@RCHmwsti}%
\advance\@RCHsum\@RCHmwst
\hrule
\vskip\doublerulesep\vskip0.4pt
\@RCHsline{Gesamtsumme}{\writebfCurrency\@RCHsum}%
\if@RCHabschl
\vskip\doublerulesep\vskip10pt
\advance\@RCHabschlb\@RCHabschln
\advance\@RCHabschlmwst\@RCHabschln
\multiply\@RCHabschlmwst\@RCHstsi
\advance\@RCHmwsti50
\divide\@RCHabschlmwst100
\advance\@RCHabschlb\@RCHabschlmwst
\advance\@RCHmwst-\@RCHabschlmwst
\@RCHsline{Abschlagszahlung }{\writeCurrency\@RCHabschln}%
\@RCHsline{zzgl. \@RCHstsi\% MwSt. }{\writeCurrency\@RCHabschlmwst}%
\vskip\doublerulesep\vskip0.4pt
\@RCHsline{bereits gezahlt }{\writebfCurrency\@RCHabschlb}%
\advance\@RCHsum-\@RCHabschlb
\vskip\doublerulesep\vskip10pt
\@RCHsline{noch zu zahlen }{\writebfCurrency\@RCHsum}%
\fi
\hrule
2010-03-13 18:59:38 +01:00
\writefoot
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHkeineUST}
% Beendet eine Tabelle mit den Nettopreisen und gibt
% an, dass die Mehrwertsteuer nach \S19 UStG nicht
% ausweisbar ist.
% \begin{macrocode}
\newcommand*\@RCHkeineUST{
\@RCHsline{Nettosumme}{\writeCurrency\@RCHsum}%
\@RCHsline{Umsatzsteuer (MwSt. nicht ausweisbar nach \S19 UStG)}{\writeCurrency\@RCHustsi}
\hrule
\vskip\doublerulesep\vskip0.4pt
\@RCHsline{Gesamtsumme}{\writebfCurrency\@RCHsum}%
\writefoot
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@RCHbrutto}
% Beendet eine Tabelle mit Bruttopreisen und gibt die
% enthaltene Mehrwertsteuer an.
% \begin{macrocode}
\newcommand*\@RCHbrutto{
\@RCHsline{Gesamtsumme}{\writebfCurrency\@RCHsum}
% \end{macrocode}
% \[ \left\lfloor\frac{2\cdot\mbox{Bruttosumme}\cdot\mbox{Steuersatz}+
% 100+\mbox{Steuersatz}}{2(100+\mbox{Steuersatz})}\right\rfloor \]
% \begin{macrocode}
\multiply\@RCHmwsti\@RCHstsi\multiply\@RCHmwsti2%
\@tempcnta100\advance\@tempcnta\@RCHstsi
\advance\@RCHmwsti\@tempcnta
\multiply\@tempcnta2%
\divide\@RCHmwsti\@tempcnta
\multiply\@RCHmwstii\@RCHstsii\multiply\@RCHmwstii2%
\@tempcnta100\advance\@tempcnta\@RCHstsii
\advance\@RCHmwstii\@tempcnta
\multiply\@tempcnta2%
\divide\@RCHmwstii\@tempcnta
\@RCHmwst\@RCHmwsti\advance\@RCHmwst\@RCHmwstii
\if@RCHerm
\@RCHsline{inkl. erm. MwSt. \@RCHstsii\%}
{\writeCurrency\@RCHmwstii}%
\fi
\@RCHsline{inkl. \@RCHstsi\% MwSt}{\writeCurrency\@RCHmwsti}%
\writefoot
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\sep}
% Gibt eine vertikale Trennlinie innerhalb einer Zeile aus
% \begin{macrocode}
\newcommand*{\sep}[0]{\hskip\tabcolsep\vrule\hskip\tabcolsep}
\newcommand*{\rsep}[0]{\hskip\tabcolsep\vrule}
\newcommand*{\lsep}[0]{\vrule\hskip\tabcolsep}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@RCHlineX}
% Erzeugt eine Position in einer Rechnung mit Artikelnummern
% Param: Position, Anzahl, Art.-Nr.,Artikel, Einzelpreis, Gesamtpreis
% \begin{macrocode}
\newcommand*\@RCHlineX[6]{{
\goodbreak\nointerlineskip
\vbox{
\if@RCHhor
\hrule
\else
\if@RCHfirst
\hrule
\fi
\fi
\hbox to\textwidth{%
\lsep%
\if@RCHpos%
\hbox to\@RCHPosWidth{\hfil #1\strut}%
\sep
\fi% Pos-Spalte
\hbox to\@RCHAnzWidth{\hfil #2\strut}\sep% Anzahl-Spalte
\if@RCHartnum%
\hbox to\@RCHArtnumWidth{\hfil #3\strut}%
\sep%
\fi% Art-Num-Spalte
\vtop{\normalbaselines%
\noindent\rightskip=0pt plus1cm%
\hsize\@RCHwdt%
\linewidth\hsize#4\null\strut\par}%
\hfil\sep%Beschreibung
\hbox to\@RCHEinzelWidth{\hfil #5\strut}\sep% Einzelpreis
\hbox to\@RCHGesamtWidth{\hfil #6\strut}\rsep% Gesamtpreis
}%hbox
}%vbox
}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@ArtikelX}
% Berechnet f<>r einen Artikel den Preis aus Anzahl und Einzelpreis,
% erh<72>ht die Gesamtsumme und die entsprechende Mehrwertsteuersumme
% und gibt die Position aus.
% Param: [ermaessigt,] Anzahl, (X: Art.-Nr.,) Artikel, Einzelpreis
% \begin{macrocode}
\newcommand*\@Artikel[4][X]{\@ArtikelX[#1]{#2}{}{#3}{#4}}
\newcommand*\@ArtikelX[5][X]{
\initRechnung
\advance\@RCHcnt1%
\@readNum{#5}
\@RCHtmptmp=\@RCHtmp%
\@readNum{#2}\multiply\@RCHtmp\@RCHtmptmp
\advance\@RCHtmp99\divide\@RCHtmp100%Aufrunden auf 2 Nachkommastellen.
\@lineBaseX[#1]{\the\@RCHcnt}{#2}{#3}{#4}{#5}
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@VersandkostenX}
% Erzeugt eine Zeile f<>r die Versandkosten, die keinen Einzelpreis und
% und keine Positionsnummer bekommt (mit Artikelnummer).
% \begin{macrocode}
\newcommand*\@Versandkosten[2][X]{\@VersandkostenX[#1]{#2}}
\newcommand*\@VersandkostenX[2][X]{
\initRechnung
\@readNum{#2}
\@lineBaseX[#1]{\null}{1}{\null}{Versandkosten}{#2}
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@AbschlagszahlungX}
% Erzeugt eine Abschlagszahlung
% \begin{macrocode}
\newcommand*\@Abschlagszahlung[2][X]{\@AbschlagszahlungX[#1]{#2}}
\newcommand*\@AbschlagszahlungX[2][X]{
\initRechnung
\@readNum{#2}
\global\@RCHabschltrue
\global\advance\@RCHabschln\@RCHtmp
}
% \end{macrocode}
% \end{macro}
%
2010-03-13 18:59:38 +01:00
% \begin{macro}{\@lineBaseX}
% Gemeinsamer Code f<>r Artikel- und Versandkostenzeilen
% \begin{macrocode}
\newcommand*\@lineBaseX[6][X]{
\global\advance\@RCHsum\@RCHtmp
\@RCHlineX{\@ArtikelPrefix#2}{\@ArtikelPrefix#3}{\@ArtikelPrefix#4}{\@ArtikelPrefix#5}{\@ArtikelPrefix#6}{\@ArtikelPrefix\writeCurrency\@RCHtmp
2010-03-13 18:59:38 +01:00
\expandafter\ifx#1X\else\rlap{$^*$}\fi}
\expandafter
\ifx#1X
\advance\@RCHmwsti\@RCHtmp
\else
\advance\@RCHmwstii\@RCHtmp\global\@RCHermtrue
\fi
\global\@RCHfirstfalse %horizontale Linien nur beim ersten Artikel
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Rechnung*}
% Beginnt eine Rechnung oder Bestellung ohne/mit Artikelnummer
% \begin{macrocode}
\newenvironment*{Rechnung}[1][X]{\RechnungStart{#1}{}}{\RechnungEnde}
\newenvironment*{Rechnung*}[1][X]{\RechnungStart{#1}{X}}{\RechnungEnde}
\newenvironment*{Bestellung}[0]{\RechnungStart{X}{}}{\RechnungEnde}
\newenvironment*{Bestellung*}[0]{\RechnungStart{X}{X}}{\RechnungEnde}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\RechnungStart}
% Kopf einer Rechnungstabelle
% \begin{macrocode}
\newcommand*{\RechnungStart}[2]{
\@RCHinitfalse
\@RCHermfalse
\@RCHabschlfalse
2010-03-13 18:59:38 +01:00
\@RCHmwsti0
\@RCHmwstii0
\@RCHabschln0
\@RCHabschlb0
\@RCHabschlmwst0
2010-03-13 18:59:38 +01:00
\def\@RCHtype{#1}%
% \end{macrocode}
% Berechne die Breite der Artikelspalte.\\
% $=\verb|\textwidth|-8\verb|\tabcolsep|-5*0.4\hbox{pt}-
% \sum\hbox{Spaltenbreite}$
% \begin{macrocode}
\@RCHcnt0
\@RCHsum0
\@RCHwdt\textwidth
\advance\@RCHwdt-\@RCHAnzWidth % Breite der Spalte Anz
\advance\@RCHwdt-\@RCHEinzelWidth% Breite der Spalte EPreis
\advance\@RCHwdt-\@RCHGesamtWidth % Breite der Spalte GPreis
\advance\@RCHwdt-2.0pt % Breite der Spaltentrenner
\advance\@RCHwdt-8\tabcolsep % Breite des Abstands zu
% den Spaltentrennern
\global\@RCHfirsttrue
\global\@RCHpostrue
\global\@RCHhortrue
% \end{macrocode}
% Param 2: Mit Artikelnummern?
% \begin{macrocode}
\ifx#2X
\global\@RCHartnumtrue
\let\Artikel\@ArtikelX
\let\Posten\@ArtikelX
\let\Versandkosten\@VersandkostenX
\let\Abschlagszahlung\@AbschlagszahlungX
2010-03-13 18:59:38 +01:00
\else
\global\@RCHartnumfalse
\let\Artikel\@Artikel
\let\Posten\@Artikel
\let\Versandkosten\@Versandkosten
\let\Abschlagszahlung\@Abschlagszahlung
2010-03-13 18:59:38 +01:00
\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\initRechnung}
% Kurze Routine, um Kopfzeile auszugeben, nachdem diverse
% Initialisierungen vorgenommen wurden. Das ist noetig, da
% einige Einstellungen innerhalb der Umgebung veraendert werden
% duerfen.
% \begin{macrocode}
\newcommand*{\initRechnung}[0]
{
\if@RCHinit
\else
% Breite wegen Anzeige der Positionsnummern korrigieren
% \begin{macrocode}
\if@RCHpos
\advance\@RCHwdt-\@RCHPosWidth
\advance\@RCHwdt-0.4pt
\advance\@RCHwdt-2\tabcolsep
\fi
% \end{macrocode}
% Breite wegen Anzeige der Artikelnummern korrigieren
% \begin{macrocode}
\if@RCHartnum
\advance\@RCHwdt-\@RCHArtnumWidth
\advance\@RCHwdt-0.4pt
\advance\@RCHwdt-2\tabcolsep
\fi
% \end{macrocode}
% bi<62>chen Platz <20>ber der Rechnung
% \begin{macrocode}
\vskip\abovedisplayskip
% \end{macrocode}
% Titelzeile ausgeben
% \begin{macrocode}
\@RCHlineX{\scriptsize Pos.\hfill}%
{\scriptsize Anzahl\hfill}%
{\scriptsize Art.\,Nr.\hfill}%
{\scriptsize Beschreibung\hfill}%
{\scriptsize Einzelpreis\hfill}%
{\scriptsize Gesamtpreis\hfill}
\@RCHinittrue
\fi
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\RechnungEnde}
% Footer einer Rechnung
% \begin{macrocode}
\newcommand*{\RechnungEnde}[0]
{
\hrule
\vskip\doublerulesep\vskip0.4pt
\expandafter\if\@RCHtype X \@RCHohne
\else\expandafter\if\@RCHtype N \@RCHnetto
\else\expandafter\if\@RCHtype B \@RCHbrutto
\else\expandafter\if\@RCHtype K \@RCHkeineUST
\else\PackageError{rechnung}{Unbekannter Rechnungstyp `\@RCHtype'}%
2010-03-14 00:50:48 +01:00
\fi\fi\fi\fi
2010-03-13 18:59:38 +01:00
\global\@RCHsum\@RCHsum\global\@RCHmwst\@RCHmwst
% \end{macrocode}
% bi<62>chen Platz unter der Rechnung
% \begin{macrocode}
\vskip\belowdisplayskip
}
% \end{macrocode}
% \end{macro}
%
% \Finale
\endinput