r22445 - gnucash/trunk/src/import-export/aqbanking - Add some initial implementation for international (European) SEPA online transfers.
Christian Stimming
cstim at code.gnucash.org
Tue Oct 16 16:06:10 EDT 2012
Author: cstim
Date: 2012-10-16 16:06:10 -0400 (Tue, 16 Oct 2012)
New Revision: 22445
Trac: http://svn.gnucash.org/trac/changeset/22445
Modified:
gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.h
gnucash/trunk/src/import-export/aqbanking/gnc-ab-transfer.c
gnucash/trunk/src/import-export/aqbanking/gnc-ab-utils.c
gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking-ui.xml
gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
Log:
Add some initial implementation for international (European) SEPA online transfers.
Needs testing, though - my bank doesn't offer it for me.
Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.c 2012-10-16 20:06:10 UTC (rev 22445)
@@ -38,6 +38,8 @@
#include <aqbanking/jobsingletransfer.h>
#include <aqbanking/jobsingledebitnote.h>
#include <aqbanking/jobinternaltransfer.h>
+#include <aqbanking/jobsepatransfer.h>
+#include <aqbanking/jobsepadebitnote.h>
#include "dialog-ab-trans.h"
#include "dialog-transfer.h"
@@ -143,6 +145,18 @@
#endif
};
+gboolean gnc_ab_trans_isSEPA(GncABTransType t)
+{
+ switch (t)
+ {
+ case SEPA_TRANSFER:
+ case SEPA_DEBITNOTE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
static void
gnc_ab_trans_dialog_fill_templ_helper(gpointer data, gpointer user_data)
{
@@ -174,10 +188,20 @@
trans, AB_Account_GetAccountNumber(td->ab_acc));
AB_Transaction_SetLocalCountry(trans, "DE");
- AB_Transaction_SetRemoteBankCode(
- trans, gtk_entry_get_text(GTK_ENTRY(td->recp_bankcode_entry)));
- AB_Transaction_SetRemoteAccountNumber(
- trans, gtk_entry_get_text(GTK_ENTRY(td->recp_account_entry)));
+ if (gnc_ab_trans_isSEPA(td->trans_type))
+ {
+ AB_Transaction_SetRemoteBic(
+ trans, gtk_entry_get_text(GTK_ENTRY(td->recp_bankcode_entry)));
+ AB_Transaction_SetRemoteIban(
+ trans, gtk_entry_get_text(GTK_ENTRY(td->recp_account_entry)));
+ }
+ else
+ {
+ AB_Transaction_SetRemoteBankCode(
+ trans, gtk_entry_get_text(GTK_ENTRY(td->recp_bankcode_entry)));
+ AB_Transaction_SetRemoteAccountNumber(
+ trans, gtk_entry_get_text(GTK_ENTRY(td->recp_account_entry)));
+ }
AB_Transaction_SetRemoteCountry(trans, "DE");
AB_Transaction_AddRemoteName(
trans, gtk_entry_get_text(GTK_ENTRY(td->recp_name_entry)), FALSE);
@@ -315,9 +339,11 @@
{
case SINGLE_TRANSFER:
case SINGLE_INTERNAL_TRANSFER:
+ case SEPA_TRANSFER:
/* all labels are already set */
break;
case SINGLE_DEBITNOTE:
+ case SEPA_DEBITNOTE:
gtk_label_set_text(GTK_LABEL (heading_label),
/* Translators: Strings from this file are
* needed only in countries that have one of
@@ -352,6 +378,26 @@
break;
}
+ /* Additionally change the labels for the European (SEPA) transactions */
+ switch (trans_type)
+ {
+ case SEPA_TRANSFER:
+ gtk_label_set_text(GTK_LABEL(recp_account_heading),
+ _("Recipient IBAN (International Account Number)"));
+ gtk_label_set_text(GTK_LABEL(recp_bankcode_heading),
+ _("Recipient BIC (Bank Code)"));
+ break;
+ case SEPA_DEBITNOTE:
+ gtk_label_set_text(GTK_LABEL(recp_account_heading),
+ _("Debited IBAN (International Account Number)"));
+ gtk_label_set_text(GTK_LABEL(recp_bankcode_heading),
+ _("Debited BIC (Bank Code)"));
+ break;
+ default:
+ // do nothing
+ break;
+ }
+
gtk_label_set_text(GTK_LABEL(orig_name_label), ab_ownername);
gtk_label_set_text(GTK_LABEL(orig_account_label), ab_accountnumber);
gtk_label_set_text(GTK_LABEL(orig_bankname_label), ab_bankname);
@@ -407,6 +453,13 @@
ENTER(" ");
+ if (gnc_ab_trans_isSEPA(td->trans_type))
+ {
+ // FIXME: libktoblzcheck also has <iban.h>, maybe add this here?
+ LEAVE("No ktoblzcheck implemented for IBAN");
+ return;
+ }
+
blzresult = AccountNumberCheck_check(
td->blzcheck,
AB_Transaction_GetRemoteBankCode(trans),
@@ -718,6 +771,12 @@
case SINGLE_INTERNAL_TRANSFER:
job = AB_JobInternalTransfer_new(ab_acc);
break;
+ case SEPA_TRANSFER:
+ job = AB_JobSepaTransfer_new(ab_acc);
+ break;
+ case SEPA_DEBITNOTE:
+ job = AB_JobSepaDebitNote_new(ab_acc);
+ break;
case SINGLE_TRANSFER:
default:
job = AB_JobSingleTransfer_new(ab_acc);
@@ -762,6 +821,12 @@
case SINGLE_INTERNAL_TRANSFER:
AB_JobInternalTransfer_SetTransaction(job, ab_trans);
break;
+ case SEPA_TRANSFER:
+ AB_JobSepaTransfer_SetTransaction(job, ab_trans);
+ break;
+ case SEPA_DEBITNOTE:
+ AB_JobSepaDebitNote_SetTransaction(job, ab_trans);
+ break;
case SINGLE_TRANSFER:
default:
AB_JobSingleTransfer_SetTransaction(job, ab_trans);
Modified: gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.h
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.h 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/dialog-ab-trans.h 2012-10-16 20:06:10 UTC (rev 22445)
@@ -53,7 +53,14 @@
SINGLE_TRANSFER = 0,
SINGLE_DEBITNOTE,
SINGLE_INTERNAL_TRANSFER
+ , SEPA_TRANSFER
+ , SEPA_DEBITNOTE
};
+/**
+ * Returns true if the given GncABTransType is an European (SEPA) transaction
+ * (transfer or debit note), otherwise false.
+ */
+gboolean gnc_ab_trans_isSEPA(GncABTransType t);
/**
* Create a new AqBanking transfer dialog
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-ab-transfer.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-ab-transfer.c 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-ab-transfer.c 2012-10-16 20:06:10 UTC (rev 22445)
@@ -213,6 +213,16 @@
xfer_dialog, _("Online Banking Bank-Internal Transfer"));
gnc_xfer_dialog_lock_from_account_tree(xfer_dialog);
break;
+ case SEPA_TRANSFER:
+ gnc_xfer_dialog_set_title(
+ xfer_dialog, _("Online Banking European (SEPA) Transfer"));
+ gnc_xfer_dialog_lock_from_account_tree(xfer_dialog);
+ break;
+ case SEPA_DEBITNOTE:
+ gnc_xfer_dialog_set_title(
+ xfer_dialog, _("Online Banking European (SEPA) Debit Note"));
+ gnc_xfer_dialog_lock_to_account_tree(xfer_dialog);
+ break;
case SINGLE_TRANSFER:
default:
gnc_xfer_dialog_set_title(
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-ab-utils.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-ab-utils.c 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-ab-utils.c 2012-10-16 20:06:10 UTC (rev 22445)
@@ -623,10 +623,12 @@
case AB_Transaction_TypeDebitNote:
trans_type = SINGLE_DEBITNOTE;
break;
+ case AB_Transaction_TypeEuTransfer:
+ trans_type = SEPA_TRANSFER;
+ break;
case AB_Transaction_TypeTransaction:
/* trans_type = SINGLE_INTERNAL_TRANSFER;
* break; */
- case AB_Transaction_TypeEuTransfer:
case AB_Transaction_TypeTransfer:
default:
trans_type = SINGLE_TRANSFER;
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking-ui.xml
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking-ui.xml 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking-ui.xml 2012-10-16 20:06:10 UTC (rev 22445)
@@ -21,6 +21,7 @@
<menuitem name="ABGetTrans" action="ABGetTransAction"/>
<separator name="OnlineActionsSep1"/>
<menuitem name="ABIssueTrans" action="ABIssueTransAction"/>
+ <menuitem name="ABIssueSepaTrans" action="ABIssueSepaTransAction"/>
<menuitem name="ABIssueIntTrans" action="ABIssueIntTransAction"/>
<menuitem name="ABIssueDirectDebit" action="ABIssueDirectDebitAction"/>
<separator name="OnlineActionsSep2"/>
Modified: gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c
===================================================================
--- gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c 2012-10-12 19:35:21 UTC (rev 22444)
+++ gnucash/trunk/src/import-export/aqbanking/gnc-plugin-aqbanking.c 2012-10-16 20:06:10 UTC (rev 22445)
@@ -71,6 +71,7 @@
static void gnc_plugin_ab_cmd_get_balance(GtkAction *action, GncMainWindowActionData *data);
static void gnc_plugin_ab_cmd_get_transactions(GtkAction *action, GncMainWindowActionData *data);
static void gnc_plugin_ab_cmd_issue_transaction(GtkAction *action, GncMainWindowActionData *data);
+static void gnc_plugin_ab_cmd_issue_sepatransaction(GtkAction *action, GncMainWindowActionData *data);
static void gnc_plugin_ab_cmd_issue_inttransaction(GtkAction *action, GncMainWindowActionData *data);
static void gnc_plugin_ab_cmd_issue_direct_debit(GtkAction *action, GncMainWindowActionData *data);
static void gnc_plugin_ab_cmd_view_logwindow(GtkToggleAction *action, GncMainWindow *window);
@@ -112,6 +113,11 @@
G_CALLBACK(gnc_plugin_ab_cmd_issue_transaction)
},
{
+ "ABIssueSepaTransAction", NULL, N_("_Issue SEPA Transaction..."), NULL,
+ N_("Issue a new international European (SEPA) transaction online through Online Banking"),
+ G_CALLBACK(gnc_plugin_ab_cmd_issue_sepatransaction)
+ },
+ {
"ABIssueIntTransAction", NULL, N_("I_nternal Transaction..."), NULL,
N_("Issue a new bank-internal transaction online through Online Banking"),
G_CALLBACK(gnc_plugin_ab_cmd_issue_inttransaction)
@@ -535,6 +541,27 @@
}
static void
+gnc_plugin_ab_cmd_issue_sepatransaction(GtkAction *action,
+ GncMainWindowActionData *data)
+{
+ Account *account;
+
+ ENTER("action %p, main window data %p", action, data);
+ account = main_window_to_account(data->window);
+ if (account == NULL)
+ {
+ g_message("No AqBanking account selected");
+ LEAVE("no account");
+ return;
+ }
+
+ gnc_main_window = data->window;
+ gnc_ab_maketrans(GTK_WIDGET(data->window), account, SEPA_TRANSFER);
+
+ LEAVE(" ");
+}
+
+static void
gnc_plugin_ab_cmd_issue_inttransaction(GtkAction *action,
GncMainWindowActionData *data)
{
More information about the gnucash-changes
mailing list