%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%        Datei: invoice.sty
%        Autor: Oliver Corff, corff@zedat.fu-berlin.de
%        Datum: December 06, 2001
%      Version: 0.4
%    Copyright: Ulaanbaatar, Beijing, Berlin
%  Description: This collection of macros provides
%               tools for generating complex invoices
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Corrections and contributions by:
%%%%%%
% Robin Fairbairns, December 6, 2001
% 
%   Hinted that the dollar sign can also be printed by saying
%   \string$.
%
%%%%%%
% Vincent Tougait, France, November 27, 2001
%
%   Pointed out that fractions of VAT percents were not allowed.
%   Bugfix on December 06, 2001
%
%%%%%%
% Fred Donck, The Hague, The Netherlands, October, 2001
% e-mail: fd0@donck.com
%
% Dutch labels
%%%%%%
% Ian Wormsbecker, October 31, 2001
%
%   Skips the VAT lines if VAT=0
%   Noticed that the terminal message will not accept a Dollar sign.
%   The only workaround is to say \char`$ in \begin{invoice}{}
%%%%%%
% Fred Donck, The Hague, The Netherlands, Sept 18, 2001
% e-mail: fd0@donck.com
% fixed some minor issues:
%   real arithmetic will use integer intermediate values, so
%   some calculations failed with the \Fee{title}{rate}{amount}
%   where \rate is not an integer
%
%   another fix is that in my opinion the VAT line should be 
%   printed also even though only one project is specified
%
%   third fix is that the subtotal-line should not be printed 
%   on a project with only one \Fee line
%%%%%%
% Jacco Kok (fixed some labels),
%%%%%%
% Thilo Barth (discussed alternative names and command clashes
%	with KOMA Script class scrlettr.cls),
%%%%%%
% Robert Inder (discussed general issues)
%
% were gladly and gratefully received and accepted.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% -------------------     identification     -------------------
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{invoice}[2001/12/06]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% -------------------      initial code      -------------------
%
\RequirePackage{ifthen}
\RequirePackage{longtable}
\RequirePackage{calc}
\input{realcalc}
\input{invoice.def}
%
\newcommand{\InvoiceVersion}{0.4}%
\newcounter{Fee}		%
\newcounter{VAT}		%
%\newcounter{VAT@rate}		%
\newcounter{Expenses}		%
\newcounter{Total}		%
\newcounter{Project}		%
%
\newcounter{Fee@ctr}		% Number of fees per project
				% no subtotal will be printed in case of
				% value < 2
%
\newcounter{Expense@ctr}	% Number of expense items per project
				% no subtotal will be printed in case of
				% value < 2
%
\newcounter{One@Fee}		% Individual Fee
\newcounter{One@VAT}		% Individual VAT
\newcounter{One@Expense}	% Individual Expense
%
\newcounter{ST@Fee}		% Subtotal Fee
\newcounter{ST@VAT}		% Subtotal VAT
\newcounter{ST@Expenses}	% Subtotal Expenses
\newcounter{ST@Project}		% Subtotal Project
%
\gdef\Flag{0}%			% State 0: Invoice not started yet
				% State 1: Start invoice
				% State 2: Start project, print title
				% State 3: Fee Item
				% State 4: Print Subtotal Fee
				% State 5: Expense Item
				% State 6: Print Subtotal Expenses
				% State 7: Print Subtotal Project
				% State 8: Print Total, Close invoice
%
% \def\BC{Euro}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\newcommand{\my@message}[1]{\message{^^J#1^^J^^J}}
\newcommand{\error@message}[1]{\errmessage{^^J\Error: #1^^J^^J}}
\newcommand{\warning@message}[1]{\message{^^J\Warning: #1^^J^^J}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifx\invoice\undefined			% False if KOMA Script scrlettr.cls
	\def\my@invoice{invoice}	% loaded. In this case one may say
\else					% "invoice". If true, the environ-
	\def\my@invoice{invoiceenv}	% ment is renamed to "invoiceenv"
	\let\invoiceno\invoice		% and the scrlettr macro is renamed
	\def\invoice#1{%		% to "invoiceno". Thank you, Thilo,
		\error@message{\KOMA}}	% for this hint!
\fi					%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{\my@invoice}[2]{%
	\setcounter{Project}{0}%
	\ST@Reset\Total@Reset%
	\def\VAT@rate{#2}%
	\def\BC{#1}%
	% The VAT is: \the\VAT@rate % Debugging Diagnostics only
	\parindent=0cm
	\ifcase\Flag % 0: Invoice not started yet
		%
		\gdef\Flag{1}%
		\begin{center}%
		\begin{longtable}{p{5cm}rlrrr}%
		%
	\else \error@message{\NoInvoiceNesting}
	\fi}
% At the end of environment: 
% Yields state 8->0, Close and complete invoice, finish tables, etc.
{% 
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\error@message{\MissingInputData}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\ifnum\theProject>0 \STFee\STProject\fi%
		\Tot@l%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\ifnum\theProject>1 \STProject\fi%
		\Tot@l%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\ifnum\theProject>1 \STExpenses\STProject\fi%
		\Tot@l%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\ifnum\theProject>1 \STProject\fi%
		\Tot@l%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\Tot@l%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\warning@message{\InvoiceCompleted}%
		%
	\else \error@message{\InternalError}%
	\fi%
	\gdef\Flag{0}%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ProjectTitle}[1]{% Yields state 2: Start Project
	%
	\ifcase\Flag % 0: Invoice not started yet
	%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or 	% 1: Start invoice
		%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\error@message{\NoProjectNesting}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\STFee%
		\STProject%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\STProject%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\STExpenses%
		\STProject%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\STProject%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\Titel@Ausgabe{#1}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoProject}%
		%
	\else \error@message{\InternalError}%
	\fi%
	\setcounter{Fee@ctr}{0}%		% reset counter
	\setcounter{Expense@ctr}{0}%		% reset counter
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Fee}[3]{% Yields state 3, Print Fee Item
	%
	% #1 Contents
	% #2 Fee per Unit
	% #3 Unit Count
	%
	\ifcase\Flag % 0: Invoice not started yet
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\Fee@Title%
		\Fee@Line{#1}{#2}{#3}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\Fee@Line{#1}{#2}{#3}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\warning@message{\FeeSTExists}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\error@message{\FeeBeforeExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\error@message{\FeeBeforeExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\error@message{\ProjectCompletedNoFee}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoFee}%
		%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\STFee}{% Yields state 4, print subtotal remuneration
	%
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\error@message{\MissingFee}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\ST@Fee%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\warning@message{\FeeSTExists}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\error@message{\FeeBeforeExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\error@message{\FeeBeforeExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\error@message{\ProjectCompletedNoFee}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\ProjectCompletedNoFee}%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\EBC}[2]{% Yields state 5: Expenses in BaseCurrency 
	%
	% #1 Contents und Datum
	% #2 Amount in BaseCurrency
	%
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\Expense@Title%
		\Expense@BaseCurrency{#1}{#2}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		%\ifnum\theProject>1 \STFee\fi
		\STFee%
		\Expense@Title%
		\Expense@BaseCurrency{#1}{#2}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\Expense@Title%
		\Expense@BaseCurrency{#1}{#2}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%   
		\Expense@BaseCurrency{#1}{#2}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoExpense}%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\EFC}[5]{% Yields state 5: Expenses in ForeignCurrency
	%
	% #1 Contents und Datum
	% #2 Currency
	% #3 Amount
	% #4 Exchange Rate
	% #5 Amount Zielwaehrung
	%
	% Usage:
	% 1. {Contents}{ForeignCurrency}{ExchangeRate}{}
	% 2. {Contents}{ForeignCurrency}{}{BaseCurrency}
	% 3. {Contents}{ForeignCurrency}{ExchangeRate}{BaseCurrency}
	%
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\Expense@Title%
		\Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\STFee%
		\Expense@Title%
		\Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\error@message{\ProjectCompletedNoExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\error@message{\ProjectCompletedNoExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoExpense}%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\STExpenses}{% Yields state 6: Ausgabe der ST Expenses
	%
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		%
	\or	% 2: Start project, print title
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		%
	\or	% 3: Print remuneration item
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		%
	\or	% 4: Print subtotal remuneration
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\ST@Expenses%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\warning@message{\ProjectCompletedNoExpense}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoExpense}%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\STProject}{% Yields state 7: Ausgabe der ST Project
	%
	\ifcase\Flag % 0: Invoice not started yet
		%
		\error@message{\MissingOpening}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 1: Start invoice
		%
		\error@message{\MissingProject}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 2: Start project, print title
		%
		\warning@message{\ProjectEmpty}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 3: Print remuneration item
		%
		\STFee%
		\ST@Project%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 4: Print subtotal remuneration
		%
		\ST@Project%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 5: Expense item
		%
		\STExpenses%
		\ST@Project%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 6: Print subtotal expenses
		%
		\ST@Project%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 7: Print subtotal project
		%
		\warning@message{\ProjectSTExists}%
		%
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\or	% 8: Print total, close invoice
		%
		\error@message{\InvoiceCompletedNoProjectST}%
		%
	\else \error@message{\InternalError}%
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Total@Reset}{%
	\setcounter{Fee}{0}%
	\setcounter{VAT}{0}%
	\setcounter{Expenses}{0}%
	\setcounter{Total}{0}%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ST@Reset}{%
	\setcounter{ST@Fee}{0}%
	\setcounter{ST@VAT}{0}%
	\setcounter{ST@Expenses}{0}%
	\setcounter{ST@Project}{0}%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Print@Value}[1]{%
	\Rmul\r#1{0.01}%% <- Reduce to BaseCurrency
	\Rtrunc\r{2}\r%	% <- Truncate to two digits
	\r%		% <- Output data!
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Message@Value}[1]{%
	\Rmul\r#1{0.01}%% <- Reduce to BaseCurrency
	\Rtrunc\r{2}\r%	% <- Truncate to two digits
	\message{\r}%	% <- Output data!
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Titel@Ausgabe}[1]{%
	% Internal command called by \ProjectTitle.
	%
	\ifnum\theProject>0\\\\\fi%
	\multicolumn{6}{c}{\textbf{\large#1}}\\\gdef\Flag{2}%
			\ST@Reset\addtocounter{Project}{1}\\%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Fee@Title}{%
	%\\
	\textbf{\Activity}&&&\UnitRate&\Count&\Amount\ (\BC)\\
	\hline%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Fee@Line}[3]{%
	%
	% #1 Contents
	% #2 Charged Fee per Unit
	% #3 Count
	%
	% Internal command, called by \Fee.
	%
	\gdef\Flag{3}%
	%
	#1		&	&	&#2	&#3 &
%
%   next is reversed to allow real arithmetic.
%   intermediate results are stored in integer format, so calculations are
%   incorrect in case #2 is a real.
%   fixed by exchanging the 1 and the 100
%
		\setcounter{One@Fee}{100 * \real{#2} * \real{#3} * 1}%
%
		\addtocounter{ST@Fee}{\theOne@Fee}%
		\addtocounter{Fee}{\theOne@Fee}%
		\addtocounter{Fee@ctr}{1}%	    increase counter with 1
		\Print@Value{\theOne@Fee}\\%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ST@Fee}{%
	\gdef\Flag{4}%
	\ifnum\theST@Fee>0
	    \ifthenelse{\theFee@ctr>1} %	    if more than 1 \Fee line
		{\SubtotalFee &	&	&	&	&
				\Print@Value{\theST@Fee}\\%
	    }{}%
	%\ifnum\theVAT@rate>0
		\VAT\ (\VAT@rate\%)	 &	&	&	&	&
			\setcounter{ST@VAT}{\theST@Fee * \real{\VAT@rate} / 100}%
				\Print@Value{\theST@VAT}\\%
	%\fi
	\fi%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Expense@BaseCurrency}[2]{%
	\gdef\Flag{5}%
	#1		&	& \BC		&	&	&
				\Rmul\r{100}{#2}%
				\setcounter{One@Expense}{1 * \real{\r}}%
				\addtocounter{ST@Expenses}{\theOne@Expense}%
				\addtocounter{Expenses}{\theOne@Expense}%
				\addtocounter{Expense@ctr}{1}%advance counter
				\Print@Value{\theOne@Expense}\\%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Expense@ForeignCurrency}[5]{%
	\gdef\Flag{5}%
	%
	% Folgende Angaben sind moeglich:
	% 1. {Contents}{Currency}{Amount}{Umrechnung}{  }
	% 2. {Contents}{Currency}{Amount}{          }{BaseCurrency}
	% 3. {Contents}{Currency}{Amount}{Umrechnung}{BaseCurrency}
	%
	#1	 &	& #2	& #3	& #4	&
	\ifthenelse{\equal{#5}{}}% Target in BaseCurrency or not?
		{% Target not in BaseCurrency
			\Rmul\r{100}{#3}%
			\Rmul\r \r {#4}%
		}%
		{% Target in BaseCurrency
			\Rmul\r{100}{#5}%
		}%
	\setcounter{One@Expense}{1 * \real{\r}}%
	\addtocounter{ST@Expenses}{\theOne@Expense}%
	\addtocounter{Expenses}{\theOne@Expense}%
	\Print@Value{\theOne@Expense}%
	\addtocounter{Expense@ctr}{1}%advance counter
	\\%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Expense@Title}{%
	\\
	\textbf{\Expense}&&\Currency&\Amount&\Factor &\BC\\
	\hline%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ST@Expenses}{%
	\gdef\Flag{6}%
	\ifnum\theST@Expenses>0
	    \ifthenelse{\theExpense@ctr>1} %	    if more than 1 \Fee line
	{\SubtotalExpenses &	&	&	&	& 
				\Print@Value{\theST@Expenses}\\
	}{}%
	\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\ST@Project}{%
	\gdef\Flag{7}%
	\\
	\SubtotalProject &	&	&	&	& 
			\addtocounter{ST@Project}{\theST@Fee}%
			\addtocounter{ST@Project}{\theST@VAT}%
			\addtocounter{ST@Project}{\theST@Expenses}%
			\Print@Value{\theST@Project}\\
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Tot@l}{%
	\\\hline
	\ifnum\theFee>0 \SumFees&	&	&	&	&
				\Print@Value{\theFee}\\ 
		%\ifnum\theVAT@rate>0
		\SumVAT	&	&	&	&	&
			\setcounter{VAT}{\theFee * \real{\VAT@rate} / 100}%
					\Print@Value{\theVAT}\\
		%\fi
	\fi
	\ifnum\theExpenses>0 \SumExpenses&	&	&	&	&
				\Print@Value{\theExpenses}\\ 
	\fi
	\hline\hline
	\textbf{\Total} &	&	&	&	&
		\message{^^J\Currency: \BC}%
		\message{^^J\VAT: \VAT@rate}%
		\addtocounter{Total}{\theFee}%
		\message{^^J\SumFees: }\Message@Value{\theFee}%
		\addtocounter{Total}{\theVAT}%
		\message{^^J\SumVAT: }\Message@Value{\theVAT}%
		\addtocounter{Total}{\theExpenses}%
		\message{^^J\SumExpenses: }\Message@Value{\theExpenses}%
		\textbf{\Print@Value{\theTotal}}%
		\message{^^J\Total: }%
			\Message@Value{\theTotal}\message{^^J^^J}\\%
	\end{longtable}
	\end{center}
	\gdef\Flag{8}%
}
\endinput
