mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add check for entered transaction to always have a recipient name; add some more logging code for aqbanking results.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15663 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
b72cf9f7fa
commit
ab676fca66
@ -581,6 +581,29 @@ int gnc_hbci_dialog_run_until_ok(HBCITransDialog *td,
|
|||||||
} /* check Transaction_purpose */
|
} /* check Transaction_purpose */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
char *othername = gnc_hbci_getremotename (td->hbci_trans);
|
||||||
|
if (!othername || (strlen (othername) == 0)) {
|
||||||
|
gtk_widget_show_all (td->dialog);
|
||||||
|
values_ok = !gnc_verify_dialog
|
||||||
|
(GTK_WIDGET (td->dialog),
|
||||||
|
TRUE,
|
||||||
|
"%s",
|
||||||
|
_("You did not enter a recipient name. A recipient name is "
|
||||||
|
"required for an online transfer.\n"
|
||||||
|
"\n"
|
||||||
|
"Do you want to enter the job again?"));
|
||||||
|
if (othername)
|
||||||
|
g_free (othername);
|
||||||
|
if (values_ok) {
|
||||||
|
AB_Transaction_free (td->hbci_trans);
|
||||||
|
td->hbci_trans = NULL;
|
||||||
|
return GTK_RESPONSE_CANCEL;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
} /* check Recipient Name (in aqbanking: Remote Name) */
|
||||||
|
}
|
||||||
|
|
||||||
/* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
|
/* FIXME: If this is a direct debit, set the textkey/ "Textschluessel"/
|
||||||
transactionCode according to some GUI selection here!! */
|
transactionCode according to some GUI selection here!! */
|
||||||
/*if (td->trans_type == SINGLE_DEBITNOTE)
|
/*if (td->trans_type == SINGLE_DEBITNOTE)
|
||||||
|
@ -247,8 +247,12 @@ get_resultcode_error (const list_int *list)
|
|||||||
return MAX(tmp_result, cause);
|
return MAX(tmp_result, cause);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
int
|
|
||||||
gnc_hbci_debug_outboxjob (AB_JOB *job, gboolean verbose)
|
/** Return the HBCI return code of the given 'job', or zero if none was
|
||||||
|
* found. If 'verbose' is TRUE, make a lot of debugging messages about
|
||||||
|
* this outboxjob. */
|
||||||
|
static int
|
||||||
|
gnc_hbci_debug_outboxjob (GNCInteractor *inter, AB_JOB *job, gboolean verbose)
|
||||||
{
|
{
|
||||||
int cause = 0;
|
int cause = 0;
|
||||||
AB_JOB_STATUS jobstatus;
|
AB_JOB_STATUS jobstatus;
|
||||||
@ -264,6 +268,15 @@ gnc_hbci_debug_outboxjob (AB_JOB *job, gboolean verbose)
|
|||||||
|
|
||||||
jobstatus = AB_Job_GetStatus (job);
|
jobstatus = AB_Job_GetStatus (job);
|
||||||
if (jobstatus == AB_Job_StatusError) {
|
if (jobstatus == AB_Job_StatusError) {
|
||||||
|
if (AB_Job_GetResultText (job)) {
|
||||||
|
/* Add the "result text" to the log window */
|
||||||
|
char *logstring = g_strdup_printf("Job %s had an error: %s\n",
|
||||||
|
AB_Job_Type2Char(AB_Job_GetType(job)),
|
||||||
|
AB_Job_GetResultText(job));
|
||||||
|
GNCInteractor_add_log_text (inter, logstring);
|
||||||
|
g_free (logstring);
|
||||||
|
}
|
||||||
|
|
||||||
if (!verbose)
|
if (!verbose)
|
||||||
g_warning("gnc_hbci_debug_outboxjob: Job %s had an error: %s\n",
|
g_warning("gnc_hbci_debug_outboxjob: Job %s had an error: %s\n",
|
||||||
AB_Job_Type2Char(AB_Job_GetType(job)),
|
AB_Job_Type2Char(AB_Job_GetType(job)),
|
||||||
@ -491,9 +504,9 @@ gnc_AB_BANKING_execute (GtkWidget *parent, AB_BANKING *api,
|
|||||||
} while (gnc_hbci_Error_retry (parent, err, inter));
|
} while (gnc_hbci_Error_retry (parent, err, inter));
|
||||||
|
|
||||||
if (job)
|
if (job)
|
||||||
resultcode = gnc_hbci_debug_outboxjob (job, be_verbose);
|
resultcode = gnc_hbci_debug_outboxjob (inter, job, be_verbose);
|
||||||
if (!hbci_Error_isOk(err)) {
|
if (!hbci_Error_isOk(err)) {
|
||||||
if (job) gnc_hbci_debug_outboxjob (job, TRUE);
|
if (job) gnc_hbci_debug_outboxjob (inter, job, TRUE);
|
||||||
if (inter) GNCInteractor_show_nodelete (inter);
|
if (inter) GNCInteractor_show_nodelete (inter);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -503,7 +516,7 @@ gnc_AB_BANKING_execute (GtkWidget *parent, AB_BANKING *api,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_message("gnc_AB_BANKING_execute: Some error at executeQueue.");
|
g_message("gnc_AB_BANKING_execute: Some error at executeQueue (see gwen/aqbanking messages above); this does not necessarily mean that the results are unusable.");
|
||||||
GNCInteractor_show_nodelete (inter);
|
GNCInteractor_show_nodelete (inter);
|
||||||
return TRUE; /* <- This used to be a FALSE but this was probably
|
return TRUE; /* <- This used to be a FALSE but this was probably
|
||||||
* as wrong as it could get. @%$! */
|
* as wrong as it could get. @%$! */
|
||||||
@ -778,8 +791,35 @@ char *gnc_hbci_descr_tognc (const AB_TRANSACTION *h_trans)
|
|||||||
{
|
{
|
||||||
/* Description */
|
/* Description */
|
||||||
char *h_descr = gnc_hbci_getpurpose (h_trans);
|
char *h_descr = gnc_hbci_getpurpose (h_trans);
|
||||||
char *othername = NULL;
|
char *othername = gnc_hbci_getremotename (h_trans);
|
||||||
char *g_descr;
|
char *g_descr;
|
||||||
|
|
||||||
|
/* Get othername */
|
||||||
|
/*DEBUG("HBCI Description '%s'", h_descr);*/
|
||||||
|
|
||||||
|
if (othername && strlen (othername) > 0)
|
||||||
|
g_descr =
|
||||||
|
((strlen (h_descr) > 0) ?
|
||||||
|
g_strdup_printf ("%s; %s",
|
||||||
|
h_descr,
|
||||||
|
othername) :
|
||||||
|
g_strdup (othername));
|
||||||
|
else
|
||||||
|
g_descr =
|
||||||
|
((strlen (h_descr) > 0) ?
|
||||||
|
g_strdup (h_descr) :
|
||||||
|
g_strdup (_("Unspecified")));
|
||||||
|
|
||||||
|
g_free (h_descr);
|
||||||
|
if (othername) g_free (othername);
|
||||||
|
return g_descr;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *gnc_hbci_getremotename (const AB_TRANSACTION *h_trans)
|
||||||
|
{
|
||||||
|
/* Description */
|
||||||
|
char *othername = NULL;
|
||||||
|
char *result;
|
||||||
const GWEN_STRINGLIST *h_remotename = AB_Transaction_GetRemoteName (h_trans);
|
const GWEN_STRINGLIST *h_remotename = AB_Transaction_GetRemoteName (h_trans);
|
||||||
struct cb_struct cb_object;
|
struct cb_struct cb_object;
|
||||||
|
|
||||||
@ -796,22 +836,13 @@ char *gnc_hbci_descr_tognc (const AB_TRANSACTION *h_trans)
|
|||||||
/*DEBUG("HBCI Description '%s'", h_descr);*/
|
/*DEBUG("HBCI Description '%s'", h_descr);*/
|
||||||
|
|
||||||
if (othername && (strlen (othername) > 0))
|
if (othername && (strlen (othername) > 0))
|
||||||
g_descr =
|
result = g_strdup (othername);
|
||||||
((strlen (h_descr) > 0) ?
|
|
||||||
g_strdup_printf ("%s; %s",
|
|
||||||
h_descr,
|
|
||||||
othername) :
|
|
||||||
g_strdup (othername));
|
|
||||||
else
|
else
|
||||||
g_descr =
|
result = NULL;
|
||||||
((strlen (h_descr) > 0) ?
|
|
||||||
g_strdup (h_descr) :
|
|
||||||
g_strdup (_("Unspecified")));
|
|
||||||
|
|
||||||
g_iconv_close(cb_object.gnc_iconv_handler);
|
g_iconv_close(cb_object.gnc_iconv_handler);
|
||||||
free (h_descr);
|
g_free (othername);
|
||||||
free (othername);
|
return result;
|
||||||
return g_descr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans)
|
char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans)
|
||||||
@ -835,7 +866,7 @@ char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans)
|
|||||||
g_descr = g_strdup (h_descr ? h_descr : "");
|
g_descr = g_strdup (h_descr ? h_descr : "");
|
||||||
|
|
||||||
g_iconv_close(cb_object.gnc_iconv_handler);
|
g_iconv_close(cb_object.gnc_iconv_handler);
|
||||||
free (h_descr);
|
g_free (h_descr);
|
||||||
return g_descr;
|
return g_descr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,12 +85,6 @@ int gnc_AB_BANKING_fini (AB_BANKING *api);
|
|||||||
AB_ACCOUNT *
|
AB_ACCOUNT *
|
||||||
gnc_hbci_get_hbci_acc (const AB_BANKING *api, Account *gnc_acc);
|
gnc_hbci_get_hbci_acc (const AB_BANKING *api, Account *gnc_acc);
|
||||||
|
|
||||||
/* Return the HBCI return code of the given 'job', or zero if none was
|
|
||||||
* found. If 'verbose' is TRUE, make a lot of debugging messages about
|
|
||||||
* this outboxjob. */
|
|
||||||
int
|
|
||||||
gnc_hbci_debug_outboxjob (AB_JOB *job, gboolean verbose);
|
|
||||||
|
|
||||||
/** Clean up the queue after executing, i.e. delete the job as good as
|
/** Clean up the queue after executing, i.e. delete the job as good as
|
||||||
possible. */
|
possible. */
|
||||||
void
|
void
|
||||||
@ -173,6 +167,11 @@ char *gnc_hbci_memo_tognc (const AB_TRANSACTION *h_trans);
|
|||||||
* purpose, an empty (but allocated) string is returned. */
|
* purpose, an empty (but allocated) string is returned. */
|
||||||
char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans);
|
char *gnc_hbci_getpurpose (const AB_TRANSACTION *h_trans);
|
||||||
|
|
||||||
|
/* Retrieve the merged "remote name" fields from the transaction. The
|
||||||
|
* returned string must be g_free'd by the caller. If there was no
|
||||||
|
* "remote name" field, NULL (!) is returned. */
|
||||||
|
char *gnc_hbci_getremotename (const AB_TRANSACTION *h_trans);
|
||||||
|
|
||||||
/** Return the first customer that can act on the specified account,
|
/** Return the first customer that can act on the specified account,
|
||||||
or NULL if none was found (and an error message is printed on
|
or NULL if none was found (and an error message is printed on
|
||||||
stdout). */
|
stdout). */
|
||||||
|
Loading…
Reference in New Issue
Block a user