diff options
author | Karl Berry <karl@freefriends.org> | 2011-10-04 23:11:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-10-04 23:11:36 +0000 |
commit | 3e6694983cdb2f97b46861c31b37858a33c8bf93 (patch) | |
tree | 70691bd81f7b7440c7f352fe617ee5f6338cb625 /Master/texmf-dist/doc/latex/invoice | |
parent | 33ab70843f0e1fe17d712d1dc65fb37fd87e7dac (diff) |
invoice (4oct11)
git-svn-id: svn://tug.org/texlive/trunk@24194 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/invoice')
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/00README.tex | 136 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/copying | 339 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/history | 40 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/install | 39 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/invoice.pdf | bin | 0 -> 133024 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/invoice/invoice.tex | 758 |
6 files changed, 1312 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/invoice/00README.tex b/Master/texmf-dist/doc/latex/invoice/00README.tex new file mode 100644 index 00000000000..343134d2199 --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/00README.tex @@ -0,0 +1,136 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% LaTeX me first!!! +% +% This is 00README.tex of the invoice package. LaTeX this file +% and it will reveal everything... Software you need, software +% you have, etc. +% +% Author: Oliver Corff +% Date: October 1st, 2011 +% +\def\myabstract{% + The invoice package provides an environment for + writing invoices with an arbitrary number of + billed items like fees (with taxes, if applicable), + as well as expenses in local and foreign currencies.}% +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\documentclass[11pt]{ltxdoc} +%\usepackage{hyperref} +\newif\ifBadNews +\IfFileExists{diagnose.sty}{\usepackage{diagnose}}{\BadNewstrue} +\title{\texttt{invoice 0.9}\\Installation Notes} +\author{Oliver Corff} +\date{October 1st, 2011} + +\begin{document} +\maketitle +\thispagestyle{empty} +\begin{abstract}\myabstract\end{abstract} +\ifBadNews + \vskip 1cm + \begin{sloppypar} + {\large + Before you do anything else pick up the diagnose package + (\texttt{CTAN:macros/latex/contrib/supported/diagnose}) + and latex this file again.} + \end{sloppypar} +\else + % Your official text comes here. + + \newcounter{AllInPlace} + + \section{Site Status and Installation} + + \begin{sloppy} + The \texttt{invoice} package requires additional %CTAN + software for meaningful operation. These packages are + \texttt{fp}, \texttt{calc} and \texttt{longtable}. + + \PackageDiagnostics% + {calc.sty} % Package tested for + {CalcAvailable} % Associated counter + {Infix Arithmetics Available!} % Yes! message + {Infix Arithmetics Not Available!} % No! message + + \ifnum\theCalcAvailable=1 + Your site installation contains the required \texttt{calc} + package. No further action is necessary. + \else + \textbf{Nota Bene:} Please fetch and install \texttt{calc} + from + \texttt{CTAN:macros/latex/required/tools/calc.dtx} before + continuing! + \fi + + \PackageDiagnostics% + {fp.sty} % Package tested for + {CrunchingAvailable} % Associated counter + {Number Crunching Possible!} % Yes! message + {Number Crunching Not Possible!} % No! message + + \ifnum\theCrunchingAvailable=1 + Your site installation contains the required + \texttt{fp} + package. No further action is necessary. + \else + \textbf{Nota Bene:} Please fetch and install \texttt{fp} + from \texttt{CTAN:macros/latex/contrib/fp} before continuing! + \fi + + \PackageDiagnostics% + {longtable.sty} % Package tested for + {LongTableAvailable} % Associated counter + {Long Tables Possible!} % Yes! message + {Long Tables Not Possible!} % No! message + + \ifnum\theLongTableAvailable=1 + Your site installation contains the required + \texttt{longtable} + package. No further action is necessary. + \else + \textbf{Nota Bene:} Please fetch and install \texttt{longtable} + from \texttt{CTAN:macros/latex/required/tools/longtabl.dtx} + before continuing! + \fi + + \addtocounter{AllInPlace}{\theCalcAvailable} + \addtocounter{AllInPlace}{\theCrunchingAvailable} + \addtocounter{AllInPlace}{\theLongTableAvailable} + + \ifnum\theAllInPlace=3 + \section{The \texttt{invoice} Package} + + The \texttt{invoice} package was conceived in late 2000 + when the author had to dig through a truly aweful pile + of expense bills without having a \LaTeXe-capable + spreadsheet (or any spreadsheet) available. After several + miscalculations with a pocket calculator due to forgotten + entries or double entries the idea came up to have \LaTeXe\ + do the calculation work. As such, the package in its present + stage is highly specialized with regard to the documents it + generates. The \texttt{invoice} package is basically a + tailor-made solution for a consultant who charges fees and + claims all sorts of expenses, sometimes working on different + assignments for the same client. + + Comments and suggestions are highly welcome and + should be directed to the author at + \texttt{corff@zedat.fu-berlin.de} or + \texttt{oliver.corff@email.de}. + + The \texttt{invoice} package is put under the GNU + Public Licence. + \else + + \vspace{1cm} + + \textbf{Attention:} Please install whatever is + specified above, and recompile this document. + \fi + + \end{sloppy} +\fi +\end{document} diff --git a/Master/texmf-dist/doc/latex/invoice/copying b/Master/texmf-dist/doc/latex/invoice/copying new file mode 100644 index 00000000000..a43ea2126fb --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/copying @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Master/texmf-dist/doc/latex/invoice/history b/Master/texmf-dist/doc/latex/invoice/history new file mode 100644 index 00000000000..41ed2fb4742 --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/history @@ -0,0 +1,40 @@ +April 2001 + +First public version (0.2) of invoice released + + +October 2001 + +Release 0.3 + +- Many bug fixes: number crunching, VAT calculations +- Style improved: if there is only one fee or expense, + no subtotal of this category is generated. + + +December 2001 + +Release 0.4 + +- Critical bug fix: VAT can now be entered as fraction + of percentage, like 16.9 (as in France). +- Added two languages: Dutch and French + + +December 2003 + +Release 0.7 + +- Many structural bugs fixed. +- Invisible expense items introduced. +- Deductions from final total now possible. +- Several new languages added. + +October 2011 + +Release 0.9 + +- Switched from realcalc to fp support for two reasons: + - rounding problems + - legal concerns +- Several new languages added. We now have 10 languages! diff --git a/Master/texmf-dist/doc/latex/invoice/install b/Master/texmf-dist/doc/latex/invoice/install new file mode 100644 index 00000000000..27b6353ab3a --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/install @@ -0,0 +1,39 @@ + Title: invoice.sty + Version: 0.9 + Author: Oliver Corff + Copyright: Ulaanbaatar, Berlin, Beijing, Shanghai, + Shenyang 2011 + Date: October 01, 2011 + Archive Name: invoice.zip + Description: A package for writing invoices + Legal Notes: See end of this document + + +1. Installation and Use + +Unpack the archive invoice.zip in some temporary directory. +Copy the files in TEXINPUT to a place where your TeX installation +can find it. Rehash the directory database, if possible (not all +distributions provide this possibility). + +Run the file 00README.tex through latex first before doing anything +else! 00README.tex is a document with dynamic contents. + +See doc/invoice.tex for an incomplete documentation of the invoice +package. + + +2. Legal Notes + +This software is published under the GPL. +Usual disclaimers apply. + +Thank you for using invoice! + + Ulaanbaatar, Beijing, + Berlin, Shanghai, Shenyang + October 2011 + + Oliver Corff + corff@zedat.fu-berlin.de, + oliver.corff@email.de diff --git a/Master/texmf-dist/doc/latex/invoice/invoice.pdf b/Master/texmf-dist/doc/latex/invoice/invoice.pdf Binary files differnew file mode 100644 index 00000000000..7184341a4e5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/invoice.pdf diff --git a/Master/texmf-dist/doc/latex/invoice/invoice.tex b/Master/texmf-dist/doc/latex/invoice/invoice.tex new file mode 100644 index 00000000000..108cfd78731 --- /dev/null +++ b/Master/texmf-dist/doc/latex/invoice/invoice.tex @@ -0,0 +1,758 @@ +\documentclass[11pt]{ltxdoc} +\usepackage[]{invoice} +%\usepackage{hyperref} + +\title{\texttt{invoice \InvoiceVersion}\\ + A Package for Writing Invoices} +\author{Oliver Corff} +\date{October 1st, 2011} +\begin{document} +\maketitle + +\tableofcontents + +\section{Introduction} + +The \texttt{invoice} package was conceived in late 2000 when the +author had to dig through a truly aweful pile of expense bills +without having a spreadsheet featuring \LaTeXe-compliant output (or +any spreadsheet, for that purpose) available. After several +miscalculations with a pocket calculator due to forgotten or +double entries the idea came up to have \LaTeXe\ do the calculation +work. As such, the package in its present stage is highly +specialized with regard to the documents it generates. The +\texttt{invoice} package is basically a tailor-made solution for a +consultant who charges fees and claims all sorts of expenses, +sometimes working on different assignments for the same client. + +The author expresses his gratitude to +Robert Inder, +Thilo Barth, +Jacco Kok, +Fred Donck, +Jacopo, +Johann Spies, +Ian Wormsbecker, +Vincent Tougait +and +Robin Fairbairns +who contributed ideas, corrections, +bugfixes and caption translations after the first discussions on +\texttt{comp.text.tex} and the initial release of \texttt{invoice}. + +Given the current capabilities of \texttt{invoice}, it should well +be possible to extend the capabilities of this package in the future +or to rewrite it in a generalized fashion. + +\section{Software Requirements} + +The \texttt{invoice} environment runs under \LaTeXe\ and relies on the +\texttt{calc.sty} (providing infix arithmetic) and \texttt{fp} +(providing fixed point arithmetic) utilities to do its work which can be found +at CTAN% + \footnote{The \texttt{fp} package is found at + \texttt{CTAN:macros/latex/contrib/fp}, + and \texttt{calc} is found at + \texttt{CTAN:macros/latex/required/tools/}.}. +Compile and read \texttt{00README.tex} for further information if +you are not sure whether these packages are installed at your site. + +\section{The \texttt{invoice} Environment} + +Within a given document, invoices are built with the +\texttt{invoice} environment\footnote{Users of the KOMA-Script + class \texttt{scrlettr.cls} are kindly requested to use + \texttt{invoiceenv} instead; see also page~\pageref{koma}.}. +Figure~\ref{structure} on page~\pageref{structure} shows the +logical structure of an invoice as well as its basic commands. +In case a full-fledged invoice stationary is needed, it is recommended +to use the \texttt{invoice} environment within existing business +letters which may have been pre-defined already. The \texttt{invoice} +package itself does not provide tools for including company logos, +recipient's addresses, bank account numbers etc. as these are usually +covered by the various \texttt{letter} classes available for \LaTeXe. + +\begin{figure}[h] +\begin{center} +\fbox{ +\begin{minipage}{8.5cm}% +\textbf{\huge --- Invoice ---\\[2mm]} + \texttt{\Large \char92 begin\{invoice\}\{...\}\{...\}\\[2mm]} + \fbox{ + \begin{minipage}{7.0cm} + \textbf{\Large --- Project ---\\[1.5mm]} + \texttt{\large\char92 ProjectTitle\{...\}\\[1.5mm]} + \fbox{ + \begin{minipage}{5.5cm} + \textbf{\large --- Fees ---\\} + \texttt{\char92 Fee\{...\}\{...\}\{...\}}\\ + ...\\ + ...\\ + \end{minipage} + }\\[2mm] + \fbox{ + \begin{minipage}{5.5cm} + \textbf{\large --- Expenses (local) ---\\} + \texttt{\char92 EBC\{...\}\{...\}}\\ + ...\\ + ...\\ + \textbf{\large --- Expenses (foreign) ---\\} + \texttt{\char92 EFC\{...\}\{...\}\{...\}\{...\}\{...\}}\\ + ...\\ + ...\\ + \end{minipage} + }\\[2mm] + \end{minipage} + }\\[2mm] + \fbox{ + \begin{minipage}{7.0cm} + \textbf{\Large --- \dots\ More Projects\dots\ ---} + \end{minipage} + }\\[2mm] +% \fbox{ +% \begin{minipage}{7.0cm} +% \textbf{\Large --- Project ---} +% \end{minipage} +% }\\ + \texttt{\Large\char92 end\{invoice\}} +\end{minipage} +} +\end{center} +\caption{The \texttt{invoice} Environment + and its Logical Structure\label{structure}} +\end{figure} + +Invoices contain one or more projects which in return contain the charged +items, either fees (plus tax, if applicable) and/or expenses. An +invoice with one project is announced by saying + +\begin{verbatim} +\begin{invoice}{<Base Currency>}{<VAT>} + \ProjectTitle{...}% +\end{invoice} +\end{verbatim} + +There is no limit for the number of projects in an invoice, as there +is no limit for the number of invoices per document. + +The \texttt{invoice} environment requires two arguments: +\begin{enumerate} + \item \texttt{<Base Currency>} is the name of the currency + in which the invoice is charged, e.\,g. DM, Euro, + US\$, RMB etc. + \item \texttt{<VAT>} is the percentage rate of VAT which is charged; + in Germany this is currently (autumn 2011) 19\%. If + no VAT is required, enter a \texttt{0} + (\textit{zero}) here. It is neither necessary nor + permissible to use a percent sign here. As some + countries (e.\,g. France) have fractions of + percentages (like 16.9\%), you would in this case + enter \verb|16.9| (without any percent sign). + + Setting the VAT rate to \verb-0- produces the side + effect that the lines stating the VAT subtotals and + totals disappear. + + If it is, however, desired to show the VAT results + even if they amount to zero, enter \verb-0.0- instead. +\end{enumerate} + + +\subsection{Projects} + +An invoice contains items which are usually, in the case of e.\,g. +consultancy fees and related expenses like hotel bills and air +fares, attributed to a given case or \textit{project}, or +cost center, or ``Kostenstelle'' (in German). + +A project contains any of three different types of charged items: +\begin{enumerate} + \item \textbf{Fees}. A tax can be added, if applicable. Fees + are always charged in the + base currency + of the invoice. + \item \textbf{Local Expenses}. Local expenses are charged in + units of the + base currency + of the invoice. + \item \textbf{Foreign Expenses}. Foreign expenses are charged in + units of any given foreign currency. Either the + base currency + equivalent is known (as taken from a credit card + billing statement, for example), or, if not, an + exchange rate between foreign currency and base + currency has to be stated. +\end{enumerate} + +\textbf{Nota bene:} The order of fees and expenses is fixed. Either fees or +expenses can be omitted, but expenses must be charged \textit{after} +fees. + + +\section{The First Example: How to Charge Fees} + + +A consultant charges fees per day, hour or any other unit. Usually +this unit is agreed upon in a contract and there is no further need +to refer to this unit but by its count. This is done by the +\verb-\Fee{}{}{}- command: + +\begin{verbatim} + \Fee{<Contents>}{<Rate/Unit>}{<Count>} +\end{verbatim} + +Let's assume an interim manager +charges Euro 1818.00 a day for 12 working days while +negotiating a major project, nicknamed \textit{Project Phenix}. +He also charges Euro 2750.00 a day for analysing and negotiating +the restructuring of the sales division, a work he spent 9 days with. + +\subsection{Invoices with VAT} + +We further assume that the consultant is required to charge VAT. +All information above would be entered into the invoice as follows: + +\begin{verbatim} +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + % Contents Rate/Unit Count + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + % Contents Rate/Unit Count + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} +\end{verbatim} + +And here is how the result looks like: + +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} + +Hints: If the base currency is to contain a dollar sign (\$), then +dollar sign must be entered in the form of \verb|\string$| +or otherwise the command writing the log file data will fail. The +contents of each fee may be verbose; while the column width is +limited, text contents longer than the column width wraps over +several columns, if necessary. + +The astute observer will note that a line beginning with ``Subtotal~Fees'' +appeared in the output of the Sales Restructuring Project without explicit +input to this effect from the user's side. The full grammar of the Fee block +requires that all fees are closed by a fee subtotal. Internally, +\texttt{invoice} is defined as a finite state automaton providing +mechanisms to insert a fee subtotal if logic requires it, and print +its value if it makes sense to humans, which is the case if there is more +than one fee. + +Note that there is an explicit command \texttt{\char92 STFee} which will +produce a subtotal of the fees charged so far. This can be used if +you want to show fee subtotals within the same project. + + +\subsection{Invoices without VAT} + +As mentioned above, an invoice may be calculated without any VAT. +The VAT lines may completely disappear, as in the following +example: +\begin{verbatim} +\begin{invoice}{Euro}{0} + \ProjectTitle{Project Phenix}% + % Contents Rate/Unit Count + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + % Contents Rate/Unit Count + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} +\end{verbatim} + + +Figure~\ref{invoice_without_VAT} on +page~\pageref{invoice_without_VAT} +shows the result. + +\begin{figure}[h] +\begin{invoice}{Euro}{0} + \ProjectTitle{Project Phenix}% + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} +\caption{A complete invoice + with fees but no VAT.\label{invoice_without_VAT}} +\end{figure} + +In contrast, if for any reason the VAT subtotals and totals should +be kept visible despite a \textit{value} of zero, then use a VAT +value of \verb-0.0- as in the following example: +\begin{verbatim} +\begin{invoice}{Euro}{0.0} + \ProjectTitle{Project Phenix}% + % Contents Rate/Unit Count + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + % Contents Rate/Unit Count + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} +\end{verbatim} + + +Figure~\ref{invoice_with_zero_VAT} on +page~\pageref{invoice_with_zero_VAT} +shows the result. + +\begin{figure}[h] +\begin{invoice}{Euro}{0.0} + \ProjectTitle{Project Phenix}% + \Fee{Some really lengthy and utterly + tedious negotiation} {1818.00} {12} + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} +\end{invoice} +\caption{A complete invoice + with fees but zero VAT.\label{invoice_with_zero_VAT}} +\end{figure} + + +\section{The Second Example: How to Claim Expenses} + +Expenses can be charged in base currency or in any foreign currency. +The base currency's name should be announced once at the beginning +of the invoice. + +\subsection{Expenses in Base Currency} + +The shape of an expense item in base currency is simple: + +\begin{verbatim} +\EBC{<Contents>} {<Amount>} +\end{verbatim} + +Both fields contain mandatory arguments: + +\begin{enumerate} + \item \texttt{<Contents>} contains a description of the + charged item, e.\,g. ``Hotel'', ``Airport Tax'' or + whatever. + \item \texttt{<Amount>} contains the amount in base currency + units. +\end{enumerate} + + +\subsection{Expenses in Foreign Currency} + +Charging an expense in foreign currency is only slightly more +complicated. The command is: + +\begin{verbatim} +\EFC{<Contents>} + {<Foreign Currency>}{<Amount>} + {<Conversion Rate>}{<Base Currency Result>} +\end{verbatim} + +Arguments to the five fields are partially mandatory, partially optional: +\begin{enumerate} + \item \texttt{<Contents>} contains a description of the + charged item, e.\,g. ``Hotel'', ``Airport Tax'' or + whatever. + + \item \texttt{<Foreign Currency>} contains the name of the + foreign currency. + + \item \texttt{<Amount>} contains the amount in foreign currency + units. + + \item \texttt{<Conversion Rate>} contains the factor by + which the foreign currency amount has to be + multiplied in order to achieve the base currency + result. If the base currency result is stated, + then, and only then, the Conversion Rate can be + omitted. + + \item \texttt{<Base Currency Result>} contains an optional + amount in base currency units. Credit card billing + statements show this amount which usually contains + certain service charges of the credit card issuer; + the base currency result is thus the true amount of + money to be charged. If a \texttt{<Conversion Rate>} + is given, stating a base currency result becomes + optional. This is usually applied for expenses made + with cash money. +\end{enumerate} + + +Since some of the arguments given to \verb-\EFC- are optional, +there are basically two different forms of using this command. +With the variant + +\begin{verbatim} +\EFC{<Contents>}{<Foreign Currency>}{<Amount>} + {<Conversion Rate>} % Conversion rate + {} % Base currency empty! +\end{verbatim} + +(amount in foreign currency given, as well as exchange rate stated), +the command will automatically calculate the resulting amount in +base currency. + +\begin{verbatim} +\EFC{<Contents>} + {<Foreign Currency>}{<Amount>} + {} % Conversion rate empty! + {<Base Currency Result>} % Base currency +\end{verbatim} + +If, however, the exchange rate is omitted and the target amount in +base currency is given, then this value is taken directly. Stating +the resulting amount overrides the internal calculation mechanism. +Examples are given below. We use our interim manager's invoice +again, assuming this time that she spent working on Project Phenix +12 days in her home country while the Sales Restructuring effort +took her to Hong Kong. The taxi bills are paid in cash, hence she +enters the (fictive) conversion rate, whereas the hotel is paid by +credit card. She can then take the final amount from her credit card +billing statement; an example input would look as follows: + +\begin{verbatim} +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + % Contents Rate/Unit Count + \Fee{Negotiation} {1818.00} {12} + % + % Contents Amount + \EBC{Hotel, 12 nights} {2400.00} + + \ProjectTitle{Sales Restructuring}% + % Contents Rate/Unit Count + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} + % + % Contents Currency Amount Conv.Rate Result + \EFC{Taxi Airport -- Hotel} {HK\$} {325.00} {0.2354} {} + \EFC{Hotel, 9 nights} {HK\$} {9180.00} {} {2111.40} +\end{invoice} +\end{verbatim} + +Figure~\ref{full_invoice} on +page~\pageref{full_invoice} +shows the result. + +\begin{figure}[h] +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + \Fee{Negotiation} {1818.00} {12} + % + % Contents Amount + \EBC{Hotel, 12 nights} {2400.00} + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} + % + % Contents Currency Amount Conv.Rate Result + \EFC{Taxi Airport -- Hotel} {HK\$} {325.00} {0.2354} {} + \EFC{Hotel, 9 nights} {HK\$} {9180.00} {} {2111.40} +\end{invoice} +\caption{A complete invoice with fees and expenses.\label{full_invoice}} +\end{figure} + +Again, a subtotal of the expenses appears only if there is more than +one expense item in a project. + + +\subsection{Hidden Expense Details} + +Occasionally it may be desirable to list only the total of expenses +incurred, while hiding the structure of expenses. In such a case, +the expense commands can be modified by attaching an \verb|i| to +their names (as in \textit{invisible}). + +A hidden expense in base currency is thus declared as: + +\begin{verbatim} +\EBCi{<Contents>} {<Amount>} +\end{verbatim} + +A hidden expense in foreign currency is declared as: + +\begin{verbatim} +\EFCi{<Contents>} + {<Foreign Currency>}{<Amount>} + {<Conversion Rate>}{<Base Currency Result>} +\end{verbatim} + +Both commands accept and require exactly the same arguments as their +visible counterparts. The expenses will be added to the expense subtotals +and the invoice total in the same way as if they were visible. If there +is no visible expense stated at all it may be useful to have at least +a line with the expense subtotal appear; this is done by the \verb|STExpenses| +command, as shown in the following example: + +\begin{verbatim} +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + % Contents Rate/Unit Count + \Fee{Negotiation} {1818.00} {12} + % + % Contents Amount + \EBCi{Hotel, 12 nights} {2400.00} + % + \STExpenses + + \ProjectTitle{Sales Restructuring}% + % Contents Rate/Unit Count + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} + % + % Contents Currency Amount Conv.Rate Result + \EFCi{Taxi Airport -- Hotel} {HK\$} {325.00} {0.2354} {} + \EFCi{Hotel, 9 nights} {HK\$} {9180.00} {} {2111.40} + \STExpenses +\end{invoice} +\end{verbatim} + +Figure~\ref{invoice_with_hidden_expenses} on +page~\pageref{invoice_with_hidden_expenses} +shows the result. + +\begin{figure}[h] +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + \Fee{Negotiation} {1818.00} {12} + % + % Contents Amount + \EBCi{Hotel, 12 nights} {2400.00} + % + \STExpenses + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} + % + % Contents Currency Amount Conv.Rate Result + \EFCi{Taxi Airport -- Hotel} {HK\$} {325.00} {0.2354} {} + \EFCi{Hotel, 9 nights} {HK\$} {9180.00} {} {2111.40} + \STExpenses +\end{invoice} +\caption{A complete invoice with visible fees + but invisible expenses.\label{invoice_with_hidden_expenses}} +\end{figure} + + +\section{Deduction of Discounts and Downpayments} + +Finally, it may be possible that previous downpayments etc. have to +be considered for the invoice total. An optional discount line +can state the item and deduct the amount from the invoice total. +Deductions are always stated in base currency. They follow the following +syntax: + + +\begin{verbatim} +\Discount{<Contents>} {<Amount>} +\end{verbatim} + +Both fields contain mandatory arguments: + +\begin{enumerate} + \item \texttt{<Contents>} contains a description of the + discount item, e.\,g. ``Downpayment'', ``Tickets for + private use'' or whatever. + \item \texttt{<Amount>} contains the amount in base currency + units. +\end{enumerate} + +Figure~\ref{full_and_discounted_invoice} on +page~\pageref{full_and_discounted_invoice} +shows the result. + +\begin{figure}[h] +\begin{invoice}{Euro}{19} + \ProjectTitle{Project Phenix}% + \Fee{Negotiation} {1818.00} {12} + % + % Contents Amount + \EBC{Hotel, 12 nights} {2400.00} + + \ProjectTitle{Sales Restructuring}% + \Fee{Sales Structure Analysis} {2750.00} { 6} + \Fee{Negotiation with Agents} {2750.00} { 3} + % + % Contents Currency Amount Conv.Rate Result + \EFC{Taxi Airport -- Hotel} {HK\$} {325.00} {0.2354} {} + \EFC{Hotel, 9 nights} {HK\$} {9180.00} {} {2111.40} + \Discount{Downpayment received} {2000.00} +\end{invoice} +\caption{A complete invoice with fees, + expenses and a deduction.\label{full_and_discounted_invoice}} +\end{figure} + +\section{Postprocessing} + +In order to allow the further processing of +\texttt{invoice}-generated data, the log file contains the totals of +fees, expenses and taxes in the form of \verb-key:value- pairs. This +information appears also on the terminal while \LaTeXe\ runs. Please +note that the key appearing in the log file is expressed in the same +language as that of the master document. + +\section{Document Language} + +All column headers appearing in \texttt{invoice} can be redefined in +order to match the language of the master document. E.\,g., headings +like ``Total'' will automatically appear as ``Gesamtsumme'' if the +document language is set to German (either via \texttt{babel} or +\verb-\usepackage{german}-). + +Please observe that the \texttt{invoice} package must be called {\em +after} the document language has been selected. + +This is correct: + +\begin{verbatim} +\documentclass[10pt]{ltxdoc} +\usepackage{german} +\usepackage{invoice} % labels will now appear in German! +\end{verbatim} + +This will not work: + +\begin{verbatim} +\documentclass[10pt]{ltxdoc} +\usepackage{invoice} +\usepackage{german} % labels will still appear in English! +\end{verbatim} + + +\subsection{Specifying the Desired Language} + +It is also possible to ignore the global language settings and select +a language local to the \texttt{invoice} package by specifying the +desired language as an option: + +\begin{verbatim} +\documentclass[10pt]{ltxdoc} +\usepackage[german]{invoice} % labels in German, rest + % of document in English +\end{verbatim} + +This is useful whenever the desired language is not provided by the +installation base where \texttt{invoice} is executed. + +At present, column labels produced by \texttt{invoice} can appear +in ten languages: +Afrikaans (use \verb|afrikaans|), +Dutch (use \verb|dutch|), +English (use \verb|english|), +Estonian (use \verb|estonian|), +Finnish (use \verb|finnish|), +French (use \verb|french|), +German (use \verb|german|), +Italian (use \verb|italian|), +Spanish (use \verb|spanish|, \verb|spanishe| or \verb|spanishv|) and +Swedish (use \verb|swedish|). +Spanish is exceptional as there are three different versions +with differences in lexicon and grammar. There is one `traditional' +version, the second is said to demonstrate a strong `New World' influence, +and the third one is considered a variation in style, albeit +traditional. + +\subsection{Adding Labels in a New Language} + +Other languages can be added easily by editing the file +\verb-invoice.def-. Language-dependent definitions are contained in +the \verb-\if--clause. Extending the file is simple: + +\begin{enumerate} + \item Copy the labels template to the end of the file. + \item Remove the comments (\verb-%-) in column 1. + \item Fill each label definition with the appropriate + foreign language translation. + \item Put the correct internal name of the foreign language + into the condition expression of the \verb-\ifx-- + and \verb-\ifnum--clauses. +\end{enumerate} + +\begin{sloppypar} +Whenever you create your own foreign language extension please kindly +consider sending your modified \verb-invoice.def- file to the author +(at \verb+corff@zedat.fu-berlin.de+ or \verb+oliver.corff@email.de+) +so that it can be included in the next update. Future users can then +share your work. +\end{sloppypar} + +\section{Bugs} + +Certainly there are bugs. After all, this is not Moon, but Earth +(where life is supposed to exist, as opposed to Moon). The author +has not conducted extensive tests on the algebraic functions, and +there may be rounding and truncating errors. + +The author considers it a bug that the decimal point cannot be +replaced by a comma at present, while entering dollar signs +requires the \verb|\string$| notation. + +Spurious spaces may distort the table layout. It is especially +recommended to close all \verb"\ProjectTitle{...}%" lines with a +percent mark, as shown. If the percent mark is omitted, the first +column header is not properly aligned to the left. + +Breaking long invoice statements with many projects over several +pages results in many orphans and widows. + +\subsection{\label{koma}Compatibility with KOMA-Script} + +Unfortunately, when first writing this package the author was not aware +of the KOMA-Script classes, notably the class \texttt{scrlettr.cls} +which defines its own \verb-\invoice{#1}- command, albeit with completely +different scope, usage and syntax. KOMA-Script's \verb-\invoice{#1}- command +accepts a number and prints ``Invoice no. \#1'' in a letter +opening. Now that the names of the \texttt{invoice} package and +environment have stuck it is easier to think of a workaround than to +conceive a new name. Therefore, If the class \texttt{scrlettr.cls} is +used, the environment \texttt{invoice} is automatically renamed to +\texttt{invoiceenv}. Writing + +\begin{verbatim} +\documentclass[10pt]{scrlettr} +\usepackage{invoice} +\begin{invoice}{Euro}{19} +... +... +\end{verbatim} + +will result in an error message. Say \verb-\begin{invoiceenv}{Euro}{19}- +instead. KOMA-Script's own \verb-\invoice{#1}- command is renamed to +\verb-\invoiceno{#1}-, while \verb-\invoice{#1}- now generates an +error message reminding KOMA-Script users to apply the renamed +commands. + +\section{Desiderata} + +The \verb-invoice- package is far from complete. Future expansions +should aim at making the package more flexible. How taxes are +treated, etc., is at present a rather particular arrangement +suitable for the author's immediate needs, but a more general +solution can be designed as soon as more users reflect their needs +to the author. +\end{document} |