mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[Split.c] return price==0 instead of 1, if !split, or amt==0
This commit is contained in:
parent
47f2e82f8e
commit
87b0a41e9b
@ -1196,6 +1196,10 @@ void
|
|||||||
xaccSplitSetSharePrice (Split *s, gnc_numeric price)
|
xaccSplitSetSharePrice (Split *s, gnc_numeric price)
|
||||||
{
|
{
|
||||||
if (!s) return;
|
if (!s) return;
|
||||||
|
|
||||||
|
if (gnc_numeric_zero_p (price))
|
||||||
|
return;
|
||||||
|
|
||||||
ENTER (" ");
|
ENTER (" ");
|
||||||
xaccTransBeginEdit (s->parent);
|
xaccTransBeginEdit (s->parent);
|
||||||
|
|
||||||
@ -1927,22 +1931,18 @@ gnc_numeric
|
|||||||
xaccSplitGetSharePrice (const Split * split)
|
xaccSplitGetSharePrice (const Split * split)
|
||||||
{
|
{
|
||||||
gnc_numeric amt, val, price;
|
gnc_numeric amt, val, price;
|
||||||
if (!split) return gnc_numeric_create(1, 1);
|
if (!split) return gnc_numeric_create(0, 1);
|
||||||
|
|
||||||
|
|
||||||
/* if amount == 0 and value == 0, then return 1.
|
/* if amount == 0, return 0
|
||||||
* if amount == 0 and value != 0 then return 0.
|
|
||||||
* otherwise return value/amount
|
* otherwise return value/amount
|
||||||
*/
|
*/
|
||||||
|
|
||||||
amt = xaccSplitGetAmount(split);
|
amt = xaccSplitGetAmount(split);
|
||||||
val = xaccSplitGetValue(split);
|
val = xaccSplitGetValue(split);
|
||||||
if (gnc_numeric_zero_p(amt))
|
if (gnc_numeric_zero_p(amt))
|
||||||
{
|
|
||||||
if (gnc_numeric_zero_p(val))
|
|
||||||
return gnc_numeric_create(1, 1);
|
|
||||||
return gnc_numeric_create(0, 1);
|
return gnc_numeric_create(0, 1);
|
||||||
}
|
|
||||||
price = gnc_numeric_div(val, amt,
|
price = gnc_numeric_div(val, amt,
|
||||||
GNC_DENOM_AUTO,
|
GNC_DENOM_AUTO,
|
||||||
GNC_HOW_RND_ROUND_HALF_UP);
|
GNC_HOW_RND_ROUND_HALF_UP);
|
||||||
|
@ -1669,7 +1669,7 @@ static void
|
|||||||
test_xaccSplitGetSharePrice (Fixture *fixture, gconstpointer pData)
|
test_xaccSplitGetSharePrice (Fixture *fixture, gconstpointer pData)
|
||||||
{
|
{
|
||||||
gnc_numeric result, quotient;
|
gnc_numeric result, quotient;
|
||||||
gnc_numeric expected = gnc_numeric_create (1, 1);
|
gnc_numeric expected = gnc_numeric_create (0, 1);
|
||||||
Split *split = fixture->split;
|
Split *split = fixture->split;
|
||||||
/* Warning: this is a define in Split.c */
|
/* Warning: this is a define in Split.c */
|
||||||
char *logdomain = "gnc.engine";
|
char *logdomain = "gnc.engine";
|
||||||
@ -1699,7 +1699,7 @@ test_xaccSplitGetSharePrice (Fixture *fixture, gconstpointer pData)
|
|||||||
g_assert_cmpint (check.hits, ==, 0);
|
g_assert_cmpint (check.hits, ==, 0);
|
||||||
|
|
||||||
split->value = gnc_numeric_zero ();
|
split->value = gnc_numeric_zero ();
|
||||||
expected = gnc_numeric_create (1, 1);
|
expected = gnc_numeric_create (0, 1);
|
||||||
result = xaccSplitGetSharePrice (split);
|
result = xaccSplitGetSharePrice (split);
|
||||||
g_assert (gnc_numeric_equal (result, expected));
|
g_assert (gnc_numeric_equal (result, expected));
|
||||||
g_assert_cmpint (check.hits, ==, 0);
|
g_assert_cmpint (check.hits, ==, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user