From 3ba640ce8414c63cfb3d2c227b5f47cc140ab8df Mon Sep 17 00:00:00 2001 From: Dave Peticolas Date: Fri, 5 May 2000 08:21:42 +0000 Subject: [PATCH] Reconcile window prints different currencies correctly. Also shows reconciled balance so far. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2265 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 5 +++ src/gnome/window-reconcile.c | 68 ++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 75b2baedcf..aabe4d0111 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2000-05-05 Dave Peticolas + + * src/gnome/window-reconcile.c: print different currencies + correctly. Print reconciled balance so far. + 2000-05-04 Dave Peticolas * src/gnome/window-main.c (gnc_main_create_toolbar): removed the diff --git a/src/gnome/window-reconcile.c b/src/gnome/window-reconcile.c index bafa369225..86f5220151 100644 --- a/src/gnome/window-reconcile.c +++ b/src/gnome/window-reconcile.c @@ -151,6 +151,7 @@ static double recnRecalculateBalance(RecnWindow *recnData) { char *amount; + char *currency; double debit; double credit; double starting; @@ -168,11 +169,13 @@ recnRecalculateBalance(RecnWindow *recnData) (account_type == CURRENCY)) shares |= PRTSHR; + currency = xaccAccountGetCurrency(recnData->account); + /* update the starting balance */ starting = xaccAccountGetReconciledBalance(recnData->account); if (reverse_balance) starting = -starting; - amount = xaccPrintAmount(starting, shares, NULL); + amount = xaccPrintAmount(starting, shares, currency); gnc_set_label_color(recnData->starting, starting); gtk_label_set_text(GTK_LABEL(recnData->starting), amount); if (reverse_balance) @@ -182,7 +185,7 @@ recnRecalculateBalance(RecnWindow *recnData) ending = recnData->new_ending; if (reverse_balance) ending = -ending; - amount = xaccPrintAmount(ending, shares, NULL); + amount = xaccPrintAmount(ending, shares, currency); gnc_set_label_color(recnData->ending, ending); gtk_label_set_text(GTK_LABEL(recnData->ending), amount); if (reverse_balance) @@ -195,17 +198,17 @@ recnRecalculateBalance(RecnWindow *recnData) (GNC_RECONCILE_LIST(recnData->credit)); /* Update the total debit and credit fields */ - amount = xaccPrintAmount(DABS(debit), shares, NULL); + amount = xaccPrintAmount(DABS(debit), shares, currency); gtk_label_set_text(GTK_LABEL(recnData->total_debit), amount); - amount = xaccPrintAmount(credit, shares, NULL); + amount = xaccPrintAmount(credit, shares, currency); gtk_label_set_text(GTK_LABEL(recnData->total_credit), amount); /* update the reconciled balance */ reconciled = starting + debit - credit; if (reverse_balance) reconciled = -reconciled; - amount = xaccPrintAmount(reconciled, shares, NULL); + amount = xaccPrintAmount(reconciled, shares, currency); gnc_set_label_color(recnData->reconciled, reconciled); gtk_label_set_text(GTK_LABEL(recnData->reconciled), amount); if (reverse_balance) @@ -215,7 +218,7 @@ recnRecalculateBalance(RecnWindow *recnData) diff = ending - reconciled; if (reverse_balance) diff = -diff; - amount = xaccPrintAmount(diff, shares, NULL); + amount = xaccPrintAmount(diff, shares, currency); gnc_set_label_color(recnData->difference, diff); gtk_label_set_text(GTK_LABEL(recnData->difference), amount); if (reverse_balance) @@ -229,7 +232,10 @@ gnc_start_recn_update_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data) { GtkEntry *entry = GTK_ENTRY(widget); - gint shares = GPOINTER_TO_INT(data); + short shares = PRTSYM | PRTSEP; + Account *account = data; + int account_type; + char *currency; gchar *new_string; gchar *string; double value; @@ -238,7 +244,14 @@ gnc_start_recn_update_cb(GtkWidget *widget, GdkEventFocus *event, value = xaccParseAmount(string, GNC_T); - new_string = xaccPrintAmount(value, shares & ~PRTSYM, NULL); + account_type = xaccAccountGetType(account); + if ((account_type == STOCK) || (account_type == MUTUAL) || + (account_type == CURRENCY)) + shares |= PRTSHR; + + currency = xaccAccountGetCurrency(account); + + new_string = xaccPrintAmount(value, shares & ~PRTSYM, currency); if (safe_strcmp(string, new_string) == 0) return FALSE; @@ -265,11 +278,11 @@ static gboolean startRecnWindow(GtkWidget *parent, Account *account, double *new_ending) { GtkWidget *dialog, *end_value; - char *amount, *title; - double dendBalance; - int result; + char *amount, *title, *currency; short shares = PRTSYM | PRTSEP; + double dendBalance; int account_type; + int result; /* Get the previous ending balance. Use the published * account interface for this, since the ending balance @@ -287,7 +300,9 @@ startRecnWindow(GtkWidget *parent, Account *account, double *new_ending) (account_type == CURRENCY)) shares |= PRTSHR; - amount = xaccPrintAmount(dendBalance, shares, NULL); + currency = xaccAccountGetCurrency(account); + + amount = xaccPrintAmount(dendBalance, shares, currency); /* Create the dialog box... */ title = gnc_recn_make_window_name(account); @@ -314,20 +329,19 @@ startRecnWindow(GtkWidget *parent, Account *account, double *new_ending) GtkWidget *vbox = GNOME_DIALOG(dialog)->vbox; end_value = gtk_entry_new(); - amount = xaccPrintAmount(*new_ending, shares & ~PRTSYM, NULL); + amount = xaccPrintAmount(*new_ending, shares & ~PRTSYM, currency); gtk_entry_set_text(GTK_ENTRY(end_value), amount); gtk_editable_select_region(GTK_EDITABLE(end_value), 0, -1); gtk_signal_connect(GTK_OBJECT(end_value), "focus-out-event", - GTK_SIGNAL_FUNC(gnc_start_recn_update_cb), - GINT_TO_POINTER((gint) shares)); + GTK_SIGNAL_FUNC(gnc_start_recn_update_cb), account); gnome_dialog_editable_enters(GNOME_DIALOG(dialog), GTK_EDITABLE(end_value)); - gtk_misc_set_alignment(GTK_MISC(start_title), 0.95, 0.5); - gtk_misc_set_alignment(GTK_MISC(start_value), 0, 0.5); - gtk_misc_set_alignment(GTK_MISC(end_title), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(start_title), 1.0, 0.5); + gtk_misc_set_alignment(GTK_MISC(start_value), 0.0, 0.5); + gtk_misc_set_alignment(GTK_MISC(end_title), 1.0, 0.5); gtk_container_set_border_width(GTK_CONTAINER(main_area), 10); gtk_container_set_border_width(GTK_CONTAINER(frame), 5); @@ -468,7 +482,7 @@ gnc_reconcile_window_create_list_frame(Account *account, gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new(TOTAL_C_STR); - gtk_misc_set_alignment(GTK_MISC(label), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); label = gtk_label_new(""); @@ -1105,42 +1119,42 @@ recnWindow(GtkWidget *parent, Account *account) /* starting balance title/value */ title = gtk_label_new(START_BALN_C_STR); - gtk_misc_set_alignment(GTK_MISC(title), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(title), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(title_vbox), title, FALSE, FALSE, 3); value = gtk_label_new(""); recnData->starting = value; - gtk_misc_set_alignment(GTK_MISC(value), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(value), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(value_vbox), value, FALSE, FALSE, 3); /* ending balance title/value */ title = gtk_label_new(END_BALN_C_STR); - gtk_misc_set_alignment(GTK_MISC(title), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(title), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(title_vbox), title, FALSE, FALSE, 0); value = gtk_label_new(""); recnData->ending = value; - gtk_misc_set_alignment(GTK_MISC(value), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(value), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(value_vbox), value, FALSE, FALSE, 0); /* reconciled balance title/value */ title = gtk_label_new(RECONCILE_BALN_C_STR); - gtk_misc_set_alignment(GTK_MISC(title), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(title), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(title_vbox), title, FALSE, FALSE, 0); value = gtk_label_new(""); recnData->reconciled = value; - gtk_misc_set_alignment(GTK_MISC(value), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(value), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(value_vbox), value, FALSE, FALSE, 0); /* difference title/value */ title = gtk_label_new(DIFF_C_STR); - gtk_misc_set_alignment(GTK_MISC(title), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(title), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(title_vbox), title, FALSE, FALSE, 0); value = gtk_label_new(""); recnData->difference = value; - gtk_misc_set_alignment(GTK_MISC(value), 0.95, 0.5); + gtk_misc_set_alignment(GTK_MISC(value), 1.0, 0.5); gtk_box_pack_start(GTK_BOX(value_vbox), value, FALSE, FALSE, 0); }