summaryrefslogtreecommitdiffstats
path: root/src/invoice/invoice.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/invoice/invoice.vala')
-rw-r--r--src/invoice/invoice.vala81
1 files changed, 63 insertions, 18 deletions
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;
}