r17210 - gnucash/branches/aqbanking3/src/import-export/aqbanking - Improve check for the availability of a txn job before letting the user enter it.
Andreas Köhler
andi5 at cvs.gnucash.org
Tue Jun 10 17:33:07 EDT 2008
Author: andi5
Date: 2008-06-10 17:33:07 -0400 (Tue, 10 Jun 2008)
New Revision: 17210
Trac: http://svn.gnucash.org/trac/changeset/17210
Modified:
gnucash/branches/aqbanking3/src/import-export/aqbanking/dialog-ab-trans.c
Log:
Improve check for the availability of a txn job before letting the user enter it.
Modified: gnucash/branches/aqbanking3/src/import-export/aqbanking/dialog-ab-trans.c
===================================================================
--- gnucash/branches/aqbanking3/src/import-export/aqbanking/dialog-ab-trans.c 2008-06-10 16:50:35 UTC (rev 17209)
+++ gnucash/branches/aqbanking3/src/import-export/aqbanking/dialog-ab-trans.c 2008-06-10 21:33:07 UTC (rev 17210)
@@ -58,6 +58,8 @@
GtkTreeIter *iter, gpointer user_data);
static gboolean get_templ_helper(GtkTreeModel *model, GtkTreePath *path,
GtkTreeIter *iter, gpointer data);
+static AB_JOB *get_available_empty_job(AB_ACCOUNT *ab_acc,
+ GncABTransType trans_type);
void dat_bankcode_changed_cb(GtkEditable *editable, gpointer user_data);
void templ_list_row_activated_cb(GtkTreeView *view, GtkTreePath *path,
@@ -403,11 +405,10 @@
gchar *purpose;
gchar *othername;
- job = AB_JobSingleTransfer_new(td->ab_acc);
- if (!job || AB_Job_CheckAvailability(job, 0)) {
- if (job) AB_Job_free(job);
- g_warning("gnc_ab_getbalance: JobGetBalance not available for this "
- "account");
+ /* Check whether the account supports this job */
+ job = get_available_empty_job(td->ab_acc, td->trans_type);
+ if (!job) {
+ g_warning("gnc_ab_trans_dialog_run_until_ok: Oops, job not available");
return GTK_RESPONSE_CANCEL;
}
@@ -603,20 +604,11 @@
return td->ab_trans;
}
-AB_JOB *
-gnc_ab_trans_dialog_get_job(const GncABTransDialog *td)
+static AB_JOB *
+get_available_empty_job(AB_ACCOUNT *ab_acc, GncABTransType trans_type)
{
- g_return_val_if_fail(td, NULL);
- return gnc_ab_get_trans_job(td->ab_acc, td->ab_trans, td->trans_type);
-}
-
-AB_JOB *gnc_ab_get_trans_job(AB_ACCOUNT *ab_acc, const AB_TRANSACTION *ab_trans,
- GncABTransType trans_type)
-{
AB_JOB *job;
- g_return_val_if_fail(ab_acc && ab_trans, NULL);
-
switch (trans_type) {
case SINGLE_DEBITNOTE:
job = AB_JobSingleDebitNote_new(ab_acc);
@@ -629,21 +621,42 @@
job = AB_JobSingleTransfer_new(ab_acc);
};
- if (!job || AB_Job_CheckAvailability(job, 0))
+ if (!job || AB_Job_CheckAvailability(job, 0)) {
+ if (job) AB_Job_free(job);
return NULL;
+ }
+ return job;
+}
- switch (trans_type) {
- case SINGLE_DEBITNOTE:
- AB_JobSingleDebitNote_SetTransaction(job, ab_trans);
- break;
- case SINGLE_INTERNAL_TRANSFER:
- AB_JobInternalTransfer_SetTransaction(job, ab_trans);
- break;
- case SINGLE_TRANSFER:
- default:
- AB_JobSingleTransfer_SetTransaction(job, ab_trans);
- };
+AB_JOB *
+gnc_ab_trans_dialog_get_job(const GncABTransDialog *td)
+{
+ g_return_val_if_fail(td, NULL);
+ return gnc_ab_get_trans_job(td->ab_acc, td->ab_trans, td->trans_type);
+}
+AB_JOB *
+gnc_ab_get_trans_job(AB_ACCOUNT *ab_acc, const AB_TRANSACTION *ab_trans,
+ GncABTransType trans_type)
+{
+ AB_JOB *job;
+
+ g_return_val_if_fail(ab_acc && ab_trans, NULL);
+
+ job = get_available_empty_job(ab_acc, trans_type);
+ if (job) {
+ switch (trans_type) {
+ case SINGLE_DEBITNOTE:
+ AB_JobSingleDebitNote_SetTransaction(job, ab_trans);
+ break;
+ case SINGLE_INTERNAL_TRANSFER:
+ AB_JobInternalTransfer_SetTransaction(job, ab_trans);
+ break;
+ case SINGLE_TRANSFER:
+ default:
+ AB_JobSingleTransfer_SetTransaction(job, ab_trans);
+ };
+ }
return job;
}
More information about the gnucash-changes
mailing list