r22816 - gnucash/trunk/src/import-export/aqbanking - Aqbanking SEPA transfer: Really test and finish the implementation.

Christian Stimming cstim at code.gnucash.org
Fri Mar 1 16:28:01 EST 2013


Author: cstim
Date: 2013-03-01 16:28:01 -0500 (Fri, 01 Mar 2013)
New Revision: 22816
Trac: http://svn.gnucash.org/trac/changeset/22816

Modified:
   gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
   gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c
Log:
Aqbanking SEPA transfer: Really test and finish the implementation.

Also, apparently the iTAN authentication method doesn't work unless
one activates the GTK2_GUI code in gnc-gwen-gui.c:70 but I need to check
this further.

Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c	2013-02-28 09:52:12 UTC (rev 22815)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c	2013-03-01 21:28:01 UTC (rev 22816)
@@ -183,10 +183,11 @@
     AB_TRANSACTION *trans = AB_Transaction_new();
     AB_VALUE *value;
 
-    AB_Transaction_SetLocalBankCode(trans, AB_Account_GetBankCode(td->ab_acc));
-    AB_Transaction_SetLocalAccountNumber(
-        trans, AB_Account_GetAccountNumber(td->ab_acc));
-    AB_Transaction_SetLocalCountry(trans, "DE");
+    AB_Transaction_FillLocalFromAccount(trans, td->ab_acc);
+    //AB_Transaction_SetLocalBankCode(trans, AB_Account_GetBankCode(td->ab_acc));
+    //AB_Transaction_SetLocalAccountNumber(
+    //  trans, AB_Account_GetAccountNumber(td->ab_acc));
+    //AB_Transaction_SetLocalCountry(trans, "DE");
 
     if (gnc_ab_trans_isSEPA(td->trans_type))
     {
@@ -397,6 +398,12 @@
         // do nothing
         break;
     }
+    if (gnc_ab_trans_isSEPA(trans_type))
+    {
+        // Also, SEPA might have much longer IBAN (up to 34 chars) and BIC (11)
+        gtk_entry_set_max_length(GTK_ENTRY(td->recp_bankcode_entry), 11);
+        gtk_entry_set_max_length(GTK_ENTRY(td->recp_account_entry), 34);
+    }
 
     gtk_label_set_text(GTK_LABEL(orig_name_label), ab_ownername);
     gtk_label_set_text(GTK_LABEL(orig_account_label), ab_accountnumber);
@@ -527,6 +534,26 @@
      * AB_TRANSACTION */
     td->ab_trans = gnc_ab_trans_dialog_fill_values(td);
 
+    // Verify that we have a local IBAN and BIC
+    if (gnc_ab_trans_isSEPA(td->trans_type))
+    {
+        const char* localBIC = AB_Transaction_GetLocalBic(td->ab_trans);
+        const char* localIBAN = AB_Transaction_GetLocalIban(td->ab_trans);
+        if (!localBIC || !localIBAN
+                || (strlen(localBIC) == 0) || (strlen(localIBAN) == 0))
+        {
+            values_ok = FALSE;
+            gnc_error_dialog(td->dialog,
+                             _("Your local bank account does not yet have the SEPA account information stored. "
+                               " We are sorry, but in this development version one additional step is necessary "
+                               "which has not yet been implemented directly in gnucash. "
+                               "Please execute the command line program \"aqhbci-tool\" for your account, as follows: "
+                               "aqhbci-tool4 getaccsepa -b %s -a %s"),
+                             AB_Transaction_GetLocalBankCode(td->ab_trans),
+                             AB_Transaction_GetLocalAccountNumber(td->ab_trans));
+        }
+    }
+
     /* Check recipient / remote name */
     othername = gnc_ab_get_remote_name(td->ab_trans);
     if (!othername || !strlen(othername))
@@ -546,7 +573,9 @@
     }
 
     /* Check account */
-    account = AB_Transaction_GetRemoteAccountNumber(td->ab_trans);
+    account = gnc_ab_trans_isSEPA(td->trans_type)
+            ? AB_Transaction_GetRemoteIban(td->ab_trans)
+            : AB_Transaction_GetRemoteAccountNumber(td->ab_trans);
     if (!account || !strlen(account))
     {
         gnc_ab_trans_dialog_entry_set (td->recp_account_entry,
@@ -560,7 +589,9 @@
         gnc_ab_trans_dialog_entry_set (td->recp_account_entry, "", NULL);
     }
     /* Check bank */
-    bankcode = AB_Transaction_GetRemoteBankCode(td->ab_trans);
+    bankcode = gnc_ab_trans_isSEPA(td->trans_type)
+            ? AB_Transaction_GetRemoteBic(td->ab_trans)
+            : AB_Transaction_GetRemoteBankCode(td->ab_trans);
     if (!bankcode || !strlen(bankcode))
     {
         gnc_ab_trans_dialog_entry_set (td->recp_bankcode_entry,

Modified: gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c	2013-02-28 09:52:12 UTC (rev 22815)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-gwen-gui.c	2013-03-01 21:28:01 UTC (rev 22816)
@@ -55,6 +55,11 @@
 # define GNC_GWENHYWFAR_CB
 #endif
 
+#define GWEN_GUI_CM_CLASS "dialog-hbcilog"
+#define GCONF_SECTION_CONNECTION GCONF_SECTION_AQBANKING "/connection_dialog"
+#define KEY_CLOSE_ON_FINISH "close_on_finish"
+#define KEY_REMEMBER_PIN "remember_pin"
+
 #ifdef USING_GWENHYWFAR_GTK2_GUI
 # include <gwen-gui-gtk2/gtk2_gui.h>
 #endif
@@ -112,7 +117,7 @@
 gboolean
 gnc_GWEN_Gui_show_dialog()
 {
-    return;
+    return TRUE;
 }
 
 void
@@ -150,11 +155,6 @@
                                                         (gwen_gui), (gui), NULL)
 #define GETDATA_GUI(gwen_gui) GWEN_INHERIT_GETDATA(GWEN_GUI, GncGWENGui, (gwen_gui))
 
-#define GWEN_GUI_CM_CLASS "dialog-hbcilog"
-#define GCONF_SECTION_CONNECTION GCONF_SECTION_AQBANKING "/connection_dialog"
-#define KEY_CLOSE_ON_FINISH "close_on_finish"
-#define KEY_REMEMBER_PIN "remember_pin"
-
 #define OTHER_ENTRIES_ROW_OFFSET 3
 
 typedef struct _Progress Progress;



More information about the gnucash-changes mailing list