diff options
Diffstat (limited to 'src/invoice')
-rw-r--r-- | src/invoice/.gitignore | 2 | ||||
-rw-r--r-- | src/invoice/Makefile | 13 | ||||
-rw-r--r-- | src/invoice/invoice.vala | 81 | ||||
-rw-r--r-- | src/invoice/main.vala | 11 | ||||
-rw-r--r-- | src/invoice/single.vala | 4 |
5 files changed, 72 insertions, 39 deletions
diff --git a/src/invoice/.gitignore b/src/invoice/.gitignore deleted file mode 100644 index 0d4d46e..0000000 --- a/src/invoice/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -invoice -single-invoice diff --git a/src/invoice/Makefile b/src/invoice/Makefile deleted file mode 100644 index 73eaf48..0000000 --- a/src/invoice/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -all: invoice single-invoice - @echo > /dev/null - -invoice: main.vala invoice.vala ../mail/mailer-interface.vala ../pdf-invoice/pdf-invoice-interface.vala ../database/db-interface.vala ../config/config-interface.vala ../price.vapi - valac -X -w -o $@ --pkg gio-2.0 $^ - -single-invoice: single.vala invoice.vala ../mail/mailer-interface.vala ../pdf-invoice/pdf-invoice-interface.vala ../database/db-interface.vala ../config/config-interface.vala ../price.vapi - valac -X -w -o $@ --pkg gio-2.0 $^ - -clean: - rm -f invoice single-invoice - -.PHONY: all clean diff --git a/src/invoice/invoice.vala b/src/invoice/invoice.vala index 1e6dd58..e83f4bf 100644 --- a/src/invoice/invoice.vala +++ b/src/invoice/invoice.vala @@ -32,16 +32,29 @@ public class InvoiceImplementation { Database db; PDFInvoice pdf; string datadir; - - public InvoiceImplementation() throws IOError, KeyFileError { + string mailfromaddress; + string treasurermailaddress; + string shortname; + string spacename; + string vat; + string jverein_membership_number; + + public InvoiceImplementation() throws DBusError, IOError, KeyFileError { mailer = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Mail", "/io/mainframe/shopsystem/mailer"); db = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Database", "/io/mainframe/shopsystem/database"); pdf = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.InvoicePDF", "/io/mainframe/shopsystem/invoicepdf"); Config cfg = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Config", "/io/mainframe/shopsystem/config"); - datadir = cfg.get_string("INVOICE", "datadir"); + var datapath = cfg.get_string("GENERAL", "datapath"); + datadir = Path.build_filename(datapath, "invoice"); + mailfromaddress = cfg.get_string("MAIL", "mailfromaddress"); + treasurermailaddress = cfg.get_string("MAIL", "treasurermailaddress"); + shortname = cfg.get_string("GENERAL", "shortname"); + spacename = cfg.get_string("GENERAL", "spacename"); + vat = cfg.get_string("INVOICE", "vat"); + jverein_membership_number = cfg.get_string("JVEREIN", "membership_number"); } - public void send_invoice(bool temporary, int64 timestamp, int user) throws IOError, InvoicePDFError, DatabaseError { + public void send_invoice(bool temporary, int64 timestamp, int user) throws DBusError, IOError, InvoicePDFError, DatabaseError { int64 prevtimestamp = timestamp - day_in_seconds; if(!temporary) @@ -67,9 +80,9 @@ public class InvoiceImplementation { string treasurer_path = mailer.create_mail(); Mail treasurer_mail = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Mail", treasurer_path); - treasurer_mail.from = {"KtT Shopsystem", "shop@kreativitaet-trifft-technik.de"}; + treasurer_mail.from = {shortname + " Shopsystem", mailfromaddress}; treasurer_mail.subject = mailtitle; - treasurer_mail.add_recipient({"Schatzmeister", "shop-einzug@kreativitaet-trifft-technik.de"}, RecipientType.TO); + treasurer_mail.add_recipient({"Schatzmeister", treasurermailaddress}, RecipientType.TO); var csvinvoicedata = ""; foreach(var userid in users) { @@ -82,7 +95,7 @@ public class InvoiceImplementation { var invoicedata = generate_invoice(temporary, timestamp, userid, invoiceid); string mail_path = mailer.create_mail(); Mail mail = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Mail", mail_path); - mail.from = {"KtT Shopsystem", "shop@kreativitaet-trifft-technik.de"}; + mail.from = {shortname + " Shopsystem", mailfromaddress}; mail.subject = mailtitle; mail.add_recipient({@"$(userdata.firstname) $(userdata.lastname)", userdata.email}, RecipientType.TO); @@ -109,11 +122,15 @@ public class InvoiceImplementation { } } - public void send_invoices(bool temporary, int64 timestamp) throws IOError, InvoicePDFError, DatabaseError { + public void send_invoices(bool temporary, int64 timestamp) throws DBusError, IOError, InvoicePDFError, DatabaseError { int64 prevtimestamp = timestamp - day_in_seconds; + string due_date_string = ""; - if(!temporary) + if(!temporary) { prevtimestamp = new DateTime.from_unix_local(timestamp).add_months(-1).to_unix(); + var due_date = new DateTime.from_unix_local(timestamp).add_days(10); + due_date_string = due_date.format("%d.%m.%Y"); + } Timespan ts = get_timespan(temporary, prevtimestamp); Timespan tst = get_timespan(false, prevtimestamp); @@ -135,10 +152,17 @@ public class InvoiceImplementation { string treasurer_path = mailer.create_mail(); Mail treasurer_mail = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Mail", treasurer_path); - treasurer_mail.from = {"KtT Shopsystem", "shop@kreativitaet-trifft-technik.de"}; + treasurer_mail.from = {shortname + " Shopsystem", mailfromaddress}; treasurer_mail.subject = mailtitle; - treasurer_mail.add_recipient({"Schatzmeister", "shop-einzug@kreativitaet-trifft-technik.de"}, RecipientType.TO); + treasurer_mail.add_recipient({"Schatzmeister", treasurermailaddress}, RecipientType.TO); var csvinvoicedata = ""; + var csvjvereininvoicedata = ""; + if(jverein_membership_number == "extern") { + csvjvereininvoicedata = "Ext_Mitglieds_Nr;Betrag;Buchungstext;Fälligkeit;Intervall;Endedatum"; + } + else { + csvjvereininvoicedata = "Mitglieds_Nr;Betrag;Buchungstext;Fälligkeit;Intervall;Endedatum"; + } foreach(var userid in users) { number++; @@ -149,7 +173,7 @@ public class InvoiceImplementation { string mail_path = mailer.create_mail(); Mail mail = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Mail", mail_path); - mail.from = {"KtT Shopsystem", "shop@kreativitaet-trifft-technik.de"}; + mail.from = {shortname + " Shopsystem", mailfromaddress}; mail.subject = mailtitle; mail.add_recipient({@"$(userdata.firstname) $(userdata.lastname)", userdata.email}, RecipientType.TO); @@ -165,17 +189,19 @@ public class InvoiceImplementation { if(!temporary) { treasurer_mail.add_attachment(invoicedata.pdffilename, "application/pdf", invoicedata.pdfdata); csvinvoicedata += @"$(userdata.id),$(userdata.lastname),$(userdata.firstname),$invoiceid,$total_sum\n"; + csvjvereininvoicedata += @"$(userdata.id);$total_sum;Shopsystem Rechnung Nummer $invoiceid;$due_date_string;0;$due_date_string\n"; } } if(!temporary) { treasurer_mail.set_main_part(get_treasurer_text(), MessageType.PLAIN); treasurer_mail.add_attachment("invoice.csv", "text/csv; charset=utf-8", csvinvoicedata.data); + treasurer_mail.add_attachment("jvereininvoice.csv", "text/csv; charset=utf-8", csvjvereininvoicedata.data); mailer.send_mail(treasurer_path); } } - public InvoiceData generate_invoice(bool temporary, int64 timestamp, int userid, string invoiceid) throws IOError, InvoicePDFError, DatabaseError { + public InvoiceData generate_invoice(bool temporary, int64 timestamp, int userid, string invoiceid) throws DBusError, IOError, InvoicePDFError, DatabaseError { int64 prevtimestamp = timestamp - day_in_seconds; if(!temporary) prevtimestamp = new DateTime.from_unix_local(timestamp).add_months(-1).to_unix(); @@ -222,11 +248,13 @@ public class InvoiceImplementation { string text; try { - FileUtils.get_contents(datadir + "/treasurer.mail.txt", out text); + FileUtils.get_contents(Path.build_filename(datadir, "/treasurer.mail.txt"), out text); } catch(GLib.FileError e) { - throw new IOError.FAILED("Could not open invoice template: %s", e.message); + throw new IOError.FAILED(_("Could not open invoice template: %s"), e.message); } + text = text.replace("{{{SHORTNAME}}}", shortname); + return text; } @@ -284,19 +312,36 @@ public class InvoiceImplementation { table = generate_invoice_table_html(entries); if(filename == "") - throw new IOError.FAILED("Unknown MessageType"); + throw new IOError.FAILED(_("Unknown MessageType")); try { - FileUtils.get_contents(datadir + "/" + filename, out text); + FileUtils.get_contents(Path.build_filename(datadir, filename), out text); } catch(GLib.FileError e) { - throw new IOError.FAILED("Could not open invoice template: %s", e.message); + throw new IOError.FAILED(_("Could not open invoice template: %s"), e.message); } text = text.replace("{{{ADDRESS}}}", address); text = text.replace("{{{LASTNAME}}}", name); + text = text.replace("{{{SPACENAME}}}", spacename); text = text.replace("{{{INVOICE_TABLE}}}", table); text = text.replace("{{{SUM_MONTH}}}", "%d,%02d".printf(total_sum / 100, total_sum % 100)); + if(vat == "yes") { + text = text.replace("{{{VAT}}}", ""); + } else { + string vattext; + string vattextfilename; + vattextfilename = (type == MessageType.HTML) ? "vat.html" : "vat.txt"; + + try { + FileUtils.get_contents(Path.build_filename(datadir, vattextfilename), out vattext); + } catch(GLib.FileError e) { + throw new IOError.FAILED(_("Could not open VAT template: %s"), e.message); + } + + text = text.replace("{{{VAT}}}", vattext); + } + return text; } diff --git a/src/invoice/main.vala b/src/invoice/main.vala index b341adb..f5ec69b 100644 --- a/src/invoice/main.vala +++ b/src/invoice/main.vala @@ -16,11 +16,14 @@ InvoiceImplementation invoice; public static void help(string name) { - stderr.printf("Usage: %s <temporary> [timestamp]\n", name); - stderr.printf("Possible values for <temporary>: temporary, final\n"); + stderr.printf(_("Usage: %s <temporary> [timestamp]\n"), name); + stderr.printf(_("Possible values for <temporary>: temporary, final\n")); } public static int main(string[] args) { + Intl.setlocale(LocaleCategory.ALL, ""); + Intl.textdomain("shopsystem"); + bool temporary = false; int64 timestamp = new DateTime.now_local().to_unix(); @@ -45,14 +48,14 @@ public static int main(string[] args) { try { invoice = new InvoiceImplementation(); } catch(Error e) { - stderr.printf("Error: %s\n", e.message); + stderr.printf(_("Error: %s\n"), e.message); return 1; } try { invoice.send_invoices(temporary, timestamp); } catch(Error e) { - stderr.printf("Error: %s\n", e.message); + stderr.printf(_("Error: %s\n"), e.message); return 1; } diff --git a/src/invoice/single.vala b/src/invoice/single.vala index 54cba26..6f54afe 100644 --- a/src/invoice/single.vala +++ b/src/invoice/single.vala @@ -48,14 +48,14 @@ public static int main(string[] args) { try { invoice = new InvoiceImplementation(); } catch(Error e) { - stderr.printf("Error: %s\n", e.message); + stderr.printf(_("Error: %s\n"), e.message); return 1; } try { invoice.send_invoice(temporary, timestamp, user); } catch(Error e) { - stderr.printf("Error: %s\n", e.message); + stderr.printf(_("Error: %s\n"), e.message); return 1; } |