mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
2003-05-28 Christian Stimming <stimming@tuhh.de>
* src/import-export/hbci/gnc-hbci-transfer.c, dialog-hbcitrans.c, glade/hbci.glade: Add coarse GUI so that transfer templates are somehow usable. * src/import-export/hbci/gnc-hbci-kvp.[hc]: Store the online transfer templates in the book's kvp_frame. * src/import-export/hbci/gnc-hbci-trans-templ.[hc]: Add data type for online transfer templates. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8414 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
0fcd48a225
commit
15b50f49d4
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
2003-05-28 Christian Stimming <stimming@tuhh.de>
|
||||||
|
|
||||||
|
* src/import-export/hbci/gnc-hbci-transfer.c, dialog-hbcitrans.c,
|
||||||
|
glade/hbci.glade: Add coarse GUI so that transfer templates are
|
||||||
|
somehow usable.
|
||||||
|
|
||||||
|
* src/import-export/hbci/gnc-hbci-kvp.[hc]: Store the online
|
||||||
|
transfer templates in the book's kvp_frame.
|
||||||
|
|
||||||
|
* src/import-export/hbci/gnc-hbci-trans-templ.[hc]: Add data type
|
||||||
|
for online transfer templates.
|
||||||
|
|
||||||
2003-05-26 Derek Atkins <derek@ihtfp.com>
|
2003-05-26 Derek Atkins <derek@ihtfp.com>
|
||||||
|
|
||||||
* src/register/ledger-core/dialog-dup-trans.c: If the "number" is
|
* src/register/ledger-core/dialog-dup-trans.c: If the "number" is
|
||||||
|
@ -12,6 +12,7 @@ libgncmod_hbci_la_SOURCES = \
|
|||||||
gnc-hbci-utils.c \
|
gnc-hbci-utils.c \
|
||||||
gnc-hbci-cb.c \
|
gnc-hbci-cb.c \
|
||||||
gnc-hbci-transfer.c \
|
gnc-hbci-transfer.c \
|
||||||
|
gnc-hbci-trans-templ.c \
|
||||||
gnc-hbci-getbalance.c \
|
gnc-hbci-getbalance.c \
|
||||||
gnc-hbci-gettrans.c \
|
gnc-hbci-gettrans.c \
|
||||||
hbci-interaction.c \
|
hbci-interaction.c \
|
||||||
@ -36,6 +37,7 @@ noinst_HEADERS = \
|
|||||||
gnc-hbci-gettrans.h \
|
gnc-hbci-gettrans.h \
|
||||||
gnc-hbci-kvp.h \
|
gnc-hbci-kvp.h \
|
||||||
gnc-hbci-transfer.h \
|
gnc-hbci-transfer.h \
|
||||||
|
gnc-hbci-trans-templ.h \
|
||||||
gnc-hbci-utils.h \
|
gnc-hbci-utils.h \
|
||||||
hbci-interaction.h \
|
hbci-interaction.h \
|
||||||
hbci-interactionP.h
|
hbci-interactionP.h
|
||||||
|
@ -32,15 +32,70 @@
|
|||||||
#include "gnc-amount-edit.h"
|
#include "gnc-amount-edit.h"
|
||||||
|
|
||||||
#include "gnc-hbci-utils.h"
|
#include "gnc-hbci-utils.h"
|
||||||
|
#include "gnc-hbci-trans-templ.h"
|
||||||
#include "dialog-hbcitrans.h"
|
#include "dialog-hbcitrans.h"
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Data structure */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
struct _trans_data
|
||||||
|
{
|
||||||
|
GtkWidget *parent;
|
||||||
|
/* Recipient */
|
||||||
|
GtkWidget *recp_name_entry;
|
||||||
|
GtkWidget *recp_account_entry;
|
||||||
|
GtkWidget *recp_bankcode_entry;
|
||||||
|
|
||||||
|
/* Amount */
|
||||||
|
GtkWidget *amount_edit;
|
||||||
|
|
||||||
|
/* Purpose, description */
|
||||||
|
GtkWidget *purpose_entry;
|
||||||
|
GtkWidget *purpose_cont_entry;
|
||||||
|
|
||||||
|
/* Recipient's bank name (may be filled in automatically sometime later) */
|
||||||
|
GtkWidget *recp_bankname_label;
|
||||||
|
|
||||||
|
/* The template choosing option menu */
|
||||||
|
GtkWidget *template_option;
|
||||||
|
|
||||||
|
/* GList of GNCTransTempl */
|
||||||
|
GList *templ;
|
||||||
|
};
|
||||||
|
typedef struct _trans_data TransData;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Prototypes; callbacks for dialog function */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
|
||||||
|
void template_selection_cb(GtkButton *b, gpointer user_data);
|
||||||
|
void add_template_cb(GtkButton *b, gpointer user_data);
|
||||||
|
|
||||||
|
static void fill_template_menu_func(gpointer data, gpointer user_data)
|
||||||
|
{
|
||||||
|
GNCTransTempl *templ = data;
|
||||||
|
GtkMenu *menu = user_data;
|
||||||
|
GtkWidget *item = gtk_menu_item_new_with_label(gnc_trans_templ_get_name(templ));
|
||||||
|
gtk_object_set_user_data(GTK_OBJECT(item), templ);
|
||||||
|
gtk_menu_append(menu, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Main dialog function */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
|
||||||
HBCI_Transaction *
|
HBCI_Transaction *
|
||||||
gnc_hbci_trans (GtkWidget *parent,
|
gnc_hbci_trans (GtkWidget *parent,
|
||||||
HBCI_API *api,
|
HBCI_API *api,
|
||||||
GNCInteractor *interactor,
|
GNCInteractor *interactor,
|
||||||
const HBCI_Account *h_acc,
|
const HBCI_Account *h_acc,
|
||||||
const HBCI_Customer *customer,
|
const HBCI_Customer *customer,
|
||||||
GNC_HBCI_Transtype trans_type)
|
GNC_HBCI_Transtype trans_type,
|
||||||
|
GList **templ)
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
GladeXML *xml;
|
GladeXML *xml;
|
||||||
@ -48,7 +103,10 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
gint result;
|
gint result;
|
||||||
const HBCI_Bank *bank;
|
const HBCI_Bank *bank;
|
||||||
gboolean successful;
|
gboolean successful;
|
||||||
|
TransData td;
|
||||||
|
|
||||||
|
td.parent = parent;
|
||||||
|
td.templ = *templ;
|
||||||
g_assert (api);
|
g_assert (api);
|
||||||
g_assert (h_acc);
|
g_assert (h_acc);
|
||||||
g_assert (customer);
|
g_assert (customer);
|
||||||
@ -64,16 +122,10 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
|
|
||||||
{
|
{
|
||||||
GtkWidget *heading_label;
|
GtkWidget *heading_label;
|
||||||
GtkWidget *recp_name_entry;
|
|
||||||
GtkWidget *recp_account_entry;
|
|
||||||
GtkWidget *recp_bankcode_entry;
|
|
||||||
GtkWidget *recp_bankname_label;
|
|
||||||
GtkWidget *recp_name_heading;
|
GtkWidget *recp_name_heading;
|
||||||
GtkWidget *recp_account_heading;
|
GtkWidget *recp_account_heading;
|
||||||
GtkWidget *recp_bankcode_heading;
|
GtkWidget *recp_bankcode_heading;
|
||||||
GtkWidget *amount_hbox;
|
GtkWidget *amount_hbox;
|
||||||
GtkWidget *purpose_entry;
|
|
||||||
GtkWidget *purpose_cont_entry;
|
|
||||||
GtkWidget *orig_name_label;
|
GtkWidget *orig_name_label;
|
||||||
GtkWidget *orig_account_label;
|
GtkWidget *orig_account_label;
|
||||||
GtkWidget *orig_bankname_label;
|
GtkWidget *orig_bankname_label;
|
||||||
@ -82,31 +134,31 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
GtkWidget *orig_account_heading;
|
GtkWidget *orig_account_heading;
|
||||||
GtkWidget *orig_bankname_heading;
|
GtkWidget *orig_bankname_heading;
|
||||||
GtkWidget *orig_bankcode_heading;
|
GtkWidget *orig_bankcode_heading;
|
||||||
GtkWidget *amount_edit;
|
|
||||||
GtkWidget *exec_later_button;
|
GtkWidget *exec_later_button;
|
||||||
|
GtkWidget *add_templ_button;
|
||||||
|
|
||||||
g_assert
|
g_assert
|
||||||
(heading_label = glade_xml_get_widget (xml, "heading_label"));
|
(heading_label = glade_xml_get_widget (xml, "heading_label"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_name_entry = glade_xml_get_widget (xml, "recp_name_entry"));
|
(td.recp_name_entry = glade_xml_get_widget (xml, "recp_name_entry"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_name_heading = glade_xml_get_widget (xml, "recp_name_heading"));
|
(recp_name_heading = glade_xml_get_widget (xml, "recp_name_heading"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_account_entry = glade_xml_get_widget (xml, "recp_account_entry"));
|
(td.recp_account_entry = glade_xml_get_widget (xml, "recp_account_entry"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_account_heading = glade_xml_get_widget (xml, "recp_account_heading"));
|
(recp_account_heading = glade_xml_get_widget (xml, "recp_account_heading"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_bankcode_entry = glade_xml_get_widget (xml, "recp_bankcode_entry"));
|
(td.recp_bankcode_entry = glade_xml_get_widget (xml, "recp_bankcode_entry"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_bankcode_heading = glade_xml_get_widget (xml, "recp_bankcode_heading"));
|
(recp_bankcode_heading = glade_xml_get_widget (xml, "recp_bankcode_heading"));
|
||||||
g_assert
|
g_assert
|
||||||
(recp_bankname_label = glade_xml_get_widget (xml, "recp_bankname_label"));
|
(td.recp_bankname_label = glade_xml_get_widget (xml, "recp_bankname_label"));
|
||||||
g_assert
|
g_assert
|
||||||
(amount_hbox = glade_xml_get_widget (xml, "amount_hbox"));
|
(amount_hbox = glade_xml_get_widget (xml, "amount_hbox"));
|
||||||
g_assert
|
g_assert
|
||||||
(purpose_entry = glade_xml_get_widget (xml, "purpose_entry"));
|
(td.purpose_entry = glade_xml_get_widget (xml, "purpose_entry"));
|
||||||
g_assert
|
g_assert
|
||||||
(purpose_cont_entry = glade_xml_get_widget (xml, "purpose_cont_entry"));
|
(td.purpose_cont_entry = glade_xml_get_widget (xml, "purpose_cont_entry"));
|
||||||
g_assert
|
g_assert
|
||||||
(orig_name_label = glade_xml_get_widget (xml, "orig_name_label"));
|
(orig_name_label = glade_xml_get_widget (xml, "orig_name_label"));
|
||||||
g_assert
|
g_assert
|
||||||
@ -125,10 +177,14 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
(orig_bankcode_heading = glade_xml_get_widget (xml, "orig_bankcode_heading"));
|
(orig_bankcode_heading = glade_xml_get_widget (xml, "orig_bankcode_heading"));
|
||||||
g_assert
|
g_assert
|
||||||
(exec_later_button = glade_xml_get_widget (xml, "exec_later_button"));
|
(exec_later_button = glade_xml_get_widget (xml, "exec_later_button"));
|
||||||
|
g_assert
|
||||||
|
(td.template_option = glade_xml_get_widget (xml, "template_optionmenu"));
|
||||||
|
g_assert
|
||||||
|
(add_templ_button = glade_xml_get_widget (xml, "add_templ_button"));
|
||||||
|
|
||||||
amount_edit = gnc_amount_edit_new();
|
td.amount_edit = gnc_amount_edit_new();
|
||||||
gtk_box_pack_start_defaults(GTK_BOX(amount_hbox), amount_edit);
|
gtk_box_pack_start_defaults(GTK_BOX(amount_hbox), td.amount_edit);
|
||||||
gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (amount_edit),
|
gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (td.amount_edit),
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
/* Check for what kind of transaction this should be, and change
|
/* Check for what kind of transaction this should be, and change
|
||||||
@ -182,10 +238,22 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
gtk_label_set_text (GTK_LABEL (orig_bankcode_label),
|
gtk_label_set_text (GTK_LABEL (orig_bankcode_label),
|
||||||
HBCI_Bank_bankCode (bank));
|
HBCI_Bank_bankCode (bank));
|
||||||
|
|
||||||
|
/* fill OptionMenu for choosing a transaction template */
|
||||||
|
g_list_foreach(td.templ, fill_template_menu_func,
|
||||||
|
gtk_option_menu_get_menu
|
||||||
|
( GTK_OPTION_MENU (td.template_option)));
|
||||||
|
|
||||||
|
/* Connect signals */
|
||||||
|
gnc_option_menu_init_w_signal (td.template_option,
|
||||||
|
GTK_SIGNAL_FUNC(template_selection_cb),
|
||||||
|
&td);
|
||||||
|
gtk_signal_connect(GTK_OBJECT (add_templ_button), "clicked",
|
||||||
|
GTK_SIGNAL_FUNC(add_template_cb), &td);
|
||||||
|
|
||||||
/* Default button */
|
/* Default button */
|
||||||
gnome_dialog_set_default (GNOME_DIALOG (dialog), 0);
|
gnome_dialog_set_default (GNOME_DIALOG (dialog), 0);
|
||||||
|
|
||||||
gtk_widget_grab_focus (recp_name_entry);
|
gtk_widget_grab_focus (td.recp_name_entry);
|
||||||
|
|
||||||
/* Hide on close instead of destroy since we still need the values
|
/* Hide on close instead of destroy since we still need the values
|
||||||
from the boxes. */
|
from the boxes. */
|
||||||
@ -201,6 +269,8 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
/*result = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));*/
|
/*result = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));*/
|
||||||
/* printf("hbci_trans: result button was %d.\n", result); */
|
/* printf("hbci_trans: result button was %d.\n", result); */
|
||||||
|
|
||||||
|
*templ = td.templ;
|
||||||
|
|
||||||
/* Was cancel pressed or dialog closed? 0 == execute now, 1 ==
|
/* Was cancel pressed or dialog closed? 0 == execute now, 1 ==
|
||||||
scheduled for later execution (currently unimplemented) */
|
scheduled for later execution (currently unimplemented) */
|
||||||
if ((result != 0) && (result != 1)) {
|
if ((result != 0) && (result != 1)) {
|
||||||
@ -228,24 +298,24 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
|
|
||||||
HBCI_Transaction_setOtherCountryCode (trans, 280);
|
HBCI_Transaction_setOtherCountryCode (trans, 280);
|
||||||
HBCI_Transaction_setOtherBankCode
|
HBCI_Transaction_setOtherBankCode
|
||||||
(trans, gtk_entry_get_text (GTK_ENTRY (recp_bankcode_entry)));
|
(trans, gtk_entry_get_text (GTK_ENTRY (td.recp_bankcode_entry)));
|
||||||
/* printf("Got otherBankCode %s.\n",
|
/* printf("Got otherBankCode %s.\n",
|
||||||
HBCI_Transaction_otherBankCode (trans)); */
|
HBCI_Transaction_otherBankCode (trans)); */
|
||||||
HBCI_Transaction_setOtherAccountId
|
HBCI_Transaction_setOtherAccountId
|
||||||
(trans, gtk_entry_get_text (GTK_ENTRY (recp_account_entry)));
|
(trans, gtk_entry_get_text (GTK_ENTRY (td.recp_account_entry)));
|
||||||
/* printf("Got otherAccountId %s.\n",
|
/* printf("Got otherAccountId %s.\n",
|
||||||
HBCI_Transaction_otherAccountId (trans)); */
|
HBCI_Transaction_otherAccountId (trans)); */
|
||||||
HBCI_Transaction_addOtherName
|
HBCI_Transaction_addOtherName
|
||||||
(trans, gtk_entry_get_text (GTK_ENTRY (recp_name_entry)));
|
(trans, gtk_entry_get_text (GTK_ENTRY (td.recp_name_entry)));
|
||||||
|
|
||||||
HBCI_Transaction_addDescription
|
HBCI_Transaction_addDescription
|
||||||
(trans, gtk_entry_get_text (GTK_ENTRY (purpose_entry)));
|
(trans, gtk_entry_get_text (GTK_ENTRY (td.purpose_entry)));
|
||||||
HBCI_Transaction_addDescription
|
HBCI_Transaction_addDescription
|
||||||
(trans, gtk_entry_get_text (GTK_ENTRY (purpose_cont_entry)));
|
(trans, gtk_entry_get_text (GTK_ENTRY (td.purpose_cont_entry)));
|
||||||
|
|
||||||
HBCI_Transaction_setValue
|
HBCI_Transaction_setValue
|
||||||
(trans, HBCI_Value_new_double
|
(trans, HBCI_Value_new_double
|
||||||
(gnc_amount_edit_get_damount (GNC_AMOUNT_EDIT (amount_edit)), "EUR"));
|
(gnc_amount_edit_get_damount (GNC_AMOUNT_EDIT (td.amount_edit)), "EUR"));
|
||||||
/* FIXME: Replace "EUR" by account-dependent string here. */
|
/* FIXME: Replace "EUR" by account-dependent string here. */
|
||||||
/*printf("dialog-hbcitrans: Got value as %s .\n",
|
/*printf("dialog-hbcitrans: Got value as %s .\n",
|
||||||
HBCI_Value_toReadableString (HBCI_Transaction_value (trans)));*/
|
HBCI_Value_toReadableString (HBCI_Transaction_value (trans)));*/
|
||||||
@ -330,3 +400,93 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (dialog));
|
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||||
return trans;
|
return trans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Callbacks */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
static void fill_entry(const char *str, GtkWidget *entry) {
|
||||||
|
gtk_entry_set_text (GTK_ENTRY (entry), str ? str : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void template_selection_cb(GtkButton *b,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
TransData *td = user_data;
|
||||||
|
g_assert(td);
|
||||||
|
unsigned index = gnc_option_menu_get_active (td->template_option);
|
||||||
|
/*printf("template_selection_cd: %d is active \n", index);*/
|
||||||
|
if ((index > 0) && (index <= g_list_length(td->templ)))
|
||||||
|
{
|
||||||
|
GNCTransTempl *templ = g_list_nth_data(td->templ, index-1);
|
||||||
|
/*printf("template_selection_cd: using template %s \n",
|
||||||
|
gnc_trans_templ_get_name(templ));*/
|
||||||
|
|
||||||
|
fill_entry(gnc_trans_templ_get_recp_name(templ), td->recp_name_entry);
|
||||||
|
fill_entry(gnc_trans_templ_get_recp_account(templ), td->recp_account_entry);
|
||||||
|
fill_entry(gnc_trans_templ_get_recp_bankcode(templ), td->recp_bankcode_entry);
|
||||||
|
fill_entry(gnc_trans_templ_get_purpose(templ), td->purpose_entry);
|
||||||
|
fill_entry(gnc_trans_templ_get_purpose_cont(templ), td->purpose_cont_entry);
|
||||||
|
|
||||||
|
gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (td->amount_edit),
|
||||||
|
gnc_trans_templ_get_amount (templ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* -------------------------------------- */
|
||||||
|
/* Copied from window-help.c */
|
||||||
|
static void
|
||||||
|
goto_string_cb(char * string, gpointer data)
|
||||||
|
{
|
||||||
|
if(!data) return;
|
||||||
|
if(!string) {
|
||||||
|
*(char **)data = NULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
*(char **)data = g_strdup(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void add_template_cb(GtkButton *b,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
TransData *td = user_data;
|
||||||
|
GtkWidget *dlg;
|
||||||
|
char *name;
|
||||||
|
int retval = -1;
|
||||||
|
g_assert(td);
|
||||||
|
|
||||||
|
dlg = gnome_request_dialog(FALSE,
|
||||||
|
_("Enter name for new template:"), "", 250,
|
||||||
|
&goto_string_cb, &name, GTK_WINDOW(td->parent));
|
||||||
|
retval = gnome_dialog_run_and_close(GNOME_DIALOG(dlg));
|
||||||
|
|
||||||
|
if ((retval == 0) && name && (strlen(name) > 0)) {
|
||||||
|
GNCTransTempl *r;
|
||||||
|
/*printf("add_template_cb: adding template '%s'\n", name);*/
|
||||||
|
r = gnc_trans_templ_new_full
|
||||||
|
(name,
|
||||||
|
gtk_entry_get_text (GTK_ENTRY (td->recp_name_entry)),
|
||||||
|
gtk_entry_get_text (GTK_ENTRY (td->recp_account_entry)),
|
||||||
|
gtk_entry_get_text (GTK_ENTRY (td->recp_bankcode_entry)),
|
||||||
|
gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (td->amount_edit)),
|
||||||
|
gtk_entry_get_text (GTK_ENTRY (td->purpose_entry)),
|
||||||
|
gtk_entry_get_text (GTK_ENTRY (td->purpose_cont_entry)));
|
||||||
|
|
||||||
|
/* Append new template to the list. */
|
||||||
|
td->templ = g_list_append(td->templ, r);
|
||||||
|
|
||||||
|
/* Also append that template to the OptionMenu */
|
||||||
|
fill_template_menu_func(r,
|
||||||
|
gtk_option_menu_get_menu
|
||||||
|
( GTK_OPTION_MENU (td->template_option)));
|
||||||
|
/* the show_all is necessary since otherwise the new item doesn't show up */
|
||||||
|
gtk_widget_show_all (GTK_WIDGET (gtk_option_menu_get_menu
|
||||||
|
( GTK_OPTION_MENU (td->template_option))));
|
||||||
|
gnc_option_menu_init_w_signal (td->template_option,
|
||||||
|
GTK_SIGNAL_FUNC(template_selection_cb),
|
||||||
|
td);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,8 @@ gnc_hbci_trans (GtkWidget *parent,
|
|||||||
GNCInteractor *interactor,
|
GNCInteractor *interactor,
|
||||||
const HBCI_Account *h_acc,
|
const HBCI_Account *h_acc,
|
||||||
const HBCI_Customer *customer,
|
const HBCI_Customer *customer,
|
||||||
GNC_HBCI_Transtype type);
|
GNC_HBCI_Transtype type,
|
||||||
|
GList **templ);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1709,7 +1709,7 @@ Press 'Finish' now.</text>
|
|||||||
<widget>
|
<widget>
|
||||||
<class>GtkTable</class>
|
<class>GtkTable</class>
|
||||||
<name>table6</name>
|
<name>table6</name>
|
||||||
<rows>19</rows>
|
<rows>20</rows>
|
||||||
<columns>3</columns>
|
<columns>3</columns>
|
||||||
<homogeneous>False</homogeneous>
|
<homogeneous>False</homogeneous>
|
||||||
<row_spacing>0</row_spacing>
|
<row_spacing>0</row_spacing>
|
||||||
@ -2337,6 +2337,76 @@ Press 'Finish' now.</text>
|
|||||||
<class>Placeholder</class>
|
<class>Placeholder</class>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>hbox117</name>
|
||||||
|
<border_width>2</border_width>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>4</spacing>
|
||||||
|
<child>
|
||||||
|
<left_attach>0</left_attach>
|
||||||
|
<right_attach>3</right_attach>
|
||||||
|
<top_attach>19</top_attach>
|
||||||
|
<bottom_attach>20</bottom_attach>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<xexpand>False</xexpand>
|
||||||
|
<yexpand>True</yexpand>
|
||||||
|
<xshrink>False</xshrink>
|
||||||
|
<yshrink>False</yshrink>
|
||||||
|
<xfill>True</xfill>
|
||||||
|
<yfill>True</yfill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkButton</class>
|
||||||
|
<name>add_templ_button</name>
|
||||||
|
<border_width>2</border_width>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<label>Add current</label>
|
||||||
|
<relief>GTK_RELIEF_NORMAL</relief>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>False</fill>
|
||||||
|
<pack>GTK_PACK_END</pack>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkOptionMenu</class>
|
||||||
|
<name>template_optionmenu</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<items>-- No Template --
|
||||||
|
</items>
|
||||||
|
<initial_choice>0</initial_choice>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>False</fill>
|
||||||
|
<pack>GTK_PACK_END</pack>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>label8877442</name>
|
||||||
|
<label>Use Transaction Template</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>False</fill>
|
||||||
|
<pack>GTK_PACK_END</pack>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
#define HBCI_ACCOUNT_ID "account-id"
|
#define HBCI_ACCOUNT_ID "account-id"
|
||||||
#define HBCI_BANK_CODE "bank-code"
|
#define HBCI_BANK_CODE "bank-code"
|
||||||
#define HBCI_COUNTRY_CODE "country-code"
|
#define HBCI_COUNTRY_CODE "country-code"
|
||||||
#define HBCI_CONFIGFILE "config-filename"
|
|
||||||
#define HBCI_TRANS_RETRIEVAL "trans-retrieval"
|
#define HBCI_TRANS_RETRIEVAL "trans-retrieval"
|
||||||
|
|
||||||
/* Account */
|
/* Account */
|
||||||
@ -90,6 +89,9 @@ void gnc_hbci_set_account_trans_retrieval (Account *a, Timespec time)
|
|||||||
|
|
||||||
|
|
||||||
/* GNCBook */
|
/* GNCBook */
|
||||||
|
#define HBCI_CONFIGFILE "config-filename"
|
||||||
|
#define HBCI_TEMPLATES "template-list"
|
||||||
|
|
||||||
char *gnc_hbci_get_book_configfile (GNCBook *b)
|
char *gnc_hbci_get_book_configfile (GNCBook *b)
|
||||||
{
|
{
|
||||||
kvp_frame *frame = gnc_hbci_get_book_kvp (b);
|
kvp_frame *frame = gnc_hbci_get_book_kvp (b);
|
||||||
@ -103,6 +105,20 @@ void gnc_hbci_set_book_configfile (GNCBook *b, const char *filename)
|
|||||||
kvp_frame_set_slot_nc (frame, HBCI_CONFIGFILE, value);
|
kvp_frame_set_slot_nc (frame, HBCI_CONFIGFILE, value);
|
||||||
gnc_book_kvp_changed (b);
|
gnc_book_kvp_changed (b);
|
||||||
}
|
}
|
||||||
|
GList *gnc_hbci_get_book_template_list (GNCBook *b)
|
||||||
|
{
|
||||||
|
kvp_frame *frame = gnc_hbci_get_book_kvp (b);
|
||||||
|
kvp_value *value = kvp_frame_get_slot (frame, HBCI_TEMPLATES);
|
||||||
|
return kvp_value_get_glist (value);
|
||||||
|
}
|
||||||
|
void gnc_hbci_set_book_template_list (GNCBook *b, GList *template_list)
|
||||||
|
{
|
||||||
|
kvp_frame *frame = gnc_hbci_get_book_kvp (b);
|
||||||
|
kvp_value *value = kvp_value_new_glist_nc (template_list);
|
||||||
|
kvp_frame_set_slot_nc (frame, HBCI_TEMPLATES, value);
|
||||||
|
gnc_book_kvp_changed (b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* lowlevel */
|
/* lowlevel */
|
||||||
/* getters for kvp frame in book */
|
/* getters for kvp frame in book */
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#ifndef GNC_HBCI_KVP_H
|
#ifndef GNC_HBCI_KVP_H
|
||||||
#define GNC_HBCI_KVP_H
|
#define GNC_HBCI_KVP_H
|
||||||
|
|
||||||
//#include <libguile.h>
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include "kvp_frame.h"
|
#include "kvp_frame.h"
|
||||||
#include "Account.h"
|
#include "Account.h"
|
||||||
@ -70,6 +69,12 @@ char *gnc_hbci_get_book_configfile (GNCBook *b);
|
|||||||
* will be stored. The Book will be marked as "dirty". */
|
* will be stored. The Book will be marked as "dirty". */
|
||||||
void gnc_hbci_set_book_configfile (GNCBook *b, const char *filename);
|
void gnc_hbci_set_book_configfile (GNCBook *b, const char *filename);
|
||||||
|
|
||||||
|
/** Returns a non-copied pointer to the GList of kvp_frames which
|
||||||
|
* eventually are the template transactions, stored in the given
|
||||||
|
* book. */
|
||||||
|
GList *gnc_hbci_get_book_template_list (GNCBook *b);
|
||||||
|
void gnc_hbci_set_book_template_list (GNCBook *b, GList *template_list);
|
||||||
|
|
||||||
/* lowlevel */
|
/* lowlevel */
|
||||||
|
|
||||||
/* internal getter for kvp frame in book */
|
/* internal getter for kvp frame in book */
|
||||||
|
273
src/import-export/hbci/gnc-hbci-trans-templ.c
Normal file
273
src/import-export/hbci/gnc-hbci-trans-templ.c
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
/********************************************************************\
|
||||||
|
* gnc-hbci-trans-template.c -- Templates for HBCI transactions *
|
||||||
|
* Copyright (C) 2003 Christian Stimming *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License as *
|
||||||
|
* published by the Free Software Foundation; either version 2 of *
|
||||||
|
* the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License*
|
||||||
|
* along with this program; if not, contact: *
|
||||||
|
* *
|
||||||
|
* Free Software Foundation Voice: +1-617-542-5942 *
|
||||||
|
* 59 Temple Place - Suite 330 Fax: +1-617-542-2652 *
|
||||||
|
* Boston, MA 02111-1307, USA gnu@gnu.org *
|
||||||
|
\********************************************************************/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "gnc-hbci-trans-templ.h"
|
||||||
|
#include <gnome.h>
|
||||||
|
|
||||||
|
struct _trans_data
|
||||||
|
{
|
||||||
|
/* Name of this Template */
|
||||||
|
gchar *name;
|
||||||
|
|
||||||
|
/* Recipient */
|
||||||
|
gchar *recp_name;
|
||||||
|
gchar *recp_account;
|
||||||
|
gchar *recp_bankcode;
|
||||||
|
|
||||||
|
/* Amount */
|
||||||
|
gnc_numeric amount;
|
||||||
|
|
||||||
|
/* Purpose, description */
|
||||||
|
gchar *purpose;
|
||||||
|
gchar *purpose_cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GNCTransTempl *gnc_trans_templ_new()
|
||||||
|
{
|
||||||
|
GNCTransTempl *r = g_new0(GNCTransTempl, 1);
|
||||||
|
r->amount = gnc_numeric_zero();
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
GNCTransTempl *gnc_trans_templ_new_full(const char *name,
|
||||||
|
const char *recp_name,
|
||||||
|
const char *recp_account,
|
||||||
|
const char *recp_bankcode,
|
||||||
|
gnc_numeric amount,
|
||||||
|
const char *purpose,
|
||||||
|
const char *purpose_cont)
|
||||||
|
{
|
||||||
|
GNCTransTempl *r = g_new0(GNCTransTempl, 1);
|
||||||
|
r->name = g_strdup(name);
|
||||||
|
r->recp_name = g_strdup(recp_name);
|
||||||
|
r->recp_account = g_strdup(recp_account);
|
||||||
|
r->recp_bankcode = g_strdup(recp_bankcode);
|
||||||
|
r->amount = amount;
|
||||||
|
r->purpose = g_strdup(purpose);
|
||||||
|
r->purpose_cont = g_strdup(purpose_cont);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gnc_trans_templ_delete(GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
if (!t) return;
|
||||||
|
if (t->name) g_free(t->name);
|
||||||
|
if (t->recp_name) g_free(t->recp_name);
|
||||||
|
if (t->recp_account) g_free(t->recp_account);
|
||||||
|
if (t->recp_bankcode) g_free(t->recp_bankcode);
|
||||||
|
if (t->purpose) g_free(t->purpose);
|
||||||
|
if (t->purpose_cont) g_free(t->purpose_cont);
|
||||||
|
g_free(t);
|
||||||
|
}
|
||||||
|
static void delete_glist_func(gpointer data, gpointer user_data)
|
||||||
|
{
|
||||||
|
GNCTransTempl *t = data;
|
||||||
|
gnc_trans_templ_delete(t);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_delete_glist(GList *l)
|
||||||
|
{
|
||||||
|
g_list_foreach(l, delete_glist_func, NULL);
|
||||||
|
g_list_free(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* kvp_frame slot names */
|
||||||
|
#define TT_NAME "name"
|
||||||
|
#define TT_RNAME "rnam"
|
||||||
|
#define TT_RACC "racc"
|
||||||
|
#define TT_RBCODE "rbcd"
|
||||||
|
#define TT_PURPOS "purp"
|
||||||
|
#define TT_PURPOSCT "purc"
|
||||||
|
#define TT_AMOUNT "amou"
|
||||||
|
|
||||||
|
/** Constructor from a kvp_frame */
|
||||||
|
GNCTransTempl *gnc_trans_templ_from_kvp(kvp_frame *k)
|
||||||
|
{
|
||||||
|
GNCTransTempl *res = gnc_trans_templ_new();
|
||||||
|
g_assert(k);
|
||||||
|
|
||||||
|
res->name = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_NAME)));
|
||||||
|
res->recp_name = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_RNAME)));
|
||||||
|
res->recp_account = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_RACC)));
|
||||||
|
res->recp_bankcode = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_RBCODE)));
|
||||||
|
res->purpose = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_PURPOS)));
|
||||||
|
res->purpose_cont = g_strdup(kvp_value_get_string
|
||||||
|
(kvp_frame_get_slot(k, TT_PURPOSCT)));
|
||||||
|
res->amount = kvp_value_get_numeric(kvp_frame_get_slot(k, TT_AMOUNT));
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a kvp_frame from this TransTempl */
|
||||||
|
kvp_frame *gnc_trans_templ_to_kvp(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
kvp_frame *k = kvp_frame_new();
|
||||||
|
g_assert(t);
|
||||||
|
|
||||||
|
kvp_frame_set_slot(k, TT_NAME, kvp_value_new_string(t->name));
|
||||||
|
kvp_frame_set_slot(k, TT_RNAME, kvp_value_new_string(t->recp_name));
|
||||||
|
kvp_frame_set_slot(k, TT_RACC, kvp_value_new_string(t->recp_account));
|
||||||
|
kvp_frame_set_slot(k, TT_RBCODE, kvp_value_new_string(t->recp_bankcode));
|
||||||
|
kvp_frame_set_slot(k, TT_PURPOS, kvp_value_new_string(t->purpose));
|
||||||
|
kvp_frame_set_slot(k, TT_PURPOSCT, kvp_value_new_string(t->purpose_cont));
|
||||||
|
kvp_frame_set_slot(k, TT_AMOUNT, kvp_value_new_gnc_numeric(t->amount));
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a GList of GNCTransTempl from a GList of kvp_values which
|
||||||
|
in turn contain a kvp_frame. */
|
||||||
|
static void glist_from_kvp_func(gpointer data, gpointer user_data)
|
||||||
|
{
|
||||||
|
GList **tmp = user_data;
|
||||||
|
GList *res = *tmp;
|
||||||
|
kvp_value *k = data;
|
||||||
|
*tmp = g_list_append(res, gnc_trans_templ_from_kvp(kvp_value_get_frame(k)));
|
||||||
|
}
|
||||||
|
/** Creates a GList of GNCTransTempl from a GList of kvp_values which
|
||||||
|
in turn contain a kvp_frame. */
|
||||||
|
GList *gnc_trans_templ_glist_from_kvp_glist(GList *v)
|
||||||
|
{
|
||||||
|
GList *res = NULL;
|
||||||
|
if (!v) return NULL;
|
||||||
|
|
||||||
|
g_list_foreach (v, glist_from_kvp_func, &res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Creates a GList of kvp_value (which in turn contain a kvp_frame)
|
||||||
|
from a GList of GNCTransTempl. */
|
||||||
|
static void glist_to_kvp_func(gpointer data, gpointer user_data)
|
||||||
|
{
|
||||||
|
GList **tmp = user_data;
|
||||||
|
GList *res = *tmp;
|
||||||
|
GNCTransTempl *g = data;
|
||||||
|
*tmp = g_list_append(res,
|
||||||
|
kvp_value_new_frame_nc(gnc_trans_templ_to_kvp(g)));
|
||||||
|
}
|
||||||
|
/** Creates a GList of kvp_value (which in turn contain a kvp_frame)
|
||||||
|
from a GList of GNCTransTempl. */
|
||||||
|
GList *gnc_trans_templ_kvp_glist_from_glist(GList *k)
|
||||||
|
{
|
||||||
|
GList *res = NULL;
|
||||||
|
if (!k) return NULL;
|
||||||
|
|
||||||
|
g_list_foreach (k, glist_to_kvp_func, &res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Value accessors.
|
||||||
|
*
|
||||||
|
* Gee, how I *HATE* OO programming in C! This STINKS! barf barf barf */
|
||||||
|
const char *gnc_trans_templ_get_name(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->name;
|
||||||
|
}
|
||||||
|
const char *gnc_trans_templ_get_recp_name(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->recp_name;
|
||||||
|
}
|
||||||
|
const char *gnc_trans_templ_get_recp_account(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->recp_account;
|
||||||
|
}
|
||||||
|
const char *gnc_trans_templ_get_recp_bankcode(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->recp_bankcode;
|
||||||
|
}
|
||||||
|
gnc_numeric gnc_trans_templ_get_amount(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->amount;
|
||||||
|
}
|
||||||
|
const char *gnc_trans_templ_get_purpose(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->purpose;
|
||||||
|
}
|
||||||
|
const char *gnc_trans_templ_get_purpose_cont(const GNCTransTempl *t)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
return t->purpose_cont;
|
||||||
|
}
|
||||||
|
/** value storing. This sucks even more. barf barf barf again */
|
||||||
|
void gnc_trans_templ_set_amount(GNCTransTempl *t, gnc_numeric n)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
t->amount = n;
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_name(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->name)
|
||||||
|
g_free(t->name);
|
||||||
|
t->name = g_strdup(c);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_recp_name(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->recp_name)
|
||||||
|
g_free(t->recp_name);
|
||||||
|
t->recp_name = g_strdup(c);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_recp_account(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->recp_account)
|
||||||
|
g_free(t->recp_account);
|
||||||
|
t->recp_account = g_strdup(c);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_recp_bankcode(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->recp_bankcode)
|
||||||
|
g_free(t->recp_bankcode);
|
||||||
|
t->recp_bankcode = g_strdup(c);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_purpose(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->purpose)
|
||||||
|
g_free(t->purpose);
|
||||||
|
t->purpose = g_strdup(c);
|
||||||
|
}
|
||||||
|
void gnc_trans_templ_set_purpose_cont(GNCTransTempl *t, const char *c)
|
||||||
|
{
|
||||||
|
g_assert(t);
|
||||||
|
if (t->purpose_cont)
|
||||||
|
g_free(t->purpose_cont);
|
||||||
|
t->purpose_cont = g_strdup(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
90
src/import-export/hbci/gnc-hbci-trans-templ.h
Normal file
90
src/import-export/hbci/gnc-hbci-trans-templ.h
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/********************************************************************\
|
||||||
|
* gnc-hbci-trans-templ.h -- Templates for HBCI transactions *
|
||||||
|
* Copyright (C) 2003 Christian Stimming *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License as *
|
||||||
|
* published by the Free Software Foundation; either version 2 of *
|
||||||
|
* the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License*
|
||||||
|
* along with this program; if not, contact: *
|
||||||
|
* *
|
||||||
|
* Free Software Foundation Voice: +1-617-542-5942 *
|
||||||
|
* 59 Temple Place - Suite 330 Fax: +1-617-542-2652 *
|
||||||
|
* Boston, MA 02111-1307, USA gnu@gnu.org *
|
||||||
|
\********************************************************************/
|
||||||
|
|
||||||
|
/** @file gnc-hbci-trans-templ.h Templates for HBCI transactions */
|
||||||
|
|
||||||
|
#include "gnc-numeric.h"
|
||||||
|
#include "kvp_frame.h"
|
||||||
|
|
||||||
|
/** A template for a HBCI transaction */
|
||||||
|
typedef struct _trans_data GNCTransTempl;
|
||||||
|
|
||||||
|
/** @name Constructor */
|
||||||
|
/*@{*/
|
||||||
|
GNCTransTempl *gnc_trans_templ_new(void);
|
||||||
|
GNCTransTempl *gnc_trans_templ_new_full(const char *name,
|
||||||
|
const char *recp_name,
|
||||||
|
const char *recp_account,
|
||||||
|
const char *recp_bankcode,
|
||||||
|
gnc_numeric amount,
|
||||||
|
const char *purpose,
|
||||||
|
const char *purpose_cont);
|
||||||
|
|
||||||
|
void gnc_trans_templ_delete(GNCTransTempl *t);
|
||||||
|
void gnc_trans_templ_delete_glist(GList *l);
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/** @name Serialization -- to kvp_frame and back */
|
||||||
|
/*@{*/
|
||||||
|
/** Constructor from a kvp_frame (the kvp_frame is left unchanged) */
|
||||||
|
GNCTransTempl *gnc_trans_templ_from_kvp(kvp_frame *k);
|
||||||
|
/** Creates a kvp_frame from this TransTempl */
|
||||||
|
kvp_frame *gnc_trans_templ_to_kvp(const GNCTransTempl *t);
|
||||||
|
|
||||||
|
/** Creates a GList of GNCTransTempl from a GList of kvp_values which
|
||||||
|
in turn contain a kvp_frame. */
|
||||||
|
GList *gnc_trans_templ_glist_from_kvp_glist(GList *v);
|
||||||
|
/** Creates a GList of kvp_value (which in turn contain a kvp_frame)
|
||||||
|
from a GList of GNCTransTempl. */
|
||||||
|
GList *gnc_trans_templ_kvp_glist_from_glist(GList *k);
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/** @name GNCTransTempl value access */
|
||||||
|
/*@{*/
|
||||||
|
const char *gnc_trans_templ_get_name(const GNCTransTempl *t);
|
||||||
|
const char *gnc_trans_templ_get_recp_name(const GNCTransTempl *t);
|
||||||
|
const char *gnc_trans_templ_get_recp_account(const GNCTransTempl *t);
|
||||||
|
const char *gnc_trans_templ_get_recp_bankcode(const GNCTransTempl *t);
|
||||||
|
|
||||||
|
/** Amount */
|
||||||
|
gnc_numeric gnc_trans_templ_get_amount(const GNCTransTempl *t);
|
||||||
|
|
||||||
|
/** Purpose, description */
|
||||||
|
const char *gnc_trans_templ_get_purpose(const GNCTransTempl *t);
|
||||||
|
const char *gnc_trans_templ_get_purpose_cont(const GNCTransTempl *t);
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
/** @name GNCTransTempl value storing */
|
||||||
|
/*@{*/
|
||||||
|
void gnc_trans_templ_set_name(GNCTransTempl *t, const char *);
|
||||||
|
void gnc_trans_templ_set_recp_name(GNCTransTempl *t, const char *);
|
||||||
|
void gnc_trans_templ_set_recp_account(GNCTransTempl *t, const char *);
|
||||||
|
void gnc_trans_templ_set_recp_bankcode(GNCTransTempl *t, const char *);
|
||||||
|
|
||||||
|
/** Amount */
|
||||||
|
void gnc_trans_templ_set_amount(GNCTransTempl *t, gnc_numeric );
|
||||||
|
|
||||||
|
/** Purpose, description */
|
||||||
|
void gnc_trans_templ_set_purpose(GNCTransTempl *t, const char *);
|
||||||
|
void gnc_trans_templ_set_purpose_cont(GNCTransTempl *t, const char *);
|
||||||
|
/*@}*/
|
||||||
|
|
@ -34,7 +34,8 @@
|
|||||||
|
|
||||||
#include "hbci-interaction.h"
|
#include "hbci-interaction.h"
|
||||||
#include "gnc-hbci-utils.h"
|
#include "gnc-hbci-utils.h"
|
||||||
|
#include "gnc-hbci-trans-templ.h"
|
||||||
|
#include "gnc-hbci-kvp.h"
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -91,10 +92,35 @@ gnc_hbci_maketrans (GtkWidget *parent, Account *gnc_acc,
|
|||||||
HBCI_Customer_custId ((HBCI_Customer *)customer));*/
|
HBCI_Customer_custId ((HBCI_Customer *)customer));*/
|
||||||
|
|
||||||
{
|
{
|
||||||
|
GList *template_list =
|
||||||
|
gnc_trans_templ_glist_from_kvp_glist
|
||||||
|
( gnc_hbci_get_book_template_list
|
||||||
|
( xaccAccountGetBook(gnc_acc)));
|
||||||
|
unsigned nr_templates = g_list_length(template_list);
|
||||||
|
|
||||||
/* Now open the HBCI_trans_dialog. */
|
/* Now open the HBCI_trans_dialog. */
|
||||||
HBCI_Transaction *h_trans = gnc_hbci_trans (parent, api, interactor,
|
HBCI_Transaction *h_trans = gnc_hbci_trans (parent, api, interactor,
|
||||||
h_acc, customer,
|
h_acc, customer,
|
||||||
trans_type);
|
trans_type, &template_list);
|
||||||
|
|
||||||
|
/* New templates? If yes, store them */
|
||||||
|
if (nr_templates < g_list_length(template_list)) {
|
||||||
|
if (h_trans || (gnc_verify_dialog_parented
|
||||||
|
(parent,
|
||||||
|
FALSE,
|
||||||
|
_("You have created a new online transfer template, but \n"
|
||||||
|
"you cancelled the transfer dialog. Do you nevertheless \n"
|
||||||
|
"want to store the new online transfer template?")))) {
|
||||||
|
GList *kvp_list = gnc_trans_templ_kvp_glist_from_glist (template_list);
|
||||||
|
/*printf ("Now having %d templates. List: '%s'\n",
|
||||||
|
g_list_length(template_list),
|
||||||
|
kvp_value_glist_to_string(kvp_list));*/
|
||||||
|
gnc_hbci_set_book_template_list
|
||||||
|
(xaccAccountGetBook(gnc_acc), kvp_list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gnc_trans_templ_delete_glist (template_list);
|
||||||
|
|
||||||
if (!h_trans)
|
if (!h_trans)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user