diff --git a/gnucash/report/reports/standard/advanced-portfolio.scm b/gnucash/report/reports/standard/advanced-portfolio.scm index 2419aa4c4e..4d5d0767d7 100644 --- a/gnucash/report/reports/standard/advanced-portfolio.scm +++ b/gnucash/report/reports/standard/advanced-portfolio.scm @@ -1001,6 +1001,11 @@ by preventing negative stock balances.
") (lambda (foreign domestic date) (find-price (gnc-pricedb-lookup-latest-any-currency pricedb foreign) domestic))) + ((pricedb-before) + (lambda (foreign domestic date) + (find-price (gnc-pricedb-lookup-nearest-before-any-currency-t64 + pricedb foreign (time64CanonicalDayTime date)) + domestic))) ((pricedb-nearest) (lambda (foreign domestic date) (find-price (gnc-pricedb-lookup-nearest-in-time-any-currency-t64 diff --git a/gnucash/report/reports/standard/portfolio.scm b/gnucash/report/reports/standard/portfolio.scm index 9f98b46363..09ac1287a8 100644 --- a/gnucash/report/reports/standard/portfolio.scm +++ b/gnucash/report/reports/standard/portfolio.scm @@ -216,19 +216,23 @@ (cons #f (gnc-numeric-zero))))) (if price (gnc-price-list-destroy price)) fn))) + ((pricedb-before) + (lambda (foreign date) + (let ((price (gnc-pricedb-lookup-nearest-before-any-currency-t64 + pricedb foreign (time64CanonicalDayTime date)))) + (cond + ((null? price) (cons #f 0)) + (else (let ((p (car price))) + (gnc-price-ref p) + (gnc-price-list-destroy price) + (cons p (gnc-price-get-value p)))))))) ((pricedb-nearest) (lambda (foreign date) (let* ((price (gnc-pricedb-lookup-nearest-in-time-any-currency-t64 pricedb foreign (time64CanonicalDayTime date))) (fn (if (and price (> (length price) 0)) - (let* ((the_price - (if (gnc-commodity-equiv - foreign - (gnc-price-get-commodity (car price))) - (car price) - (gnc-price-invert (car price)))) - (v (gnc-price-get-value (car price)))) + (let* ((v (gnc-price-get-value (car price)))) (gnc-price-ref (car price)) (cons (car price) v)) (cons #f (gnc-numeric-zero)))))