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