summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-04-11 19:13:40 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2017-04-11 19:13:40 +0300
commit28f3ffb36f26c502f173338c2b3a7c8b2abb7d4f (patch)
tree4ddaebd32a0e025fc622739bee8b8e0a2afba646
parent95ce3fc3f5a157a648b29a39c845a75be2a908b1 (diff)
downloadlaskuri-28f3ffb36f26c502f173338c2b3a7c8b2abb7d4f.tar.gz
laskuri-28f3ffb36f26c502f173338c2b3a7c8b2abb7d4f.zip
Convert input data to internal form before creating the invoices
-rw-r--r--data/settings.lua31
-rw-r--r--laskuri.lua32
2 files changed, 60 insertions, 3 deletions
diff --git a/data/settings.lua b/data/settings.lua
index 0bd91ee..b62b0c9 100644
--- a/data/settings.lua
+++ b/data/settings.lua
@@ -5,4 +5,35 @@ business_id = ""
www_address = ""
iban = ""
bic_swift = ""
+
+-- How to format dates. See
+--
+-- http://www.lua.org/manual/5.3/manual.html#pdf-os.date
+--
+-- and
+--
+-- http://strftime.net
+--
+-- for documentation.
date_fmt = "%d.%m.%Y"
+
+-- Maps column names in your CSV to laskuri internal names. Substitute the
+-- values in double quotes with your own column names.
+columns = {
+ InvoiceNr = "InvoiceNr",
+ ReferenceNr = "ReferenceNr",
+ Price = "Price",
+ Amount = "Amount",
+ Unit = "Unit",
+ Customer = "Customer",
+ Product = "Product",
+ Vat = "Vat",
+}
+
+-- Defaults for columns.
+defaults = {
+ Price = 0,
+ Amount = 1,
+ Unit = "kpl",
+ Vat = 0,
+}
diff --git a/laskuri.lua b/laskuri.lua
index 8fc2de1..990b35b 100644
--- a/laskuri.lua
+++ b/laskuri.lua
@@ -10,6 +10,26 @@ local data = ftcsv.parse("invoices.csv", ",")
-- Do some preprocessing for each row
+-- Convert column names to internal representation. Also set defaults.
+for _, row in pairs(data) do
+ for columnid, column in pairs(columns) do
+ if column ~= "" then
+ local value = row[column]
+ if not value then
+ row[columnid] = defaults[columnid] or ""
+ else
+ if value == "" then
+ value = defaults[columnid] or ""
+ end
+ row[columnid] = value
+ row[column] = nil
+ end
+ else
+ row[columnid] = defaults[columnid] or ""
+ end
+ end
+end
+
local num_fields = { "Amount", "Price", "Vat" }
for _, row in pairs(data) do
@@ -34,11 +54,17 @@ for invoice_nr, rows in pairs(invoices) do
local price = 0.0
local final_price = 0.0
local tax = 0.0
+ local ref = nil
for _, row in pairs(rows) do
price = price + row.Price
final_price = final_price + row.FinalPrice
tax = tax + row.Tax
+ ref = row.ReferenceNr
+ end
+
+ if ref and ref == "" then
+ ref = nil
end
rows.data = {
@@ -46,7 +72,7 @@ for invoice_nr, rows in pairs(invoices) do
FinalPrice = final_price,
Tax = tax,
Due = utils.due_date(14, date_fmt),
- ReferenceNum = refnum.refnum(invoice_nr),
+ ReferenceNr = ref or refrefnum.refnum(invoice_nr),
}
end
@@ -97,7 +123,7 @@ for invoice_nr, invoice in pairs(invoices) do
page:TextCell(8, 7, 3, 1, invoice.data.Due, "left")
page:SetFontAndSize(font_bold, 10)
- page:TextCell(0, 5, 3, 1, invoice[1].Customer, "left")
+ page:TextCell(0, 5, 5, 3, invoice[1].Customer, "left")
page:SetFontAndSize(font, 10)
page:TextCell(0, 10, 3, 1, "Nimike", "left")
@@ -139,7 +165,7 @@ for invoice_nr, invoice in pairs(invoices) do
page:TextCell(0, 45, 7, 1, "Viitenumero:", "left")
page:SetFontAndSize(font_bold, 10)
- page:TextCell(0, 46, 7, 1, invoice.data.ReferenceNum, "left")
+ page:TextCell(0, 46, 7, 1, invoice.data.ReferenceNr, "left")
page:SetFontAndSize(font, 10)
page:TextCell(7, 45, 7, 1, "Yhteensä EUR:", "left")
page:SetFontAndSize(font_bold, 10)