![](https://secure.gravatar.com/avatar/cedc4d83943006afe3994fb0a0455f82.jpg?s=120&d=mm&r=g)
On Thu, Apr 17 2008, Taco Hoekwater wrote:
* Quite a bit of correspondence is invoices and quotes, with automatic calculations in them (VAT etc).
Hello Taco, Quite funny: Just 3 days ago, I wrote t-invoice.tex for my personal needs, just 1 command and very very simple: \startInvoice \invoiceItem[description=Ballon eau chaude, price={5063,4 + 1115,87}] \invoiceItem[description=Vase d'expansion, price={386,25}] \invoiceItem[description=Plan d'implantation du bâtiment, price={257,14}] \invoiceItem[description=Branchement d'eau, price={2891,62}] \stopInvoice \stopInvoice prints the total. Here the definitions (can be enhanced and/or wikified): \startluacode -- namespace thirddata = thirddata or { } thirddata.invoices = {} thirddata.invoices.total = 0 thirddata.invoices.pos = 1 -- get price with right format -- p: the price -- return price with right format function thirddata.invoices.format(p) local s = string.format("%.2f", p) s = s:gsub("%.", ",") return s end -- print new item -- d: the description -- p: the price function thirddata.invoices.new_item(d, p) thirddata.invoices.total = thirddata.invoices.total + p tex.print("\\bTR\\bTD" .. string.format("%03d", thirddata.invoices.pos) .. "\\eTD\\bTD " .. d .. "\\eTD\\bTD " .. thirddata.invoices.format(p) .. "\\eTD\\eTR") thirddata.invoices.pos = thirddata.invoices.pos + 1 end \stopluacode \def\invoiceItem{\dosingleargument\doinvoiceItem} \def\doinvoiceItem[#1]{\getparameters[IV][#1] \ctxlua{thirddata.invoices.new_item("\IVdescription", \ctxlua{local s = string.gsub("\IVprice", ",", "."); tex.print(s)})}} \def\invoiceTotal{% \ctxlua{tex.print(thirddata.invoices.format(thirddata.invoices.total))}} \def\startInvoice{\start \setupTABLE[frame=off,textwidth=\textwidth,option=stretch] \setupTABLE[r][first][bottomframe=on] \setupTABLE[r][2,last][top=\blank] \setupTABLE[c][first,2][align=flushleft] \setupTABLE[c][last][align={flushright,lohi}] \bTABLE\bTR\bTH Position \eTH\bTH Description \eTH\bTH Prix \eTH\eTR} \def\stopInvoice{\bTR\bTD[nc=2,align=flushright]Total:\eTD \bTD \invoiceTotal\eTD\eTR\eTABLE\stop} Cheers, Peter -- http://pmrb.free.fr/contact/