[Gnucash-changes] Add sanity checks and ask user when there are no purpose lines.

Christian Stimming cstim at cvs.gnucash.org
Mon May 23 16:12:42 EDT 2005


Log Message:
-----------
Add sanity checks and
ask user when there are no purpose lines.

2005-05-23  Christian Stimming  <stimming at tuhh.de>

	* src/import-export/hbci/dialog-hbcitrans.c: Add sanity checks and
	ask user when there are no purpose lines.

Tags:
----
gnucash-1-8-branch

Modified Files:
--------------
    gnucash/po:
        de.po
    gnucash:
        ChangeLog
    gnucash/src/import-export/hbci:
        dialog-hbcitrans.c
        gnc-hbci-utils.c
        gnc-hbci-utils.h

Revision Data
-------------
Index: de.po
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/po/de.po,v
retrieving revision 1.147.2.56
retrieving revision 1.147.2.57
diff -Lpo/de.po -Lpo/de.po -u -r1.147.2.56 -r1.147.2.57
--- po/de.po
+++ po/de.po
@@ -10,8 +10,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-05-06 23:24+0200\n"
-"PO-Revision-Date: 2005-05-06 23:26+0200\n"
+"POT-Creation-Date: 2005-05-23 22:16+0200\n"
+"PO-Revision-Date: 2005-05-23 22:18+0200\n"
 "Last-Translator: Christian Stimming <stimming at tuhh.de>\n"
 "Language-Team: German <de at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -2685,7 +2685,7 @@
 "Fehler aufgetreten beim Speichern eines Kontos:\n"
 "%d: %s"
 
-#: src/engine/Account.c:2513 src/import-export/hbci/gnc-hbci-utils.c:607
+#: src/engine/Account.c:2513 src/import-export/hbci/gnc-hbci-utils.c:622
 #: intl-scm/guile-strings.c:107 intl-scm/guile-strings.c:1882
 msgid "Bank"
 msgstr "Bank"
@@ -3571,7 +3571,7 @@
 #: src/import-export/generic-import.glade:161
 #: src/import-export/generic-import.glade:389
 #: src/import-export/generic-import.glade:899
-#: src/import-export/hbci/gnc-hbci-utils.c:606
+#: src/import-export/hbci/gnc-hbci-utils.c:621
 #: src/import-export/qif-import/qif.glade:125
 #: src/register/ledger-core/split-register-model.c:191
 #: intl-scm/guile-strings.c:2312 intl-scm/guile-strings.c:2432
@@ -7300,7 +7300,7 @@
 msgid "Please choose an AqBanking backend to be configured"
 msgstr "Wählen Sie das Modul von AqBanking, das Sie einrichten möchten."
 
-#: src/import-export/hbci/druid-hbci-initial.c:609
+#: src/import-export/hbci/druid-hbci-initial.c:606
 #, c-format
 msgid ""
 "The external program \"%s Setup Wizard\" returned a nonzero \n"
@@ -7316,7 +7316,7 @@
 "erfolgreich aufgerufen worden ist. Bitte versuchen Sie erneut, \n"
 "den %s Einrichtungs-Assistent korrekt auszuführen."
 
-#: src/import-export/hbci/druid-hbci-initial.c:622
+#: src/import-export/hbci/druid-hbci-initial.c:619
 #, c-format
 msgid ""
 "The external program \"%s Setup Wizard\" has not been found. \n"
@@ -7451,21 +7451,21 @@
 "Ihr Sicherheitsmedium wird nicht unterstützt. Es konnte kein passendes\n"
 "Plugin für dieses Medium gefunden werden. Aktion wird abgebrochen."
 
-#: src/import-export/hbci/gnc-hbci-utils.c:575 intl-scm/guile-strings.c:3576
+#: src/import-export/hbci/gnc-hbci-utils.c:565 intl-scm/guile-strings.c:3576
 #: intl-scm/guile-strings.c:3598
 msgid "Unspecified"
 msgstr "Nicht spezifiziert"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:594
-#: src/import-export/hbci/gnc-hbci-utils.c:596
+#: src/import-export/hbci/gnc-hbci-utils.c:609
+#: src/import-export/hbci/gnc-hbci-utils.c:611
 msgid "unknown"
 msgstr "unbekannt"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:689
+#: src/import-export/hbci/gnc-hbci-utils.c:704
 msgid "Choose HBCI bank"
 msgstr "HBCI Bank auswählen"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:690
+#: src/import-export/hbci/gnc-hbci-utils.c:705
 msgid ""
 "More than one HBCI bank is available for \n"
 "the requested operation. Please choose \n"
@@ -7474,17 +7474,17 @@
 "Für die gewünschte Operation stehen mehr als eine HBCI Bank zur\n"
 "Verfügung. Bitte wählen Sie, welche benutzt werden soll."
 
-#: src/import-export/hbci/gnc-hbci-utils.c:759
-#: src/import-export/hbci/gnc-hbci-utils.c:835
+#: src/import-export/hbci/gnc-hbci-utils.c:774
+#: src/import-export/hbci/gnc-hbci-utils.c:850
 #, c-format
 msgid "%s (%s) at bank %s (%s)"
 msgstr "%s (%s) bei Bank %s (BLZ %s)"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:769
+#: src/import-export/hbci/gnc-hbci-utils.c:784
 msgid "Choose HBCI customer"
 msgstr "HBCI Kundennummer wählen"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:770
+#: src/import-export/hbci/gnc-hbci-utils.c:785
 msgid ""
 "More than one HBCI customer is available for \n"
 "the requested operation. Please choose \n"
@@ -7494,11 +7494,11 @@
 "Verfügung, unterschieden nach Kundennummer. Bitte wählen Sie, welcher\n"
 "benutzt werden soll."
 
-#: src/import-export/hbci/gnc-hbci-utils.c:845
+#: src/import-export/hbci/gnc-hbci-utils.c:860
 msgid "Choose HBCI user"
 msgstr "HBCI Benutzerkennung wählen"
 
-#: src/import-export/hbci/gnc-hbci-utils.c:846
+#: src/import-export/hbci/gnc-hbci-utils.c:861
 msgid ""
 "More than one HBCI user is available for \n"
 "the requested operation. Please choose \n"
@@ -7597,8 +7597,8 @@
 msgstr "BLZ des Auftraggebers"
 
 #: src/import-export/hbci/dialog-hbcitrans.c:370
-#: src/import-export/hbci/dialog-hbcitrans.c:798
-#: src/import-export/hbci/dialog-hbcitrans.c:807
+#: src/import-export/hbci/dialog-hbcitrans.c:819
+#: src/import-export/hbci/dialog-hbcitrans.c:828
 msgid "(unknown)"
 msgstr "(unbekannt)"
 
@@ -7620,7 +7620,20 @@
 "Dies ergibt keinen zulässigen Zahlungsauftrag. Wollen Sie den Auftrag\n"
 "erneut eingeben?"
 
-#: src/import-export/hbci/dialog-hbcitrans.c:628
+#: src/import-export/hbci/dialog-hbcitrans.c:516
+msgid ""
+"You did not enter any transaction purpose. A purpose is \n"
+"required for an online transfer.\n"
+"\n"
+"Do you want to enter the job again?"
+msgstr ""
+"Sie haben keinen Verwendungszweck eingegeben. Für einen\n"
+"Überweisungsauftrag ist die Eingabe eines Verwendungszweck \n"
+"erforderlich.\n"
+"\n"
+"Wollen Sie den Auftrag erneut eingeben?"
+
+#: src/import-export/hbci/dialog-hbcitrans.c:649
 #, c-format
 msgid ""
 "The internal check of the destination account number '%s' \n"
@@ -7633,7 +7646,7 @@
 "einen Fehler enthält. Wollen Sie den Auftrag trotzdem mit dieser\n"
 "Kontonummer abschicken?"
 
-#: src/import-export/hbci/dialog-hbcitrans.c:709
+#: src/import-export/hbci/dialog-hbcitrans.c:730
 msgid ""
 "The job was sent to the bank successfully, but the \n"
 "bank is refusing to execute the job. Please check \n"
@@ -7651,15 +7664,15 @@
 "\n"
 "Wollen Sie den Auftrag erneut eingeben?"
 
-#: src/import-export/hbci/dialog-hbcitrans.c:839
+#: src/import-export/hbci/dialog-hbcitrans.c:860
 msgid "Enter name for new template:"
 msgstr "Bitte geben Sie einen Namen für die neue Überweisungsvorlage ein:"
 
-#: src/import-export/hbci/dialog-hbcitrans.c:961
+#: src/import-export/hbci/dialog-hbcitrans.c:982
 msgid "Do you really want to sort the list of templates?"
 msgstr "Wollen Sie die Liste der Vorlagen wirklich sortieren?"
 
-#: src/import-export/hbci/dialog-hbcitrans.c:997
+#: src/import-export/hbci/dialog-hbcitrans.c:1018
 #, c-format
 msgid "Do you really want to delete the template '%s'?"
 msgstr "Wollen Sie die Vorlage »%s« wirklich löschen?"
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1461.2.412
retrieving revision 1.1461.2.413
diff -LChangeLog -LChangeLog -u -r1.1461.2.412 -r1.1461.2.413
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,8 @@
+2005-05-23  Christian Stimming  <stimming at tuhh.de>
+
+	* src/import-export/hbci/dialog-hbcitrans.c: Add sanity checks and
+	ask user when there are no purpose lines.
+
 2005-05-06  Christian Stimming  <stimming at tuhh.de>
 
 	* src/import-export/hbci/druid-hbci-initial.c (on_aqhbci_button):
Index: gnc-hbci-utils.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/hbci/gnc-hbci-utils.h,v
retrieving revision 1.12.2.6
retrieving revision 1.12.2.7
diff -Lsrc/import-export/hbci/gnc-hbci-utils.h -Lsrc/import-export/hbci/gnc-hbci-utils.h -u -r1.12.2.6 -r1.12.2.7
--- src/import-export/hbci/gnc-hbci-utils.h
+++ src/import-export/hbci/gnc-hbci-utils.h
@@ -109,6 +109,10 @@
  * string must be g_free'd by the caller. */
 char *gnc_hbci_memo_tognc (const AB_TRANSACTION *h_trans);
 
+/* Retrieve the merged purpose fields from the transaction. The
+ * returned string must be g_free'd by the caller. If there was no
+ * purpose, an empty (but allocated) string is returned. */
+char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans);
 /** Return the first customer that can act on the specified account,
     or NULL if none was found (and an error message is printed on
     stdout). */
Index: dialog-hbcitrans.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/hbci/dialog-hbcitrans.c,v
retrieving revision 1.9.2.22
retrieving revision 1.9.2.23
diff -Lsrc/import-export/hbci/dialog-hbcitrans.c -Lsrc/import-export/hbci/dialog-hbcitrans.c -u -r1.9.2.22 -r1.9.2.23
--- src/import-export/hbci/dialog-hbcitrans.c
+++ src/import-export/hbci/dialog-hbcitrans.c
@@ -504,6 +504,27 @@
       continue;
     } /* check Transaction_value */
 
+    {
+      char *purpose = gnc_hbci_getpurpose (td->hbci_trans);
+      printf ("%d: %s\n", strlen(purpose), purpose);
+      if (strlen(purpose) == 0) {
+	gtk_widget_show_all (td->dialog); 
+	values_ok = !gnc_verify_dialog_parented
+	  (GTK_WIDGET (td->dialog),
+	   TRUE,
+	   "%s",
+	   _("You did not enter any transaction purpose. A purpose is \n"
+	     "required for an online transfer.\n"
+	     "\n"
+	     "Do you want to enter the job again?"));
+	if (values_ok) {
+	  AB_Transaction_free (td->hbci_trans);
+	  return -1;
+	}
+	continue;
+      } /* check Transaction_purpose */
+    }
+
     /* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
        transactionCode according to some GUI selection here!! */
     /*if (td->trans_type == SINGLE_DEBITNOTE)
Index: gnc-hbci-utils.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/import-export/hbci/gnc-hbci-utils.c,v
retrieving revision 1.23.2.18
retrieving revision 1.23.2.19
diff -Lsrc/import-export/hbci/gnc-hbci-utils.c -Lsrc/import-export/hbci/gnc-hbci-utils.c -u -r1.23.2.18 -r1.23.2.19
--- src/import-export/hbci/gnc-hbci-utils.c
+++ src/import-export/hbci/gnc-hbci-utils.c
@@ -533,10 +533,9 @@
 char *gnc_hbci_descr_tognc (const AB_TRANSACTION *h_trans)
 {
   /* Description */
-  char *h_descr = NULL;
+  char *h_descr = gnc_hbci_getpurpose (h_trans);
   char *othername = NULL;
   char *g_descr;
-  const GWEN_STRINGLIST *h_purpose = AB_Transaction_GetPurpose (h_trans);
   const GWEN_STRINGLIST *h_remotename = AB_Transaction_GetRemoteName (h_trans);
   struct cb_struct cb_object;
 
@@ -544,16 +543,7 @@
     iconv_open(gnc_hbci_book_encoding(), gnc_hbci_AQBANKING_encoding());
   g_assert(cb_object.gnc_iconv_handler != (iconv_t)(-1));
 
-  /* Don't use list_string_concat_delim here since we need to
-     g_strstrip every single element of the string list, which is
-     only done in our callback gnc_list_string_cb. The separator is
-     also set there. */
-  cb_object.result = &h_descr;
-  if (h_purpose)
-    GWEN_StringList_ForEach (h_purpose,
-			     &gnc_list_string_cb,
-			     &cb_object);
-
+  /* Get othername */
   cb_object.result = &othername;
   if (h_remotename)
     GWEN_StringList_ForEach (h_remotename,
@@ -563,14 +553,14 @@
 
   if (othername && (strlen (othername) > 0))
     g_descr = 
-      ((h_descr && (strlen (h_descr) > 0)) ?
+      ((strlen (h_descr) > 0) ?
        g_strdup_printf ("%s; %s", 
 			h_descr,
 			othername) :
        g_strdup (othername));
   else
     g_descr = 
-      ((h_descr && (strlen (h_descr) > 0)) ?
+      ((strlen (h_descr) > 0) ?
        g_strdup (h_descr) : 
        g_strdup (_("Unspecified")));
 
@@ -580,6 +570,31 @@
   return g_descr;
 }
 
+char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans)
+{
+  /* Description */
+  char *h_descr = NULL;
+  char *g_descr;
+  const GWEN_STRINGLIST *h_purpose = AB_Transaction_GetPurpose (h_trans);
+  struct cb_struct cb_object;
+
+  cb_object.gnc_iconv_handler = 
+    iconv_open(gnc_hbci_book_encoding(), gnc_hbci_AQBANKING_encoding());
+  g_assert(cb_object.gnc_iconv_handler != (iconv_t)(-1));
+
+  cb_object.result = &h_descr;
+  if (h_purpose)
+    GWEN_StringList_ForEach (h_purpose,
+			     &gnc_list_string_cb,
+			     &cb_object);
+
+  g_descr = g_strdup (h_descr ? h_descr : "");
+
+  iconv_close(cb_object.gnc_iconv_handler);
+  free (h_descr);
+  return g_descr;
+}
+
 char *gnc_hbci_memo_tognc (const AB_TRANSACTION *h_trans)
 {
   /* Memo in the Split. HBCI's transactionText contains strings like


More information about the gnucash-changes mailing list