r17697 - gnucash/branches/2.2/src - [r17656] Bug #529494: Fix wrong fractional precision in register with multi-currency transactions

Christian Stimming cstim at cvs.gnucash.org
Sat Nov 15 16:41:14 EST 2008


Author: cstim
Date: 2008-11-15 16:41:13 -0500 (Sat, 15 Nov 2008)
New Revision: 17697
Trac: http://svn.gnucash.org/trac/changeset/17697

Modified:
   gnucash/branches/2.2/src/app-utils/gnc-ui-util.c
   gnucash/branches/2.2/src/app-utils/gnc-ui-util.h
   gnucash/branches/2.2/src/register/ledger-core/split-register-model.c
Log:
[r17656] Bug #529494: Fix wrong fractional precision in register with multi-currency transactions

This patch replaces the function gnc_split_value_print_info, which returns the
print info for the currency of the split's transaction, with a new function,
gnc_split_register_print_info, which returns the print info for the split
register's default account.  That way the amounts displayed in the register use
the fraction of the register's account, rather than the fraction of the
transaction's currency.

Patch by Daniel Harding.

Modified: gnucash/branches/2.2/src/app-utils/gnc-ui-util.c
===================================================================
--- gnucash/branches/2.2/src/app-utils/gnc-ui-util.c	2008-11-15 21:41:06 UTC (rev 17696)
+++ gnucash/branches/2.2/src/app-utils/gnc-ui-util.c	2008-11-15 21:41:13 UTC (rev 17697)
@@ -1161,18 +1161,6 @@
   return gnc_account_print_info (xaccSplitGetAccount (split), use_symbol);
 }
 
-GNCPrintAmountInfo
-gnc_split_value_print_info (Split *split, gboolean use_symbol)
-{
-  Transaction *trans;
-
-  if (!split) return gnc_default_print_info (use_symbol);
-
-  trans = xaccSplitGetParent (split);
-
-  return gnc_commodity_print_info (xaccTransGetCurrency (trans), use_symbol);
-}
-
 static GNCPrintAmountInfo
 gnc_default_print_info_helper (int decplaces)
 {

Modified: gnucash/branches/2.2/src/app-utils/gnc-ui-util.h
===================================================================
--- gnucash/branches/2.2/src/app-utils/gnc-ui-util.h	2008-11-15 21:41:06 UTC (rev 17696)
+++ gnucash/branches/2.2/src/app-utils/gnc-ui-util.h	2008-11-15 21:41:13 UTC (rev 17697)
@@ -283,8 +283,6 @@
 
 GNCPrintAmountInfo gnc_split_amount_print_info (Split *split,
                                                 gboolean use_symbol);
-GNCPrintAmountInfo gnc_split_value_print_info (Split *split,
-                                               gboolean use_symbol);
 
 GNCPrintAmountInfo gnc_share_print_info_places (int decplaces);
 GNCPrintAmountInfo gnc_default_share_print_info (void);

Modified: gnucash/branches/2.2/src/register/ledger-core/split-register-model.c
===================================================================
--- gnucash/branches/2.2/src/register/ledger-core/split-register-model.c	2008-11-15 21:41:06 UTC (rev 17696)
+++ gnucash/branches/2.2/src/register/ledger-core/split-register-model.c	2008-11-15 21:41:13 UTC (rev 17697)
@@ -1061,6 +1061,12 @@
   return g_strdup (help);
 }
 
+static GNCPrintAmountInfo gnc_split_register_print_info (SplitRegister *reg)
+{
+  return gnc_account_print_info (gnc_split_register_get_default_account (reg),
+      FALSE);
+}
+
 static const char *
 gnc_split_register_get_balance_entry (VirtualLocation virt_loc,
                                       gboolean translate,
@@ -1098,7 +1104,7 @@
       balance = gnc_numeric_neg (balance);
   }
 
-  return xaccPrintAmount (balance, gnc_split_value_print_info (split, FALSE));
+  return xaccPrintAmount (balance, gnc_split_register_print_info (reg));
 }
 
 static const char *
@@ -1452,8 +1458,7 @@
 				       GNC_RND_ROUND);
     }
 
-    return xaccPrintAmount (imbalance,
-                            gnc_split_value_print_info (split, FALSE));
+    return xaccPrintAmount (imbalance, gnc_split_register_print_info (reg));
   }
 
   {
@@ -1496,7 +1501,7 @@
 
     amount = gnc_numeric_abs (amount);
 
-    return xaccPrintAmount (amount, gnc_split_value_print_info (split, FALSE));
+    return xaccPrintAmount (amount, gnc_split_register_print_info (reg));
   }
 }
 
@@ -1862,8 +1867,7 @@
     amount = gnc_numeric_abs (amount);
 
     /* FIXME: This should be fixed to be correct for the "fake" account. */
-    return xaccPrintAmount( amount,
-                            gnc_split_value_print_info( split, FALSE ) );
+    return xaccPrintAmount (amount, gnc_split_register_print_info (reg));
   }
 
   return NULL;



More information about the gnucash-changes mailing list