gnucash maint: Multiple changes pushed
Christian Stimming
cstim at code.gnucash.org
Mon Oct 13 12:34:22 EDT 2014
Updated via https://github.com/Gnucash/gnucash/commit/cbe6c230 (commit)
via https://github.com/Gnucash/gnucash/commit/4e99e09e (commit)
via https://github.com/Gnucash/gnucash/commit/fbb5291a (commit)
from https://github.com/Gnucash/gnucash/commit/68798181 (commit)
commit cbe6c23087b0b495c3b7049afc772d78e7c35c0c
Author: Christian Stimming <christian at cstimming.de>
Date: Wed Oct 8 21:24:51 2014 +0200
Aqbanking: Add display of aqbanking subaccountid in initial correspondence setup
diff --git a/src/import-export/aqb/assistant-ab-initial.c b/src/import-export/aqb/assistant-ab-initial.c
index d0def64..d01b590 100644
--- a/src/import-export/aqb/assistant-ab-initial.c
+++ b/src/import-export/aqb/assistant-ab-initial.c
@@ -569,24 +569,21 @@ ab_account_longname(const AB_ACCOUNT *ab_acc)
{
gchar *bankname;
gchar *result;
- const char *ab_bankname, *bankcode;
+ const char *ab_bankname, *bankcode, *subAccountId;
g_return_val_if_fail(ab_acc, NULL);
ab_bankname = AB_Account_GetBankName(ab_acc);
bankname = ab_bankname ? gnc_utf8_strip_invalid_strdup(ab_bankname) : NULL;
bankcode = AB_Account_GetBankCode(ab_acc);
+ subAccountId = AB_Account_GetSubAccountId(ab_acc);
/* Translators: Strings are 1. Account code, 2. Bank name, 3. Bank code. */
- if (bankname && *bankname)
- result = g_strdup_printf(_("%s at %s (code %s)"),
- AB_Account_GetAccountNumber(ab_acc),
- bankname,
- bankcode);
- else
- result = g_strdup_printf(_("%s at bank code %s"),
- AB_Account_GetAccountNumber(ab_acc),
- bankcode);
+ result = g_strdup_printf(_("Bank code %s (%s), Account %s (%s)"),
+ bankcode,
+ bankname ? bankname : "",
+ AB_Account_GetAccountNumber(ab_acc),
+ subAccountId ? subAccountId : "");
g_free(bankname);
return result;
commit 4e99e09e5fda9750b036a8aa5213083110a38ec0
Author: Christian Stimming <christian at cstimming.de>
Date: Fri Sep 26 22:48:46 2014 +0200
Aqbanking online SEPA transfer: Allow transfers without BIC, only IBAN. Also add IBAN checking.
diff --git a/src/import-export/aqb/dialog-ab-trans.c b/src/import-export/aqb/dialog-ab-trans.c
index 355c0e8..93d1216 100644
--- a/src/import-export/aqb/dialog-ab-trans.c
+++ b/src/import-export/aqb/dialog-ab-trans.c
@@ -490,6 +490,27 @@ static void
gnc_ab_trans_dialog_check_ktoblzcheck(const GncABTransDialog *td,
const AB_TRANSACTION *trans)
{
+ if (gnc_ab_trans_isSEPA(td->trans_type))
+ {
+ int rv = AB_Banking_CheckIban(AB_Transaction_GetRemoteIban(trans));
+ if (rv != 0) {
+ gchar *message = g_strdup_printf(_("The internal check of the destination IBAN '%s' "
+ "failed. This means "
+ "the account number might contain an error."),
+ AB_Transaction_GetRemoteIban(trans));
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry, message,
+ GTK_STOCK_DIALOG_WARNING);
+ }
+ else
+ {
+ gnc_ab_trans_dialog_entry_set (td->recp_account_entry, "",
+ NULL);
+ gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry, "",
+ NULL);
+ }
+ }
+ else
+ {
#ifndef HAVE_KTOBLZCHECK_H
return;
#else
@@ -548,6 +569,7 @@ gnc_ab_trans_dialog_check_ktoblzcheck(const GncABTransDialog *td,
LEAVE("KtoBlzCheck said check is %d = %s",
blzresult, blztext ? blztext : "(none)");
#endif
+ }
}
static void
@@ -633,7 +655,7 @@ gnc_ab_trans_dialog_verify_values(GncABTransDialog *td)
bankcode = gnc_ab_trans_isSEPA(td->trans_type)
? AB_Transaction_GetRemoteBic(td->ab_trans)
: AB_Transaction_GetRemoteBankCode(td->ab_trans);
- if (!bankcode || !strlen(bankcode))
+ if (!gnc_ab_trans_isSEPA(td->trans_type) && (!bankcode || !strlen(bankcode)))
{
gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry,
_("You did not enter a recipient bank. A recipient bank is "
commit fbb5291ac3267a266e56338a25befccc5f0aa3d5
Author: Christian Stimming <christian at cstimming.de>
Date: Mon Sep 1 20:58:15 2014 +0200
Aqbanking transfer: Make IBAN and BIC text entry fields filter digits or alphas correctly as needed.
diff --git a/src/import-export/aqb/dialog-ab-trans.c b/src/import-export/aqb/dialog-ab-trans.c
index c034fe8..355c0e8 100644
--- a/src/import-export/aqb/dialog-ab-trans.c
+++ b/src/import-export/aqb/dialog-ab-trans.c
@@ -82,7 +82,12 @@ G_MODULE_EXPORT void gnc_ab_trans_dialog_moveup_templ_cb(GtkButton *button, gpoi
G_MODULE_EXPORT void gnc_ab_trans_dialog_movedown_templ_cb(GtkButton *button, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_sort_templ_cb(GtkButton *button, gpointer user_data);
G_MODULE_EXPORT void gnc_ab_trans_dialog_del_templ_cb(GtkButton *button, gpointer user_data);
-G_MODULE_EXPORT void gnc_ab_trans_dialog_entry_filter_cb (GtkEditable *editable,
+G_MODULE_EXPORT void gnc_ab_trans_dialog_ibanentry_filter_cb (GtkEditable *editable,
+ const gchar *text,
+ gint length,
+ gint *position,
+ gpointer user_data);
+G_MODULE_EXPORT void gnc_ab_trans_dialog_bicentry_filter_cb (GtkEditable *editable,
const gchar *text,
gint length,
gint *position,
@@ -1300,7 +1305,60 @@ gnc_ab_trans_dialog_del_templ_cb(GtkButton *button, gpointer user_data)
}
void
-gnc_ab_trans_dialog_entry_filter_cb (GtkEditable *editable,
+gnc_ab_trans_dialog_ibanentry_filter_cb (GtkEditable *editable,
+ const gchar *text,
+ gint length,
+ gint *position,
+ gpointer data)
+{
+ GString* result = g_string_new(NULL);
+ gint i;
+ GncABTransDialog *td = data;
+
+ if (length == -1)
+ length = strlen(text);
+ g_assert(position);
+
+ /* Filter digits / non digits as needed */
+ for (i = 0; i < length; i++)
+ {
+ gchar c = text[i];
+
+ if (gnc_ab_trans_isSEPA(td->trans_type))
+ {
+ // SEPA: Only alphas in the first two places (only upper case, though), then only digits
+ if (*position + i < 2)
+ {
+ if (g_ascii_isalpha(c))
+ g_string_append_c(result, g_ascii_toupper(c));
+ }
+ else
+ {
+ if (g_ascii_isdigit(c))
+ g_string_append_c(result, c);
+ }
+ }
+ else
+ {
+ // Non-SEPA: Only accept digits.
+ if (g_ascii_isdigit(c))
+ {
+ g_string_append_c(result, c);
+ }
+ }
+ }
+
+ g_signal_handlers_block_by_func (editable,
+ (gpointer) gnc_ab_trans_dialog_ibanentry_filter_cb, data);
+ gtk_editable_insert_text (editable, result->str, result->len, position);
+ g_signal_handlers_unblock_by_func (editable,
+ (gpointer) gnc_ab_trans_dialog_ibanentry_filter_cb, data);
+ g_signal_stop_emission_by_name (editable, "insert_text");
+ g_string_free (result, TRUE);
+}
+
+void
+gnc_ab_trans_dialog_bicentry_filter_cb (GtkEditable *editable,
const gchar *text,
gint length,
gint *position,
@@ -1312,27 +1370,42 @@ gnc_ab_trans_dialog_entry_filter_cb (GtkEditable *editable,
if (length == -1)
length = strlen(text);
+ g_assert(position);
/* Filter non digits */
for (i = 0; i < length; i++)
{
gchar c = text[i];
- // Only accept digits. FIXME: In the SEPA dialogs, alphanumerics are
- // allowed, but we could also verify the input according to actual BIC
- // and IBAN rules. This is not yet done here.
- if (g_ascii_isdigit(c)
- || (gnc_ab_trans_isSEPA(td->trans_type) && g_ascii_isalnum(c)))
+ if (gnc_ab_trans_isSEPA(td->trans_type))
+ {
+ // SEPA: Only alphas in the first 6 places (only upper case, though), then both upper-case alphas and digits
+ if (*position + i < 6)
+ {
+ if (g_ascii_isalpha(c))
+ g_string_append_c(result, g_ascii_toupper(c));
+ }
+ else
+ {
+ if (g_ascii_isalnum(c))
+ g_string_append_c(result, g_ascii_toupper(c));
+ }
+ }
+ else
{
- g_string_append_c(result, c);
+ // Non-SEPA: Only digits accepted.
+ if (g_ascii_isdigit(c))
+ {
+ g_string_append_c(result, c);
+ }
}
}
g_signal_handlers_block_by_func (editable,
- (gpointer) gnc_ab_trans_dialog_entry_filter_cb, data);
+ (gpointer) gnc_ab_trans_dialog_bicentry_filter_cb, data);
gtk_editable_insert_text (editable, result->str, result->len, position);
g_signal_handlers_unblock_by_func (editable,
- (gpointer) gnc_ab_trans_dialog_entry_filter_cb, data);
+ (gpointer) gnc_ab_trans_dialog_bicentry_filter_cb, data);
g_signal_stop_emission_by_name (editable, "insert_text");
g_string_free (result, TRUE);
}
diff --git a/src/import-export/aqb/dialog-ab.glade b/src/import-export/aqb/dialog-ab.glade
index d2bb114..543e06d 100644
--- a/src/import-export/aqb/dialog-ab.glade
+++ b/src/import-export/aqb/dialog-ab.glade
@@ -1023,7 +1023,7 @@
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<signal name="changed" handler="gnc_ab_trans_dialog_verify_values" swapped="yes"/>
- <signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
+ <signal name="insert-text" handler="gnc_ab_trans_dialog_ibanentry_filter_cb" swapped="no"/>
</object>
<packing>
<property name="top_attach">3</property>
@@ -1055,7 +1055,7 @@
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<signal name="changed" handler="gnc_ab_trans_dialog_bankcode_changed_cb" swapped="no"/>
- <signal name="insert-text" handler="gnc_ab_trans_dialog_entry_filter_cb" swapped="no"/>
+ <signal name="insert-text" handler="gnc_ab_trans_dialog_bicentry_filter_cb" swapped="no"/>
</object>
<packing>
<property name="left_attach">2</property>
Summary of changes:
src/import-export/aqb/assistant-ab-initial.c | 17 ++--
src/import-export/aqb/dialog-ab-trans.c | 117 ++++++++++++++++++++++++---
src/import-export/aqb/dialog-ab.glade | 4 +-
3 files changed, 115 insertions(+), 23 deletions(-)
More information about the gnucash-changes
mailing list