summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/templates/products/entry.html1
-rw-r--r--src/database/database.vala21
-rw-r--r--src/database/db-interface.vala1
-rw-r--r--src/mail/mail.vala12
-rw-r--r--src/meson.build2
-rw-r--r--src/web/web.vala7
6 files changed, 41 insertions, 3 deletions
diff --git a/data/templates/products/entry.html b/data/templates/products/entry.html
index 64b2aa4..369da30 100644
--- a/data/templates/products/entry.html
+++ b/data/templates/products/entry.html
@@ -2,6 +2,7 @@
<p>
<table class="table table-bordered table-nonfluid">
<tr><th>EAN</th><td>{{{EAN}}}</td></tr>
+ <tr><th>Aliases</th><td><ul>{{{ALIASES}}}</ul></td></tr>
<tr><th>Name</th><td>{{{NAME}}}</td></tr>
<tr><th>Category</th><td>{{{CATEGORY}}}</td></tr>
<tr><th>Amount</th><td>{{{AMOUNT}}}</td></tr>
diff --git a/src/database/database.vala b/src/database/database.vala
index 52c5dd2..b361daf 100644
--- a/src/database/database.vala
+++ b/src/database/database.vala
@@ -141,6 +141,7 @@ public class DataBase : Object {
queries["alias_ean_add"] = "INSERT OR IGNORE INTO ean_aliases (id, real_ean) VALUES (?, ?)";
queries["alias_ean_get"] = "SELECT real_ean FROM ean_aliases WHERE id = ?";
queries["alias_ean_list"] = "SELECT id, real_ean FROM ean_aliases ORDER BY id ASC";
+ queries["alias_rev_lookup"] = "SELECT id FROM ean_aliases WHERE real_ean = ?";
queries["userid_rfid"] = "SELECT user FROM rfid_users WHERE rfid = ?";
queries["rfid_userid"] = "SELECT rfid FROM rfid_users WHERE user = ?";
queries["rfid_insert"] = "INSERT OR REPLACE INTO rfid_users ('user','rfid') VALUES (?,?)";
@@ -390,6 +391,26 @@ public class DataBase : Object {
}
}
+ public uint64[] get_product_aliases(uint64 article) throws DBusError, IOError, DatabaseError {
+ statements["alias_rev_lookup"].reset();
+ statements["alias_rev_lookup"].bind_text(1, "%llu".printf(article));
+ uint64[] result = null;
+
+ while (true) {
+ int rc = statements["alias_rev_lookup"].step();
+
+ switch(rc) {
+ case Sqlite.ROW:
+ result += statements["alias_rev_lookup"].column_int64(0);
+ break;
+ case Sqlite.DONE:
+ return result;
+ default:
+ throw new DatabaseError.INTERNAL_ERROR(_("internal error: %d"), rc);
+ }
+ }
+ }
+
public string get_product_category(uint64 article) throws DBusError, IOError, DatabaseError {
statements["product_category"].reset();
statements["product_category"].bind_text(1, "%llu".printf(article));
diff --git a/src/database/db-interface.vala b/src/database/db-interface.vala
index 840f0a8..0db9521 100644
--- a/src/database/db-interface.vala
+++ b/src/database/db-interface.vala
@@ -22,6 +22,7 @@ public interface Database : Object {
public abstract RestockEntry[] get_restocks(uint64 product, bool descending) throws DBusError, IOError;
public abstract bool buy(int32 user, uint64 article) throws DBusError, IOError, DatabaseError;
public abstract string get_product_name(uint64 article) throws DBusError, IOError, DatabaseError;
+ public abstract uint64[] get_product_aliases(uint64 article) throws DBusError, IOError, DatabaseError;
public abstract string get_product_category(uint64 article) throws DBusError, IOError, DatabaseError;
public abstract int get_product_amount(uint64 article) throws DBusError, IOError, DatabaseError;
public abstract bool get_product_deprecated(uint64 article) throws DBusError, IOError, DatabaseError;
diff --git a/src/mail/mail.vala b/src/mail/mail.vala
index f6cedc0..b863014 100644
--- a/src/mail/mail.vala
+++ b/src/mail/mail.vala
@@ -99,8 +99,16 @@ public class MailImplementation {
}
#endif
- public void add_recipient(MailContact contact, GMime.AddressType type) throws DBusError, IOError {
- m.add_mailbox(type, contact.name, contact.email);
+ public void add_recipient(MailContact contact, RecipientType type) throws DBusError, IOError {
+ GMime.AddressType gmime_type;
+
+ switch(type) {
+ case RecipientType.BCC: gmime_type = GMime.AddressType.BCC; break;
+ case RecipientType.CC: gmime_type = GMime.AddressType.CC; break;
+ default: gmime_type = GMime.AddressType.TO; break;
+ }
+
+ m.add_mailbox(gmime_type, contact.name, contact.email);
recipients += contact.email;
}
diff --git a/src/meson.build b/src/meson.build
index 8f7ed3d..f2ba8c4 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -41,7 +41,7 @@ executable('shop-database', ['database/main.vala', 'database/database.vala', 'da
executable('shop-input-device', ['input-device/main.vala', 'input-device/input-device.vala', 'input-device/input-device-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, linux_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
executable('shop-invoice', ['invoice/main.vala', 'invoice/invoice.vala', 'mail/mailer-interface.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'config/config-interface.vala', 'price.vapi'], dependencies: [gio_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
executable('shop-single-invoice', ['invoice/single.vala', 'invoice/invoice.vala', 'mail/mailer-interface.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'config/config-interface.vala', 'price.vapi'], dependencies: [gio_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
-executable('shop-mailer', ['mail/main.vala', 'mail/mailer.vala', 'mail/mail.vala', 'mail/mailer-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, posix_dep, esmtp_dep, gmime_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
+executable('shop-mailer', ['mail/main.vala', 'mail/mailer.vala', 'mail/mail.vala', 'mail/mailer-interface.vala', 'config/config-interface.vala'], dependencies: [gio_dep, posix_dep, esmtp_dep, gmime_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'), c_args: '-D_GNU_SOURCE')
executable('shop-pdf-invoice', ['pdf-invoice/main.vala', 'pdf-invoice/pdf-invoice.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'config/config-interface.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, rsvg_dep, gdk_dep, posix_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
executable('shop-test-pdf-invoice', ['pdf-invoice/test.vala', 'pdf-invoice/pdf-invoice-interface.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, rsvg_dep, gdk_dep, posix_dep], install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
executable('shop-pdf-stock', ['pdf-stock/main.vala', 'pdf-stock/pdf-stock.vala', 'database/db-interface.vala', 'price.vapi'], dependencies: [gio_dep, pangocairo_dep, cairo_dep, posix_dep], link_with: libcairobarcode, install: true, install_dir: join_paths(get_option('libexecdir'), 'shopsystem'))
diff --git a/src/web/web.vala b/src/web/web.vala
index 0ed852d..414da5c 100644
--- a/src/web/web.vala
+++ b/src/web/web.vala
@@ -732,6 +732,13 @@ public class WebServer {
/* ean */
t.replace("EAN", "%llu".printf(id));
+ /* aliases */
+ string aliases = "";
+ foreach(var a in db.get_product_aliases(id)) {
+ aliases += "<li>%llu</li>".printf(a);
+ }
+ t.replace("ALIASES", aliases);
+
/* name */
string name = db.get_product_name(id);
t.replace("NAME", name);