gnucash stable: [stock-txn-asst] Fix balance check

John Ralls jralls at code.gnucash.org
Sun Sep 17 16:28:43 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/7aba9e00 (commit)
	from  https://github.com/Gnucash/gnucash/commit/41167e32 (commit)



commit 7aba9e000719d9a913ed0962cd164d75011ff61f
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Sep 17 13:25:26 2023 -0700

    [stock-txn-asst] Fix balance check
    
    The summing into debit and credit got lost somewhere.

diff --git a/gnucash/gnome/assistant-stock-transaction.cpp b/gnucash/gnome/assistant-stock-transaction.cpp
index bc29ecbfb2..a3de8994d3 100644
--- a/gnucash/gnome/assistant-stock-transaction.cpp
+++ b/gnucash/gnome/assistant-stock-transaction.cpp
@@ -47,6 +47,7 @@
 #include <gnc-date-edit.h>
 #include "gnc-engine.h"
 #include "gnc-numeric.h"
+#include "gnc-numeric.hpp"
 #include "gnc-prefs.h"
 #include "gnc-component-manager.h"
 #include "gnc-date-edit.h"
@@ -555,6 +556,7 @@ public:
     virtual void set_memo(const char* memo) { m_memo = memo; }
     virtual const char* memo() const { return m_memo; }
     virtual void set_value(gnc_numeric amount);
+    virtual GncNumeric value() { return GncNumeric(m_value); }
     virtual void set_amount(gnc_numeric) {}
     virtual gnc_numeric amount() const { return m_value; }
     virtual bool has_amount() const { return false; }
@@ -1277,8 +1279,8 @@ StockAssistantModel::generate_list_of_splits() {
     m_logger.clear();
     m_list_of_splits.clear();
 
-    gnc_numeric debit = gnc_numeric_zero ();
-    gnc_numeric credit = gnc_numeric_zero ();
+    GncNumeric debit{};
+    GncNumeric credit{};
 
     // check the stock transaction date. If there are existing stock
     // transactions dated after the date specified, it is very likely
@@ -1344,6 +1346,14 @@ StockAssistantModel::generate_list_of_splits() {
         m_list_of_splits.push_back (m_capgains_entry.get());
     }
 
+    std::for_each(m_list_of_splits.begin(), m_list_of_splits.end(),
+                    [&debit, &credit](auto& entry) {
+                        if (entry->debit_side())
+                            debit += entry->value();
+                        else
+                            credit += entry->value();
+                    });
+
     if (gnc_numeric_check(debit) || gnc_numeric_check(credit) ||!gnc_numeric_equal (debit, credit))
     {
         const char *err_act = NULL, *err_reason = NULL;



Summary of changes:
 gnucash/gnome/assistant-stock-transaction.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)



More information about the gnucash-changes mailing list