-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Datei: invoice.sty
-% Autor: Oliver Corff
-% Contact: corff@zedat.fu-berlin.de, oliver.corff@email.de
-% Datum: December 16, 2003
-% Version: 0.7
-% Copyright: Ulaanbaatar, Beijing, Berlin, Zagreb, Shenyang, Shanghai
-% Description: This collection of macros provides
-% tools for generating complex invoices
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Corrections, suggestions and contributions by:
-%%%%%%
-% Jacopo, May 2003
-% e-mail: jacopo@
-%
-% Contributed labels in Italian.
-%
-%%%%%%
-% O. Corff, July 2003
-%
-% fixed one nasty spacing bug, simplified internal table
-% construction (table now has five instead of six columns,
-% the second of which was never used).
-%
-%%%%%%
-% Johann Spies, January 21, 2002
-% e-mail: jspies@sun.ac.za
-%
-% Hinted that \Subtotal Project should show the project name
-% rather than just `Project'.
-%
-% Contributed labels in Afrikaans.
-%
-%%%%%%
-% 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}[2003/12/16]
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ------------------- language options -------------------
-%
-%
-\newcount\invoice@language
-\let\invoice@language=\language
-%
-\ifx\l@english\undefined \newlanguage\l@english \fi
-\ifx\l@german\undefined \newlanguage\l@german \fi
-\ifx\l@dutch\undefined \newlanguage\l@dutch \fi
-\ifx\l@french\undefined \newlanguage\l@french \fi
-\ifx\l@afrikaans\undefined \newlanguage\l@afrikaans \fi
-\ifx\l@italian\undefined \newlanguage\l@italian \fi
-%
-\DeclareOption{english}{\invoice@language=\number\l@english}
-\DeclareOption{german}{\invoice@language=\number\l@german}
-\DeclareOption{dutch}{\invoice@language=\number\l@dutch}
-\DeclareOption{french}{\invoice@language=\number\l@french}
-\DeclareOption{afrikaans}{\invoice@language=\number\l@afrikaans}
-\DeclareOption{italian}{\invoice@language=\number\l@italian}
-%
-\ProcessOptions
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ------------------- initial code -------------------
-%
-\RequirePackage{ifthen}
-\RequirePackage{longtable}
-\RequirePackage{calc}
-\input{realcalc}
-\input{invoice.def}
-%
-\newcommand{\InvoiceVersion}{0.7}%
-\newcounter{Fee} %
-\newcounter{VAT} %
-%\newcounter{VAT@rate} %
-\newcounter{Expenses} %
-\newcounter{Discount} % Discount item
-\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
-%
-\gdef\Project{}% % Empty Project Name
-\def\Null{0}%
-\newif\ifVATnonzero
-% \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{Fee@ctr}{0}% % reset counter
- \setcounter{Expense@ctr}{0}% % reset counter
- \def\Null{0}%
- \setcounter{Project}{0}%
- \ST@Reset\Total@Reset%
- \def\BC{#1}%
- \def\VAT@rate{#2}%
- \ifx\VAT@rate\Null\VATnonzerofalse\else\VATnonzerotrue\fi%
- \ifVATnonzero
- \message{^^J^^JVAT is not zero!^^J^^J}%
- \else
- \message{^^J^^JVAT is zero!^^J^^J}%
- \fi%
- % 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}lrrr}%
- %
- \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 \ST@Fee\ST@Project\fi%
- \Tot@l%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- \ifnum\theProject>1 \ST@Project\fi%
- \Tot@l%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 5: Expense item
- %
- \ifnum\theProject>1 \ST@Expenses\ST@Project\fi%
- \Tot@l%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 6: Print subtotal expenses
- %
- \ifnum\theProject>1 \ST@Project\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
- %\gdef\NewProject{#1}
- %
- \ifcase\Flag% 0: Invoice not started yet
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 1: Start invoice
- %
- \Project@Title{#1}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 2: Start project, print title
- %
- \error@message{\NoProjectNesting}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 3: Print remuneration item
- %
- \ST@Fee%
- \ST@Project%
- \Project@Title{#1}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- \ST@Project%
- \Project@Title{#1}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 5: Expense item
- %
- \ST@Expenses%
- \ST@Project%
- \Project@Title{#1}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 6: Print subtotal expenses
- %
- \ST@Project%
- \Project@Title{#1}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 7: Print subtotal project
- %
- \Project@Title{#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
- %
- \Print@ST@Fees%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \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
- %
- \ST@Fee%
- \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{\EBCi}[2]{% Yields state 5: Expenses in BaseCurrency
- % But, unlike base form (no
- % 'invisible') this version does
- % not state the item, it only
- % the total amount of expenses.
- %
- % #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@Base@Currency{#1}{#2}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 3: Print remuneration item
- %
- \ST@Fee%
- %\Expense@Title%
- \Expense@Base@Currency{#1}{#2}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- %\Expense@Title%
- \Expense@Base@Currency{#1}{#2}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 5: Expense item
- %
- \Expense@Base@Currency{#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
- %
- \ST@Fee%
- \Expense@Title%
- \Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- \Expense@Title%
- \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{\EFCi}[5]{% Yields state 5: Expenses in ForeignCurrency
- % But, unlike base form (no
- % 'invisible') this version does
- % not state the item, it only
- % the total amount of expenses.
- %
- % #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@Foreign@Currency{#1}{#2}{#3}{#4}{#5}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 3: Print remuneration item
- %
- \ST@Fee%
- % \Expense@Title%
- \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- % \Expense@Title%
- \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 5: Expense item
- %
- \Expense@Foreign@Currency{#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
- %
- \Print@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
- %
- \ST@Fee%
- \ST@Project%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 4: Print subtotal remuneration
- %
- \ST@Project%
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \or % 5: Expense item
- %
- \ST@Expenses%
- \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{\Discount}[2]{% Yields no particular state.
- % Inserts discount in project total,
- % names discount reason
- % and amount of discount
- %
- \gdef\Discount@Contents{#1}%
- \setcounter{Discount}{100 * \real{-#2}}%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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{\Project@Title}[1]{%
- % Internal command called by \ProjectTitle.
- %
- \gdef\Flag{2}%
- \gdef\Project{#1}%
- \ST@Reset\addtocounter{Project}{1}%
- \ifnum\theProject>1 \\\\\else\\\fi%
- \multicolumn{5}{c}{\textbf{\large#1}}\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Fee@Title}{%
- \\
- \noindent\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 &   &
-%
-% 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
- {\Print@ST@Fees% % print it, else
- }%
- {}% % do nothing
- \ifVATnonzero\ST@VAT@Printout\fi%
- \fi%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Print@ST@Fees}{%
- \gdef\Flag{4}%
- \SubtotalFee & & & &% print the subtotal of fees
- \Print@Value{\theST@Fee}\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\ST@VAT@Printout}{%
- \VAT\ (\VAT@rate\%) & & & &%
- \setcounter{ST@VAT}{\theST@Fee * \real{\VAT@rate} / 100}%
- \Print@Value{\theST@VAT}\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Expense@BaseCurrency}[2]{%
- #1 & \BC & & &%
- \gdef\Flag{5}%
- \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@Base@Currency}[2]{%
- \gdef\Flag{5}%
- \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
- & & & & \\[-1.2em]% This is an ugly kludge:
- % Inserting an empty line
- % which rolls backwards
- % makes disappear the spurious
- % spaces caused by external
- % routines.
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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}%
- \addtocounter{Expense@ctr}{1}%advance counter
- \Print@Value{\theOne@Expense}%
-\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Expense@Foreign@Currency}[5]{%
- \gdef\Flag{5}%
- %
- % Folgende Angaben sind moeglich:
- % 1. {Contents}{Currency}{Amount}{Umrechnung}{ }
- % 2. {Contents}{Currency}{Amount}{ }{BaseCurrency}
- % 3. {Contents}{Currency}{Amount}{Umrechnung}{BaseCurrency}
- %
- \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}%
- \addtocounter{Expense@ctr}{1}%advance counter
- & & & & \\[-1.2em]% ugly kludge as above
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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 Expense line
- {\Print@ST@Expenses}% % print it, else
- {}% % do nothing
- \fi%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Print@ST@Expenses}{%
- \gdef\Flag{6}%
- & & & & \\[-1.2em]% ugly kludge as above
- \SubtotalExpenses & & & &% print the subtotal of expenses
- \Print@Value{\theST@Expenses}\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\ST@Project}{%
- \gdef\Flag{7}%
- \\
- %\multicolumn{4}{l}{\SubtotalProject}%
- %\let\Project\NewProject%
- %&
- \SubtotalProject & & & &
- \addtocounter{ST@Project}{\theST@Fee}%
- \addtocounter{ST@Project}{\theST@VAT}%
- \addtocounter{ST@Project}{\theST@Expenses}%
- \Print@Value{\theST@Project}\\
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Total@VAT@Printout}{%
- \setcounter{VAT}{\theFee*\real{\VAT@rate}/100}%
- \SumVAT & & & &\Print@Value{\theVAT}\\%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Tot@l}{%
- \\\hline
- \ifnum\theFee>0 \SumFees& & & &%
- \Print@Value{\theFee}\\
- \ifVATnonzero%
- \Total@VAT@Printout%
- \fi%
- \fi%
- \ifnum\theExpenses>0 \SumExpenses& & & &%
- \Print@Value{\theExpenses}\\
- \fi%
- \ifnum\theDiscount=0 \else \Discount@Contents& & & &%
- \Print@Value{\theDiscount}\\
- \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}%
- \ifnum\theDiscount=0 \else %
- \addtocounter{Total}{\theDiscount}%
- \message{^^J\Discount@Contents: }\Message@Value{\theDiscount}%
- \fi %
- \textbf{\Print@Value{\theTotal}}%
- \message{^^J\Total: }%
- \Message@Value{\theTotal}\message{^^J^^J}\\%
- \end{longtable}
- \end{center}
- \gdef\Flag{8}%
-}
-\endinput
-% vim:ts=4:sw=4