Hi all, I found a bug in Gnucash 5.16 in the Stock Assistant.
When recording a stock sale with a capital loss using the Stock Transaction Assistant, entering the capital gain as a negative number (as per the instruction) can cause the assistant to incorrectly record the loss as a positive capital gain. Steps to reproduce: 1. Right click on a stock account select Stock Assistant 2. Select Sell, enter any amounts for number of stock and stock value 3. Continue to the Capital Gain/Loss page and select an Income account for capital gains 4. Type a negative value normally, e.g. -101.54 then complete the assistant. 5. The capital gains Income account receives a credit of 101.54 rather than a debit of 101.54 Bug source: Looking at https://code.gnucash.org/docs/STABLE/assistant-stock-transaction_8cpp_source.html StockTransactionEntry::set_value() toggles m_debit_side each time it receives a negative value: if (gnc_numeric_negative_p (amount)) { m_value = gnc_numeric_neg(amount); m_debit_side = !m_debit_side; } GncAmountEdit connects value_changed_cb to the GTK "changed" signal, so set_value() is called repeatedly on every keystroke while a negative number is being typed. Each valid negative intermediate value toggles m_debit_side again which means that sometimes the amount is then incorrectly entered as a positive instead of a negative. Fix: m_debit side should be set to true in the if statement above instead of being toggled. Temp workaround: Enter 101.54 as a positive value first, then move the cursor to the beginning and type the minus sign. With this method m_debit_side is toggled only once and the Stock Assistant creates the transaction correctly. I don't have a Bugzilla account but if someone can create one for me, I could post the bug report there. Regards, Chris Howard _______________________________________________ gnucash-user mailing list [email protected] To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.
