r23711 - gnucash/trunk/src/report/standard-reports - Advanced Portfolio: Add some more debugging output.
Mike Alexander
mta at code.gnucash.org
Sun Jan 19 02:09:07 EST 2014
Author: mta
Date: 2014-01-19 02:09:06 -0500 (Sun, 19 Jan 2014)
New Revision: 23711
Trac: http://svn.gnucash.org/trac/changeset/23711
Modified:
gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm
Log:
Advanced Portfolio: Add some more debugging output.
Modified: gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm
===================================================================
--- gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm 2014-01-19 07:08:59 UTC (rev 23710)
+++ gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm 2014-01-19 07:09:06 UTC (rev 23711)
@@ -228,7 +228,8 @@
;; coming in out of order, such as a transfer with a price adjusted to carryover the basis.
(define (basis-builder b-list b-units b-value b-method)
(gnc:debug "actually in basis-builder")
- (gnc:debug "b-list is " b-list " b-units is " b-units " b-value is " b-value " b-method is " b-method)
+ (gnc:debug "b-list is " b-list " b-units is " (gnc-numeric-to-string b-units)
+ " b-value is " (gnc-numeric-to-string b-value) " b-method is " b-method)
;; if there is no b-value, then this is a split/merger and needs special handling
(cond
@@ -302,7 +303,10 @@
current-units GNC-DENOM-AUTO GNC-RND-ROUND))
(value-ratio (gnc-numeric-div (gnc:make-gnc-numeric 1 1) units-ratio GNC-DENOM-AUTO GNC-RND-ROUND)))
- (gnc:debug "blist is " b-list " current units is " current-units " units ratio is " units-ratio)
+ (gnc:debug "blist is " b-list " current units is "
+ (gnc-numeric-to-string current-units)
+ " value ratio is " (gnc-numeric-to-string value-ratio)
+ " units ratio is " (gnc-numeric-to-string units-ratio))
(apply-basis-ratio b-list units-ratio value-ratio)
))
@@ -316,7 +320,7 @@
current-value GNC-DENOM-AUTO GNC-RND-ROUND)))
(gnc:debug "this is a spinoff")
- (gnc:debug "blist is " b-list " value ratio is " value-ratio)
+ (gnc:debug "blist is " b-list " value ratio is " (gnc-numeric-to-string value-ratio))
(apply-basis-ratio b-list (gnc:make-gnc-numeric 1 1) value-ratio))
)
@@ -430,6 +434,7 @@
(if (gnc:timepair-le txn-date to-date)
(begin
+ (gnc:debug "Transaction " (xaccTransGetDescription parent))
;; here's where we have problems. we are now going to look at each
;; split of the the parent txn of the current split (above) that we
;; are on. This means we might hit each split more than once as the
@@ -448,7 +453,9 @@
;; first add this split to the seen_split list so we only look at it once.
(set! seen_split (acons (gncSplitGetGUID s) #t seen_split))
- (gnc:debug "split units " split-units " split-value " split-value " commod-currency " commod-currency)
+ (gnc:debug "split units " (gnc-numeric-to-string split-units) " split-value "
+ (gnc-numeric-to-string split-value) " commod-currency "
+ (gnc-commodity-get-printname commod-currency))
;; now we look at what type of split this is and process accordingly
(cond
@@ -465,9 +472,11 @@
((split-account-type? s ACCT-TYPE-EXPENSE)
(if (equal? current (xaccSplitGetAccount (xaccSplitGetOtherSplit s)))
;; "donated shares"
- (moneyoutcoll 'add commod-currency split-value)
+ (begin (gnc:debug "Money out 1 " (gnc-numeric-to-string split-value))
+ (moneyoutcoll 'add commod-currency split-value))
;; brokerage fees
- (brokeragecoll 'add commod-currency split-value)))
+ (begin (gnc:debug "Brockerage 1 " (gnc-numeric-to-string split-value))
+ (brokeragecoll 'add commod-currency split-value))))
;; in theory, income is a dividend of
;; some kind. it could also be
@@ -477,7 +486,6 @@
;; a retirement account. basically,
;; there is nothing that can be done
;; with these to differentiate them
- ;; :(
((split-account-type? s ACCT-TYPE-INCOME)
(dividendcoll
'add commod-currency
@@ -501,7 +509,7 @@
(begin
(set! dividend-rein (xaccSplitGetValue x))
(dividend-reincoll 'add commod-currency dividend-rein)
- (gnc:debug "setting the dividend-rein to" (xaccSplitGetValue x))))
+ (gnc:debug "setting the dividend-rein to " (gnc-numeric-to-string (xaccSplitGetValue x)))))
;; very special case: we have
;; a split that points to the
;; current account with no
@@ -514,13 +522,14 @@
((and (same-account? current (xaccSplitGetAccount x))
(gnc-numeric-zero-p (xaccSplitGetAmount x))
(not (gnc-numeric-zero-p (xaccSplitGetValue x))))
- (dividendcoll 'add commod-currency (gnc-numeric-neg (xaccSplitGetValue x))))
+ (begin (gnc:debug "dividend 2 " (gnc-numeric-to-string (xaccSplitGetValue x)))
+ (dividendcoll 'add commod-currency (gnc-numeric-neg (xaccSplitGetValue x)))))
((split-account-type? x ACCT-TYPE-EXPENSE)
(begin
(set! adjusted-dividend (gnc-numeric-sub dividend-income (xaccSplitGetValue x)
GNC-DENOM-AUTO GNC-RND-ROUND))
- (gnc:debug "setting adjusted-dividend to" dividend-income)
+ (gnc:debug "adjusting adjusted-dividend by " (gnc-numeric-to-string dividend-income))
;; grab the brokerage that
;; may be associated so we
;; can split it too
@@ -537,6 +546,8 @@
GNC-DENOM-AUTO GNC-RND-ROUND))
;; take the brokerage back out and apply the ratio
+ (gnc:debug "Reducing brockerage " (gnc-numeric-to-string split-brokerage)
+ " by ratio " (gnc-numeric-to-string split-ratio))
(brokeragecoll 'add commod-currency (gnc-numeric-neg split-brokerage))
(brokeragecoll 'add commod-currency
(gnc-numeric-mul split-brokerage
@@ -544,16 +555,22 @@
100 GNC-RND-ROUND))
(if (gnc-numeric-zero-p dividend-rein)
+ (begin
;; no reinvested dividend, return just the income split
+ (gnc:debug "Dividend 1 " (gnc-numeric-to-string dividend-income))
dividend-income
+ )
+
;; dividend reinvested so
;; apply the ratio to the
;; dividend and return it for
;; use in the dividend
;; collector
- (gnc-numeric-mul dividend-income
- split-ratio
- 100 GNC-RND-ROUND)
+ (let ((div (gnc-numeric-mul dividend-income
+ split-ratio
+ 100 GNC-RND-ROUND)))
+ (gnc:debug "Adjusted dividend " (gnc-numeric-to-string div))
+ div)
)
)
))
@@ -562,27 +579,31 @@
((not (gnc-numeric-zero-p split-units))
(begin
- (gnc:debug "going in to basis list " basis-list split-units split-value)
;; are we dealing with the actual stock/fund?
(if (same-account? current (xaccSplitGetAccount s))
(begin
+ (gnc:debug "going in to basis list " basis-list " " (gnc-numeric-to-string split-units) " "
+ (gnc-numeric-to-string split-value))
;; adjust the basis
(set! basis-list (basis-builder basis-list split-units (gnc:gnc-monetary-amount
(exchange-fn (gnc:make-gnc-monetary
commod-currency split-value)
currency)) basis-method))
+ (gnc:debug "coming out of basis list " basis-list)
+
;; adjust moneyin/out
(if (gnc-numeric-positive-p split-value)
;; but only adjust moneyin if it's not a spinoff
(if (or (null? (xaccSplitGetOtherSplit s))
(not (gnc-numeric-zero-p (xaccSplitGetAmount (xaccSplitGetOtherSplit s)))))
- (moneyincoll 'add commod-currency split-value))
- (moneyoutcoll 'add commod-currency (gnc-numeric-neg split-value)))
+ (begin (gnc:debug "Money in 2 " (gnc-numeric-to-string split-value))
+ (moneyincoll 'add commod-currency split-value)))
+ (begin (gnc:debug "Money out 2 " (gnc-numeric-to-string (gnc-numeric-neg split-value)))
+ (moneyoutcoll 'add commod-currency (gnc-numeric-neg split-value))))
)
)
- (gnc:debug "coming out of basis list " basis-list)
)
)
@@ -591,11 +612,15 @@
;; returns on a two-split txn :)
((and (gnc-numeric-zero-p txn-units) (not (null? (xaccSplitGetOtherSplit s))))
(if (same-account? current (xaccSplitGetAccount s))
+ (begin
+ (gnc:debug "before spin-off basis list " basis-list)
(set! basis-list (basis-builder basis-list split-units (gnc:gnc-monetary-amount
(exchange-fn (gnc:make-gnc-monetary
commod-currency split-value)
currency)) basis-method))
- )
+ (gnc:debug "after spin-off basis list " basis-list)
+ )
+ )
)
)
)
@@ -616,6 +641,7 @@
(if (or prefer-pricelist (not pricing-txn)) #f
(if (not (gnc:timepair-le txn-date (gnc-price-get-time price)))
#t #f))))
+ (gnc:debug "pricing txn is " pricing-txn)
(gnc:debug "use txn is " use-txn)
(gnc:debug "prefer-pricelist is " prefer-pricelist)
(gnc:debug "price is " price)
@@ -642,7 +668,7 @@
;; what this means is gain = moneyout - moneyin + basis-of-current-shares, and
;; adjust for brokers and dividends.
(gaincoll 'add currency (sum-basis basis-list))
- (gnc:debug "basis we're using to build rows is " (sum-basis basis-list))
+ (gnc:debug "basis we're using to build rows is " (gnc-numeric-to-string (sum-basis basis-list)))
(gnc:debug "but the actual basis list is " basis-list)
(gaincoll 'merge moneyoutcoll #f)
More information about the gnucash-changes
mailing list