From b1bb8e61f5530e11a31c62b5d87328ffcac21af9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 2 Nov 2017 23:01:24 +0000 Subject: simpleinvoice (2nov17) git-svn-id: svn://tug.org/texlive/trunk@45673 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/simpleinvoice/simpleinvoice.sty | 182 +++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/simpleinvoice/simpleinvoice.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/simpleinvoice/simpleinvoice.sty b/Master/texmf-dist/tex/latex/simpleinvoice/simpleinvoice.sty new file mode 100644 index 00000000000..3b3dbd98a64 --- /dev/null +++ b/Master/texmf-dist/tex/latex/simpleinvoice/simpleinvoice.sty @@ -0,0 +1,182 @@ +% Package for creating invoices. +% Implemented by Mathias Lohne (mathialo@ifi.uio.no). +% (c) 2017 Mathias Lohne +% Version 2017-11-03. + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{simpleinvoice}[2017/11/03 package simpleinvoice] + +% Fall back to english if option parsing fails +\def \INV@lang {eng} + +% Language options +\DeclareOption{american}{\def \INV@lang {eng}} +\DeclareOption{english}{\def \INV@lang {eng}} +\DeclareOption{UKenglish}{\def \INV@lang {eng}} +\DeclareOption{USenglish}{\def \INV@lang {eng}} +\DeclareOption{norsk}{\def \INV@lang {nobm}} +\DeclareOption{norwegian}{\def \INV@lang {nobm}} +\DeclareOption{bokmaal}{\def \INV@lang {nobm}} + +\ProcessOptions + +% Translations +\def \INV@text@invoice@eng {Invoice} +\def \INV@text@ourref@eng {Our ref} +\def \INV@text@yourref@eng {Your ref} +\def \INV@text@invnum@eng {Invoice number} +\def \INV@text@invdate@eng {Invoice date} +\def \INV@text@deadline@eng {Deadline} +\def \INV@text@description@eng {Description} +\def \INV@text@itemprice@eng {Item price} +\def \INV@text@vat@eng {VAT} +\def \INV@text@itemtotal@eng {Sum} +\def \INV@text@subtotal@eng {Subtotal} +\def \INV@text@total@eng {Total} +\def \INV@text@paymentinfo@eng {Payment info} +\def \INV@text@totallong@eng {Total} +\def \INV@text@accountnum@eng {Account number} +\def \INV@text@warning@eng {By paying after deadline, additional interest and fees may apply.} + +\def \INV@text@invoice@nobm {Faktura} +\def \INV@text@ourref@nobm {Vår ref} +\def \INV@text@yourref@nobm {Deres ref} +\def \INV@text@invnum@nobm {Fakturanummer} +\def \INV@text@invdate@nobm {Fakturadato} +\def \INV@text@deadline@nobm {Forfallsdato} +\def \INV@text@description@nobm {Beskrivelse} +\def \INV@text@itemprice@nobm {Enhetspris} +\def \INV@text@vat@nobm {MVA} +\def \INV@text@itemtotal@nobm {Sum} +\def \INV@text@subtotal@nobm {MVA-grunnlag} +\def \INV@text@total@nobm {Å betale} +\def \INV@text@paymentinfo@nobm {Betalingsinformasjon} +\def \INV@text@totallong@nobm {Sum å betale} +\def \INV@text@accountnum@nobm {Kontonummer} +\def \INV@text@warning@nobm {Ved betaling etter forfall kan det påløpe renter og gebyr etter statens satser. Ved innsigelse vil kravet kunne bli sendt til forliksrådet, jf. tvistelovens § 5-2.} + +% Import neccesary libraries +\RequirePackage{advdate} +\RequirePackage{hyperref} +\RequirePackage{url} +\RequirePackage{tabularx} +\RequirePackage{etoolbox} +\RequirePackage{xcolor} +\RequirePackage{colortbl} +\RequirePackage{babel} + +% Define colors +\definecolor{linecolor}{HTML}{b2b2b2} + +% Miscellanous styling +\setlength{\tabcolsep}{0em} +\setlength{\parskip}{0pt} +\setlength{\parindent}{0pt} + +% Links +\RequirePackage{hyperref} +\RequirePackage{url} + +% Table +\RequirePackage{tabularx} + +% Commands +\RequirePackage{etoolbox} + +% Line seperator +\newcommand{\linesep}{\vspace{6pt} {\color{linecolor}\hrule} \vspace{6pt}} + +% Standard values +\def \INV@content@num {{\color{red} No number}} +\def \INV@content@title {\csname INV@text@invoice@\INV@lang\endcsname} +\def \INV@content@date {\today} +\def \INV@content@deadline {\DayAfter[14]} +\def \INV@content@name {{\color{red} Your name}} +\def \INV@content@addr {{\color{red} Address line 1 \\ Address line 2}} +\def \INV@content@addroneline {{\color{red} Address line 1 / Address line 2}} +\def \INV@content@toname {{\color{red} Company}} +\def \INV@content@toaddr {{\color{red} Address line 1 \\ Address line 2}} +\def \INV@content@subtotal {{\color{red} Subtotal}} +\def \INV@content@vat {{\color{red} VAT}} +\def \INV@content@total {{\color{red} Total}} +\def \INV@content@accountnum {{\color{red} Bank account}} + +% Functions for overriding standard values +\newcommand{\setinvoicetitle}[1]{\def \INV@content@title {#1}} +\newcommand{\setinvoicenumber}[1]{\def \INV@content@num {#1}} +\newcommand{\setreceivername}[1]{\def \INV@content@toname {#1}} +\newcommand{\setreceiveraddress}[1]{\def \INV@content@toaddr {#1}} +\newcommand{\setname}[1]{\def \INV@content@name {#1}} +\newcommand{\setaddress}[2]{\def \INV@content@addr {#1} + \def \INV@content@addroneline {#2} +} +\newcommand{\setphonenumber}[1]{\def \INV@content@phonenum {#1}} +\newcommand{\setemail}[1]{\def \INV@content@email {\href{mailto:#1}{#1}}} +\newcommand{\setyourref}[1]{\def \INV@content@yourref {#1}} +\newcommand{\setourref}[1]{\def \INV@content@ourref {#1}} +\newcommand{\setinvoicedate}[1]{\def \INV@content@date {#1}} +\newcommand{\setdeadline}[1]{\def \INV@content@deadline {\DayAfter[#1]}} +\newcommand{\additem}[4]{\ifdef{\INV@content@list}{\appto \INV@content@list {\\ #1 & #2 & #3 \% & #4}}{\def \INV@content@list {#1 & #2 & #3 \% & #4}}} +\newcommand{\setsubtotal}[1]{\def \INV@content@subtotal {#1}} +\newcommand{\setvat}[1]{\def \INV@content@vat {#1}} +\newcommand{\settotal}[1]{\def \INV@content@total {#1}} +\newcommand{\setaccountnumber}[1]{\def \INV@content@accountnum {#1}} + +% Make invoice function +\def \makeinvoice { + \begin{minipage}[b]{0.5\textwidth} + {\large \textbf{\INV@content@toname}} \\ + \INV@content@toaddr + \end{minipage} + \begin{minipage}[b]{0.5\textwidth} + \hfill {\Huge \INV@content@title} + + \linesep + + {\large \textbf{\INV@content@name}} \\ + \INV@content@addr \ifdef{\INV@content@phonenum}{\\ \INV@content@phonenum}{} \ifdef{\INV@content@email}{\\ \INV@content@email}{} + + \linesep + + { \footnotesize + \ifdef{\INV@content@ourref}{\csname INV@text@ourref@\INV@lang\endcsname: \INV@content@ourref \\}{} + \ifdef{\INV@content@yourref}{\csname INV@text@yourref@\INV@lang\endcsname: \INV@content@yourref \\}{} + \csname INV@text@invnum@\INV@lang\endcsname: \INV@content@num \\ + \csname INV@text@invdate@\INV@lang\endcsname: \INV@content@date \\ + \csname INV@text@deadline@\INV@lang\endcsname: \INV@content@deadline + } + \end{minipage} + + \vspace{3cm} + + \renewcommand{\arraystretch}{1.5} + \begin{tabularx}{\textwidth}{X c c r} + \textbf{\csname INV@text@description@\INV@lang\endcsname} & \textbf{\csname INV@text@itemprice@\INV@lang\endcsname} & \hspace{10pt}\textbf{\csname INV@text@vat@\INV@lang\endcsname}\hspace{10pt} & \textbf{\csname INV@text@itemtotal@\INV@lang\endcsname} \\ \arrayrulecolor{linecolor}\hline + \ifdef{\INV@content@list}{\INV@content@list}{{\color{red} No Items yet} & & &} + \end{tabularx} + + \vspace{2cm} + \hfill + \renewcommand{\arraystretch}{1} + \begin{tabular}{r r} + \csname INV@text@subtotal@\INV@lang\endcsname: \hspace{10pt} & \INV@content@subtotal \\ + \csname INV@text@vat@\INV@lang\endcsname: \hspace{10pt} & \INV@content@vat \\ + {\Large \csname INV@text@total@\INV@lang\endcsname: \hspace{10pt}} & {\Large \INV@content@total} + \end{tabular} + + \vfill + + {{\color{gray} \itshape \csname INV@text@warning@\INV@lang\endcsname} \vspace{10pt} \\ + {\huge \csname INV@text@paymentinfo@\INV@lang\endcsname} + \linesep + \begin{tabularx}{\textwidth}{X r} + \csname INV@text@invnum@\INV@lang\endcsname: & \INV@content@num \\ + \csname INV@text@totallong@\INV@lang\endcsname: & \INV@content@total \\ + \csname INV@text@accountnum@\INV@lang\endcsname: & \INV@content@accountnum + \end{tabularx} + + \vspace{1 cm} + \linesep + {\footnotesize \color{gray} \INV@content@name \hfill \INV@content@addroneline \ifdef{\INV@content@phonenum}{\hfill \INV@content@phonenum}{} \ifdef{\INV@content@email}{\hfill \INV@content@email}{}}} +} + -- cgit v1.2.3