gnucash maint: Bug 798352 - Decimal Precision when Entering Mutual Fund Transaction

John Ralls jralls at code.gnucash.org
Fri Dec 10 13:37:34 EST 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/95b973f7 (commit)
	from  https://github.com/Gnucash/gnucash/commit/ececd1ff (commit)



commit 95b973f7929839554bc17d8de2168e41da214e20
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Dec 9 15:55:37 2021 -0800

    Bug 798352 - Decimal Precision when Entering Mutual Fund Transaction
    
    Let xaccParseAmount parse up to 12 decimal places instead of 8.

diff --git a/libgnucash/app-utils/gnc-ui-util.c b/libgnucash/app-utils/gnc-ui-util.c
index aea6bbba3..5bcb8eb63 100644
--- a/libgnucash/app-utils/gnc-ui-util.c
+++ b/libgnucash/app-utils/gnc-ui-util.c
@@ -2061,6 +2061,14 @@ multiplier (int num_decimals)
 {
     switch (num_decimals)
     {
+    case 12:
+        return 1000000000000;
+    case 11:
+        return 100000000000;
+    case 10:
+        return 10000000000;
+    case 9:
+        return 1000000000;
     case 8:
         return 100000000;
     case 7:
@@ -2077,6 +2085,8 @@ multiplier (int num_decimals)
         return 100;
     case 1:
         return 10;
+    case 0:
+         return 1;
     default:
         PERR("bad fraction length");
         g_assert_not_reached();
@@ -2374,10 +2384,10 @@ xaccParseAmountExtended (const char * in_str, gboolean monetary,
 
         len = strlen(out_str);
 
-        if (len > 8)
+        if (len > 12)
         {
-            out_str[8] = '\0';
-            len = 8;
+            out_str[12] = '\0';
+            len = 12;
         }
 
         if (sscanf (out_str, QOF_SCANF_LLD, &fraction) < 1)
@@ -2392,7 +2402,7 @@ xaccParseAmountExtended (const char * in_str, gboolean monetary,
     }
     else if (monetary && auto_decimal_enabled && !got_decimal)
     {
-        if ((auto_decimal_places > 0) && (auto_decimal_places < 9))
+        if ((auto_decimal_places > 0) && (auto_decimal_places <= 12))
         {
             denom = multiplier(auto_decimal_places);
 



Summary of changes:
 libgnucash/app-utils/gnc-ui-util.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)



More information about the gnucash-changes mailing list