gnucash maint: [assistant-stock-transaction.cpp] more sanity checks

Christopher Lam clam at code.gnucash.org
Sun Mar 13 21:18:17 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/c00cacda (commit)
	from  https://github.com/Gnucash/gnucash/commit/aca83513 (commit)



commit c00cacda16ffc7f5cd7a9d650a486cb292aad5e0
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Mar 14 09:14:53 2022 +0800

    [assistant-stock-transaction.cpp] more sanity checks
    
    - stock amount must be positive. i.e. a negative stock amount during
    a regular BUY means a SELL. user must choose appropriate txn_type.
    
    - don't require account if zero-amount is allowable. eg fees.

diff --git a/gnucash/gnome/assistant-stock-transaction.cpp b/gnucash/gnome/assistant-stock-transaction.cpp
index 3fbfc8aa9..636bcaed0 100644
--- a/gnucash/gnome/assistant-stock-transaction.cpp
+++ b/gnucash/gnome/assistant-stock-transaction.cpp
@@ -659,6 +659,8 @@ check_page (GtkListStore *list, gnc_numeric& debit, gnc_numeric& credit,
         acctstr = "";
     else if (acct)
         acctstr = xaccAccountGetName (acct);
+    else if ((splitfield & FieldMask::ALLOW_ZERO) && gnc_numeric_zero_p (amount))
+        acctstr = "";
     else
     {
         add_error (errors, N_("Account for %s is missing"), page);
@@ -696,6 +698,8 @@ refresh_page_finish (StockTransactionInfo *info)
     {
         auto stock_amount = gnc_amount_edit_get_amount
             (GNC_AMOUNT_EDIT(info->stock_amount_edit));
+        if (!gnc_numeric_positive_p (stock_amount))
+            add_error_str (errors, N_("Stock amount must be positive"));
         if (info->txn_type->stock_amount & FieldMask::ENABLED_CREDIT)
             stock_amount = gnc_numeric_neg (stock_amount);
         auto new_bal = gnc_numeric_add_fixed (info->balance_at_date, stock_amount);



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



More information about the gnucash-changes mailing list