gnucash maint: Bug 787813 - Price change from editing a transaction not reflected...

John Ralls jralls at code.gnucash.org
Thu Jun 10 14:29:43 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/80d67499 (commit)
	from  https://github.com/Gnucash/gnucash/commit/9546c058 (commit)



commit 80d674998920b5e1b1ba58d53c7e15db92bdc83a
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Jun 10 11:27:58 2021 -0700

    Bug 787813 - Price change from editing a transaction not reflected...
    
    in pricedb.
    
    Allow PRICE_SOURCE_SPLIT_REG to overwrite PRICE_SOURCE_XFER_DLG_VAL.

diff --git a/gnucash/register/ledger-core/split-register.c b/gnucash/register/ledger-core/split-register.c
index 101ca8023..68e01c549 100644
--- a/gnucash/register/ledger-core/split-register.c
+++ b/gnucash/register/ledger-core/split-register.c
@@ -2223,7 +2223,6 @@ gnc_split_register_auto_calc (SplitRegister* reg, Split* split)
     Account* account;
     int denom;
     int choice;
-    PriceSource source = PRICE_SOURCE_USER_PRICE;
 
     if (STOCK_REGISTER    != reg->type &&
         CURRENCY_REGISTER != reg->type &&
@@ -2372,7 +2371,6 @@ gnc_split_register_auto_calc (SplitRegister* reg, Split* split)
     {
         recalculate_price (split, reg, value, amount);
         price_changed = TRUE;
-        source = PRICE_SOURCE_SPLIT_REG;
     }
     if (recalc_value)
         recalculate_value (split, reg, price, amount, shares_changed);
diff --git a/libgnucash/engine/Transaction.c b/libgnucash/engine/Transaction.c
index 026cbfdc7..fc82049db 100644
--- a/libgnucash/engine/Transaction.c
+++ b/libgnucash/engine/Transaction.c
@@ -3009,6 +3009,7 @@ record_price (Split *split,
 
     if (price)
     {
+        PriceSource oldsource = gnc_price_get_source (price);
         price_value = gnc_price_get_value (price);
         if (gnc_numeric_equal (swap ? gnc_numeric_invert (value) : value,
                                price_value))
@@ -3016,7 +3017,9 @@ record_price (Split *split,
             gnc_price_unref (price);
             return;
         }
-        if (gnc_price_get_source (price) < source)
+        if (oldsource < source &&
+            !(oldsource == PRICE_SOURCE_XFER_DLG_VAL &&
+             source == PRICE_SOURCE_SPLIT_REG))
         {
             /* Existing price is preferred over this one. */
             gnc_price_unref (price);



Summary of changes:
 gnucash/register/ledger-core/split-register.c | 2 --
 libgnucash/engine/Transaction.c               | 5 ++++-
 2 files changed, 4 insertions(+), 3 deletions(-)



More information about the gnucash-changes mailing list