[Gnucash-changes] -- reject voided transactions in cap-gains
caluclations; -- improve
Linas Vepstas
linas at cvs.gnucash.org
Sat Jul 3 14:57:32 EDT 2004
Log Message:
-----------
-- reject voided transactions in cap-gains caluclations;
-- improve diagnostic error messages
Modified Files:
--------------
gnucash/src/engine:
cap-gains.c
Revision Data
-------------
Index: cap-gains.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/cap-gains.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -Lsrc/engine/cap-gains.c -Lsrc/engine/cap-gains.c -u -r1.25 -r1.26
--- src/engine/cap-gains.c
+++ src/engine/cap-gains.c
@@ -367,6 +367,27 @@
/* If this split already belongs to a lot, we are done. */
if (split->lot) return NULL;
+ /* Anomolous situation; except for voided transactions,
+ * we don't expect to see splits with no amount ..
+ * unless they're gains splits, and we shouldn't see those.
+ */
+ if (gnc_numeric_zero_p (split->amount))
+ {
+ if (xaccTransGetVoidStatus(split->parent)) return NULL;
+
+ PWARN ("split with zero amount; value=%s gflag=%x gsplit=%p",
+ gnc_numeric_to_string (split->amount),
+ split->gains,
+ split->gains_split);
+ if (split->gains_split)
+ {
+ PWARN ("gains amt=%s value=%s",
+ gnc_numeric_to_string (split->gains_split->amount),
+ gnc_numeric_to_string (split->gains_split->value));
+ }
+ return NULL;
+ }
+
/* If the lot is closed, we can't add anything to it */
baln = gnc_lot_get_balance (lot);
if (gnc_lot_is_closed (lot)) return split;
@@ -467,6 +488,11 @@
gnc_numeric_to_string(amt_tot));
}
+ if (gnc_numeric_zero_p(val_a) || gnc_numeric_zero_p(val_b))
+ {
+ PERR ("Failed to split into two!");
+ }
+
PINFO ("split value is = %s = %s + %s",
gnc_numeric_to_string(val_tot),
gnc_numeric_to_string(val_a),
@@ -743,7 +769,9 @@
if (0 > gnc_numeric_compare (gnc_numeric_abs(opening_amount),
gnc_numeric_abs(split->amount)))
{
- PERR ("Malformed Lot! (too thin!)");
+ PERR ("Malformed Lot! (too thin!) opening amt=%s split amt=%s ",
+ gnc_numeric_to_string (opening_amount),
+ gnc_numeric_to_string (split->amount));
return;
}
if ( (gnc_numeric_negative_p(opening_amount) ||
@@ -751,7 +779,9 @@
(gnc_numeric_positive_p(opening_amount) ||
gnc_numeric_negative_p(split->amount)))
{
- PERR ("Malformed Lot! (too fat!)");
+ PERR ("Malformed Lot! (too fat!) opening amt=%s split amt=%s ",
+ gnc_numeric_to_string (opening_amount),
+ gnc_numeric_to_string (split->amount));
return;
}
More information about the gnucash-changes
mailing list